【发布时间】:2013-10-26 08:00:06
【问题描述】:
我是椭圆曲线密码学领域的新手,经验不足。经过一些研究,我确定与传统 DHE 不同的是,不应生成 ECDHE 参数,而是从预定义曲线列表中选择(示例包括“P-521”、“prime192v3”)。
在创建基于网络的安全敏感应用程序时,在运行时随机选择不同的曲线与使用单个硬编码曲线相比更好(甚至合乎逻辑)?
另外,在所有的曲线中是否有stronger和weaker曲线这样的概念可供选择?
到目前为止,这是我启动 ECDH 交换的代码:
//For readability purposes exception checking code not shown, all code is properly exception-handled
SecureRandom rnd = SecureRandom.getInstance("SHA1PRNG", "SUN");
X9ECParameters curve = ECNamedCurveTable.getByName("prime192v3");
ECDomainParameters domain = new ECDomainParameters(curve.getCurve(), curve.getG(), curve.getN(), curve.getH(), curve.getSeed());
ECKeyGenerationParameters ecgen = new ECKeyGenerationParameters(domain, rnd);
ECKeyPairGenerator kpgen = new ECKeyPairGenerator();
kpgen.init(ecgen);
AsymmetricCipherKeyPair kp = kpgen.generateKeyPair();
到目前为止,这段代码有什么问题吗?
【问题讨论】:
-
大部分问题更适合crypto.stackexchange.com。您应该始终至少在问题中添加一个常见的标签,例如密码学,这个问题不为人知。
标签: java cryptography bouncycastle elliptic-curve diffie-hellman