Как рассчитать HMAC (hsa256) текста, используя открытый сертификат (.pem) в качестве ключа - PullRequest
0 голосов
/ 01 мая 2018

Я работаю над Json Web Tokens и хотел воспроизвести его, используя python, но я пытаюсь понять, как вычислить HMAC_SHA256 текстов, используя открытый сертификат (файл pem) в качестве ключа.
Кто-нибудь знает, как мне это сделать??

Tks

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

На случай, если кто-нибудь найдет этот вопрос. Ответ, предоставленный хозяином, работает, но идея ошибочна. Вы не используете ключи RSA с методом HMAC. Пара ключей RSA (открытый и закрытый) используется для асимметричного алгоритма, а HMAC - симметричный алгоритм.

В HMAC две стороны сообщения хранят тот же секретный текст (байты), что и ключ. Это может быть public_cert.pem, пока вы держите это в тайне. Но public.pem обычно является общедоступным, что делает его небезопасным.

0 голосов
/ 02 мая 2018

Хорошо, я получил это после 22 часов обучения / Google.


Оповещение о спойлере

Так как это одно из профессиональных упражнений в pentesterlab, я не буду публиковать код, демонстрирующий, как сгенерировать полный JWT с использованием HSA256. Вместо этого было бы лучше, если бы я опубликовал, как вычислить HSA256, используя файл pem в python, как это было в моем первоначальном вопросе:

import hashlib
import hmac

key = open("public_cert.pem","r").read()
signature = hmac.new(key, unsignedToken, digestmod=hashlib.sha256).digest()
print signature

По сути, нам просто нужно прочитать файл открытого ключа и использовать функцию hmac.new (..), установив hashlib.sha256 в качестве используемого дайджеста. «UnsignedToken» - это текст JWT (или объявления), который мы хотели вычислить для подписи.

Для тех, кто все еще пытается понять, как создать действительный JWT для упражнения пентестерлаба, единственная подсказка, которую я могу дать, - это кодирование urlsafe-base64. Существует также модуль python с именем «pyjwt», который можно использовать, но его исходный код необходимо отредактировать, чтобы разрешить использование открытых ключей в качестве ключа HMAC.

...