2011-10-04 2 views
2

디지털 서명을위한 Java API를 이해하려고합니다. 사용자 지정 cryptoprovider를 사용하여 디지털 서명을 작성해야합니다. 저는이 CSP를 사용하여 문서에 서명하고 분리 된 서명을 얻는 방법을 알고 있습니다. 이제이 서명에 타임 스탬프와 인증서 상태를 추가해야합니다 (정부 기관에 유효한 서명을 만들기 위해). 이러한 작업은 TSP 및 OCSP를 사용하여 수행됩니다. 질문 :TSP, OCSP 및 CMS의 Java 구현

  1. TSP 클라이언트는 어디서 구해야합니까?
  2. 맞습니다. Java OCSP 지원을 사용하기에 충분합니다. 인증서를 확인하는 데 충분합니까?
  3. tsp와 인증 정보가 어떻게 든 CMS와 연결되어 있습니까?
  4. 마지막으로 가장 흥미로운 내용 : 타임 스탬프 정보 및 인증서 확인 정보 : 분리 된 파일이거나 은 서명의 일부입니까 ??

답변

3

어디서 TSP 클라이언트를 가져야합니까?

CMS, TSP 및 OCSP를 사용하려면 Bouncy Castle을 확인하십시오. 그들은 보충 CMS 및 TSP 패키지뿐만 아니라 주 패키지에있는 모든 것을 지원합니다.

맞습니다. 인증서를 검증하기 위해 Java OCSP가 내장되어 있으면 충분합니까?

표준 PKIX 인증서 유효성 확인 메커니즘이 OCSP를 지원하지만 예를 들어. Bouncy Castle OCSP 코드는 사용자 정의 형태로 PKIXCertPathChecker입니다. 기존 유효성 검사 위에 추가하거나 완전히 대체 할 수 있습니다. 지침은 here입니다. 프록시를 통해 연결할 때 내장 된 OCSP 지원을 사용하는 데 문제가있어 과거에는이 기술을 사용하여 기본값을 교체했습니다.

tsp와 인증 정보가 어떻게 든 CMS와 연결 되나요?

TSP 서버가 전송하는 타임 스탬프 응답은 다른 CMS SignedData에 불과하므로 서명 자체가 다릅니다. 개별 파일이 무수히 많은 것을 피하기 위해 일반적으로 수행하는 작업은 CMS의 서명되지 않은 속성 기능을 사용하여 원본 서명 자체에 타임 스탬프를 포함시키는 것입니다. SignerInfo의 usignedAttrs 필드에 서명되지 않은 서명 속성으로 타임 스탬프를 추가하기 만하면 signedAttrs 및 unsignedAttrs 필드에 모든 추가 정보를 포함하는 서명 자체를 별도로 최소화합니다.

마지막으로 가장 흥미로운 내용 : 타임 스탬프 정보 및 인증서 확인 정보로 수행해야 할 작업 : 파일이 분리되었거나 서명의 일부입니까 ??

타임 스탬프 이미 설명했습니다. CRL 및 OCSP 응답과 같은 유효성 검사 정보는 SignedData의 "crls"필드에 포함될 수 있습니다. 실제 서명을 손상시키지 않고 필요할 때마다 이러한 내용을 추가 할 수 있습니다. 서명되지 않은 속성과 서명 된 내용은 서명을 생성하거나 확인하는 데 고려되지 않습니다.

CMS (RFC 5652)를 사용하여 정보를 임베드하면 상당히 독점적 인 구성이됩니다. 필요에 따라 이미 충분히 좋을 수도 있습니다. 그러나보다 상호 운용성이 필요한 것이 필요한 경우에는 http://pda.etsi.org에서 다운로드 할 수있는 무료 ETSI 표준 인 CAdES (ETSI TS 101 733)를 살펴볼 수 있습니다. 이 표준은 타임 스탬프 및 해지 정보와 같은 추가 서명 데이터를 올바르게 삽입하는 방법에 대한 자세한 정보를 제공합니다.

+0

이 멋진 답변에 감사드립니다! 그것의 명확한 지금) – pls

+0

당신이 나를 대답 할 수 있습니다 (나는 당신이 꽤 암호화 질문에 산재 해있다) : 나는 CAdES-X Long Type 1을 구현하고 SignerInfo 서명 된 속성에는 SigningCertificateV2.SigningCertificateV2라는 필수 속성이있다. = :: PolicyInformation = SEQUENCE SEQUENCE {ESSCertIDv2, PolicyInformation 선택 사양 의 정책 시퀀스의 된 인증서 SEQUENCE} { policyIdentifier CertPolicyId, policyQualifiers 시퀀스 SIZE PolicyQualifierInfo 선택 사양의 (1..MAX) } 은 당신이 할 수있는 위치를 알 수 있습니다 PolicyInformation의 출처를 찾았습니까? – pls

+1

여러분을 환영합니다! PolicyInformation은 선택 사항이며 CAdES 서명에는 AFAIK가 사용되지 않습니다. – emboss

2

공급자와 관련된 Java 암호화를 살펴 보려면 BouncyCastle (http://www.bouncycastle.org/java.html)을 사용하는 것이 좋습니다.

  • 발전기/OCSP를위한 프로세서 (RFC 2560) : 그것에서 인용

    웹 사이트입니다.

  • TSP 용 생성기/프로세서 (RFC 3161 & RFC 5544).