2017-05-15 6 views
3

Java로 인증서를 확인하는 방법은 알고 있지만 자바 카드 API (Java 클래스 API 없음 (다른 클래스 없음, javacard API + Object + Throwable 만 허용)의 제한으로 인해 Java Card에서 수행하는 방법을 인식하지 못했습니다.).Java Card의 인증서 유효성을 확인하는 방법은 무엇입니까?

인증서 용 javacard 호환 라이브러리를 찾지 못했습니다. 내가 놓친 게 있니?

인증서의 유효성을 확인할 필요가있을뿐만 아니라 CA가 인증서를 서명했는지 확인해야합니다.

답변

6

일반적으로 인증서를 확인하는 것은 스마트 카드의 경우 매우 어렵습니다. 이러한 인증서는 크기가 2KB보다 큰 경우가 많습니다. 이 카드는 범용 PC의 경우 땅콩이지만 고급 카드는 종종 8KB의 RAM 만 포장하는 스마트 카드 용 카드는 아닙니다. 그리고 그것은 OS, 암호 코 프로세서, APDU 버퍼와 물론 애플릿간에 공유됩니다.

또 다른 문제가 있습니다. 일반적으로 스마트 카드에는 시계가 없습니다. 이것은 인증서가 유효한 기간 내에 까다로운 일임을 확인합니다. 기본적으로 시간을 지킬 수있는 신뢰할 수있는 방법이 필요합니다.

그런 다음 인증서 유효성 검사에서 종종 CRL 또는 OCSP를 사용하여 인증서 상태를 확인합니다. 아시다시피, OCSP 조회를 수행하거나 CRL을 구문 분석하는 것조차도 제한된 플랫폼에서는 쉽지 않습니다.

스마트하게 프로그래밍하면 인증서를 통해 CA의 서명을 확실히 확인할 수 있습니다. 그러나 일반적으로 Card Verifiable Certificates (CVC's or CV-certificates)이 사용됩니다. 스마트 카드 내에서 파싱하기 쉬운 종소리와 호각이 적은 "병합 된"인증서입니다.

더 새롭고 인증 된 인증서의 시작 날짜를 사용하면 어떤 종류의 날짜를 사용할 수 있습니다 ratchet 여기서 인증서는 인증서의 날짜를 사용하여 업데이트됩니다. 하지만 새로운 인증서가 잠시 동안 유효성을 검사하지 않으면 오래된 인증서를 검색 할 수 없습니다. CV 인증서는 일반적으로 CRL을 사용하지 않으므로 각 인증서를 신뢰해야하거나 인증서가 손상된 경우 일부 인증서를 블랙리스트에 올릴 필요가 있습니다.

자바 카드 커넥 티드 에디션에서 조금 더 많은 지원이있을 지 모르지만, 나는 연결된 에디션이 거의 발견되지 않기 때문에 이것이 전혀 도움이되지 않는다고 생각합니다. CVC의에 대한


원래 사양은 ISO/IEC 7816-8 standard: Identification cards — Integrated circuit cards — Part 8: Commands and mechanisms for security operations에서 찾을 수 있습니다,이 표준은 payware입니다있는 & B. 참고 부속서.

ICAO eMRTD 및 BSI TR 03110 문서에서도 이러한 종류의 인증서를 정의하므로 프리웨어가 더 마음에 든다면 인증서 사양을 기반으로하는 것이 좋습니다.