密码学习之基本概念(一)

大家可能都以及有了一个基本的概念,那就是在互联网的时间你们没有什么是绝对保密的。任何密码都会有被破译的一天,只是时间长短问题。那么就针对密码学,我们从头到尾梳理一遍,第一篇我想介绍的是一些基本概念。先说一下为啥要加密吧,这个其实很容易理解,就是消息传输过程被窃取或者篡改,导致安全等问题。下面就是一个邮件被窃听的例子。
密码学习之基本概念(一)

对称加密与非对称加密

加密和解密的算法合在一起叫做密码算法,秘钥就是现实中的钥匙一样,如果加密和解密用的是相同的钥匙,就是对称加密,如果不是同一个钥匙就是非对称加密,先看一个对称加密的例子:
密码学习之基本概念(一)
这个里面通过一个秘钥去加密并且通过它再去解密就是对称加密算法,但是大家可能发现了,如果秘钥一旦丢失,那么消息就可以被随便解密,导致不安全,所以后来又有了非对称加密
密码学习之基本概念(一)
乙方生成一对**(公钥和私钥)并将公钥向其它方公开。得到该公钥的甲方使用该**对机密信息进行加密后再发送给乙方。乙方再用自己保存的另一把专用**(私钥)对加密后的信息进行解密。乙方只能用其专用**(私钥)解密由对应的公钥加密后的信息。 在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法**密文,因为只有乙的私钥才能解密密文。 同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。这样整个信息的传输就会变的非常的安全,当然这也会增加加密和解密的复杂度。

单向散列函数

这种也是在当前互联网很流行的,我们每次到公网下载东西的时候都会在下载文件后有个单向散列函数生成的字符串,它是为了防止软件被篡改,下载该软件的人可以自己通过散列函数工具生成这个字符串,并和公网上面作者发布的串比较,如果相同则认为软件没有没有被篡改。它有如下特点:根据任意长度的消息计算出固定长度的散列值。能快速计算出散列值。消息不同,散列值也不同。具备单项性。

消息认证码

消息认证码是一个确认完整性并进行认证的技术,取英文三个字母(message authentication code)MAC。消息验证码的输入是一个任意长度的消息和一个发送者与接受者共享的一个秘钥,可以输出一个固定长度的数据,它就是MAC值。如下举的是一个银行转账的例子
密码学习之基本概念(一)

数字签名

数字签名是为了解决,消息是谁写的这个问题。它主要分为两个部分,第一是生成消息签名:它是发送者完成的,根据消息内容计算数字签名的值;第二是验证数字签名:这个一般由接受者或者第三方去验证,验证该消息是否是指定的发送者产生的。签名的秘钥只能有发送者持有,而验证秘钥的则是可以被任何需要验证该消息的人持有,这个机制与非对称加密的公私钥正好是相反的,详细后面再介绍。
密码学习之基本概念(一)

伪随机数生成器

如果说随机数和密码相关,大家可能觉得不太容易理解,实际上和对称密码、数字签名相比,生成随机数确实不是很引人注目,但是随机数在生成密码中起着重要作用。它有三个重要特性:随机性、不可重复性、不可预测性。为了生成伪随机数,需要一个种子,它是对伪随机数生成器进行初始化的,随机数生成器是公开的,但种子是保密的,就好像密码算法是公开的,但私钥是保密的一样。
密码学习之基本概念(一)

总结一下,常用的几种密码技术,以及他们的使用场景,如下图所示:
密码学习之基本概念(一)