2017-07-11 2 views
2

楕円曲線を「サポートする」Java Card APIでは、既知の秘密鍵が与えられた公開鍵をどのように計算するのですか?JavaCardの秘密鍵からのECC公開鍵の計算

DH共有秘密交渉に続いて、私は共通共有キーの導出に興味があります。 TR-03111とX9.63によると、DH ECC鍵合意の共有秘密は使用すべきではないが、私の理解によれば、x座標のアフィン表現(共有秘密に関連する公開鍵のx成分秘密鍵として使用される)が使用される。

BigInteger算術またはECPoint.multiply()を使用すると、Java CardにこのようなAPIは簡単に存在しますが、このようなAPIはありません。

+0

KeyAgreementクラスは使用していますか?なぜgenerateSecretを呼び出さないのですか? – vojta

+0

私はKeyAgreementクラスを使って共有秘密を生成しました。今私は秘密鍵として共有秘密を使い、公開鍵を派生させたいと思う。私が知る限り、KeyAgreementはこれに使用することはできません。 – Nick

答えて

1

この乗算はJava Cardで直接利用できません。基本的にJava Cardは低レベル操作を隠します。

しかし、比較的新しいJava Cardをお持ちの場合はALG_EC_SVDP_DH_PLAIN_XYを使用して作成したKeyAgreementインスタンスを使用してこの問題を解決できます。あなたができることはECPublicKeyを作成することです。公開鍵ポイントは単にポイントGに設定されます。このベースポイントGはドメインパラメータの一部です。もちろん、秘密鍵はあなたの価値に設定する必要があります。

次に、重要な合意を実行することです。合意の結果は、公開鍵のポイントXとYになります。


任意のアルゴリズム定数のサポートは、カードの実装によって異なります。実装されたAPIが十分に新しい場合、定数がそこにありますが、アルゴリズムは実装されていない可能性があります。

関連する問題