2012-05-16 3 views
0

새 보안 프로젝트를 진행 중입니다. 서버 측 및 클라이언트 측 인증을 모두 사용하고자합니다. 클라이언트 인증을 허용하기 위해 "카드 리더기"에 배치하고 지문을 사용하여 잠금 해제 할 수있는 카드를 만들고 싶습니다.PKI - 카드 판독기 교체

이제 우리는 A 회사의 카드 리더기를 몇 개 가지고 있으며 클라이언트 측 (브라우저가 아닌 소규모 소프트웨어)이 해당 카드의 인증서를 사용하기 위해 Java 프로그램은 우리가 그것을 connct 수 있도록 DLL에 대한 네이티브 호출. 우리는 회사 B에 카드 판독기를 변경할 경우 내가 일반적인 카드 판독기에이 연결을 만들 수있는 방법을 찾고 있어요

내 질문은 :

  1. 이 더 나은가 카드 판독기에 액세스하여 인증서를 얻는 방법? 예를 들어, 순수 자바 코드 (또는 순수한 JDK 코드)를 사용하고 인증서와 기타 필요한 모든 작업을 여전히 모으고 있습니다.

  2. 이 작업을 수행하는 순수한 Java 방식이 없다면 특정 .dll에 의존하지 않게하는 일반적인 방법이 있습니까?

  3. 당신은 이것이 얼마나 안전하다고 생각합니까? 아마도 카드 판독기없이 클라이언트 인증을 수행하는 동등한 보안 방법이 있습니까?

+2

아마도 pkcs11을보고 싶을 것입니다. 그것은 이런 종류의 것들에 대한 표준 인터페이스입니다. 내가 그것을 사용하는 소프트웨어를 작성했지만 자바 (openssl - 그것은 C에서 연장하기 매우 쉽습니다). 어쨌든, 나는 자바 pkcs11 libs에 대한 인터넷 검색을 제안거야. –

답변

2

는 오라클 JRE를 사용하면 PKCS # 11 API를 구현하는 DLL을 연결하는 것을 허용 할 Sun PKCS#11 provider, 함께 제공됩니다.

이것은 확실히 Java가 관련된 "표준"방법입니다. 스마트 카드는 KeyStore 인스턴스로로드 할 수 있습니다. 키를 스마트 카드에서 추출 할 수없는 경우에도 PrivateKey 개체는 응용 프로그램 서명/암호 해독에서 사용하기 위해 만들어 지지만 사적인 지수 (여기서 RSA라고 가정)를 추출 할 수는 없습니다. 작업을 위임합니다 디자인대로 카드에.

(내가 과거에 리눅스 머신에 OpenSC/OpenCT 성공적으로 그것을 시도했다가. 나는 # 11 Windows 용 더 드물지만 일부 스마트 카드 공급 업체는 여전히위한 인터페이스를 제공 할 수 PKCS 생각합니다.)

이것이 얼마나 안전한지는 사용중인 PKCS # 11 구현에 따라 다릅니다. 자신의 DLL을 PKCS # 11에 맞게 조정하면 "안전"이라고하기 전에 확실하게 검토하고 검토해야합니다.

+1

참고 사항 : 우리가 발견 한 모든 공급 업체 (약 12 개 정도)는 CSCS와 비교하여 PKCS # 11이 제공하는 훨씬 뛰어난 기능으로 인해 Windows 용 PKCS # 11 DLL을 제공합니다. –

0

하나의 옵션은 카드 판독기 장치 드라이버와 Java 응용 프로그램 사이에 위치한 미들웨어입니다. 이렇게하면 응용 프로그램이 미들웨어 라이브러리와 만 상호 작용하므로 DLL이나 사용중인 하드웨어 유형 또는 Sun PKCS11 공급자에 직접 액세스하는 데 신경 쓸 필요가 없습니다. 새 카드 판독기가 설치되면 미들웨어가 드라이브와 상호 작용합니다. 인증서에 액세스 할 수 있지만 생체 인식 데이터 (지문)가 스마트 카드에 저장되어있는 경우 (서버에있는 것과는 대조적으로) 미들웨어를 사용하여 액세스 할 수 있습니다. 그러한 미들웨어를 만드는 한 회사는 Active Identity입니다.