Elliptic Curve Integrated Encryption Scheme (ECIES)とは何ですか?
Elliptic Curve Integrated Encryption Scheme (ECIES)は、公開鍵の仕組みと高速な共通鍵暗号を組み合わせたハイブリッド暗号方式で、メッセージの秘匿性と改ざん検出性を保ちます。例えるなら、メッセージごとに作る一回限りの鍵付きの箱に素早く暗号をかけ、誰かが覗いたかどうか分かる封印を付けるようなものです。
「ECIESは曲線で直接データを暗号化する」といった説明は正しくありません。楕円曲線暗号 (ECC)を使って共有秘密を合意し、その後、実際の暗号化は共通鍵暗号とメッセージ認証コードに任せます。
Elliptic Curve Integrated Encryption Scheme (ECIES)の仕組み
チェーン上やウォレット経由でアリスがボブに秘密のメモを送る場面を想像してください。Elliptic Curve Integrated Encryption Scheme (ECIES)は新しい一時的な共有秘密を素早く作成し、その後メッセージを包みます。
- ステップ1:ボブは公開鍵を持っている。アリスはボブに秘密メッセージを送りたい。
- ステップ2:アリスは新しい一時鍵ペアを作成し、ボブの公開鍵と楕円曲線 Diffie-Hellman (ECDH)を使って共有秘密を形成する。
- ステップ3:アリスはその秘密を鍵導出関数に入れて二つの鍵を得る:暗号化用と整合性用。
- ステップ4:アリスはメッセージを高速な暗号、例えば AES で暗号化する。
- ステップ5:アリスは暗号文とメタデータに対してタグを作成し、ボブに三つを送る:彼女の一時公開鍵、暗号文、タグ。
ボブは同じ計算を繰り返して同じ秘密を得て、メッセージを開く。簡潔で高速だ。
なぜ Elliptic Curve Integrated Encryption Scheme (ECIES) が重要か
これはプライベートなデータを遅延や面倒な調整なしに守るから重要です。コンパクトな鍵と強い整合性検査が必要な場面で、現代の 暗号学 でよく使われる手法です。
- 利点:小さな鍵と高速な動作で強い秘匿性を提供、携帯端末でも有効。
- 視点:ハイブリッド設計により、曲線暗号と共通鍵暗号の利点を組み合わせており、ウォレットやノード、ライトクライアントの組合せに合う。
- 関連性:ウォレット間メッセージ、P2Pハンドシェイク、dAppやDAOの暗号化メモで使われる。
毎回新しいランダム性を。Elliptic Curve Integrated Encryption Scheme (ECIES) を使う際は、各メッセージごとに新しい一時鍵を生成し、監査済みのライブラリを使ってください。再利用は秘密が漏れる原因になります。
Elliptic Curve Integrated Encryption Scheme (ECIES) の主な特徴
ウォレットのコードを作成またはレビューする際に注目すべき点は次の通り:
- ハイブリッド:鍵合意に曲線、速度のために共通鍵暗号、整合性のためのタグ。
- コンパクト:小さな公開鍵と短いメッセージで強い安全性を実現。
- 前方安全性:一時鍵を使えば、長期鍵が後で漏れても過去のメッセージは保護される。
- 移植性:暗号、KDF、タグアルゴリズムなどを差し替え可能で、多くのエコシステムに適応する。
バリエーション
実装によりECIESは異なる要素と組み合わされます。よく使われる選択肢:
- 曲線:鍵合意ステップで使われるのは secp256k1、P 256、または X25519。
- 暗号:一回で暗号化とタグを行う AES GCM、または二段構成の AES CBC と HMAC。
- KDF:HKDF や KDF2 で共有秘密を作業用鍵に変換する。
- エンコーディング:圧縮または非圧縮の公開鍵、タグ用のオプションの付随データ。
Elliptic Curve Integrated Encryption Scheme (ECIES) は機密性と整合性を提供しますが、署名は提供しません。送信者の真正性が必要なら、別途署名を追加してください。
例
EthereumクライアントはECIESスタイルのハンドシェイクでセッションを開始し、その後継続する通信には高速なストリーム暗号に切り替えて秘密通信を行います。
豆知識
ECIESはしばしば KEM と DEM の組合せとして教えられます。つまり鍵カプセル化とデータ暗号化です。鍵には洗練された数学、データには実用的な暗号を使う組合せで、うまく機能します。
まとめ
要約:Elliptic Curve Integrated Encryption Scheme (ECIES) は新しい秘密を共有し、高速に暗号化し、メッセージが改ざんされていないことを示す方法だ。シンプルで堅牢、実運用に適する。
