2011-10-08 9 views
1

Openssl 또는 다른 라이브러리를 지원하지 않기 때문에 임베디드 보드에서 인증서를 수동으로 확인하려고합니다. 그러나 그것은 MD5와 SHA1 해시와 RSA 암호화를위한 라이브러리를 가지고 있습니다.SSL 인증서 서명 확인

내가 인증서를 확인하는 것으로부터, 먼저 인증서의 SHA1 해시 (또는 MD5)를 계산하십시오. CA의 공개 키를 사용하여 서명을 해독하여 해시 된 값을 얻습니다. 이 두 해시 값은 동일해야합니다.

SHA1 해시는 20 바이트 값을 생성하고 MD5는 16 바이트 값을 생성합니다. 그러나 서명의 RSA 디코딩은 그렇지 않습니다. CA의 키가 1024 비트이면 디코드 서명은 80 바이트가됩니다. CA의 키가 512 비트이면 디코딩 된 서명은 40 바이트가됩니다. 그래서 실제로 20 바이트 SHA1 값을 40 또는 80 바이트 디코드 서명과 비교할 수 없습니다.

내가 잘못 했나요? 아니면 단계가 빠졌습니까?

+0

FYI : 들어오는 인증서를 확인하기 위해 내장 된 보드를 사용하려고합니다. 이 인증서는 Openssl을 사용하여 생성 된 개인 CA에 의해 생성되고 서명됩니다. – TSCOconan

답변

1

누락 된 비트는 패딩 알고리즘입니다.

RSA를 특정 패딩 알고리즘과 함께 사용하고 동일한 알고리즘은 결과를 가져 오는 방법 (서명을 해독 할 때)과 실제 데이터 (해시)를 추출하는 방법을 알려줍니다.

+0

정보 주셔서 감사합니다, 후속 질문이 있습니다. openssl을 사용하여 인증서에 서명 할 때 "openssl ca -config ca.cnf -policy policy_anything -out certs/certificate.crt -infiles request.csr"Openssl에서 사용하는 기본 패딩 방법은 PKCS # 5입니까? 내가 바꿀 방법이 없다고 잘못하면 저를 시정 해 주시겠습니까? CA.cnf 파일에는 Padding 메서드를 선택할 수있는 CA 명령이나 기타 옵션이 없다고 생각합니다. – TSCOconan

+0

나는 위의 코멘트에서 실수를했다고 생각합니다. Openssl은 패딩, 개인/공개 키 및 인증서와 관련된 모든 작업에 PKCS # 1을 사용합니까? 그리고 나는 CA 명령 no ca.cnf 파일에서 옵션을 찾을 수 없기 때문에 Openssl에게 우리에게 0 Padding을 말할 수있는 방법이 없다고 생각합니다. – TSCOconan

+0

명령 줄 도구를 사용하여 패딩을 변경할 수 있다고 생각하지 않습니다. 코드를 작성하는 중이라면 가능합니다. 그러나 당신이 당신의 입력을 덧붙여주지 않는 아주 좋은 이유가 필요하다. (예를 들면 당신이 당신의 패딩을한다면) 그렇지 않으면 당신은 그 계획에 약점을 소개 할 수있다. –