Рейтинг:-1

Как читать нотацию шифрования/хеширования

флаг cn

Это очень просто, но мне интересно: у меня есть несколько обозначений хеширования/шифрования RSA, в которых я не уверен при чтении.

PKE(PW, K) Если PW представляет собой пароль, K представляет собой 128-битную строку, а PKE представляет RSA, как это будет интерпретироваться? Мне объединить строку и пароль, а затем зашифровать это или что-то еще?

То же самое и для этого, ssk = H(K,NB,NA), где ssk — секретный общий ключ, H — алгоритм SHA-1, K такой же, как указано выше, а NB и NA — случайные 128-битные строки.

Я пытаюсь закодировать их на Python, и я совершенно застрял в теории, стоящей за этим.

Bean Guy avatar
флаг in
Было бы здорово узнать, откуда вы взяли эту информацию. Но выражение $PKE(PW, K)$ обычно означает шифрование открытого текста $K$ с помощью закрытого ключа $PW$, который в контексте RSA равен $PW = (p, q, \varphi(n))$. .
fgrieu avatar
флаг ng
@Bean Guy: «зашифровать открытый текст с помощью закрытого ключа» неверно. В асимметричном шифровании мы хотим шифровать с помощью открытого ключа, а расшифровывать с помощью закрытого ключа. В асимметричной криптографии мы также можем подписывать закрытым ключом, но это не шифрование.
Рейтинг:1
флаг si

RSA вообще не принимает пароль. Обозначение просто неверное.

RSASSA-PSS принимает закрытый ключ и сообщение и создает подпись. Эту подпись может проверить любой, у кого есть подпись, сообщение и открытый ключ.

RSAES-OAEP берет открытый ключ и короткое сообщение (почти всегда симметричный ключ) и шифрует это сообщение (симметричный ключ), чтобы его мог расшифровать только тот, у кого есть соответствующий закрытый ключ. На самом деле это делается не так часто, поскольку обмен ключами ECDH менее ресурсоемкий и более безопасный.

Что касается второй части вашего вопроса, это также неверно. SHA-1 не является безопасной функцией получения ключей и не может использоваться для безопасного создания общего секретного ключа. Настоящая функция получения ключа, такая как HKDF или Blake3, принимает 2-4 входа: длина для вывода (необязательно, некоторые просто выводят 256-битные значения), некоторый исходный материал ключа (обычно общий секрет, полученный в результате обмена ECDH), соль (необязательный, может быть сгенерирован внутри) и значение разделения домена (используется, чтобы гарантировать, что разные операции могут иметь разные ключи, даже если есть только один общий секрет).

Если вы хотите шифровать сообщения открытыми ключами получателей с помощью Python, используйте писодиум и методы crypto_box. Если вы хотите шифровать сообщения с помощью пароля, используйте метод crypto_pwhash для получения ключа и методы crypto_secretbox для шифрования с использованием полученного ключа.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.