?

Log in

No account? Create an account

Previous Entry Share Next Entry
О достоверности "подписанной" DKIM почты
bruce_swillis
На самом деле, подпись DKIM удостоверяет _только_, что письмо действительно было обработано определенным почтовым сервером, в данном случае обслуживающим домен yahoo.
(Это конечно верно, только если кто-то кроме яху не располагает его приватным ключом - что вообще-то маловероятно).

Насчет защиты от подделки заголовков и тела письма.
DKIM предназначен для исключения таких модификаций на этапе _между_ отправкой письма исходным сервером и получением-верификацией письма сервером получателя (т.н. man-in-the-middle).
При этом, сообщение (в формате MSG/RFC822), подготовленное отправителем и представленное для обработки почтовому серверу может содержать _любую_ информацию в _теле_ письма (блоке DATA smtp-сессии). Например, заголовки From: и To:, равно как и Date: могут содержать полнейшую галиматью (хотя некоторые почтовые сервера делают rewrite поля From: на основании данных авторизации пользователя, пытаясь избежать подделки обратного адреса).
_Настоящие_ поля From: и To: (из MAIL FROM:<> и RCPT TO:<>) в _теле_ письма фигурируют редко, некоторые серверы добавляют таки их в виде заголовков Envelope-From: и Envelope-To:. Чего в _данном случае_ в теле письма не наблюдается.

Короче, чтобы сделать представленную подделку, делаем вот что:
telnet <яхушный смтп> 25
ehlo
auth plain ....
mail from:<my_account@yahoo.it>
rcpt to:<my_other_account@скажем_на_яндекс.ру>
data
Message-ID: АйДи
Date: _Нужная_МНЕ_дата_
From: _Нужный_мне_человек_ <якобы_его_адрес@yahoo.it>
To: Навальный <navalny@на_гмейле>
...

.

И все.

Лезем в почтовый ящик на _своем_яндексе_, куда только что отправили месседж со _своего_ яху.
Вырезаем все в сообщении, начиная с заголовка DKIM-Signature: (скажем спасибо серверу яху за подтверждение факта отправки и содержимого тела письма).
Добавим в начало будущего фейка по вкусу заголовки Received:, Return-Path:.

Бежим за зарплатой к жуликам и ворам.

UPD:
Да, действительно, описанная схема не применима к серверу yahoo из-за его особенностей с подписыванием заголовков. Изготовить сообщение, которое бы выглядело как отправленное через Веб-интрерфейс, при этом адресованное кому-то иному, нежели указанный в заголовке адресат не представляется возможным описанным методом.
Но это никак не отменяет основного тезиса: "DKIM подтверждает только факт обработки подписанных полей и тела сообщения сервером yahoo. Не больше и не меньше."
Утверждение, что DKIM подтверждает факт доставки сообщения адресату (и тем паче прочтения) - это передергивание.



  • 1
Оставил у политреша в камментах ссылку на этот пост. Посмотрим, что раньше случится - его потрут или мне придет зарплата из госдепа :D

http://anonimusi.livejournal.com/1096406.html?
Вот тут вот ВСЕ разжевано, а в комментариях опровергнут и аргумент данного автора. Почитайте, рекомендую.

Спасибо, уже ознакомился. Тезис о том, что DKIM удостоверяет адрес получателя я все же считаю опровергнутым. Вот на аргумент про различия заголовков при отправке через вебмейл и через SMTP пока возразить нечего.

horosho, davajte my sdelaem sledujushee. vy sejchas skachaete pis'mo i otredaktiruete, i potom my proverim signaturu. posle chego zakroem etot vopros. ok?

Ага, миллион раз они это попробуют ))))))))

Линк:
http://www.mediafire.com/download.php?wvr8446lgy0hdeh

kermlin.pugin@gmail.com пишет навальному письмо Test 28 Oct 2002.
Проверку пройдет.
Линк на валидатор:
http://9vx.org/~dho/dkim_validate.php

P.S. Ох, сообразил - надо было не на гмайл регистрировать тестового кермлин.пугина... Гмайл при отправке на гмайл же не стал бы подписывать DKIP (но подписал, потому что почту в реальности я отправил на яндекс). Сути это не меняет.
В рамках этого фейкового сообщения отправитель действительно пугин, все остальное фейк.

Bruce, videl chto vam uzhe anonimus v sootvetstvujushej vetke otvetil. No vsio ravno, derzhite moi 5 ballov za staranie.

Подскажите, пожалуйста, на данный момент Вы придерживаетесь какой точки зрения. Валидный DKIM позволяет однозначно утверждать, что данное письмо (включая текст) было направленно данному адресату или нет?

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

Со времени этого обсуждения тема поднималась еще не единожды, причем, с каждым разом все качественнее.
На самом деле, тот вывод, который я тут озвучил - он остается верным. Но есть нюансы.
В случае, если сервером подписываются любые поля заголовка сообщения, содержащие сведения о дате, проставляемые при этом самим сервером (такие как Received:) можно быть уверенным, что почта не подделывалась на конспиративной квартире годом позже.
То же самое относится к подписям DKIM, в которых оказывается заполнено _опциональное_ по стандарту поле "t" (timestamp - время в формате UNIX, количество секунд с 1 янв. 1970 г. UTC).

В общем, нужно обращать внимание на состав подписанного почтовым сервером материала в каждом конкретном случае.

P.S. В _большинстве_ случаев, если не всегда нынче - или timestamp найдется, или вставленный сервером Received: будет подписан. Хотя пример обмана был описан выше.

А, вот нашел код на перле.

В общем я так понял, что изменить тело письма не нарушив DKIM в большинстве случаев возможно...

  • 1