Объясните разницу между симметричной и асимметричной криптографией, опишите протокол Диффи–Хеллмана и проанализируйте его уязвимость к атаке «человек посередине», а также методы защиты от неё
Коротко — разница, протокол, уязвимость и способы защиты. 1) Симметричная vs асимметричная - Симметричная: одна и та же секретная ключевая строка используется для шифрования и расшифрования; быстро (AES), требуется безопасный канал для распределения ключа; масштабирование проблематично (для nnn участников нужно ∼n(n−1)/2\sim n(n-1)/2∼n(n−1)/2 ключей). - Асимметричная: каждая сторона имеет пару ключей (открытый pkpkpk / закрытый sksksk). Открытый ключ можно свободно публиковать, шифрование/проверка подписи выполняются разными ключами (RSA, ECC); медленнее, решает проблему распределения ключей и позволяет реализовать аутентификацию и подписи. 2) Протокол Диффи–Хеллмана (DH) — базовая схема (в простейшей модульной форме): - Заданы параметры: простое число ppp и генератор ggg группы. - Алиса выбирает секрет aaa, вычисляет и отправляет A=ga(modp)A=g^a\pmod pA=ga(modp). - Боб выбирает секрет bbb, вычисляет и отправляет B=gb(modp)B=g^b\pmod pB=gb(modp). - Алиса вычисляет общий секрет s=Ba(modp)=gab(modp)s=B^a\pmod p=g^{ab}\pmod ps=Ba(modp)=gab(modp). - Боб вычисляет общий секрет s=Ab(modp)=gab(modp)s=A^b\pmod p=g^{ab}\pmod ps=Ab(modp)=gab(modp). (Для эллиптических кривых: точки A=aP, B=bP, s=abPA=aP,\;B=bP,\;s=abPA=aP,B=bP,s=abP.) DH обеспечивает конфиденциальность общего секрета при условии, что вычислить gabg^{ab}gab зная только gag^aga и gbg^bgb сложно (задача дискретного логарифма). 3) Атака «человек посередине» (MITM) — принцип и анализ - Атакующий Мэллори перехватывает и подменяет сообщения между Алиской и Бобом. - Пример: Алиса отправляет A=gaA=g^aA=ga. Мэллори перехватывает и отправляет Бобу M=gmM=g^mM=gm. Боб отвечает B=gbB=g^bB=gb, Мэллори перехватывает и отправляет Алисе MMM или M′=gm′M' = g^{m'}M′=gm′. - В результате Алиса вычисляет секрет с Мэллори sA−M=Ma=gams_{A-M}=M^a=g^{am}sA−M=Ma=gam, Боб вычисляет секрет с Мэллори sB−M=Mb=gbms_{B-M}=M^b=g^{bm}sB−M=Mb=gbm. Мэллори знает mmm и потому может вычислить оба секрета и перехватывать/подменять последующую трафик. То есть стороны думают, что общаются друг с другом, но на деле имеют секреты с атакующим. - Вывод: базовый DH без аутентификации уязвим к MITM. 4) Методы защиты от MITM - Аутентификация публичных значений: - Подписывание обменных значений: Алиса посылает (ga, SigskA(ga,IDA,IDB))(g^a,\; \text{Sig}_{sk_A}(g^a,\text{ID}_A,\text{ID}_B))(ga,SigskA(ga,IDA,IDB)). Боб проверяет подпись по pkApk_ApkA. Аналогично Боб подписывает свой вклад. Это предотвращает подмену, так как атакующий не может подделать подпись. - Использование сертификатов и PKI: открытые ключи подписаны центром сертификации (TLS с ECDHE). - Аутентифицированные протоколы обмена ключами: - Station-to-Station (STS): использует подписи и MAC над значениями DH, чтобы связать ключ и идентичности, даёт подтверждение ключа. - Протоколы с подтверждением ключа (key confirmation) — стороны подтверждают владение производным ключом с помощью MAC/HMAC по общей секретной матери. - Предварительно разделённые ключи / пароли: - PAKE (Password‑Authenticated Key Exchange) предотвращает MITM, даже при слабом пароле, без PKI. - Использование статических и эпемерных ключей: - Эпемерный DH (Ephemeral DH, ECDHE) + аутентификация (сертификаты/подписи) даёт аутентификацию и свойства «perfect forward secrecy» (PFS). - Практические меры: - Проверка отпечатков ключей (fingerprint) вручную/по безопасному каналу. - Pinning публичных ключей, DANE, TOFU (в SSH) — разные модели доверия. - Привязка идентичностей к ключам в подписи/MAC: включать ID сторон и параметры протокола в то, что подписывается/хэшируется. Кратко: сам по себе DH безопасен против пассивного прослушивания, но открыт к MITM. Надёжная защита требует аутентификации обменных значений — цифровые подписи/сертификаты, PAKE или другие аутентифицированные протоколы (STS, TLS/ECDHE) — тогда MITM не сможет подделать значения без знания приватных ключей/паролей.
1) Симметричная vs асимметричная
- Симметричная: одна и та же секретная ключевая строка используется для шифрования и расшифрования; быстро (AES), требуется безопасный канал для распределения ключа; масштабирование проблематично (для nnn участников нужно ∼n(n−1)/2\sim n(n-1)/2∼n(n−1)/2 ключей).
- Асимметричная: каждая сторона имеет пару ключей (открытый pkpkpk / закрытый sksksk). Открытый ключ можно свободно публиковать, шифрование/проверка подписи выполняются разными ключами (RSA, ECC); медленнее, решает проблему распределения ключей и позволяет реализовать аутентификацию и подписи.
2) Протокол Диффи–Хеллмана (DH) — базовая схема (в простейшей модульной форме):
- Заданы параметры: простое число ppp и генератор ggg группы.
- Алиса выбирает секрет aaa, вычисляет и отправляет A=ga(modp)A=g^a\pmod pA=ga(modp).
- Боб выбирает секрет bbb, вычисляет и отправляет B=gb(modp)B=g^b\pmod pB=gb(modp).
- Алиса вычисляет общий секрет s=Ba(modp)=gab(modp)s=B^a\pmod p=g^{ab}\pmod ps=Ba(modp)=gab(modp).
- Боб вычисляет общий секрет s=Ab(modp)=gab(modp)s=A^b\pmod p=g^{ab}\pmod ps=Ab(modp)=gab(modp).
(Для эллиптических кривых: точки A=aP, B=bP, s=abPA=aP,\;B=bP,\;s=abPA=aP,B=bP,s=abP.)
DH обеспечивает конфиденциальность общего секрета при условии, что вычислить gabg^{ab}gab зная только gag^aga и gbg^bgb сложно (задача дискретного логарифма).
3) Атака «человек посередине» (MITM) — принцип и анализ
- Атакующий Мэллори перехватывает и подменяет сообщения между Алиской и Бобом.
- Пример: Алиса отправляет A=gaA=g^aA=ga. Мэллори перехватывает и отправляет Бобу M=gmM=g^mM=gm. Боб отвечает B=gbB=g^bB=gb, Мэллори перехватывает и отправляет Алисе MMM или M′=gm′M' = g^{m'}M′=gm′.
- В результате Алиса вычисляет секрет с Мэллори sA−M=Ma=gams_{A-M}=M^a=g^{am}sA−M =Ma=gam, Боб вычисляет секрет с Мэллори sB−M=Mb=gbms_{B-M}=M^b=g^{bm}sB−M =Mb=gbm. Мэллори знает mmm и потому может вычислить оба секрета и перехватывать/подменять последующую трафик. То есть стороны думают, что общаются друг с другом, но на деле имеют секреты с атакующим.
- Вывод: базовый DH без аутентификации уязвим к MITM.
4) Методы защиты от MITM
- Аутентификация публичных значений:
- Подписывание обменных значений: Алиса посылает (ga, SigskA(ga,IDA,IDB))(g^a,\; \text{Sig}_{sk_A}(g^a,\text{ID}_A,\text{ID}_B))(ga,SigskA (ga,IDA ,IDB )). Боб проверяет подпись по pkApk_ApkA . Аналогично Боб подписывает свой вклад. Это предотвращает подмену, так как атакующий не может подделать подпись.
- Использование сертификатов и PKI: открытые ключи подписаны центром сертификации (TLS с ECDHE).
- Аутентифицированные протоколы обмена ключами:
- Station-to-Station (STS): использует подписи и MAC над значениями DH, чтобы связать ключ и идентичности, даёт подтверждение ключа.
- Протоколы с подтверждением ключа (key confirmation) — стороны подтверждают владение производным ключом с помощью MAC/HMAC по общей секретной матери.
- Предварительно разделённые ключи / пароли:
- PAKE (Password‑Authenticated Key Exchange) предотвращает MITM, даже при слабом пароле, без PKI.
- Использование статических и эпемерных ключей:
- Эпемерный DH (Ephemeral DH, ECDHE) + аутентификация (сертификаты/подписи) даёт аутентификацию и свойства «perfect forward secrecy» (PFS).
- Практические меры:
- Проверка отпечатков ключей (fingerprint) вручную/по безопасному каналу.
- Pinning публичных ключей, DANE, TOFU (в SSH) — разные модели доверия.
- Привязка идентичностей к ключам в подписи/MAC: включать ID сторон и параметры протокола в то, что подписывается/хэшируется.
Кратко: сам по себе DH безопасен против пассивного прослушивания, но открыт к MITM. Надёжная защита требует аутентификации обменных значений — цифровые подписи/сертификаты, PAKE или другие аутентифицированные протоколы (STS, TLS/ECDHE) — тогда MITM не сможет подделать значения без знания приватных ключей/паролей.