2011-01-02 4 views
1

Каков правильный (приемлемый) способ получения, позволяет сказать 128-битный ключ AES из секретности, полученной в результате переговоров DH?Вывод ключа AES

  • Используйте первые 128 бит
  • Hash секрет и использовать первый 128-битный
  • использовать некоторые более сложной функции выведения

Как бы вы получить набор ключей в «правильной «способ?

ответ

2

Например, в TLS используется псевдослучайная функция, основанная на хеш SHA1 и MD5 по общей секретности (например, значение обмена ключами DH), строковая метка (для различения различных случаев, для которых генерируется ключ, HMAC, шифр и т. д.) и общий случайный параметр (как клиент, так и сервер генерируют свою половину случайного параметра).

Итак, я бы рекомендовал добавить некоторые случайные данные, сгенерированные как клиентом, так и сервером, и использовать его вместе с обменным значением ключа DH.

+0

Итак, sha256 (DH secret || строка использования || случайный A || random B), первый 128 бит был бы подходящим для ключа AES? Почему мы должны добавить дополнительную поездку в оба конца для нового случайного? – mtraut

+0

Да, этого было бы достаточно. Случайным данным не требуется другое путешествие в оба конца, так как оно может быть отправлено вместе с другими данными, связанными с обменом ключами. Это для защиты от какого-то короля нападений, я точно не помню, с каких из них. –

5

Я бы использовал стандарт. Один из таких стандартов - NIST Special Pub 800-56A. См., В частности, раздел 5.8.

+0

Я ищу шаг после этого. Я заключил секрет, основанный на DH. Теперь я должен получить симметричный ключ шифрования, основанный на этом материале. Каков наилучший способ? – mtraut

+4

Раздел 5.8 этого стандарта имеет то, что вам нужно. – TonyK

+0

извините за то, что не читал – mtraut

Смежные вопросы