総時価総額:$00
API
JA
ダーク

SSI/Mag7/Meme/ETF/コイン/インデックス/チャート/リサーチを検索
00:00 / 00:00
表示
    チャート
    指数
    情報
    TokenBar®
    分析
    マクロ
    ウォッチリスト
共有

X-Wing:PQC鍵カプセル化、ただしより良く

AIによる翻訳
Prof Bill Buchanan OBE
1KWords
2025年6月30日

X-Wing: PQC鍵カプセル化、ただしより良く

私たちは、ECDHからポスト量子メソッドへの移行を進めています。これには、鍵カプセル化の使用が含まれます。ここでは、公開鍵によってカプセル化され、関連する秘密鍵によってデカプセル化される秘密鍵を生成します。現時点ではML-KEMが最適な方法ですが、ML-KEM768やX25519などのハイブリッドメソッドを使用する可能性があります。

X-Wingはこれに対する1つのソリューションであり、X25519とML-KEM-768を使用するように最適化されています [こちら][1]:

全体として、この論文は、X-Wingが優れたパフォーマンスレベルを示し、X25519またはML-KEM-768のいずれかが安全であれば安全であることを示しています。X-WingとX25519Kyber768標準 [こちら] との主な違いは次のとおりです。

  • ML-KEM-768の最終バージョンを使用します。
  • ハイブリッド暗号化から離れて使用できる、共有シークレットのハッシュを作成します。
  • DHKEM(X25519)をハッシュにフラット化する、よりシンプルなコンバイナー。
  • ML-KEM-768の暗号文をハッシュしません。
  • 現時点では、X-WingはIETFによって起草されています [こちら]:

    主なステップは次のとおりです。

    sk,pk= ML-KEM-768.KeyGen_internal(z): 32バイトのシード値(z)から決定論的なキーペアを生成します。

    ss,ct = ML-KEM-768.Encaps(pk, w): 公開鍵(pk)とシード(w)を使用して、秘密(ss)を暗号文(ct)にカプセル化します。暗号文は決定的です。

    ss2= ML-KEM-768.Decap(ct sk): 秘密鍵(sk)を使用して、暗号文(ct)から共有シークレット(ss2)を復元します。

    これは、次のように図示できます。

    これに関するGolangコードは [こちら]:


    package main

    import (

    "fmt"
    "math/rand"
    "github.com/cloudflare/circl/kem/xwing"
    )


    func main() {


    seed := make([]byte, 32)
    rand.Read(seed)

    sk, pk := xwing.DeriveKeyPairPacked(seed)

    eseed := make([]byte, 64)
    rand.Read(eseed)

    ss, ct, _ :=xwing.Encapsulate(pk, eseed)

    ss2 := xwing.Decapsulate(ct, sk)


    fmt.Printf("Seed for keys %x\n\n", seed)
    fmt.Printf("Seed for encapsulation %x\n\n", eseed)
    fmt.Printf("PK (first 100 bytes) %.200x (size=%d bytes)\n\n", pk,len(pk))
    fmt.Printf("SK %x (size=%d bytes)\n\n", sk,len(sk))

    fmt.Printf("Cipher (first 100 bytes): %.200x (size=%d bytes)\n\n", ct,len(ct))

    fmt.Printf("Shared secret (generated) %x\n\n", ss)
    fmt.Printf("Shared secret (decapsulated) %x\n\n", ss2)


    }

    サンプル実行は [こちら]:

    Seed for keys 443d6bf9fd37c9b3fbcb641206216662bbe188da987b87086e28e10f5899a1ee

    Seed for encapsulation d429878feb6adbe4d20209c8dff8cb83ede58ef1b4c65ceb27a06d57baf8746a1faba4a85d020361e22956dc89251c6ed79b925618d89430122c55c97968d306

    PK (first 100 bytes) 19dc2f25a48dd4f8520a97cbf0e48e805428a00364cbb63f06379a45
    b53ba3b662029c8af5f12ba7a5bd68bb62971657cf33466ad295ca7557baf951486711e204c7
    1e65622dc4761c5c723777c10b7051ed40bb6b23c46aea2a5f579e00938d1c2722268b2ee6847
    14658b453b4bce7a844055c31ac962488445646bc91a67ac96c42ca304a70a719873836c2fe9
    2422a2b564e1387cf622e51a1360f13c500c5c9bed92422627d7086462cc26a8d744dc330323
    6549bb32a3ee0492a62d4239e73024ab8b3374b (size=1216 bytes)

    SK 443d6bf9fd37c9b3fbcb641206216662bbe188da987b87086e28e10f5899a1ee (size=32 bytes)

    Cipher (first 100 bytes): d0c62d70fc6e7ac9058edf6be7017df61a09d98146bee2f9469
    76a45a3e7be57f4be5896139fd9ebb99cec7febad80ef4598297bd5a6b617a3aae07448e6083
    e02820dcbcca0731ff5db2533894fe3629ad7642589eba33e5fe92535291d4c912230ff009d
    f1c4442b16f3e8bc18bccb1f1baa23af3992a037d4aafb36a637653c7caf711eb09e33cfbbad
    4633ffd3eb6f5b38b156d3a17615a371cf1d9607ef9fc5b7b624fc814636f88499230c1f9970
    f4fbce0584b07680340d53c47ba922d18d69a2cf4338e9 (size=1120 bytes)

    Shared secret (generated) 1be72faba7b4a6eea842d56e1d63229abdcb212b98defb46735a45aaaf81f4db

    Shared secret (decapsulated) 1be72faba7b4a6eea842d56e1d63229abdcb212b98defb46735a45aaaf81f4db

    この場合、公開鍵は1.216バイト長、暗号文は1.120バイト長、秘密鍵はわずか32バイト長(ハッシュされているため)であることがわかります。通常、ML-768では、公開鍵は1.184バイト長、秘密鍵は2.400バイト長、暗号文は1.088バイト長です。これらのキーサイズは、[1]の論文で定義されています。

    参考文献

    [1] Barbosa, M., Connolly, D., Duarte, J. D., Kaiser, A., Schwabe, P., Varner, K., & Westerbaan, B. (2024). X-wing: The hybrid kem you’ve been looking for. Cryptology ePrint Archive.

    10秒で知るべきこと
    利用規約プライバシーポリシーホワイトペーパー公式認証Cookieブログ
    sha512-gmb+mMXJiXiv+eWvJ2SAkPYdcx2jn05V/UFSemmQN07Xzi5pn0QhnS09TkRj2IZm/UnUmYV4tRTVwvHiHwY2BQ==
    sha512-kYWj302xPe4RCV/dCeCy7bQu1jhBWhkeFeDJid4V8+5qSzhayXq80dsq8c+0s7YFQKiUUIWvHNzduvFJAPANWA==