| 一般 | |
|---|---|
| 設計者 | ダニエル・バーンスタイン、Niels Duif、Tanja Lange、Peter Schwabe、Bo-Yin Yang、et. al. |
| 初版発行日 | 2011-09-26 |
| 詳細 | |
| 構造 | 楕円曲線暗号 |
エドワーズ曲線デジタル署名アルゴリズム(エドワーズきょくせんデジタルしょめいあるごりずむ、英語: Edwards-curve Digital Signature Algorithm、略称:EdDSA)は、公開鍵暗号において、ツイステッドエドワーズ曲線に基づくシュノア署名の一種を用いたデジタル署名の一つである。他のデジタル署名において見つかっている安全性に関する問題を回避した上で、高効率で暗号化処理が行われるように設計されている。エドワーズ曲線電子署名アルゴリズムは、ダニエル・バーンスタインが率いるチームによって開発された 。
EdDSAのアルゴリズムは以下のように表すことができる。簡単のため、整数や曲線上の点をどのようにビット列に符号化するかといった詳細は省略している。詳細については、引用文献やRFCを参照のこと。
EdDSA方式は、次のパラメータを用いる。
これらのパラメータは、EdDSA署名方式の全てのユーザが共通で使うことができる。ベースポイントの選択は任意だが、その他のパラメータの選択はEdDSA署名方式の安全性に大きく影響を与える。例えば、ポラード・ロー離散対数アルゴリズムを用いて離散対数を計算するのに必要な楕円加算回数はおよそ 回である。したがって、このアルゴリズムで離散対数を解くことが事実上できないように は十分大きくなければならない。典型的には、 は より大きい値を用いる。 の選択は の選択によって制限を受ける。Hasseの定理により、位数 は、 から 以上離れることができないためである。ハッシュ関数 は、EdDSAの安全性解析においては通常ランダムオラクルと想定される。HashEdDSAという変種(variant)においては、 に加え、衝突耐性を持つハッシュ関数も必要である。
鍵生成、署名生成、署名検証の方法は以下の通りである。 はビット列の連結を表す。
署名の生成方法と、位数が であることから、正しく作られた署名は必ず検証を通る。すなわち:
Ed25519は、エドワーズ曲線デジタル署名の実装の一つであり、ハッシュ関数としてSHA-512(SHA-2)を使い、曲線としてCurve25519を用いている。各パラメータは以下の通り。
曲線 は、Curve25519として知られているモンゴメリ型楕円曲線と双有理同値である。具体的な同値は で与えられる 。
Ed25519は、x86-64 Nehalem/Westmereプロセッサファミリー向けに最適化されている。検証は、64個の署名を一括で処理することでよりスループットを向上させることができる。Ed25519 は、128ビット安全性を持つ共通鍵暗号系と同等の攻撃耐性を提供することを目的としている。公開鍵は256ビット、署名は512ビットである。
安全性に関しては、Ed25519では、秘密のデータに依存した分岐命令と配列参照が用いられておらず、多くのサイドチャネル攻撃に耐性がある。
他の離散対数問題ベースの署名方式と同様に、EdDSAは署名毎に異なるnonceと呼ばれる秘密情報が用いられる。DSAとECDSAにおいては、このnonceは署名生成ごとにランダムに生成されるのが一般的である。しかし、もし脆弱な乱数生成方法が用いられてnonceを推測可能であるときには、署名が秘密鍵の情報を漏らしてしまう。例えば、ソニーのPlayStation 3の署名鍵が漏洩した事例がある。
これに対し、EdDSAでは秘密鍵とメッセージのハッシュ値からnonceを確定的に決めるという方法を取っている。これにより、秘密鍵をランダムに作成すれば、その後の署名生成時には乱数を使う必要がなく、脆弱な乱数生成方法を用いることによる秘密鍵の漏洩のリスクが存在しない。
EdDSAには2つの標準化が存在する。1つはIETFによる RFC 8032 であり、もう1つはNISTによるFIPS 186-5 (2019).である。これらの標準の間の違いについての解析が既に報告されており、テストベクタも利用可能である
Ed25519の主要な使用例には、OpenSSH, GnuPGとさまざまな代替ソフトウェア 、そして、OpenBSDで提供されているデジタル署名・署名検証ツールsignifyがある 。
Ed448は、エドワーズ曲線デジタル署名の実装の一つであり、ハッシュ関数としてSHAKE256を使い、曲線としてCurve448を用いている。Ed25519と同様に、RFC 8032 に定義され、FIPS 186-5の草稿において推奨されている。
{{cite conference}}: CS1メンテナンス: 数字を含む名前/author (カテゴリ){{cite conference}}: CS1メンテナンス: 複数の名前/author (カテゴリ)