【发布时间】:2011-01-07 00:03:43
【问题描述】:
我正在用 java 为 uni 类编写证书颁发机构,现在我不知道证书序列号的最佳选择是什么。
- 从 0 到veryBigNumber 的简单静态计数器
- 一些巨大的 BigInt 随机数
有什么好的理由选择一个而不是另一个......或者一个都不选??
谢谢,
【问题讨论】:
标签: java security x509certificate pki x509
我正在用 java 为 uni 类编写证书颁发机构,现在我不知道证书序列号的最佳选择是什么。
有什么好的理由选择一个而不是另一个......或者一个都不选??
谢谢,
【问题讨论】:
标签: java security x509certificate pki x509
我建议您使用随机数,但在数据库中保留一份已发行序列号的列表。这将允许两件事。
当然,#1 要求您在生成时检查已知列表,并在发生冲突时生成一个新的随机数,而#2 在安全性或验证方面并没有什么意义,但一个有趣的前景永远不会——少。
【讨论】:
从技术上讲,从 0 到veryBigNumber 的计数器比 bigRandomNumber 更容易实现 - 因为序列号必须不同。
但是 - 如果您关心人们知道您颁发了多少证书,您可能不想使用简单的计数器。
【讨论】:
这取决于您使用序列号的目的。如果您是一家小公司,并且您计划为每位客户提供一份证书,那么您的序列号将显示您拥有多少客户。
除此之外,我看不出序列号不应该是序列号的任何原因。有些人认为使用序列号会向潜在的攻击者泄露一些信息(下一个序列号),但我认为这不是一个大问题。
【讨论】:
主要要求是(Issuer distinguished name, serial number) 对在宇宙中应该是唯一的。因此,除非随机数太大以至于重复的概率可以忽略不计,否则不应使用随机数。一个 20 字节的随机数应该绰绰有余。如果您不介意其他人知道您颁发了多少证书,那么一个简单的计数器就可以了。
最近利用 MD5 的弱点对 SSL 证书颁发者发起的攻击(由 Alex Sotirov 等人发起)实际上通过使用反序列号变得更加容易。随机序列号没有受到攻击。这并不意味着可预测的序列号是不好的安全性,它只是意味着对于这个应用程序随机序列号可以帮助掩盖 MD5 中的弱点。根本问题仍然是 MD5。
【讨论】:
我认为如果我们检查 Serial 这个词,答案是隐含的....Serial、series、progress 等
【讨论】:
我刚才碰巧遇到了这个问题,从答案中您会认为可预测的序列号不是安全问题。我会说这是一个问题,随机序列号更安全。参照。例如,Flame attack 等人 here,或 here 或关于“Predictable serial number attack”的维基百科文章。
【讨论】: