Математика, лежащая в основе Diffie-Hellman и RSA, достаточно различается, поэтому ключ RSA не может работать для DH.
Диффи-Хеллман
DH - это обмен ключами, он создает общий ключ из двух пар ключей. Он не шифрует данные напрямую. (Но легко построить шифрование, комбинируя DH с симметричным шифрованием).
Обе стороны договариваются о группе, в простейшем случае, определяемой g
и p
, где p
- безопасное простое число.
Закрытый ключ - это просто число a
, соответствующий открытый ключ A
- это g^a mod p
. Общий ключ может быть вычислен, поскольку возведение в степень коммутативно, поэтому
A^b = (g^a)^b = g^(ab) = (g^b)^a = B^a
Для этого обе пары ключей должны использовать одну и ту же группу. Самый простой способ добиться этого - выбрать одну конкретную группу и жестко закодировать ее в свой протокол / приложение.
ЮАР
RSA шифрует сообщение m
открытым ключом, создавая зашифрованный текст c
. Таким образом, он использует только одну пару ключей, пару ключей получателя.
Закрытый ключ - это фиксированная экспонента e
(обычно 65537) и пара простых чисел p
и q
.
Соответствующий открытый ключ e
и произведение простых чисел n = p * q
.
Шифрование происходит путем вычисления c = m^e mod n
, которое можно уважать, только если вы знаете p
и q
, но не если вы знаете только n
.
Сравнение
Вы можете создать общий ключ с помощью RSA, сгенерировав случайный ключ в качестве отправителя и зашифровав его с помощью открытого ключа получателя. Это работает для шифрования сообщения получателю без взаимодействия. Но он не аутентифицирует отправителя, поскольку они могут управлять общим ключом. Итак, если вы не можете использовать RSA для достижения неинтерактивной отрицательной аутентификации. Но вы можете подписать сообщение с помощью RSA (но не используйте одну и ту же пару ключей для подписи и шифрования), что даст вам неотвратимую аутентификацию.
person
CodesInChaos
schedule
28.04.2014