2016-03-27 20 views
1

Java(7)keytoolを使用して鍵ペアを生成するときに、どのようにECDSAカーブを選択できるかを理解しようとしています。Java keytoolを使用してECDSA鍵ペアを生成するときのカーブを選択する

また、デフォルト設定でどの曲線が使用されているかを調べるのに役立ちます。

keytool -genkeypair -keyalg EC -alias myAlias -keystore myKeystore.jks -storepass myStorepass -keypass myKeypass -validity 730 -keysize 256 -dname "CN=myCn, OU=myOu, O=myO, C=myC" -v 

答えて

-1

OracleがJavaの7の実装を提供するだけSEC曲線を使用しています。ここでは

は、私が使用するコマンドです。これらはNISTの標準曲線と同じです。あなたの場合、P-256が使用されたことは確かです。しかしJavaでは、元のSEC名は "secp256r1"です。 ASN.1 decodeその後、内容

KeyStore store = KeyStore.getInstance("JKS"); 
store.load(new FileInputStream(args[0]), args[1].toCharArray()); 
ECPrivateKey key = (ECPrivateKey) store.getKey(args[2], args[3].toCharArray()); 
System.out.println(Base64.getEncoder().encodeToString(key.getEncoded())); 

::第二オブジェクト識別子(OID)のための

SEQUENCE (3 elem) 
    INTEGER 0 
    SEQUENCE (2 elem) 
    OBJECT IDENTIFIER 1.2.840.10045.2.1 
    OBJECT IDENTIFIER 1.2.840.10045.3.1.7 
    OCTET STRING (1 elem) 
    SEQUENCE (2 elem) 
     INTEGER 1 
     OCTET STRING (32 byte) E935A4475D495ADA18A791C1222D5A3424CF540BDE42802F588C664082D10808 

そしてlookup the value:1.2を


だから、秘密鍵を取得してエンコードすることができます。 840.10045.3.1.7:

「SEC 2:推奨楕円曲線領域パラメータ」に記載されている楕円曲線領域「secp256r1」をカバーしています。 SEC(効率的な暗号化のための規格)曲線は、ANSI X9.62、ANSI X9.63、IEEE P1363、および他の標準のようなECC標準の実装者が使用するために一般的に要求されるセキュリティレベルで楕円曲線領域パラメータを提供する。

0

ECでは、-keysizeを使用してカーブを指定できます。

また、よりクリーンな方法でこれを行うためのJavaコードを記述することもできます。

https://github.com/alokmenghrajani/ec-keytoolをご覧ください。これは、特定のカーブを持つJCEKSエントリを作成したり、keytoolが出力するものよりやや良い方法でそれらを表示できるシンプルなツールです。

関連する問題