Perl-код для создания секретного ключа для подписи HMAC SHA256?

Я планирую использовать код, похожий на Примеры Amazon AWS для аутентификации подписанных запросов API. Таким образом, у пользователей будет что-то вроде:

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

и прикрепите $digest в качестве параметра к своему URI запроса. На стороне сервера будет использоваться тот же алгоритм для создания дайджеста из клиентского URI и сравнения его со значением, отправленным клиентом.

Что я не могу найти, так это поддержку Perl для создания SecretKey правильной длины для использования при создании дайджеста HMAC SHA256.

Для моей учетной записи Amazon AWS мне предоставляется строка в кодировке base64 из 40 символов ASCII.

Как мне создать правильный секретный ключ для моих клиентов?


person pfarber    schedule 25.04.2011    source источник


Ответы (1)


Я предлагаю вам использовать алгоритм PBKDF2. PBKDF2 = "Функция вывода ключа на основе пароля (# 2)". Он определен в PKCS # 5 (RFC 2898). Это рекомендуемый способ получить ключ из пароля. Вам также понадобится соль. Типичное количество итераций - 1000.

На этой странице говорится, что на ней реализована Perl-реализация PBKDF2. Я не пробовал.

По-видимому, есть еще Crypto::PBKDF2, но он обременен зависимостями, которые могут вам не понадобиться.


ИЗМЕНИТЬ

Я только что попробовал Perl-программу Энтони Тиссена для pbkdf2 - она ​​отлично работает. Просто, легко.

person Cheeso    schedule 25.04.2011
comment
Спасибо. Я предполагаю, что вы имеете в виду ict.griffith.edu.au/anthony /software/pbkdf2.pl, но у меня нет пароля $. Я хочу сгенерировать уникальный общий секретный ключ для данного ключа доступа пользователя (который я уже раздал. В API не задействован вход в систему. Итак, могу ли я просто создать случайный внутренний пароль, который будет вводить меня в pbkdf2? - person pfarber; 25.04.2011