SATtva Персональная страница
темы архив все rss xml 2.0
 
 
блог
досье
связь
english
 

Рудимент или контрмера?

21.06.2004
pgp

Немного занимательной теории. Как известно, при сверке любого подписанного(+зашифрованного) сообщения PGP в блоке своих заголовков в строке *** Verified: отображает время сличения подписи. Некоторых пользователей удивляет наличие этой строки, ведь логично предположить, что дата и время, указанные в ней, должны совпадать с текущими показаниями системного таймера. Тогда зачем она нужна? Именно за этим...

Есть очень простой способ подделать цифровую подпись PGP. Или, точнее, одурачить пользователя так, чтобы он поверил, что получил сообщение, отправленное кем-то, кому доверяет. Это обычное мошенничество, успех которого опирается на ложное чувство защищённости пользователя оттого, что он просто использует надёжное средство шифрования данных (забывая при этом следовать правильным процедурам эксплуатации). Чтобы добиться этого, злоумышленник составляет поддельное письмо, в котором первыми строчками имитирует заголовок сверенной подписи PGP, проставленной как бы вашим знакомым. Нечто вроде:

*** PGP SIGNATURE VERIFICATION ***
*** Status: Good Signature
*** Signer: Vasya Pupkin (0xDEADBEEF)
*** Signed: 19.06.04 19:39:17
*** Verified: 21.06.04 4:40:09
*** BEGIN PGP DECRYPTED/VERIFIED MESSAGE ***

В заголовке *** PGP SIGNATURE VERIFICATION *** он заменяет одну из английских букв русской со схожим начертанием (например, английскую "пи" на русскую "эр"). Это делается для того, чтобы чтобы ваша программа не заметила подвоха и не заменила предваряющие тройные звёздочки (***) на правые угловые скобки (>>>) в качестве меры противодействия такой атаке. Как вы увидите ниже, противодействие это весьма условное.

Всё, что теперь требуется от злоумышленника, – это составить само послание, которое нужно подсунуть недальновидному пользователю, а затем зашифровать, только зашифровать, текст открытым ключом жертвы. Итоговое сообщение оформляется так:

*** PGP SIGNATURE VERIFICATION ***
*** Status: Good Signature
*** Signer: Vasya Pupkin (0xDEADBEEF)
*** Signed: 19.06.04 19:39:17
*** Verified: 21.06.04 4:40:09
*** BEGIN PGP DECRYPTED/VERIFIED MESSAGE ***

Борис, я провожу плановое обслуживание нашей сети. Вышли, пожалуйста, на адрес evilhacker@domain.com пароль доступа к твоей системе.

Твой друг Вася

*** END PGP DECRYPTED/VERIFIED MESSAGE ***

...а после шифрования становится таким:

-----BEGIN PGP MESSAGE-----
Version: PGP 8.0.3

qANQR1DDDQQCAwKaWGgLEGkiE2DJwJHMZ3La9HWuUfGECGSmxuKB7n9GHZg8Mdvs
0KEONtuhNkKuRd2EpY+9IwUR5NY8YLGTtrN17a+qMK8xOTwQiGGgpytiUyPxbLuL
uVz0Be2gYdceFK0e95bQQ5a2F9T3RN9KdJwJ+yG5pz5YUMQ89t71mIbOir+TzlDf
mNWyRjlnX1QJ1EYkZEBVjakXmzPJTbNpz86nmVmEbkpaS25+DX40eUdrMPHgEb6j
eSaC399jX5dgyP5aq4ar/K0LgWnPAsUkntrG+k6npaF3KWchsv//c2DKPfooLd6N
rd5gSU86JqIUKQ9Cq0GGgb63a7aK0pIuP/QwCyHfuMQD24kxqeLrG5FCefs3EiYv
5Arn3vjJaBvvZU0HoAc/El5sxxayz6lV68GLhHkC2ph4ckgJPnT+4DEBp7/1fvTh
M0JwY00L/qxp9Zp/KLQ5XHZI8AZldkKF
=ySHP
-----END PGP MESSAGE-----

Теперь, расшифровав такое сообщение, получатель увидит текст, выглядящий так, словно действительно был подписан его постоянным корреспондентом. А раз текст криптографически подписан, подумает он, то его содержанию можно доверять. (Можете проверить сами: скопируйте приведённый выше блок в буфер обмена и расшифруйте его паролем "123", без кавычек, разумеется.)

Ненаблюталельный Борис может посчитать, что получил письмо из надёжного источника. Но если бы он обратил внимание на строку *** Verified:, то обнаружил бы, что указанные там дата/время отличаются от текущих. Эта строка в заголовке расшифрованных сообщений используется как мера защиты от мошеннических атак на формат PGP: её практически невозможно подделать, ведь злоумышленник не может доподлинно знать, в какую секунду вы откроете полученное сообщение.

Мораль всей этой истории в одном: будьте бдительны! Если используете PGP, но не следуете даже базовым рекомендациям по обеспечению безопасности, вы и не будете в безопасности, независимо от любых собственных ощущений.
Комментарии

Re: Рудимент или контрмера? от Mimino

15.12.2005 14:54

А нет ли здесь ошибки? В обоих примерах эти строки одинаковы:

*** Signed: 19.06.04 19:39:17
*** Verified: 21.06.04 4:40:09

Re: Рудимент или контрмера? от SATtva

15.12.2005 21:25

Имеете в виду, в открытом тексте? Прочитайте внимательно всю статью. Эти примеры -- это последовательное описание методики подготовки фиктивно подписанного сообщения для атаки на пользователя PGP.

Или я Ваш вопрос не понял?
Оставить комментарий
Заголовок:

Текст:

Ваше имя:

Ваш e-mail:


Код подтверждения: