Yahoo Domain Keys (YDK)
Доменные ключи — это способ предотвращения подделки адресов отправителей в электронной почте. Т.е. для борьбы с фишингом в частности. Это похоже на обычную цифровую подпись S/MIME, но использует намного более простой (чем PKI) способ распространения открытых ключей: они помещаются в текстовые DNS-записи специального формата. И подписывается не только тело письма, но и его заголовки. Т.е. этот способ и проще, и вцелом надежнее, чем S/MIME. Причем не требует никаких изменений и настроек в почтовых программах пользователей — подписывать исходящую почту может сам почтовый сервер (для этого разработаны специальные расширения, устанавливаемые на сервере, см. YdkPlugin).Доменные ключи обладают важным преимуществом перед SenderPolicyFramework — пересыльщики почты не обязаны поддерживать SRS — валидность подписи не нарушается сменой IP, а может быть нарушена только искажением заголовков или тела письма, чего обычные форвардеры не делают.
AndreyCherezov /15.09.2006 11:53/ За два с лишним года DK достаточно хорошо прижился в почтовой инфраструктуре. Наиболее крупными пользователями технологии являются Google, Yahoo, Earthlink и Ebay — по данным Yahoo, только на YahooMail ежедневно подписываются более 300 млн. сообщений. Google использует YDK для вычисления репутации отправителя (см. описание и презентацию ).
Так выглядит подтверждение подлинности домена отправителя в YahooMail (подпись письма производилась в Eserv/3) :
А так выглядит подпись в заголовке письма (первые три строки добавлены Eserv'ом при получении письма и проверке DK и SPF):
DomainKey-Status: good
Received: from [66.163.179.174] (helo=web35805.mail.mud.yahoo.com)
by eserv.ru (acSMTP/3.0.4347) with SMTP id 92713
for <andrey@cherezov.koenig.su>; Fri, 15 Sep 2006 12:59:06 +0400
Received-SPF: none
Received: (qmail 86534 invoked by uid 60001); 15 Sep 2006 08:56:57 -0000
~DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
s=s1024; d=yahoo.com;
h=Message-ID:Received:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type;
b=nRNlhmBafDV3TOSiJCmZBvwHcT3ECLO1pEEuEXaB4SNohMxWX0zhHSAR76lOvc HV2AN0MPUa8NGKP5Ls0aF16uHSFzzN6JVJuupbZm3WjX+kqbqW4YOR7Wqru0ABXn XSgQMsnEr4VbXNv+FvkvU9EbxZGX8MM9JA0bTEv2rSfmY= ;
Message-ID: <20060915085657.86532.qmail@web35805.mail.mud.yahoo.com>
Received: from [195.135.213.3] by web35805.mail.mud.yahoo.com via HTTP; Fri, 15 Sep 2006 01:56:57 PDT
...
История DomainKeys
20 мая 2004 Yahoo, наконец, представили спецификацию YDK:http://www.ietf.org/internet-drafts/draft-delany-domainkeys-base-00.txt
Письма подписываются 384-битным ключем — традиционный метод RSA-подписи для SHA1-дайджеста, разве что длина ключа меньше традиционной из-за ограничений DNS. Подпись вставляется в заголовок письма — "DomainKey-Signature:" (а не в S/MIME-секцию, как в обычной X.509 ЦП для писем; хотя предложен заголовок и для X.509 — "DomainKey-X509:"). Открытый ключ домена публикуется в DNS в TXT-записи субдомена _domainkey. Метод позволяет проверить, что письмо было действительно отправленно с указанного в From домена. Никаких привязок к IP отправителя не производится — этим YDK превосходит методы SenderPolicyFramework и CallerID. Но это и его недостаток: письмо с YDK-подписью придётся принимать полностью, а SenderPolicyFramework (SPF) позволяет отвергать письмо еще до его приема — на стадии MAIL FROM. Вцелом YDK кажется мне более прогрессивным решением, чем SPF. Хотя тех же целей можно было достичь повсеместным внедрением X.509 S/MIME-подписей, т.к. вся инфраструктура для этого готова. В спецификации YDK несколько раз подчеркивается, что YDK в отличие от X.509 не требует вовлечения CA, поэтому бесплатно. Но есть ведь и бесплатные CA (наш http://www.eserv.ru/ru/ca/ или ваш собственный В действительности YDK удобнее чем X.509 тем, что DNS удобнее и общедоступнее, чем CA — получить доменный открытый ключ из DNS и проверить подпись на почтовом сервере проще, чем проверять X.509-подписи на почтовых клиентах. Но YDK требует изменений и на сервере и на клиенте, а X.509 уже работает...
В общем, я затрудняюсь в однозначной оценке YDK vs X.509. Ясно лишь, что это удобнее, чем SPF, но при этом сложнее в реализации. Жизнь покажет, кто из них боеспособнее. [Замечание от 31.01.2006: за 2 года использования YDK стало ясно, что популярность YDK не дотягивает до SPF. Но полноценная поддержка YDK в таких популярных веб-почтах как YahooMail и GoogleMail (см. скриншоты на стр. YdkPlugin) — это тоже не мало: один только Yahoo обрабатывает 300 млн.сообщений в день (и Yahoo и Gmail подписывают всю исходящую почту, и проверяют подписи на всей входящей). В России благами YDK по-прежнему пользуются только пользователи Eserv/3.]
AndreyCherezov /24.05.2004 20:49/ http://antispam.yahoo.com/domainkeys — в FAQ ответы на некоторые из моих "риторических" вопросов. YDK позиционируется как дополнение к X.509.
AndreyCherezov /25.05.2004 23:16/ Первая версия YdkPlugin для Eserv/3
AndreyCherezov /26.05.2004 13:28/ Дискуссия о пользе/бесполезности YDK.
AndreyCherezov /26.05.2004 23:08/ Первым внешним адресатом среди YDK-подписанных писем, попавших на наш Eserv, оказался сам Mark Delany (разработчик спецификации YDK). Проверили с ним YDK в обе стороны. Работает! Так что рекомендую, проверено YDK-ключи для вашего домена на Eserv/acSMTP можно сделать прямо сейчас на нашем сервере: http://www.eserv.ru/ru/ca/ydk.php
AndreyCherezov /07.06.2004 09:20/ Еще один сервер, поддерживающий YDK: http://www.port25.com/corporate/corp_news_ydk.html
AndreyCherezov /27.09.2004 17:58/ http://domainkeys.sourceforge.net/ — на сайте поддержки реализации YDK опубликована лицензия использования YDK.
AndreyCherezov /09.07.2005 05:14/ 1 июня Yahoo и Cisco договорились об объединении спецификаций DK и IIM в одну общую DKIM. Возможность этого обсуждалась разработчиками почти год. IIM (Cisco’s Internet Identified Mail) почти не имеет технических преимуществ перед YDK и при этом сложнее в реализации. Скорее всего объединение имеет маркетинговые цели — "рекламный вяк" в противовес microsoft'овской возне с SenderID. Косвенно это подтверждается снятием с сайта Yahoo (задним числом) исходной новости о DKIM.
3 марта 2004
Yahoo предлагает использовать цифровые сертификаты для подтверждения домена отправителя в SMTP-сессиях. Сертификаты эти (открытые ключи) предполагается хранить в DNS заданного домена (также SenderPolicyFramework и MS CallerID предлагают использовать DNS для хранения списка авторизованных IP), а закрытый ключ добавлять в заголовок письма. Получатель может сопоставить ключи и удостоверится в происхождении письма. По-моему, в заголовок все-таки нужно вставлять не закрытый ключ, а цифровую подпись, сделанную закрытым ключем Но в исходном тексте было сказано именно о ключах ("a system sending an e-mail message would embed a secure, private key in a message header. The receiving system would check the Internet's domain Name System for the public key registered to the sending domain."). Очевидно имел место, как часто бывает, пересказ реальной технологиии мало понимающим суть вопроса менеджером.
Описание YDK было опубликовано в декабре на http://biz.yahoo.com/rc/031205/tech_yahoo_1.html, но сейчас недоступно. Спецификация вообще не была опубликована, Yahoo обещает сделать это в 2004 году и предоставить открытую реализацию.
http://www.eweek.com/article2/0,1759,1430976,00.asp
http://blog.lextext.com/blog/_archives/2003/12/9/8576.html#2521
В принципе идея мало отличается от моего предложения повсеместного использования цифровой подписи (см. комментарий к HashCash). Главное отличие — в YDK предполагается использование не персональных пользовательских ключей, а по-доменных. И YDK предлагает использовать инфраструктуру DNS вместо традиционных для криптографии PKI. Видимо для того, чтобы не привязываться к платным сертификатам и владельцам PKI/CA. Или просто для уменьшения нагрузки на серверы, проверяющие подписи.
См. также HashCash, SenderPolicyFramework, CallerID, AntiSpamNews.
2005
http://jeremy.kister.net/howto/dk.html
http://www.ietf.org/internet-drafts/draft-delany-domainkeys-base-02.txt
http://domainkeys.sourceforge.net/dist.html