LoginSignup
0
0

More than 1 year has passed since last update.

【IPFS】`ipfs init` 時に指定できるアルゴリズム【指定可能な暗号鍵・署名鍵の種類】

Last updated at Posted at 2022-04-23

IPFS を初期化する際、ipfs init で指定できる署名鍵の暗号アルゴリズムが知りたい。

つまり --algorithm オプションの値が知りたいのです。しかし、ipfs init --help を見ても、デフォルトは ed25519 としか記載されていません。「ipfs init algorithm」とググってみても、「ipfs init で初期化します」程度の記載しかなかったので、自分のググラビリティとして。

TL; DR (今北産業)

  1. 指定可能な署名鍵のアルゴリズム:
    • rsa, ed25519 の 2 種類(go-ipfs v0.12.2 現在)。
  2. -a rsa/--algorithm rsa の場合のみ -b/--bits オプションで鍵の長さが指定できる。
    • -a rsa2048 bit がデフォルトなため、RSA を指定する場合は 4096 bit を指定した方が良いのですが、速度が犠牲になります。
  3. 速度・強度の面で、無指定(デフォルト)の ed25519 で十分

TS; DR

IPFS の初期化で作成される秘密鍵・公開鍵を RSA の 4096 ビットで作成する例。

$ ipfs init -a rsa -b 4096
generating 4096-bit RSA keypair...done
peer identity: Qmd68mqs6RBm3T5MmEBehsfUSsT3VcpDCb456bbfKSHRg7
initializing IPFS node at /Users/admin/.ipfs
to get started, enter:

	ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme

ipfs init ... 時に指定するアルゴリズム名は、基本的に「データの署名」に使われます。ピア同士の通信で、データそのものを暗号化するために使われるわけではありません。

作成された公開鍵・秘密鍵のペアは、公開鍵が「ピアの識別 ID」(peer ID)として使われ、秘密鍵が「ピアの署名用」として使われます。

具体的には、ipfs name publish ... すると、自身のリポジトリに add されているファイルを署名し IPFS ネットワークに通知します。他のピアは、この署名を持ってどのピアが該当 CID を持っているか判断できます。ipfs add しただけでは、離れているピアからコンテンツが見つからないのは、署名して通知していないためです。

そのため、ipfs init には「署名」に特化した Ed25519 暗号を使うのがベストです。そして、特定のピアとだけシェアしたいデータは、別途 RSA 鍵で暗号化したファイルを IPFS を通してシェアするのが妥当です。

2022 年現在、RSA の 4096 bit であれば十分強固であるものの、RSA 暗号方式は 40 年選手であるため、10 年選手である EdDSA アルゴリズムEd25519 を使った署名の方がベターです。しかし、相手も Ed448 のアルゴリズムが使える場合は、Ed448 がベストでしょう。とは言え、いずれを使う場合でも、近い将来スタンダードが変わることが決まっていることに留意します。

ed25519 による署名は速く、強固なのですが、署名鍵作成時の内部のハッシュ関数に 20 年選手である SHA-2SHA512 を利用しています。SHA-1 および SHA-2 のベースとなるマークル・ダンガード構造の突破方法は 17 年前に論文で発表されているからです。これに耐性のある SHA-3 を内部のハッシュ関数に使っているのが Ed448 で、Ed25519 と同じ EdDSA に属します。とは言え、Ed448Ed25519 より強いとされるものの、実験的要素もあることから、事実上 Ed25519 の方がデファクト・スタンダードとなっています。 IPFS でも Ed448 は実装されていません。

留意すべき点は、RSA、Ed25519Ed448 のいずれであっても、来たる量子コンピューターの素因数分解能力で崩れることが分かっているため、近い将来、別の暗号アルゴリズム署名アルゴリズムに変わることがほぼ決まっていることです。逆に言えば、その時が来たら Ed448 も変わるため、汎用性・速度・強度を加味すると Ed25519 が落とし所です。(2022年5月現在)

【2022/07/28 追記】 現在 NIST が行っている、対量子コンピューターのアルゴリズム合戦 "Post-Quantum Cryptography" の 3 ラウンド目で、電子署名アルゴリズム部門のファイナリストに残った 3 つのうちの 1 つ CRYSTALS-DILITHIUM内部で SHA3 を使っていました2024 年に結果が発表されるらしいので、ed25519 に続く新たなスタンダードが近いうちに決まりそうです。見逃せない!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0