Elliptic-Curves
為什麼 OpenSSL 顯示 253 位?
當使用帶有 Curve25519 的 ECDHE 時,OpenSSL 顯示:
伺服器臨時密鑰:X25519,253 位
我認為,當我們使用 X25519 時,它使用 256 位密鑰。為什麼 OpenSSL 說伺服器臨時密鑰是 253 位?
Curve25519的基點順序是一個253位整數 $ 2^{252}+ 27742317777372353535851937790883648493 $ . 選擇小於所述順序的隨機正整數作為私鑰是密碼系統中基於某些組中離散對數的難度的常見選擇。這可能就是為什麼說私鑰是 253 位的。
但是,根據評論:Curve25519 密鑰集被定義為那些 32 字節的字節串,當轉換為整數時(根據字節級別頂部的小端約定),形成一個 255 位整數 $ n\in2^{254}+8{0,1,2,3,\dots,2^{251}-1} $ . 該字節串是 256 位,其中 251 位是可變的,並且 5 位設置為預定義值(3 個低位和 2 個高位:除了第二高位之外,這些都是零)。沒有什麼合理的加起來等於 253。
注意:不要與安全級別混淆,據信可與 128 位對稱加密相媲美(最佳攻擊成本) $ 2^{140} $ 位操作)。
參考:
- Daniel J. Bernstein,Curve25519:新的 Diffie-Hellman 速度記錄,PKC 2006 會議記錄
- Daniel J. Bernstein、Niels Duif、Tanja Lange、Peter Schwabe、Bo-Yin Yang:高速高安全性簽名,在CHES 2011和JoCE 2012的會議記錄中。