学习了加密算法的数学模型后,自己对这节课的学习做一次整理.
加密算法大体上可以理解为 将明文转换为密文的过程,相反的,解密算法即为将密文解密为明文的过程.
课堂介绍了两类加密算法 分别是: 对称秘钥算法 和 非对称秘钥算法
先从最简单的开始--对称,密钥介绍:
说到对称秘钥,可以先从 凯撒密码学开始.
举一个简单的例子: 明文 +2 = 密文
上面是一个加密算法,并且是对称密钥的. 把上面这个公式概况一下就是:
加密算法: 明文做加法成为密文
密钥: 2
解密算法:密文做减法成为明文
密钥 : 2
从上面可以看到, 这个工程中,加密算法 和解密算法用到的原则是相同的,过程是相反的. 加密时在密文上做加法, 解密时在密文上做减法. 并且,在这个可逆的过程中, 加密密钥和解密密钥是相同的. 所以,这是一个典型的对称密钥算法.即加密过程和解密过程用相同的密钥.
对称 秘钥相比于 非对称密钥来说,加密解密的效率相对较高.但也存在一些问题,具体如下:
1:传递信息的双方如何传递秘钥?
2:密钥量大,管理困难.
3:非技术安全问题
来说第一个,传递信息的双方如何传递秘钥?
我们知道,为了防止网络窃听,用户在发送数据前需要将数据进行加密. 那么,除了将明文用密钥加密后传递给对方,对方在解密过程中也需要密钥来解密.而对方又是如何知道密钥的呢?显然,采用网络传递密钥的方法并不安全 .密钥的传递成了问题.过去 ,人们都是私下传递密钥的.
在说第二个问题,密钥量大,管理困难.
一般来说,不同用户之间传递信息,都需要密钥.也就是说.任意两个用户之间需要一个密钥来进行加密传递信息.当用户数量较大时,用户两两之间就需要一个密钥,这个密钥的数量是非常庞大的. 假如有N个用户,那么其中一个用户想要给任意其他用户传递信息,就需要知道其他N-1个用户的密钥,即该用户自己需要存储 N-1个密钥.而N的用户所产生的密钥总数是(N*(N-1) ) /2 , 当N较大,不便于管理.
最后说第三个问题,非技术安全问题.
非技术安全问题是指:当一个用户的密钥泄漏时,由他所加密发送的所有密文都将不可信.从而将影响整个密码系统.
所以,后来有两个数学家提出了非对称密钥算法.
顾名思义,非对称密钥是指系统将加密和解密的过程分开,加密和解密分别用两个不同的密钥来实现.当然,这两个密钥不能互推.
在非对称体制中,每个用户都保存 有两个密钥,其中一个密钥可以公开,成为公钥,一个密钥用户自己保存不公开,称为私钥.
这就解决了对称秘钥中密钥量大的问题.
如果加密用公钥,那么解密就要用私钥. 如果解密用公钥,那么加密就要用私钥.
公钥由用户像外界公开,私钥由用户自己所有.
我们假定用户A有一个公钥和一个私钥,用户B有一个公钥和一个私钥. 当用户A 需要给用户B发送数据时,A将明文用B的私钥进行加密,那么就加密后的信息就只能用B的私钥进行解密才能变成明文.所以,A将密文发送给B是安全的,应为由于B的私钥是B所私有,即便在网络传输过程中,用户C拦截了A所发送的密文,C由于不知道B的私钥,所以也无法解密. 同时 , 当B收到A发来的密文后,只需要用自己的私钥进行解密即可看到明文.这样就解决了对称 密钥中如何传递密钥的问题.
还有一点,当 B给A发送信息时用自己的私钥加密后,A如果可以用B的密钥解密密文,那么就可以证明密文确实由B发送.但是由于B的公钥是公开的,所以其他用户也可以拦截并解密.所以私钥加密起不到加密的作用.