算法|一文读懂加密算法的类型+每种算法都有优缺点( 二 )


流密码不是完全随机的密钥 , 而是使用密钥来提供伪随机数生成器 。 通过共享相同的密钥和算法 , 消息的发送者和接收者可以产生相同的比特串 , 使他们能够加密和解密消息 。
示例:Rivest Cipher 4 (RC4)RC4 是广泛使用的流密码的一个示例 。 它由 Ron Rivest 于 1987 年创建 , 最初是 RSA Security 的商业机密 。 1994 年 , 密码的详细信息被泄露 , 使其可供公众使用 。
RC4 用于各种不同的应用 , 包括 Wi-Fi 的 WEP 和 WPA 加密标准 。 该密码有一些已知的漏洞 , 特别是对于某些应用程序 , 但如果生成的密钥流的一些初始字节被丢弃 , 仍然可以使用 。
非对称加密与对称加密不同 , 非对称加密使用两个不同的密钥进行加密和解密 。 公钥用于加密消息 , 而私钥用于解密 。
私钥是一个完全随机的数字 。 公钥是使用数学上的“难”问题从私钥导出的 。
这个“难”的问题是基于一个“容易”执行但“难以”逆转的数学运算 。 使用了许多不同的“硬”问题 , 包括基于整数的问题和基于椭圆曲线的问题 。
基于整数的密码学基于整数的非对称密码学使用两个主要的“难题” 。 这些是因式分解和离散对数问题 。
因式分解问题是基于这样一个事实:将两个数字相乘相对容易 , 但很难将它们分解 。 事实上 , 因式分解非常困难 , 最好的方法(在“经典”计算机上)是通过蛮力搜索 。 想要分解两个素数乘积的人需要测试潜在因子 , 直到他们碰巧找到这两个因子之一 , 这可能需要很长时间 。
基于因式分解问题的非对称加密算法将具有使用两个私钥(大素数)的乘积计算的公钥 。 这种计算很容易执行 , 但是任何想要从公钥中导出私钥的人都需要将其分解 , 这要困难得多 。
乘法的难度随着因子的长度呈多项式增长 , 但因式分解的难度呈指数增长 。 这使得找到一个“甜蜜点”成为可能 , 在这个“甜蜜点”中 , 系统可用但基本上牢不可破 。
离散对数问题使用取幂和对数作为其“简单”和“困难”运算 。 与因式分解类似 , 计算对数的复杂性随着指数大小的增加而增长得更快 。
示例:Rivest-Shamir-Adleman (RSA)按照今天的标准 , 对称加密 是一种简单的密码算法, 然而 , 它曾经被认为是最先进的 。 事实上 , 德国军队在二战期间用它来发送私人通信 。 电影《模仿游戏》实际上 很好地解释了对称加密的工作原理以及它在战争期间所扮演的角色 。
使用对称加密 , 以纯文本形式输入的消息会经过数学排列来加密 。 加密消息很难破解 , 因为相同的纯文本字母 在加密消息中并不总是相同 。 例如 , 消息“HHH”不会加密为三个相同的字符 。
要加密和解密消息 , 您需要相同的密钥 , 因此称为对称加密 。 虽然在没有密钥的情况下解密 消息非常困难 , 但必须使用相同的密钥来加密和解密消息这一事实带来了巨大的风险 。 这是因为如果用于共享密钥的分发渠道遭到破坏 , 整个 安全消息系统就会被破坏 。现存最著名的非对称加密算法之一是由 Ron Rivest、Adi Shamir 和 Leonard Adleman 开发的称为 RSA 的算法 。 该算法基于因式分解问题 。

RSA
上图显示了 RSA 工作原理的简单示例 。 将明文 (2) 提高到公钥 (5) 的幂:2^5 = 32 。 然后将该值除以公共模数 (14) , 余数 (4) 作为密文发送:32 % 14 = 4 。
在另一端 , 使用私钥而不是公钥执行相同的操作以生成明文:(4^11) % 14 = 2 。 此计算有效 , 因为选择了公钥和私钥 , 因此它们是相反的在所选模数中 。
椭圆曲线密码学基于整数的非对称密码学使用因式分解和离散对数问题来构建安全加密算法 。 椭圆曲线密码学使用了相同的问题 , 但稍有扭曲 。