密码学 - 适用于互联网的公开密钥加密技术

简介: 密码学 - 适用于互联网的公开密钥加密技术

前面几节所讲解的加密技术都属于“对称密钥加密技术”,也称作“秘密密钥加密技术”(如图10.7所示)。这种加密技术的特征是在加密和解密的过程中使用数值相同的密钥。因此,要使用这种技术,就必须事先把密钥的值作为只有发送者和接收者才知道的秘密保护好(如图10.7-(1)所示)。虽然随着密钥位数的增加,破解难度也会增大,但是事先仍不得不考虑一个问题:发送者如何才能把密钥悄悄地告诉接收者呢?用挂号信吗?要是那样的话,假设有100名接收者,那么发送者就要寄出100封挂号信,非常麻烦,而且这样也无法防止通信双方以外的其他人知道密钥。再说寄送密钥也要花费时间。互联网的存在应该意味着用户可以实时地与世界各地的人们交换信息。因此对称密钥加密技术不适合在互联网中使用。


image.png


图10.8 创建公钥和私钥的步骤


但是世界上不乏善于解决问题的能人。他们想到只要让解密时的密钥不同于加密时的密钥,就可以克服对称密钥加密技术的缺点。(“会有这样的技术吗?”也许诸位不禁会发出这样的疑问,稍后笔者将展示具体的例子)。而这种加密技术就被称为“公开密钥加密技术”。

在公开密钥加密技术中,用于加密的密钥可以公开给全世界,因此称为“公钥”,而用于解密的密钥是只有自己才知道的秘密,因此称为“私钥”。举例来说,假设笔者的公钥是3,私钥是5(实际中会把位数更多的两个数作为一对儿密钥使用)。笔者会通过互联网向全世界宣布“矢泽久雄的公钥是3哦”。这之后当诸位要向笔者发送数据的时候,就可以用这个公钥3加密数据了。这样就算加密后的密文被人盗取了,只要他还不知道笔者的私钥就不可能对其解密,从而保证了数据的安全性。而收到了密文的笔者,则可以使用只有笔者自己才知道的私钥5对其解密(如图10.7(2)所示)。怎么样?这个技术很棒吧!


\image.png

图10.7 对称密钥加密技术和公开密钥加密技术


可用于实现公开密钥加密技术的算法有若干种,这里笔者将介绍目前广泛应用于互联网中的RSA算法。RSA这个名字是由三位发明者Ronald Rivest、Adi Shamir和Leonard Adleman姓氏的首字母拼在一起组成的。美国的RSA信息安全公司对RSA的专利权一直持有到2000年9月20日。使用RSA创建公钥和私钥的步骤如图10.8所示。无论是公钥还是私钥都包含着两个数值,两个数值组成的数对儿才是一个完整的密钥。

由图10.8的步骤可以得出:323和11是公钥,323和131是私钥,的确是两个值都不相同的密钥。在使用这对儿密钥进行加密和解密时,需要对每个字符执行如图10.9所示的运算。这里参与运算的对象是字母N(字符编码为78)。用公钥对N进行加密得到224,用私钥对224进行解密可使其还原为78。

乍一看会以为只要了解了RSA算法,就可以通过公钥c = 323、e = 11推算出私钥c = 323, f = 131了。但是为了求解私钥中的f,就不得不对c进行因子分解,分解为两个素数a、b。在本例中c的位数很短,而在实际应用公开密钥加密时,建议将c的位数(用二进制数表示时)扩充为1024位(相当于128字节)。要把这样的天文数字分解为两个素数,就算计算机的速度再快,也还是要花费不可估量的时间,时间可能长到不得不放弃解密的程度。


image.png

图10.9 用公钥加密,用私钥解密

目录
相关文章
|
存储 算法 安全
【密码学】非对称加密算法 - ECDH
由于 ECC 密钥具有很短的长度,所以运算速度比较快。到目前为止,对于 ECC 进行逆操作还是很难的,数学上证明不可破解,ECC 算法的优势就是性能和安全性高。实际应用可以结合其他的公开密钥算法形成更快、更安全的公开密钥算法,比如结合 DH 密钥形成 ECDH 密钥协商算法,结合数字签名 DSA 算法组成 ECDSA 数字签名算法。ECDH算法常常用来进行密钥的协商,协商好密钥后,用来解决上面的密钥分配问题,将对称加密的密钥安全的传到对端设备。算法加密/解密数字签名密钥交换RSA✅✅✅❌。
2611 0
|
1月前
|
存储 算法 安全
密码学系列之九:密钥管理
密码学系列之九:密钥管理
268 45
|
2月前
|
机器学习/深度学习 资源调度 安全
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
31 0
|
2月前
|
机器学习/深度学习 安全 算法
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》
26 0
|
2月前
|
安全 搜索推荐 API
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》
108 0
|
2月前
|
机器学习/深度学习 安全 搜索推荐
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》
48 0
|
2月前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
84 0
|
3月前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
56 0
|
8月前
|
存储 算法 Java
java密码学-非对称加密算法
非对称加密算法与对称加密算法的主要区别在于非对称加密算法用于加密和解密的密钥不同,一个公开,称为公钥;一个保密,称为私钥。因此,非对称密码算法也称为双钥和公钥加密算法。 非对称加密算法解决了对称加密算法密钥分配问题,并极大的提高了算法的安全性。多种B2C或B2B应用均使用非对称加密算法作为数据加密的核心算法。解决了对称加密算法的密钥存储问题。
61 0
|
8月前
|
算法 搜索推荐 安全
java密码学-对称加密算法
java密码学-对称加密算法
52 0