저는 자바 카드 개발에 익숙하지 않습니다. 자바 카드 애플릿에 보안 키 값을 저장하는 방법을 알고 싶습니다. 인증에 PKI (공개 키 인프라)를 사용하고 싶습니다. 가능합니다. ?? 그렇다면 어떻게 우리가 자바 카드 애플릿에 키를 저장할 수 있습니다.자바 카드 키 설치
답변
예, javacard가 비대칭 암호화 즉 RSA를 지원하기 때문에 가능합니다.
사전 정의 된 배열, 애플릿 별 설치 매개 변수 또는 독점적 인 APDU를 사용하여 애플릿 작성 중에 키를 인스턴스화 할 수 있습니다. 그런 다음 개인 키는 RSAPrivateKey
에 저장됩니다.
카드가 글로벌 플랫폼을 지원하는 경우 card specification을 살펴보십시오. 다양한 키로드 및 콘텐츠로드 방법을 제공합니다.
그것은 확실히 가능하며, 다음과 같은 것들을해야 다음 경우,
- generate a key pair on card는 최대 키 크기 (2048 비트)를 이동하려고를이 시간이 오래 걸릴 수 있습니다, 그리고 카드 또는 리더가 정상적으로 연결 시간 초과를 처리하지 않으면 문제가 발생할 수 있습니다.
- 단말기의 카드에 PKCS # 10 인증 요청을 작성하십시오. 이것은 ASN.1 DER 인코딩을 사용하는 데이터 구조입니다.
- sign the PKCS#10 request과 키 쌍의 개인 키;
- PKCS # 10 요청을 인증 기관 (CA)으로 보냅니다.
- 반환 된 인증서를 가져옵니다.
Java Card는 RSA 또는 EC 키 쌍 생성 및 서명/확인 작업을 지원해야합니다. 요즘에는 대부분의 카드가 있지만 비대칭 코 프로세서가없는 카드가있을 수 있습니다.
이 대답은 이전 개인 키를 사용하는 것이 안전하지 않으므로 새 키 쌍을 만드는 것으로 가정합니다. 기존 개인 키를로드하려면 RSAPrivateKey
의 모든 설정자를 호출하거나 더 빨리 RSAPrivateCrtKey
을 호출하면됩니다. 두 객체 모두 Java Card KeyBuilder
인스턴스를 사용하여 만들어야합니다.
많은 지식이 필요합니다. MuscleCard과 같은 오픈 소스 솔루션을 사용하는 것이 더 나을 것입니다.
MuscleCard 링크가 깨진 것 같습니다 ... – vojta
Works for me;) 링크 편집을 자유롭게하십시오 vojta –
당신의 response.can 당신에게 주셔서 감사합니다 자바 카드의 인증을 위해 PACE 프로토콜을 사용할 수 있습니다. – Sajithv
전에 PACE 프로토콜을 사용하지 않았습니다. http://de.wikipedia.org/wiki/PACE-Protokoll에서 설명을 찾았지만 매우 일반적입니다. 표준 사양을 얻고 APDU 및 알고리즘이 카드에서 지원되어야하는지 확인해야합니다. – David
@You 불행히도 PACE는 Java Card에서 구현하기 어려운 특정 트릭이 필요합니다. Java Card를 확장하려면 일부 독점 Java Card 확장이 필요할 수 있습니다. 그리고 어쨌든 스마트 카드에 PACE를 작성하려면 책의 모든 작은 트릭을 알아야합니다. –