Javaで楕円曲線の基点またはジェネレータを生成するにはどうすればよいですか?
楕円曲線暗号アルゴリズムの実装に使用できるJavaパッケージの開発に取り組んでおり、独自の曲線を使用したいと考えています。ただし、ドメインパラメータのセットを取得できるように、カーブのジェネレータベースポイントを取得する必要があるポイントで立ち往生しています。
どんな助けでも大歓迎です。
Javaで楕円曲線の基点またはジェネレータを生成するにはどうすればよいですか?
楕円曲線暗号アルゴリズムの実装に使用できるJavaパッケージの開発に取り組んでおり、独自の曲線を使用したいと考えています。ただし、ドメインパラメータのセットを取得できるように、カーブのジェネレータベースポイントを取得する必要があるポイントで立ち往生しています。
どんな助けでも大歓迎です。
「概素数」次数u
=の楕円曲線が与えられた場合、次k
r
のようにする必要があります。
P
G
=k
P
G
goto 1r
G
ます(0の場合、曲線には順序がありませんでしたk
r
)。r
。これは、Java、Cなどでも同じです。
まず、プライムグループの順序がqのECCドメインを自分で作成し、それを暗号化に使用したいとします。次に、ランダムなx座標を選択し、ワイエルシュトラス形式の楕円曲線方程式からy^2を計算します。うまくいけば、3 mod 4である素数モジュラスpを選択しました。この場合、平方根mod pが存在する場合、それを決定することは簡単です。存在しない場合は、別のxを試してください。2回以上試行する必要はめったにありません。ほとんどの場合、最初の試行で、新しく作成されたドメインにすでに有効なジェネレーターがあります。
この目的のために、私のオープンソースプログラム「AcademicSignature」を使用できます。 マニュアルとダウンロードページへのリンク。新しいドメインをドメインリストにインポートする場合は、このドメインの任意のジェネレーターを試すことができます。ジェネレータは、AcademicSignatureへのインポート時にチェックされます。楕円曲線上の有効なポイントでない場合、テストポイントのx座標は、有効なxy座標のペアが検出されるまで増加します。その後ドメインをエクスポートすると、新しいジェネレーターがドメインパラメーターのプレーンテキストファイルに含まれます。
このページのECCドメインページでは、上記の手順を使用して「16進ワードアート」を含むジェネレーターを取得した場合に作成したいくつかのドメインを見つけることができます。
ドメインを自分で作成しなかった場合、ドメインが素数であり、実装で既にジェネレーターが使用されている場合は、さらに簡単です。古い実装ジェネレーターに乱数を掛けると、新しいドメインが作成されます。キースペースを他の実装のキースペースから分離するために使用できるジェネレーター。
よろしくマイケルアンダース