<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>系统设计 on 有点稳</title><link>https://blog.nicelylit.net/tags/%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/</link><description>Recent content in 系统设计 on 有点稳</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 16 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.nicelylit.net/tags/%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/index.xml" rel="self" type="application/rss+xml"/><item><title>RSA加密设计的一些巧思</title><link>https://blog.nicelylit.net/posts/rsa%E5%8A%A0%E5%AF%86%E8%AE%BE%E8%AE%A1%E4%B8%AD%E7%9A%84%E5%B7%A7%E6%80%9D/</link><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/rsa%E5%8A%A0%E5%AF%86%E8%AE%BE%E8%AE%A1%E4%B8%AD%E7%9A%84%E5%B7%A7%E6%80%9D/</guid><description>&lt;p&gt;RSA加密设计是理论应用生活的典范，其中的巧思不比发现和证明一个数学定理少。&lt;/p&gt;&#10;&lt;p&gt;先看其结果，从本体、关系、过程、性状角度来分析。&lt;/p&gt;&#10;&lt;p&gt;核心对象有7个，明文 M、密文 C、公钥 e、私钥 d、大整数 N、素因子 p 和素因子 q。&lt;/p&gt;&#10;&lt;p&gt;数量关系，以2048位为例，大致如下：&lt;/p&gt;&#10;&lt;p&gt;公钥 e （17位） &amp;lt; 素因子p、素因子q（各1024位） &amp;lt; 私钥 d、明文 M、密文 C（大约2048位） &amp;lt; 大整数 N（2048位）&lt;/p&gt;&#10;&lt;p&gt;数量关系，严格如下：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;大整数 N 是两个素因子的积：\(N = p \cdot q\)&lt;/li&gt;&#10;&lt;li&gt;公钥 e 和私钥 d 模 φ(N) 互逆：\(e \cdot d \equiv 1 \mod{\phi(N)}\)&lt;/li&gt;&#10;&lt;li&gt;明文和密文都只是幂函数模 N 的余数：\(M^e \equiv C \mod{N} \)、\(C^d \equiv M \mod{N} \)&lt;/li&gt;&#10;&lt;li&gt;明文和密文是被构建在一个阶为 φ(N) 的循环群中的两个数：\(M^{e \cdot d} \equiv M^{1 + k \phi{(N)}} \equiv M \mod{N}\)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;过程有三个，加密、解密和密钥对生成，详细来说：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;从严格数量关系看，加密和解密都是个幂函数模 N 求余数的过程&lt;/li&gt;&#10;&lt;li&gt;加密是以明文 M 为底，公钥为指数，求幂模 N 取余的结果就是密文 C&lt;/li&gt;&#10;&lt;li&gt;解密是以密文 C 为底，私钥为指数，求幂模 N 取余的结果就是明文 M&lt;/li&gt;&#10;&lt;li&gt;密钥对生成是两大步，第一步是生成 N，第二步是生成 e 和 d&lt;/li&gt;&#10;&lt;li&gt;生成 N 要先生成两个素因子 p 和 q&lt;/li&gt;&#10;&lt;li&gt;生成 e 和 d，可以随机生成 e，再求逆算 d&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;性状重点看安全性和性能，先看安全性：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;密文 C、公钥 e、大整数 N公开&lt;/li&gt;&#10;&lt;li&gt;明文 M、私钥 d、素因子p和q私密&lt;/li&gt;&#10;&lt;li&gt;加解密钥匙的非对称性，只公开公钥，避免了私钥传输造成泄漏&lt;/li&gt;&#10;&lt;li&gt;大整数 N 的素因子分解没有高效的算法，非量子计算不可行，量子计算现实的比特规模远远不够&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;再看性能：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;加密过程因为公钥 e 比较小，求幂模 N，计算较快，每次不到 1 毫秒&lt;/li&gt;&#10;&lt;li&gt;解密过程利用中国剩余定理把模 N 的运算，转换为模 p 和模 q 的两个运算，再利用扩展的欧几里得算法求同余方程，恢复模 N 的结果，每次计算也在 10 毫秒内&lt;/li&gt;&#10;&lt;li&gt;生成大整数 N 和密钥对的过程，涉及到欧几里得算法、大整数的素性测试，耗时最多，一般在几十毫秒到一百多毫秒&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;从需求的满足上看：&lt;/p&gt;&#10;&lt;p&gt;生成一般都是离线过程，需求次数少，生成密钥对和 N 都在重用。加密和解密是个在线过程，发生频繁，明文密文也通常很长，都是切割后进行。&lt;/p&gt;&#10;&lt;p&gt;以上的结果分析，基本能覆盖四因说中的三个，形式因、质料因和目的因，可一个事物诞生还需要动力因。&lt;/p&gt;&#10;&lt;p&gt;推动 RSA 诞生的动力，可以从宏观和微观、外部和内部两个视角来看。&lt;/p&gt;&#10;&lt;p&gt;宏观上，以密码学领域内为内部。20 世纪 70 年代，外部网络、计算技术快速规模化发展，信息加密后被逆向攻破、密钥泄漏、内容篡改等问题形成了领域内的挑战。Diffie 和 Hellman 提出了公钥密码体系的构想来解决密钥分发和数字签名的问题，RSA的三位设计者实现了这个构想中的关键，单向陷门函数，掌握了秘密信息（陷门）的情况下，单向计算容易，但缺乏秘密信息，逆向计算困难。&lt;/p&gt;&#10;&lt;p&gt;微观上，这是计算效率、传输效率、传输便捷性与隐私保护、信息安全的矛盾与博弈。Diffie 和 Hellman 的构想源自于一种理念，即便你知道了完整的设计，缺乏少量关键信息的情况下，你也无法获取原始的信息。Diffie 还强烈反对依赖政府和大型机构这样的中心化权威来分发密钥，他认为加密的目的应该是减少需要被信任的第三方。RSA 提出的直接动机是为了给电子邮件提供隐私和签名。&lt;/p&gt;&#10;</description></item></channel></rss>