24

新しい SQRL 認証スキームは、Daniel Bernstein によって開発された Curve Ed25519暗号化に依存しています。ただし、このスキームの実装を開始するには、最初に Curve Ed25519 の成熟した実装が必要です。

成熟した実装を知っている人はいますか? Java、.NET、またはその他の一般的なプラットフォームの場合は?

4

5 に答える 5

37

Curve25519 対 Ed25519

まず、Curve25519 と Ed25519 はまったく同じものではありません。これらは同じ基礎となる曲線に基づいていますが、異なる表現を使用しています。ほとんどの実装は Curve25519 または Ed25519 用ですが、それらの間で一部のコードを再利用することができます。

Ed25519 公開鍵を Curve25519 に変換することは可能ですが、その逆では符号ビットが失われます。つまり、2 つの Ed25519 公開鍵が 1 つの Curve25519 公開鍵に対応します。秘密鍵も非常に似ています。


実装に関しては、実際の実装と、それらを使用可能な形式でパッケージ化したライブラリを区別することが重要です。

実際の実装

SUPERCOPでの djb の実装

  • RefCで書かれている、非常に遅い
  • djbRef10は C で書かれており、まともなパフォーマンス
  • アセンブリで書かれたdjb のamd64-64-24kandは、amd64-51-30kRef10

彼はまた、以前の互換性のないプロトタイプを NaCl で作成しました。それを使用しないでください。

Floodyberry の donna実装

アセンブリと c の両方のいくつかのバリアントが含まれています。64 ビット用に最適化されたものもあれば、32 ビット用に最適化されたものもあります。

ライブラリ

  • Libナトリウム

    C ライブラリ、現在はRef10実装を使用

    多くのプログラミング言語のバインディングがあります。これはおそらく最も人気のあるバージョンであり、私がほとんどの人に推奨するものです.

    認証された暗号化 (XSalsa20Poly1305)、ハッシュ、Curve25519 キー交換など、NaCl の他の暗号化関数が多数含まれています。

  • ナイトクラッカーの Ed25519

    C ライブラリ、Ref10実装を使用。

    このライブラリの最も興味深い機能は、Ed25519 公開鍵を使用した鍵交換をサポートしていることです。ただし、共有キーをハッシュしないため、Curve25519 と同じ共有シークレットは生成されません。

    Win32 および Win64 用のビルド済みバイナリが含まれています。

  • 私のC#ポート

    ピュア マネージ コードであり、32 ビットおよび 64 ビット プラットフォームで変更なく動作します。Ref10に基づく。C 実装よりも少し遅いですが、違いは驚くほど小さいです。

    Curve25519 と Ed25519 の両方のキーを使用して NaCl と互換性のあるキー交換をサポートし、NaCl からの他の多数の暗号化機能が含まれています。LibSodium と同様の機能セットを目指しています。

    Ed25519 シグネチャ関数は機能し、かなりの量のテストが行​​われましたが、ライブラリの他の部分は少し粗いです。

  • SUPERCOP または Floodyberry のコードからの実装を直接使用します。

    ビルドにはおそらくもう少し作業が必要ですが、パフォーマンスが向上し (~2 倍)、不要なコードを持ち歩く必要がなくなります。


今のところ、LibSodium を使用することをお勧めします。比較的人気があり、手入れが行き届いています。パフォーマンスはまともです。本当に署名の重いアプリケーションでのみパフォーマンスの問題が発生するはずです。

于 2013-10-03T14:35:39.397 に答える
6

CodesInChaos の回答に追加:

ライブラリ

  • 私のJavaポート

    Ref 10 に基づいており、暗号化プロバイダーに追加できるように標準の JCA API を提供します。

于 2014-07-10T10:59:50.873 に答える
0

組み込み実装

于 2015-10-09T15:43:29.750 に答える