TLS/SSL 协议详解 (2) SSL有关的密码学原理

来源:互联网 发布:mac锐捷客户端已损坏 编辑:程序博客网 时间:2024/05/16 20:31

1:对称加(解)密

加密和解密使用同样的密钥。举个例子就知道了。假设现在有一段明文:

0010 1101 1110 0101,以及一个密钥:0111,我们定义加密方式是“异或”,4 bit一加密。那么0010 1101 1110 0101 最终将会转换成 0101 1010 1001 0010

如果我们想要解密,那么只需要将0101 1010 1001 00100111异或即可,

得到结果0010 1101 1110 0101,即得到加密前的明文。总的来说,加解密使用同一密钥的,我们就称之为“对称加(解)密”。

2:非对称加(解)密

非对称加密较之前的对称加密而言,更为复杂,涉及到了例如欧拉公式、费马小定理、中国剩余定理等众多的数学基础,但是简单的来讲,所谓非对称加密,就是加密和解密使用的不是同一个密钥,比如现在有一对密钥(PubkeyPrikey),

Pubkey称之为公钥,Prikey称之为私钥,所谓“非对称”性:

(1):使用Pubkey加密的数据,只能用Prikey解密。

(2):使用Prikey加密的数据,只能使用Pubkey解密。

只要PubkeyPrikey之间满足一定的数学关系就能达到这种对称性,而这种数学关系,即不能从Pubkey推导出Prikey,也不能从Prikey推导出Pubkey

我们将在SSL高级篇中,详细讲如何使用数学来构造PubkeyPrikey,但在本文中,我们仅仅讲怎么灵活使用这种非对称的特性,来实现SSL的三种功能。

非对称加解密在证书验证,密钥交换的地方会用到,后面会讲到。

3:摘要

对于摘要算法,大家比较熟悉的就是MD5SHA,这些都是摘要算法。摘要算法是一种不可逆的算法,所以一般来说摘要算法不能算作加密算法。

举个例子,来看看什么是摘要算法,以及摘要算法的特点是什么。

Data1 = “1234567831315641631512312”    (26字节)

MD5(Data1) = d9a70e89bc06620a80ce383e0b0fc77a  (16字节)

 

Data2 = “1234567831315641631512313”    (26字节)

MD5(Data2) = 907be2e64b0de423f671b223fec9d31c  (16字节)

 

Data3 = “31315641631512”    (15字节)

MD5(Data3) = 2da9917d1a5a134ee204465118a67b2c  (16字节)

我们很容易总结出摘要算法的特点:

(1):不同的数据,即使是一字节改变,其摘要的结果变化非常大。

(2):无论摘要的输入长度是多少,其输出是固定长度,对于MD5而言输出16字节,对于SHA1而言,输出20字节。

(3):无法从摘要的结果中得出原文。只有输入相同的明文数据经过相同的摘要算法才能得到相同的结果。

其实摘要算法一直伴随着大家。比如Linux系统,它不会把你root账号的密码明文的存到文件系统或者内存中的,它保存的是密码摘要的结果。比如你的密码是“qq123”,那么在Linux系统中,保存的是“5683465989c338e48b9de8685d36bdeb”,甚至连Linux自己都不知道你原始设置的密码是什么。那么当你输入Linux系统密码的时候,Linux如何验证你输入的是否正确呢?很简单,如果你输入qq123Linux会对其做摘要,摘要的结果就是“5683465989c338e48b9de8685d36bdeb”,Linux对比摘要结果和自己保存的原始密码摘要的结果,发现一样,那么认为你输入对了。

原创粉丝点击