讨论网络安全,我们可以从核心的“加密”开始。
加密的英文名称是。 显然,汉语和英语都无法从字面语法上给人直观的联想和理解(这是“假装突出单词”的典型特征)。 那么更实际、更直观的表达方式是什么呢? 用我的话来说:把信息变成胡言乱语。
例如,您想向女孩传达“下午 3 点见”的信息。 但由于您的电脑编码问题,该消息显示为“绯獤粺绻佸UM,宣风”。 这个麻烦的东西其实就是高级别的“加密”。 因为信息已经被改得面目全非,无法被识别,变成了秘密,即信息被加上了“秘密”的属性。
一般来说,乱码之前的信息称为“明文”,是光明正大、没有秘密、人人都能看懂的文字信息。 这种难以理解的乱码被称为“密文”,因为它的含义已经成为秘密。
密码学本质上是研究如何“按照一定的要求和限制”将信息变成乱码。 这些要求和限制大多都很奇怪。 比如神马:转成加密信息的乱码必须恢复到乱码之前的样子(即密文要恢复成明文),而且乱码的长度必须始终如一。 找到两条不同的消息被制作成相同的乱码“几乎不可能”,或者只是原消息的一个微小的改变就会导致加密后的乱码出现巨大的差异等等。
在如此多的约束条件下,设计出一种可以让信息出现乱码并且仍然满足特定约束条件的解决方案(或算法)已经成为一件了不起的事情。 这部分内容通常由数学家,尤其是从事代数分支工作的数学家完成。
一旦理解了“加密”的意思是“使信息变成乱码”,讨论互联网和加密之间的关系就会容易得多。
正如《网络概念与快递物流|墙和梯》中提到的,网络的基本组成部分是三部分,起点A、中点B和连接AB的线,如下图
这种简单的基本模式不仅适用于互联网,也适用于从古至今的所有信息传输方式,比如古代飞鸽送信、快马送战报等。 显然,这种信息传递模型中最脆弱的环节就是中间那条长线。 您几乎无法控制或预测信息在传输过程中是否会被拦截、替换等。
那我们该怎么办呢? 一个直观的想法就是上面提到的方法——加密,就是让信息变成乱码。 这里重要的一点是:你并不是试图阻止你的信息被拦截,但即使别人拦截你的信息也是没有用的,因为他们无法理解它。 所以,这是首先要澄清的网络安全中的加密概念:并不是有什么黑魔法可以防止网络电缆和光纤中流动的数字信息被截获,而是即使这些信息被截获,我无法弄清楚这些消息的含义。
那么,要完成整个通信过程,仅仅将信息变成乱码(加密)是不够的。 你还必须有办法将乱码恢复到原来的样子(解密),这就涉及到“秘钥”的概念。 顾名思义,“秘钥”就是解开秘密的钥匙,即把乱码恢复到以前的样子(纯文本)的工具。 这个工具是什么? 这是另一串乱码,可能如下所示:“KH2J9-PC326-T44D4-39H6V-TVPBY”。
为什么靠着这一串乱码就能恢复呢? 这涉及到加密算法的数学理论,我们暂时可以忽略这部分的细节。 不管怎样,根据一系列的步骤和数学运算,就可以利用称为秘钥的乱码,将乱码的加密信息恢复到原来的样子。
解密需要密钥,这很容易理解,但事实上,加密过程其实也需要密钥。 您可以将其视为锁定(乱码)的密钥。 通常,用于加密的密钥称为公钥,因为它可以公开分发到任何地方并用于将信息变成乱码。 解密密钥当然是私有的,并不是每个人都可以获得,因此称为私钥。
此时,你可能会下意识地认为,有了“加密解密”,安全领域所需的工具似乎都具备了。 那你也太年轻了。 事实上,我们还需要一个我们将立即推出的“验证工具”。 它除了字面上用于验证之外,更重要的是可以与加解密工具结合,完成更高难度的动作!
目前常见的验证工具有MD5和SHA-256,它们本质上是一堆算法,用来把一堆信息变成乱码。 例如,文件“fileT.tar.gz”经过MD5算法处理后会变成字符串“”。 乍一看,这似乎与上面讨论的加密和解密没有什么不同。 但他们的目的却完全不同。
验证工具的目的不是加一把锁然后打开它,而是提供一个解决方案,确保你“实际得到”的确实是你“期望得到”的。 和“加密”一样,这个验证过程也有一个满载X让人看不懂的专业术语——签名()。 了解验证过程后,让我们研究一下这个强大的术语。
既然是“验证”,那么回到现实生活场景,又是老生常谈的难题:你如何证明你是你自己? 客观地说,这个问题其实很难回答。 尤其是,如果你想把这个判断标准扔给计算机,你会发现很难找到合适的方式来描述你的特征来证明你就是你。 这是一个哲学问题。
那么,密码学是如何解决这个问题的呢? 思路比较简单,就是考虑前面提到的加密(乱码)的某种约束:即使原始信息(明文)发生微小变化,也会导致加密信息(乱码)出现巨大差异。 例如,字符串“hello”经过md5处理后,会得到乱码“”。 而只有一个字符差异的“”经过md5处理后就会变成“”。
如果我们跳出来看的话,我们可以这么理解:任何一个事物A经过md5作用后,都可以获得一个特征,这个特征用128位字符来表示。 而任何其他事物B(即使B和A非常相似,只有一毫米的差别),经过md5作用后,都会得到一个非常不同的属性值,即一个非常不同的128位字符表示。 那么这个经过md5影响后的值其实就可以用来判断“A是否还是A”。 就像一个人的签名技术不同一样,用来确定“你就是你”的128位字符串就称为签名。
(当然,md5后生成的签名串只有128位,从安全角度来说,暴力破解的几率还是不够小。那么,如果要求更苛刻的话,可以考虑SHA-256,它可以生成256位签名字符串。SHA-256不是md5的两倍长,而是2的128次方!)
如果你是经常下载软件的学生,你一定见过md5。 通常稍微正规的软件下载网站都会在可下载的二进制文件旁边放上一段md5码(不懂的可以简单粗暴的理解为exe文件)进行验证。
一个直接的问题是,这有必要吗? 换句话说md5校验工具下载,有必要搞得这么复杂吗? !
我的答案是:太乙玛是必要的!
且不说你所在的下载网站是否会提供恶意软件,我们暂且假设你所使用的下载网站是一个良心商家运营的,他的初衷就是为用户提供正版软件。 但如果这个下载过程中的数据被恶意劫持,替换为具有相同功能但存在一些后门和恶意操作的软件数据。
请问,有什么方法可以区分和确认您下载的软件是网站提供的软件吗?
回想一下我们刚才说的,这不是要求你证明:A(网站提供的下载软件)是A吗? 那么,根据我们刚才讨论的情况,使用md5是非常合适的。 您只需要使用您下载的软件并通过它运行md5函数即可获得签名字符串。 您只需比较“您生成的签名串”与“网站提供的md5签名串”是否一致即可。 而且,你知道,即使软件只稍加修改,md5签名串也会变得无法识别。
这样你就可以了解到md5的强大和实用性了。
那么,有了加密工具和验证工具,还能玩出什么花样呢?
最近的评论
《为什么需要提前写Spec文档》
《2018年6月写作总结》
“召唤野兽的逻辑 | #Metoo”
标题:md5校验工具下载 接地气的直观说法是什么呢?直观的联想和理解
链接:https://yqqlyw.com/news/xydt/3286.html
版权:文章转载自网络,如有侵权,请联系删除!