Я новичок и неопытен в области криптографии на основе эллиптических кривых. После некоторых исследований я определил, что в отличие от традиционного DHE, параметры ECDHE не должны генерироваться, а должны выбираться из списка предопределенных кривых (примеры включают «P-521», «prime192v3»).
При создании чувствительного к безопасности сетевого приложения лучше (или даже логичнее) выбирать разные кривые случайным образом во время выполнения по сравнению с использованием одной жестко закодированной кривой?
Кроме того, существует ли такая концепция более сильной и более слабой кривых среди всех кривых на выбор?
Пока что это мой код для инициирования обмена 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();
Что-то не так с этим кодом до сих пор?