簡體   English   中英

彈力城堡的ECDHE安全

[英]ECDHE Security with Bouncy Castle

我是橢圓曲線密碼學領域的新手,沒有經驗。 經過一些研究后,我確定了與傳統DHE不同的是,不應生成ECDHE參數,而應從預定義曲線列表中進行選擇(示例包括“ P-521”,“ prime192v3”)。

創建基於網絡的對安全敏感的應用程序時,與使用單個硬編碼曲線相比,在運行時隨機選擇不同曲線會更好(甚至是合乎邏輯)嗎?

and curves amongst all the curves to choose from? 另外,是否有這樣的概念:在所有曲線中有 的曲線可供選擇?

到目前為止,這是我啟動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();

到目前為止,這段代碼有什么問題嗎?

使用ECC加密,創建域參數需要很長時間。 檢查域參數的安全性也非常困難,例如,Daniel J Bernstein和Tanja lange進行的SafeCurves研究。 可以生成自己的曲線,但可能無法實時生成。 此外,安全性可能低於預定義的安全性,以后您可能會遇到兼容性問題。

曲線的大小顯然很重要,盡管任何超過256位的值都應提供足夠的安全性。 它仍然是可能的-雖然並不容易-即NIST曲線使用可能削弱安全方案產生。 如果您擔心這一點,請從上面的位置選擇一條曲線(例如BrainpoolP384r1曲線),或者選擇其中一種“學術”曲線。 F(p)曲線可能比其他曲線更可取。

盡管這不是代碼檢查站點,但是您提供的代碼似乎沒有任何特別錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM