2012-07-24 2 views
0

TLS 상호 클라이언트 인증이 필요한 서버에 액세스 할 브라우저 응용 프로그램을 만들려고합니다. 응용 프로그램은 PKCS # 11 인터페이스를 통해 클라이언트 인증서와 키를 제공 할 수 있어야합니다.PKCS # 11을 사용한 상호 클라이언트 인증

Android 용 상호 참조에 대한 다양한 기사를 살펴보면 PKCS # 11 요구 사항이 Android 키 체인을 사용하여/개인 키를 직접 액세스 할 수 없기 때문에 Android의 기본 키 저장소에 인증서를 추가하지 않는다고 생각합니다.

개인 키를 사용하여 데이터에 서명 할 수 있도록 PKCS # 11 인터페이스가 작동합니다.

대신 PKCS # 11 인터페이스를 사용할 수 있도록 안드로이드에 대한 키 서명 데이터를 가로채는 방법이 있습니까? 현재 내 유일한 옵션은 실제로 이것을 달성하기 위해 자체 TLS 스택을 구현하는 것입니다.

답변

2

다릅니다. 어떤 플랫폼을 타겟팅하고 있습니까? Jelly Bean에는 키 저장소에 하드웨어 장치에 대한 일부 지원이 있으므로 PKCS # 11을 사용하는 키 마스터 모듈을 작성할 수 있습니다. 하지만 OS 구성 요소이므로 자체 ROM을 구현해야합니다. 또한 PKCS # 11 모듈이 지원하는 자체 JCE 공급자를 개발할 수 있습니다. 그런 다음 브라우저에서 클라이언트 인증을 수행 할 때 SSL 엔진이 공급자를 사용하는지 확인하십시오.

+0

매우 흥미 롭습니다. JB에 "non-native"키를 사용하는 방법이 있다는 것을 의미합니까? 너무 나쁘지 만이 버전의 장치가 없습니다. 포인터가 있습니까? –

+0

@martin 'non-native'란 무엇을 의미합니까? 기본 키 마스터 구현은 소프트웨어 (OpenSSL)에서 수행되며, 하드웨어가 암호화 연산을 지원하는 경우이를 사용하는 모듈이 있습니다. –

+0

Windows의 CryptoAPI와 마찬가지로 "Android 키 체인에 존재하며 Android 플랫폼 호출에서 사용하는"기본 언어입니다. 내 말은, 안드로이드를위한 CSP/Minidriver를 만드는 방법은 네트워크 서버, 스마트 카드 또는 다른 이상한 토큰에있는 키를 사용할 수 있다는 것입니다. –