taocp2_rsa_story
RSA公钥加密算法故事文件确保互联网安全的算法RSA 解析5W1H分析What是什么RSARivest-Shamir-Adleman是一种非对称公钥加密算法由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。它是目前最广泛使用的公钥密码系统之一基于大整数分解的数学难题将两个大素数的乘积分解回原始素数在计算上是不可行的。Why为什么在RSA之前密码学主要依赖对称加密存在密钥分发问题通信双方必须事先安全地共享密钥密钥数量随用户数量平方增长n个用户需要n(n-1)/2个密钥RSA的革命性在于公钥可以公开传输无需保密私钥只需保存在本地解决了密钥分发这一密码学核心难题Who谁发明者: Ron Rivest、Adi Shamir、Leonard Adleman1977年MIT命名: 取三位发明者姓氏首字母理论先驱: Clifford Cocks1973年英国GCHQ保密至1997年使用者: 互联网安全HTTPS/TLS、数字签名、安全邮件等When何时1977年RSA算法公开发表1983年获得美国专利2000年过期1990年代成为互联网安全标准至今仍是公钥加密的主流选择Where何地标准应用: SSL/TLS协议、SSH、PGP/GPG、数字证书硬件实现: 智能卡、安全芯片、硬件安全模块(HSM)TAOCP位置: 第2卷第4.5.2节 “Rivest-Shamir-Adleman Method”How如何RSA的核心数学原理密钥生成:选择两个不同的大素数 p 和 q计算 n p × q模数计算 φ(n) (p-1) × (q-1)欧拉函数选择 e 满足 1 e φ(n) 且 gcd(e, φ(n)) 1计算 d ≡ e⁻¹ mod φ(n)扩展欧几里得算法公钥: (n, e)私钥: (n, d)加密: c mᵉ mod n解密: m cᵈ mod n数学正确性基于欧拉定理若 gcd(m, n) 1则 m^φ(n) ≡ 1 (mod n)需求定义功能需求密钥生成函数rsa_keygen(p, q, e, *pub, *priv)输入素数p、素数q、公钥指数e输出公钥结构体、私钥结构体约束p和q必须是不同的素数e必须与φ(n)互质加密函数rsa_encrypt(m, pub_key)输入明文消息m整数公钥输出密文c约束m必须小于n解密函数rsa_decrypt(c, priv_key)输入密文c私钥输出明文m辅助函数mod_exp(base, exp, mod): 快速模幂运算二进制幂mod_inverse(e, phi): 模逆元计算扩展欧几里得非功能需求安全性: 使用64位整数支持小素数演示实际应用需要1024位以上正确性: 严格验证输入参数素数检查、边界检查可移植性: 纯C99实现无外部依赖教学性: 代码清晰注释便于理解算法原理约束条件明文消息 m 必须满足 m n使用unsigned long long64位进行计算素数选择限制在32位以内演示目的实际安全应用需要至少2048位的n验收标准功能验收正确生成RSA密钥对公钥和私钥加密HEL等字节序列后正确解密还原公钥(n,e)可公开不包含私钥信息使用错误私钥解密失败m n时正确拒绝并返回错误完整文本消息加密解密流程正确数学正确性验收验证 e × d ≡ 1 (mod φ(n))验证加密和解密是互逆操作扩展欧几里得算法正确计算模逆元快速模幂运算结果正确边界测试验收最小素数情况p3, q5正确工作边界消息值0, n-1正确处理非法输入非素数、相同素数、无效e正确拒绝代码质量验收使用C99标准编译无警告gcc -stdc99 -Wall包含完整的测试框架代码注释清晰解释数学原理所有测试通过安全说明本实现仅用于教学演示不适用于实际安全应用密钥长度: 使用小素数32位以内实际RSA需要2048位或更长素数生成: 使用简单试除法实际应用需要概率素性测试Miller-Rabin填充方案: 未实现OAEP等填充易受攻击侧信道: 未考虑时序攻击等侧信道防护随机数: 未涉及密钥生成所需的真随机数实际应用请使用OpenSSL、libsodium等经过审计的密码学库。参考TAOCP Volume 2, Section 4.5.2: “Rivest-Shamir-Adleman Method”Rivest, R.L., Shamir, A., and Adleman, L. (1978). “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems”PKCS #1: RSA Cryptography Specifications (RFC 8017)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2588876.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!