Шифрование SSL, SHA-1 и SHA-2

Я пытаюсь реализовать шифрование SHA-2 вместо SHA-1.

Для этого я знаю, что число битов между этими двумя хеш-алгоритмами отличается, и оно смущает меня.

Как это может быть достигнуто и в том, какие части я должен внести требуемыми изменениями?

Я могу пользоваться любой библиотекой с открытым исходным кодом от Java, Python и любого другого главного языка программирования.

8
задан Peter Mortensen 3 September 2015 в 19:51
поделиться

3 ответа

Прежде всего, ни SHA-1, ни что-либо, связанное с SHA-2, не является алгоритмом «шифрования». Это хеш-функции. В SSL хеш-функции используются в основном для обеспечения целостности, а не конфиденциальности, посредством конструкции HMAC . Хеш-функция принимает входные данные произвольной длины и производит выходные данные фиксированной длины, которые являются своего рода «дайджестом» входных данных; операция не должна быть обратимой.

Хеш-функция является «общедоступной»: нет ни конфиденциальных данных, ни ключа; каждый может вычислить выход хэш-функции на любом заданном входе. «Код аутентификации сообщения» (MAC) - это своего рода «хэш с ключом»: секретный ключ (т. Е. Произвольный набор битов) также вводится в процесс, поэтому знание ключа необходимо для (повторного) вычисления выход MAC. Это используется для проверки целостности (отправитель использует ключ для вычисления MAC, получатель использует ключ для повторного вычисления MAC; если MAC совпадает, то данные верны, потому что злоумышленник, не зная ключа, не мог иметь изменил данные и вычислил действительный MAC для измененных данных).

HMAC - это конструкция, которая превращает хеш-функцию (такую ​​как SHA-1) в MAC. TLS (это текущее стандартное имя SSL) использует HMAC. Вывод HMAC при использовании с заданной хэш-функцией h имеет тот же размер, что и вывод h . Этот вывод может быть условно усечен: HMAC / SHA-1 номинально выдает 160-битный вывод, но в некоторых протоколах принято оставлять только первые 96 бит. Такое усечение не происходит в SSL.

Стандарт FIPS 180-3 определяет пять хэш-функций с именами SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512 с длиной вывода 160, 224, 256. , 384 и 512 бит соответственно. Функции SHA-224, SHA-256, SHA-384 и SHA-512 в просторечии известны как «SHA-2», поэтому «SHA-2» - это не одна функция, а семейство из четырех хеш-функций.

Спецификация TLS определяет наборов шифров . Набор шифров - это набор криптографических алгоритмов, которые согласовываются между клиентом и сервером на начальном этапе соединения («рукопожатие»). Среди алгоритмов есть MAC, который используется для обеспечения целостности данных. Некоторые из стандартных наборов шифров указывают, что MAC должен быть «HMAC с SHA-256», то есть чем-то, что использует одну из функций SHA-2.

Итак, ответ на ваш вопрос: «просто настройте клиент и сервер для использования одного из наборов шифров с HMAC / SHA-256». Если ваша реализация SSL не поддерживает такие комплекты шифров, вам придется изменить ее, что повлечет за собой довольно полное понимание того, как работает SSL; необходимо прочитать и понять весь RFC 5246.

31
ответ дан 5 December 2019 в 05:07
поделиться

Модуль hashlib и MessageDigest поддерживают все алгоритмы SHA-2.

1
ответ дан 5 December 2019 в 05:07
поделиться

Насколько я могу судить, все, что вам нужно знать для внедрения SHA256 в SSL, описано в RFC 5246.

Но я подозреваю, что вы и близко не понимаете достаточно криптографии, чтобы сделать это... SHA 2 не существует, вам нужен SHA256, SHA384 или SHA512, и это не алгоритм шифрования, а криптографическая хэш-функция.

Итак, что вы на самом деле пытаетесь сделать?

1
ответ дан 5 December 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: