2011-04-25 3 views
2

Amazon AWS samples과 유사한 코드를 사용하여 서명 된 API 요청을 인증 할 계획입니다. 따라서 사용자는 다음과 같은 것을 갖게됩니다 :HMAC SHA256 서명을위한 비밀 키를 생성하는 Perl 코드?

use Digest::SHA qw(hmac_sha256_base64); 
my $digest = hmac_sha256_base64 ($request, $self->{SecretKey}); 

그리고 그들의 요청 URI에 매개 변수로 $digest을 첨부하십시오. 서버 측은 동일한 알고리즘을 사용하여 클라이언트 URI에서 다이제스트를 생성하고이를 클라이언트가 보낸 값과 비교합니다.

내가 찾을 수없는 것은 Perl HMAC SHA256 다이제스트를 생성 할 때 사용할 올바른 길이의 SecretKey 생성을 지원합니다.

내 Amazon AWS 계정의 경우, 40 ASCII 문자로 base64 인코딩 된 문자열이 제공됩니다.

클라이언트에 적합한 비밀 키를 생성하려면 어떻게해야합니까?

답변

1

PBKDF2 알고리즘을 사용하는 것이 좋습니다. PBKDF2 = "암호 기반 키 유도 기능 (# 2)". PKCS # 5 (RFC 2898)에 정의되어 있습니다. 이것은 암호에서 키를 파생시키는 데 권장되는 방법입니다. 소금도 필요합니다. 일반적인 반복 횟수는 1000입니다.

This page은 PBKDF2의 perl 구현이 있다고합니다. 나는 그것을 시도하지 않았다.

분명히 Crypto::PBKDF2도 있지만, 원하지 않을 수도있는 종속성이 있습니다.


난 그냥 PBKDF2 앤서니 티센 (Thyssen)의 펄 프로그램을 시도

편집 - 그것은 잘 작동합니다. 간단하고 쉬운.

+0

감사합니다. 나는 당신이 http://www.ict.griffith.edu.au/anthony/software/pbkdf2.pl을 가리키고 있다고 가정하지만, 내가 갖고 있지 않은 것은 $ password이다. 주어진 사용자 액세스 키에 대해 고유 한 공유 비밀 키를 생성하려고합니다 (이미 제공 한 로그인입니다.) API에 로그인 할 필요가 없습니다. 그래서 pbkdf2에 대한 입력으로 작동하는 임의의 내부 "비밀번호"를 만듭니다. ? – pfarber