本記事はZennから移行し、アドカレ向けに加筆しました。
はじめに
本記事は読み易さ重視のため、数式や定量的な事は書いていません。さて、RSA暗号に関する情報は多いが、EdDSA Ed25519に関してはそうではなく、数式を伴った難しい説明が添えられ、全体像を掴むのに時間が掛かった。細かいことは置いておいて1枚に図解した。普及型のECDSAとの対比で説明する。
ブロックチェーンごとの暗号方式
チェーンごとに署名アルゴリズムと曲線は違う。
署名アルゴリズム
Symbol:EdDSA(Ed25519)
bitcoin:ECDSA
Ethereum:ECDSA
・・・
曲線
Symbol:Curve25519
bitcoin:secp256k1
Ethereum:secp256k1
・・・
参考:http://ethanfast.com/top-crypto.html
EdDSAとEd25519の表記の使い分け
EdDSAはデジタル署名アルゴリズムの名称。
Ed25519は、特定のアルゴリズムと曲線(Curve25519)のセット。つまり、具体的な署名や検証に使用される際にはEd25519という名前が使われます。
※RFC 7748 RFC 8032 に記載されている。
EdDSA(Ed25519)の特徴
- 高いセキュリティ
- 高速な署名生成および検証
- 鍵と署名が短い
高いセキュリティをもちながらも、構造がシンプルなので署名生成/検証が高速。
鍵と署名データが短いので、利用する際のデータ転送やストレージコストが低い。
ECDSAとの関係
- ECDSA:標準的なセキュリティを提供し、広く採用されている。
- EdDSA(Ed25519):ECDSAを改良しており、モダンな設計である。
総じて、どちらがよいとは一口には言えず、状況や要件に依存する。
既存のセキュリティ要件に合わせる場合はECDSAを使う事になるだろうし、一から設計する場合は、EdDSA(Ed25519)を使うべきである。
ECDSAからの主な改良ポイント
秘密情報を使用してメッセージを署名する際などに、内部乱数(ノンス)が必要。そのノンスの生成方法が改良されている。
ECDSAが擬似ランダム関数を使うのに対して、EdDSAは、秘密情報とメッセージのハッシュ値を組み合わせて、ノンスの代わりに使用する。これにより、ノンスが外部から予測されることがなくなる。
過去にこんなことがあった
ECDSAを採用した国内ゲーム機では、擬似ランダム関数を固定化してしまい、解析されてしまったことがある。
→EdDSAであれば、そもそも外部(デバイス)の擬似ランダム関数を使わずに、メッセージと秘密情報・ハッシュ値に基づいて署名を生成しているので機密性が確保されている。
一般的に使われていた乱数アルゴリズムにバックドアが存在する疑惑が浮上した事があった。
→そこから「乱数を使わない」という考え広まり、その観点からもEdDSAが注目されている。
※EdDSAでもなんであっても、実装の仕方によって脆弱になってしまう。(当然)
こんな側面も
安全性に関してECDSAに劣る点はないが、
署名作成の際に、平文のハッシュ化を2回しているので、平文が長い場合にECDSAに比べて署名作成に時間がかかるという側面はある。検証時間に関しても平文の長さに影響を受けるがその場合でもECDSAより遅くなることはない。
※単独署名者の署名検証をバッチ処理できるメリットがある。
※「平文の長さ」に関して具体的な目安はわからなかった。
ブロックチェーンSymbolではどこで活躍しているのか
**署名を扱うとき、つまりアカウント作成やトランザクション発行時に使われる。
EdDSAの図解
署名アルゴリズムによって、楕円曲線の種類があり、またそれぞれに共通パラメータが用意されている。署名時に秘密鍵、パラメータ、メッセージを使い署名を作成。メッセージに署名を付加。検証時には秘密鍵ではなく、公開鍵の情報を合わせて検証する。メッセージは暗号化されておらず、検証側では、なりすまし/改竄がされているか?いないか?だけを確認する。
オレンジ色■の「ランダム性確保」の箇所において、擬似乱数関数を使わず、秘密鍵と平文のハッシュ値を使っているのが改良ポイントのひとつ。
最後に所感
後発のsymbolが、bitcoin、Etheriumより高度なアルゴリズムを採用出来るのは当然とも思えるが、新しいものを採用する事のリスクもあるので、よく検討されたのだと推測する。ECDSAからEdDSAに改修するのは大変そうに感じるがどう対応していくか興味がある。
参考サイト
参考:https://www.nic.ad.jp/ja/newsletter/No60/0640.html
参考:https://www.cryptrec.go.jp/exreport/cryptrec-ex-3002-2020.pdf
参考:https://portswigger.net/daily-swig/dozens-of-cryptography-libraries-vulnerable-to-private-key-theft
参考:Symbol解体新書