Объяснение флага -hmac в открытом SSL

Объяснение флага -hmac в открытом SSL

Я наткнулся на следующую команду для unix на binance, которую я пытался распаковать. Смотрите здесь:https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

(Раздел: Примеры конечных точек SIGNED для POST /api/v1/order)

openssl dgst -sha256 -hmac

Насколько я понимаю, это вызов команды openssl для создания дайджеста, дайджест будет иметь тип sha256, как согласовано в стандартных спецификациях. Чего я не понимаю, так это флага -hmac. Что это такое и что он делает на математическом уровне?

Моя попытка решения проблемы:

Я сделал поиск в Google с openssl -hmacи, openssl dgst -hmacно 10 лучших результатов не помогли мне. Так что я думаю, что лучше спросить более опытных пользователей.

Обновления:

Флаг не упоминается в следующих документах:https://www.mkssoftware.com/docs/man1/openssl_dgst.1.aspи поэтому я начинаю верить, что это может не иметь никакого криптографического назначения. Хотя сейчас я в этом не уверен.

Я нашел нечто похожее на флаг, упомянутый в этом вопросе:https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

решение1

HMAC также называется ключевой хэш. Таким образом, вы можете сгенерировать тот же хэш во время проверки, только если у вас есть тот же ключ, который использовался во время генерации подписи. Результат MAC называетсятег аутентификации.

HMAC — это специальная конструкция, которая использует два вызова хэша (в вашем случае SHA-256), который используется внутри, и не использует никаких другихкриптографические примитивы. Поэтому его можно рассматривать как определенныйрежимсамого хеша. Отсюда включение вдгст.

В вашем коде отсутствуют данные ключа, которые, конечно, требуются для создания хэша с ключом. Это должно быть представлено после -hmac. К сожалению, opensslтребуется двоичный формат ключа. Для получения дополнительной информации см.этот старый разговор в списке рассылки OpenSSL.

EDIT #1: Копнув немного глубже, если вы хотите указать ключ в шестнадцатеричном формате, вы можете использовать такую ​​строку:

echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304

Выход функции — это выход второго запуска хэша, поэтому он неотличим от просто SHA-256, если вы просто посмотрите на размер результата хэша / HMAC. Конечно, содержимое будет совершенно отличаться от простого хэширования данных (или ключа и данных, объединенных).


EDIT #2: Однако вы не указали ключ, поэтому на самом деле HMAC пропускается и используется SHA-256. Это было отмечено как ошибка, см.здесь

решение2

Мои 2 цента, если у вас iOS (или Mac OS...) и вы устали возиться, я написал это..

https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en

Связанный контент