深入探讨数字签名标准(DSS)及陷门素数与模数问题
1. 背景与讨论起源
在当今数字化时代,电子数据交换的安全性日益受到关注。安全性主要体现在两个方面:真实性和保密性。真实性意味着接收者能够验证所接收消息的来源和完整性,而保密性则表示只有预期的接收者能够读取消息。为了在开放系统中提供安全保障,需要国家和国际标准。美国国家标准与技术研究院(NIST)提出了数字签名标准(DSS),旨在提供消息的真实性。
然而,这一标准提案引发了公众的广泛争议。Eurocrypt‘92的程序委员会决定就陷门素数和模数这一更大的问题举行小组讨论。参与讨论的小组成员包括来自不同机构的专家,如威斯康星大学的Yvo Desmedt、奥尔胡斯大学的Peter Landrock、贝尔实验室的Arjen Lenstra等。
2. 各方观点分析
-
Rainer A. Rueppel:DSS争议的多层面分析
- 安全需求与标准提出 :电子数据交换对安全的需求催生了各种安全标准,NIST提出的DSS就是其中之一。其目标是提供消息的真实性。
- 公众争议的层面 :公众辩论揭示了不同层面的利益诉求。社会和政治层面上,公民和企业用户关注通信的隐私和完整性,政府则关注国家经济、国家安全和执法。这一层面存在一定的相互不信任。个人和商业层面上,制造商希望保护其在安全技术上的投资,专利持有者关心版税,科学家则利用其声誉支持或反对DSS。
- 争议的影响 :对DSS的严厉攻击和批评可能会损害完整性和隐私保护这一更大的问题,使非专家对所有加密技术和标准产生普遍不信任。但也有可能促使DSS得到改进,例如NIST增加了素数p的允许大小。关键问题是在不阻碍信息流动或获取信息服务的前提下,建立对存储和通信数据的完整性和隐私的信任。
| 利益层面 | 相关群体 | 关注焦点 |
|---|---|---|
| 社会和政治层面 | 公民、企业用户 | 通信隐私和完整性 |
| 社会和政治层面 | 政府 | 国家经济、国家安全和执法 |
| 个人和商业层面 | 制造商 | 保护安全技术投资 |
| 个人和商业层面 | 专利持有者 | 版税 |
| 个人和商业层面 | 科学家 | 声誉及对DSS的态度 |
-
Arjen K. Lenstra:公钥密码系统中的陷门
- 陷门的定义 :在公钥密码系统中,陷门是关于公钥的额外信息,它破坏了推导相应秘密私钥的计算不可行性。
- RSA中的陷门情况 :在RSA中,构建公钥/私钥对需要知道模数的秘密信息(即分解因子)。因此,使用RSA时,用户必须信任模数的供应商。供应商在出售的模数中设置陷门意义不大,因为他们本身就拥有秘密信息。如果模数是通过软件包生成的,用户要么信任软件的提供者,要么仔细验证软件,但这对于普通用户来说难度很大。
- 离散对数密码系统中的陷门 :基于离散对数的密码系统在构建公钥/私钥对时不需要关于模数(即素数)的更多秘密信息。只要素数足够大且不包含陷门,就可以安全使用。但对于无法确定素数来源可信度的用户来说,可能存在威胁。已知的陷门素数生成方法包括使p - 1只有小因子,这种方法容易检测,不构成实际威胁;另一种是使p整除特定多项式,对于这种情况,有基于数域筛的算法可以解决,但目前该算法仅适用于约600位的陷门素数,且检测这种陷门需要更多的工作,随机选择的素数出现这种陷门的概率极小。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(公钥密码系统):::process --> B(RSA):::process
A --> C(离散对数密码系统):::process
B --> D(需信任模数供应商):::process
B --> E(或仔细验证软件):::process
C --> F(素数足够大且无陷门可安全使用):::process
C --> G(存在陷门威胁):::process
G --> H(使p - 1只有小因子):::process
G --> I(使p整除特定多项式):::process
H --> J(易检测,无实际威胁):::process
I --> K(数域筛算法可解决):::process
K --> L(适用于约600位陷门素数):::process
I --> M(检测需更多工作):::process
I --> N(随机素数陷门概率极小):::process
-
Miles E. Smid:DSA陷门问题回应
- DSA陷门的指控 :有人声称不诚实的认证机构可能会故意选择p值,以便恢复用户的私钥,这被称为DSA中的“陷门”。
- 回应内容 :目前没有证据表明DSA中存在设置陷门的意图。NIST提出的DSS规定了数字签名算法,但未涵盖算法的所有使用或滥用方式。DSS允许用户自己生成素数p和q,也允许使用受信任方或认证机构生成的素数。如果素数是随机生成的,用户甚至可以接受不信任的认证机构生成的素数。虽然可以构造出被认为是弱素数的特殊素数,使用这些素数可能会导致用户私钥被恢复,但随机生成弱素数的概率极小,例如随机生成弱p的概率估计小于10^ - 90。此外,使用单向函数(如NIST提出的安全哈希算法SHA)生成p和q可以确保弱值仅随机出现,用户可以通过公开SHA的输入、生成的p和q以及生成过程来验证是否故意构造了弱素数。同时,使用认证机构时,必须信任认证机构正确建立用户身份和公钥之间的绑定。
-
Kevin S. McCurley:陷门问题的科学视角
- 陷门的定义与媒体影响 :Diffie和Hellman将陷门密码定义为允许设计者在将系统出售给客户后仍能破解系统,同时维持其安全系统构建者声誉的密码。陷门模数问题在大众媒体中受到了广泛关注,尤其是与美国数字签名草案标准DSS相关。但媒体对这一情况的报道存在严重歪曲,导致公众对DSS产生了缺乏科学依据的普遍不信任。
- 陷门构造的现状 :到目前为止,尚未证明可以构造出满足难以检测且陷门知识能为已知方法可计算的参数大小提供可量化计算优势的离散对数问题的陷门模数。
- 对DSS的影响及关键因素 :即使最终能够构造出陷门密钥,对DSS的影响也很小。就像RSA存在多种构造陷门模数的方法,但这只意味着在选择密钥时需要谨慎。例如,如果用户从其他方获得软件来生成密钥,就需要信任软件提供者生成真正随机且无任何可预测性的密钥。大部分对陷门素数和模数问题的关注是受政治和商业影响,而非科学担忧。一些人因为DSS是由美国政府机构提出而不信任它,就像有人认为美国政府在DES中设置了陷门,但从未有证据支持这一说法。同时,加密政策和标准会产生严重的商业后果,需要谨慎区分受这些因素影响的结论和客观的科学判断。
-
Yvo Desmedt:DSS提案的理性分析
- 陷门素数讨论的必要性 :由于NIST在DSS提案中未对素数进行标准化,关于陷门素数的讨论并非关键问题,而且出现弱素数的概率很小。
- 对DSS提案评论的看法 :许多对DSS提案的评论存在夸大情况,例如声称NIST在非军事加密研究界失去了相当大的信誉,这些评论缺乏科学依据,其他利益因素掩盖了科学讨论。
- DSS的关键问题与未来需求 :真正的问题是素数p的大小,NIST已经对此进行了调整。不使用1024位p或不允许将p更新到1024位的实现不应获得标准认证,只能在短时间内进行验证。虽然目前没有科学证据表明q可能太小,但DSS提案可能会刺激大量关于破解此类离散对数的研究。未来还需要制定更多标准,如隐私保护标准、快速认证标准以及满足不同需求的标准,如基于RSA可实现的阈值签名,但目前尚不清楚如何使用DSS以实际方式实现这些标准。
-
Andrew Odlyzko:分解和离散对数的进展及陷门问题
- 分解和离散对数的进展 :在过去15年中,分解和离散对数两个领域都取得了显著进展。RSA系统发明时,专家能够确定分解的最大整数约为38 - 45位十进制数,如今可以分解115 - 130位的整数。许多对该领域未来的预测考虑了计算机技术的进步,但也应考虑算法的改进。从过去的进展来看,约一半的进步归功于计算机技术,另一半归功于更好的算法。因此,使用的模数应足够大,以抵御算法改进带来的威胁。
- 陷门素数和模数的问题 :陷门素数和模数并非重要问题。目前提出的构造此类素数和模数的方法仅为选择者提供了轻微优势,且这种优势依赖于特定的分解和离散对数算法。如果选择足够大的模数来抵御可合理预期的算法和计算机的进步,这种威胁就会消失。
-
Peter Landrock:密钥生成中的弱素数问题
- 弱素数的识别与处理 :在任何基于素数性质的公钥方案中,似乎都存在一些比其他素数更弱的素数。在密钥生成阶段,首先要考虑是否应明确避免这些弱素数,以及如何避免。任何密钥生成程序都应从足够大的密钥空间中随机选择密钥,否则是危险的。
- 根据概率决定处理方式 :一旦确定了弱密钥的性质,是否避免这些性质应根据密钥生成程序返回具有该性质素数的概率估计来决定。例如,随机生成DES密钥时,无需检查是否返回弱密钥或半弱密钥,因为这种概率极小,可以完全忽略。如果估计显示出现弱素数的概率足够小,则可以忽略该性质;如果概率不可忽略,则必须在密钥生成中避免具有该性质的素数。例如,随机选择的256位素数作为RSA密钥时,其强度不够,而512位素数具有足够高的强度概率。
- 随机生成器的独立问题 :一个独立且需要关注的问题是要有足够好的随机生成器,这是一个与素数生成无关但同样重要的问题。
3. 快速幂运算的预计算方法
在许多密码系统中,经常需要将一个固定元素 $g$ 在一个群(通常是 $\mathbb{Z}/q\mathbb{Z}$)中反复进行不同次幂的计算。为了提高这类计算的效率,研究人员提出了一种基于预计算值的方法,下面详细介绍该方法。
3.1 传统方法与问题提出
以往,高效计算幂的问题常使用加法链的方法。设 $l(n)$ 表示指数 $n$ 的最短加法链长度(即通过这种方法可能的最少乘法次数),已知有不等式:
[l(n) \leq \lfloor\log_2 n\rfloor + v(n) - 1]
其中 $\log$ 以 2 为底,$v(n)$ 是 $n$ 的二进制表示中 1 的个数。
加法链在指数 $n$ 固定(如在 RSA 密码系统中)且目标是快速计算随机选择的底数 $x$ 的 $x^n$ 时非常有用。但在许多密码系统(如 [3],[4],[8],[1])中,主要的计算是为一个固定底数 $g$ 计算随机选择的指数 $n$ 的 $g^n$。对于这个问题,通过存储一组预计算值可以对加法链方法进行显著改进。
3.2 预计算方法的优势与实现
该方法通过预计算一组值,减少了计算 $g^n$ 所需的乘法次数。在实践中,它比加法链方法有实质性的性能提升,能够在 $O(\log N / \log\log N)$ 次群乘法内计算出 $g^n$(其中 $n < N$)。
此外,这种方法还可以进行并行化,使用 $O(\log N / \log\log N)$ 个处理器在 $O(\log\log N)$ 次群乘法内完成幂的计算。
| 方法 | 计算复杂度 | 适用场景 |
|---|---|---|
| 加法链方法 | 与指数二进制表示相关 | 指数固定,计算随机底数幂 |
| 预计算方法 | $O(\log N / \log\log N)$ 次群乘法 | 固定底数,计算随机指数幂 |
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(幂计算问题):::process --> B(加法链方法):::process
A --> C(预计算方法):::process
B --> D(指数固定,计算随机底数幂):::process
C --> E(固定底数,计算随机指数幂):::process
C --> F(减少乘法次数):::process
C --> G(可并行化计算):::process
G --> H(O(log log N)次群乘法):::process
G --> I(O(log N / log log N)个处理器):::process
4. 总结与展望
综合上述讨论,数字签名标准(DSS)及相关的陷门素数与模数问题涉及多个层面的因素,包括社会、政治、商业和科学等。虽然公众对 DSS 存在争议,但这些争议也促使标准不断改进,如 NIST 对素数 $p$ 大小的调整。
在安全技术方面,不同的密码系统(如 RSA 和离散对数密码系统)在陷门问题上有不同的特点和风险。用户在选择和使用这些系统时,需要充分了解其原理和潜在风险,并采取相应的措施来保障安全,如谨慎选择模数供应商或仔细验证软件。
对于弱素数的处理,应根据其出现的概率来决定是否在密钥生成过程中进行特殊处理。同时,随机生成器的质量也是保障密钥安全的重要因素。
在计算效率方面,快速幂运算的预计算方法为密码系统中的幂计算提供了更高效的解决方案,尤其适用于固定底数、随机指数的幂计算场景。
未来,随着计算机技术和算法的不断发展,密码系统的安全性和性能都将面临新的挑战和机遇。一方面,需要不断研究和改进密码算法,以应对可能出现的新的攻击手段;另一方面,也需要制定更多适应不同需求的安全标准,如隐私保护标准、快速认证标准等,以满足日益增长的数字化安全需求。
总之,在数字化时代,保障电子数据交换的安全性是一个长期而复杂的任务,需要各方共同努力,综合考虑技术、社会和经济等多方面因素,才能构建一个更加安全可靠的数字环境。
49

被折叠的 条评论
为什么被折叠?



