0
저는 ECDH를 처음 사용하여 Java에서 비밀 키를 생성하려고했습니다. 나는 코 팩터 키 유도 (cofactor key derivation)와 함께 Elliptic curve Diffie-Hellman을 사용하기를 원했습니다. 나는 타원 곡선 연산에 P-256 곡선을 사용하고 있습니다. 결과 암호를 블록 암호의 대칭 키로 사용할 계획입니다.대칭 키를 생성하기 위해 보조 요소 Diffie-Hellman을 보조 함수 키로 사용
나는이 작업을하고 있으며, 아래의 샘플을 가지고있다. 이것은 비밀 키를 생성합니다.
Provider BC = new org.bouncycastle.jce.provider.BouncyCastleProvider();
ProviderList.newList(BC);
ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("P-256");
KeyPairGenerator g = (KeyPairGenerator) KeyPairGenerator.getInstance(
"ECDH",BC);
g.initialize(ecSpec, new SecureRandom());
KeyPair aKeyPair = g.generateKeyPair();
KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDH", BC);
aKeyAgree.init(aKeyPair.getPrivate());
KeyPair bKeyPair = g.generateKeyPair();
KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDH", BC);
bKeyAgree.init(bKeyPair.getPrivate());
aKeyAgree.doPhase(bKeyPair.getPublic(), true);
bKeyAgree.doPhase(aKeyPair.getPublic(), true);
byte[] aSecret = aKeyAgree.generateSecret();
byte[] bSecret = bKeyAgree.generateSecret();
System.out.println(new String(aSecret));
System.out.println(new String(bSecret));
나는 정적 키 대신 일시적인 개인 키와 공개 키를 사용하고 있습니다. 정적 개인 키와 공개 키를 사용하여 비밀 키를 생성하는 방법을 알려주십시오.
@ Owlstead는 빠른 답장을 보내 주셔서 감사합니다. 자바에서 동일인을위한 보조 요인 변이에 대해 조금 더 알려 주시기 바랍니다. – Manu
사실, 제가 생각하기에 * 상자 밖에서 지원되는 것을 제외하고는 아닙니다. 따라서 BC 경량 (직접) API의 특수 클래스에 대한 참조입니다. –
Owlstead에서 제안한대로 KDF를 사용하고 싶습니다. java 또는 bouncy castle에서 sha-256 구현을 사용하는 KDF에 대한 정보. 장시간 시도한 후에도 많은 정보를 찾을 수 있습니다. – Manu