Раскрытие приватного PGP-ключа как средство дискредитации


Если я правильно понимаю, то для не RSA ключей можно выделить отдельно ключ для расшифровывания и ключ для подписи (ЭльГамаль и Диффи-Хэллман, кажется). Для этого достаточно владеть приватным PGP-ключом. Предъявив, к примеру, только ключ расшифрования, можно будет доказать авторство сообщений адресата, с кем велась переписка. В то же время, не раскрывая ключ для подписи, нельзя позволить другим выдать себя за владельца ключа. В итоге, получается схема когда все могут спрочитать, ни никто не может подделать, как с чистыми подписями без шифрования. Это одна идея.

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

Из синтеза этих двух идей можно сконструировать простейшие атаки в стиле социнженерии. Допустим, я честно предъявляю собеседнику свой ключ, которым я дорожу, и на который завязана переписка со многими лицами. Собеседник же может предъявить специально сделанный для меня PGP-ключ. Образуется неравномерность распределения ответственности: он может, не рискуя практически ничем, раскрыть свой ключ, подтвердив всё что я писал, для меня же подобная операция будет куда менее "приемлемой". Есть ли какие-то другие схемы исправления ситуации, кроме как OTR или "идти и поступать также", назначая на каждый контакт по одному ключу? Ситуация может оказаться не сильно надуманной, если собеседник окажется "в оппозиции" или "вдруг захочет насолить". Я в курсе, что PGP не предназначено для анонимности и отрицамеости, но вдруг есть какие-то нетривиальные идеи? Просто не хотелось бы, чтоб мало того, что адресат мог разглашать информацию, так он ещё мог и подтверждать её верность...

Может быть, было бы уместно в протоколе иметь генерацию какого-то общего ключа, без знания которого подлинность сообщений не доказать, а получить этот общий ключ можно было бы только зная приватные обоих собеседников. В том же jabber, насколько я знаю, общий симметричный ключ как в SSL для шифрования не генерится, и имхо зря (левая нагрузка и на машину и на трафик, из-за асимметрики на каждое сообщение).

Проблема скорее социальная, а не криптографическая, но так уж повелось, что обсуждая ИБ сложно оставаться в рамках "чистой науки".

Комментарии
— unknown (05/11/2008 11:30, исправлен 05/11/2008 11:35)   
Адресат может сдать вас даже не раскрывая свой ключ.

В openpgp есть возможность разглашения сеансовых симметричных ключей, которыми было зашифровано сообщение (--show-session-key, своего рода полицейский режим).

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

Можете не подписываться своим ключом. Использовать аутентификацию текста как-то иначе.
— Мухтар (05/11/2008 12:08)   
Кстати. Меня заинтересовала возможность отслеживания tor клиентов с помощью применения последними ssl сеансов. Речь идет о возможности вычисления пользователя администратором ssl сайта, равно как и о возможности отслеживания администраторами конечных нодов tor'a.
— unknown (05/11/2008 12:41)   
А какая тут связь, может создадите отдельную тему с развёрнутым описанием?
— SATtva (05/11/2008 21:47)   
spinore, для новой редакции OpenPGP готовится, в числе прочего, и предложение о реализации Perfect Forward Secrecy: даже если ключ окажется раскрыт, это не скомпрометирует совершённую ранее переписку. Разумеется, это не снижает риск того, что контрагент может просто "слить" всю вашу совместную переписку "куда следует".

Если я правильно понимаю, то для не RSA ключей можно выделить отдельно ключ для расшифровывания и ключ для подписи (ЭльГамаль и Диффи-Хэллман, кажется).

Это не так. Любой ключ v4 состоит из главного ключа подписи (RSA или DSS) и одного или нескольких подключей шифрования/подписи (для шифрования — RSA или Эльгамаль (Диффи-Хэллман в данном случае — это то же самое), для подписи — те же RSA или DSS).

В остальном мысль верна: снять слой шифрования всегда возможно. Только значимость цифровых подписей я бы не переоценивал: в общем случае они практически ничего не доказывают... ну, целостность сообщений, разве что, т.е. чисто криптографическое свойство. С правом они ни с какого бока не пересекаются, если только контрагенты явно не договорятся об ином.
— spinore (06/11/2008 01:26, исправлен 06/11/2008 01:27)   
В openpgp есть возможность разглашения сеансовых симметричных ключей, которыми было зашифровано сообщение (--show-session-key, своего рода полицейский режим).

AFAIK, в jabber+gpg нет никакой симметрики.

Можете не подписываться своим ключом. Использовать аутентификацию текста как-то иначе.

Согласно стандарту PGP, используемому в jabber, не подписываться нельзя.

Только значимость цифровых подписей я бы не переоценивал

Ну почему, если любой грамотный специалист может проверить их верность, имея мой открытый PGP-ключ, это уже многое... я не говорю здесь о преследовании согласно закону, скорее – "в принципе". Ведь всем известно, что подделать подписи нельзя.
— unknown (06/11/2008 09:09)   

AFAIK, в jabber+gpg нет никакой симметрики.

Асимметричное крипто в чистом виде без распределения симметричных сеансовых ключей существует только в экспериментальных протоколах, но даже если бы оно было где-то реализовано, получатель всё-равно может извлечь открытый текст после расшифрования и приклеить к нему вашу подпись обратно, не сдавая свой закрытый ключ, если только не подписывать шифртекст, полностью увязанный на асимметричное крипто.
— SATtva (06/11/2008 09:31)   
AFAIK, в jabber+gpg нет никакой симметрики.

А о чём речь? В джаббере крипто используется для трёх несвязанных операций, каждую можно включать/выключать независимо от других:
  1. аутентификация сессии (простая подпись),
  2. заверение сообщений (простая подпись),
  3. шифрование сообщений (симметричное+асимметричное шифрование)

Согласно стандарту PGP, используемому в jabber, не подписываться нельзя.

Ничего подобного.

я не говорю здесь о преследовании согласно закону, скорее – "в принципе". Ведь всем известно, что подделать подписи нельзя.

Зато можно ключ "потерять". Забудьте о таком понятии, как "неотречение". Оно работает только в двух случаях:
  • При договорных обязательствах и формальной ответственности за действия с ключом.
  • При высокой репутационной ответственности (преимущество Сети доверия). Если у пользователя на ключе собрано большое множество подписей, он не станет жертвовать им так слепо, если предполагаемый ущерб от сохранения ключа сравнительно невелик.
— unknown (06/11/2008 09:41)   
Можно было бы использовать одноразовые подписи Лампорта...
— spinore (06/11/2008 23:26, исправлен 06/11/2008 23:28)   
симметричное крипто в чистом виде без распределения симметричных сеансовых ключей существует только в экспериментальных протоколах

Интересные факты. А если я делаю то тоже шифрую симметричным алгоритмом? Может быть, есть какие-то "internals" с точки зрения абстрактного крипто, но в моём понимании асимматричное – это , а симметричное – это . Разве в jabber предусмотрена процедура выработка общего симметричного ключа на первой стадии, которым впоследствии шифруются все сообщения? По такой схеме работает, насколько я знаю, именно OTR+jabber а не PGP+jabber.

если только не подписывать шифртекст, полностью увязанный на асимметричное крипто.

А смысл? Показываю подписанный шифротекст: все могут проверить верность подписи, ибо публичные ключи всех участников по умолчанию считаются известными. Далее, предъявляя свой закрытый ключ, можно дать всем удостовериться в содержимом сообщения. Итого, коммутация шифра и подписи при такой атаке ничего не даст.

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

Можно, но это не будет в полном смысле стандартом. Многие грамотные клиенты сразу завопят, если увидят сообщение без подписи (сам видел). В природных условиях такое случается при смене ключа абонента втечение неразрываемой сессии.

шифрование сообщений (симметричное+асимметричное шифрование)

PGP == асимметричное?
OTR == симметричное?
Кстати, они могут работать вместе (OTR+PGP), только забыл кто сверху идёт а кто снизу в таком случае.

Зато можно ключ "потерять"

Потерять-то можно, а вот поверят ли... Почему-то сразу все начинают вспоминать судебную систему и финансовую ответственность. Однако, есть и другие вещи. Допустим, что вы известный какой-то деятель, к примеру, Шнаер или Роджер. Я с вами веду переписку. Раскрыв её посторонним лицам (выложив её на каком-то сайте, вкупе со всеми причитающимися подписями и ключами), можно довольно не хило повлиять на репутацию. Здесь важно, что всем будет понятно, что это не деза и не фэйк. И в утерю ключа если могут поверить, то также, как и в рассуждения стиля "я не убивал, отпечатки не мои – силком мои руки к ножу приложили, свидетели врут, суд коррумпирован, вещдоки поддельные, делавшие ДНК сфальсифицировали заключение ..."

одноразовые подписи Лампорта

Это которые слепые и которые для анонимных финансов?
— unknown (07/11/2008 09:26, исправлен 07/11/2008 09:49)   
gpg -e ?

Ну зашифруйте что-нибудь сами себе, а затем расшифрйте gpg -v -d testfile

И увидете, что до ввода пароля будет что-то вроде: 1024-bit ELG-E key,

а после воода пароля: AES256 encrypted data.

Потому что сначала генерируется сеансовый случайный симметричный ключ (по умолчанию AES), им шифруется всё сообщение, а уже этот ключ (а не само сообщение) шифруется асимметрикой. Расшифровывается естественно в обратном порядке. Иначе шифрование происходило бы очень медленно (до 10000 раз), а алгоритмы типа RSA неустойчивы к атакам с подобранным открытым текстом – кто-нибудь попросил бы вас перешифровать текст вашим ключом и переслать ему шифртекст, а из результата смог бы вычислить закрытый ключ.

одноразовые подписи Лампорта
Это которые слепые и которые для анонимных финансов?

Слепые для финансов – это подписи Чаума. Подписи Лампорта используют для микроплатежей, она основана только на хэшах без асимметрики, идея немного в другом – после того как подпись проверена, каждый (в первую очередь получатель) может создать любые документы с такими же подписями.

В целом spinore, я согласен с вами, в некоторых случаях важна не просто юридическая отрицаемость, но и отрицаемость в плане полной анонимности, нечто вроде протоколов доказательства знания секрета с нулевым разглашением (невозможности доказать это посторонним).



Собственно, всё уже давно изобретено. Как всегда на уровне теоретических разработок.

Вот примерно так[link1].

И на проблему эту давно обратили внимание.
Вот цитата из Adida, Чаума, Хоненберга и Райвиста:


Privacy advocates have long noted, that digital signatures present a double-edged sword; signatures make a private conversations publicity-verifiable


Вот такой вот обоюдоострый меч.

Анонсы других работ (к сожалению нет в свободном доступе):


Abstract

An efficient and non-interactive deniable authentication protocol is presented to enable a receiver to identify the source of a given message, but not prove the identity of the sender to a third party. The proposed protocol is based on the generalized ElGamal signature scheme and is more efficient than the previous protocols. We show that if an adversary could forge signatures of this protocol, he would forge signatures of the generalized ElGamal signature scheme. Moreover, the new protocol is more secure than the previous deniable authentication protocols, since anyone can not impersonate the intended receiver.




ABSTRACT

Ring signature scheme enables a signer to sign a message anonymously. In the ring signature scheme, the signer who wants to sign a document anonymously first chooses some public keys of entities (signers) and then generates a signature which ensures that one of the signer or entities signs the document. In some situations, however, the ring signature scheme allows the signer to shift the blame to victims because of the anonymity. The group signature scheme may be a solution for the problem; however, it needs an electronic big brother, called a group manager, who can violate the signer anonymity by himself, and a complicated key setting. This paper introduces a new notion of a signature scheme with signer anonymity, a deniable ring signature scheme (<Dscr><Rscr><Sscr>), in which no group manager exists, and the signer should be involved in opening the signer anonymity. We also propose a concrete scheme proven to be secure under the assumption of the DDH (decision Diffie Hellman) problem in the random oracle model.


— spinore (08/11/2008 00:28)   
Потому что сначала генерируется сеансовый случайный симметричный ключ (по умолчанию AES), им шифруется всё сообщение, а уже этот ключ (а не само сообщение) шифруется асимметрикой

Забавно :) Понял.

алгоритмы типа RSA неустойчивы к атакам с подобранным открытым текстом – кто-нибудь попросил бы вас перешифровать текст вашим ключом и переслать ему шифртекст, а из результата смог бы вычислить закрытый ключ.

Получается, что если использовать gpg на машине с плохим ГСЧ то могут угнать ключ, даже если он генерился на другой машине с надёжным ГСЧ...

[offtop]
Там в первой статье обсуждается Big Brother как тип атаки, и тут у меня вопрос: вам случаем не известно ли происхождение этого термина? Кто впервые стал так называть госслежку?
[/offtop]
— spinore (08/11/2008 00:30)   
для новой редакции OpenPGP готовится, в числе прочего, и предложение о реализации Perfect Forward Secrecy: даже если ключ окажется раскрыт, это не скомпрометирует совершённую ранее переписку.

А про сроки введения этого нового стандарта что-нибудь известно?
— SATtva (08/11/2008 14:49)   
Получается, что если использовать gpg на машине с плохим ГСЧ то могут угнать ключ, даже если он генерился на другой машине с надёжным ГСЧ...

Чисто теоретически.

А про сроки введения этого нового стандарта что-нибудь известно?

Лет через 5-8, если повезёт. А на формальное принятие стандарта, как с RFC4880, могут уйти и все 15. Собственно, пока и единой спецификации нет, только набор идей и разрозненных черновиков, подготовленных разными людьми в разное время.

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

Можно, но это не будет в полном смысле стандартом. Многие грамотные клиенты сразу завопят, если увидят сообщение без подписи (сам видел).

Мой грамотный tkabber вполне себе молчит, получая от Вас неподписанные сообщения. :-)

Зато можно ключ "потерять"

Потерять-то можно, а вот поверят ли... Почему-то сразу все начинают вспоминать судебную систему и финансовую ответственность.

Да, есть ещё репутация. Поэтому некоторые умные люди в дополнение к хорошо защищённому основному ключу генерируют новый, используемый, например, только для jabber-переписки (этот ключ заверяют основным, дабы упростить распространение). При этом особо его не оберегают, хранят где попало и всячески подчёркивают, что он непригоден для критических задач. ;-) В случае шантажа или попытки дискредитации его можно даже в Сети опубликовать анонимно и сослаться на то, что, де, вы всех честно предупреждали — ключ никогда особо не оберегался.
— spinore (08/11/2008 23:56, исправлен 09/11/2008 00:06)   
Мой грамотный tkabber вполне себе молчит, получая от Вас неподписанные сообщения. :-)

Может быть, это не от меня? :)
Да, что-то я перепутал. Имелось в виду видимо смена ключа на лету, а не подпись. С подписями всё куда прозаичнее[link2]:

The method defined herein has the following security issues:
  • Key exchange relies on the web of trust model used on the OpenPGP keys network.
  • There is no mechanism for checking a fingerprint or ownership of a key other than checking the user IDs on a key.
  • When the recipient is not mentioned in the encrypted body, replay attacks are possible on messages.
  • Replay of the signed <presence/> status is possible.
  • It relies on signing or encryption of XML character data; therefore, it does not support signing or encryption of <iq/> stanzas, and it allows signing of the presence <status/> element and encryption of the message <body/> element only. Thus the method is not acceptable when signing or encryption of full stanzas is required.
  • It does not enable both signing and encryption of a stanza, only signing of the presence status and encryption of the message body.

Таким образом, в силу стандарта, статусы должны только подписываться (не шифроваться), а сообщения – только шифроваться (не подписываться). Интересно, во всех ли клиентах так... Отсюда следует, что админы jabber-сервера якобы могут посылать любые сообщения кому угодно от кого угодно, и получатели не смогут определить их фальшивость.

В случае шантажа или попытки дискредитации его можно даже в Сети опубликовать анонимно

А вы не подумали о том, что "в случае шантажа или попытки дискредитации" у вас будут выпытывать именно главный ключ а не тот, что для jabber'а... и задача сводится к предыдущей.
— SATtva (09/11/2008 00:45)   
Таким образом, в силу стандарта, статусы должны только подписываться (не шифроваться), а сообщения – только шифроваться (не подписываться). Интересно, во всех ли клиентах так.

Определённо, нет: по-моему, большинство клиентов умеют и подписывать индивидуальные сообщения. Смотрите второй раздел XEP-0027:

Signing enables a sender to verify that they sent a certain block of text. In Jabber, signing uses the 'jabber:x:signed' namespace, and is primarily used with <presence/>, but may also be used with <message/>.

А вы не подумали о том, что "в случае шантажа или попытки дискредитации" у вас будут выпытывать именно главный ключ а не тот, что для jabber'а.

Может быть я чего-то не понял? Шантаж или попытка дискредитации будут полагаться на информацию, подписанную ключом пользователя. Ключ в данном случае только от джаббера. В случае атаки пользователь "сливает" ключ в интернеты. И что теперь будет делать шантажист?
— spinore (09/11/2008 02:48)   
Шантаж или попытка дискредитации будут полагаться на информацию, подписанную ключом пользователя. Ключ в данном случае только от джаббера.

Если никому не говорить про существование "главного" ключа, то да. В противном случае, шантажисты потребуют его "на будущее" (зачем он может пригодиться – сами можете придумать). К примеру, тот пресловутый закон в британии гласил что-то наподобие "в случае предоставления шифровальных конкретных ключей к чему-либо, полиция вправе потребовать выдачи абсолютно всех шифровальных ключей" (смысл такой).

psi и mcabber вроде как не умеют подписывать сообщения, насчёт tkabber'а не в курсе.
Гость (10/11/2008 00:00)   
Не согласен. В п.2 XEP-0027 сказано, что могут быть подписанные сообщения и шифрованные.

Но они передаются в разных XML-элементах, поэтому шифрование и подпись нельзя совмещать, что в п.4 и отмечено.

А вообще чуть противоречиво написано, да
— unknown (10/11/2008 10:17)   

[offtop]
Там в первой статье обсуждается Big Brother как тип атаки, и тут у меня вопрос: вам случаем не известно ли происхождение этого термина? Кто впервые стал так называть госслежку?
[/offtop]


[offtop]
Большого (Старшего) Брата придумал Джордж Оруэлл в произведении "1984-ый", написанном в 1948 году, как выражение тоталитаризма, основанного на крайней степени контроля и насилия. Оруэлл подчёркивал, что имел ввиду не только Советский Союз, по его мнению западные демократии также могли переродиться в тоталитаризм, если этому не противодействовать.

Литературные предпосылки общества тоталитарного контроля иного типа (много промывки мозгов и биоинженерии и мало насилия) часто рассматривают также по произведению "Прекрасный новый мир" (A Brave New World), написанном за 20 лет раньше Оруэлла.

Обсуждалось здесь[link3] и и здесь[link4], может кому интересно прочитает, вопросы, зачем нужна анонимность и пр. улетучиваются сразу и навсегда.

Правда, некоторые кто читали Хаксли, признаются, что добровольно хотели бы жить в таком обществе (тоталитаризм без массового насилия, со всеобщим счастьем, обеспеченностью и научной организацией труда, вплоть до проштамповки мозгов в раннем детстве).

От интеллектуалов всякие поговорки и штампы из этих произведений ещё в 70-е годы перешли в массовую культуру (комедии, телешоу, поп-музыка), поэтому это уже стереотипы, в которых не всегда угадывается первоначальный смысл.
[/offtop]
— spinore (10/11/2008 23:43)   
Да... познавательно :)
— spinore (18/06/2009 16:02)   
Есть ещё вот какой интересный подход. Поскольку тот же, например, jabber работает в режиме реального времени, то контрагент, с которым ведётся переписка, может назвать точные дата и время всех полученных сообщений. Если в сговор админа джаббер-сервера и контрагента никто не поверит, то получается почти доказательство того, что я действительно что-то кому-то писал (человек со стороны может сличить время прохождения сообщений на сервере с временами, предоставленными контрагентом). Может быть, это звучит тривиально, но эффект интересней, когда оба общающихся или один из них анонимен. Получается возможность доказать наличие общения лишь предоставлением списка времён отправки сообщений, не раскрывая никаких ключей шифрования (так сказать, подход сбоку а не в лоб). С другой стороны, раз наличие переписки доказывается, то будут некоторые основания верить тому, что контрагент предоставит как содержимое переписки... Сумбурные мысли, как-то думал об этом, решил написать.
— unknown (03/03/2010 10:17, исправлен 03/03/2010 11:16)   

Кстати, только сейчас созрел до этой мысли и скорее склоняюсь к тому, что говорил spinore.


Методы, которые предлагает SATtva — потерять ключ, утверждать, что его использование ничего не доказывает и т.д. — это полумеры, попытка спрятаться от решения проблемы.


Помимо вышеприведённых цитат можно обратить внимание на название оригинальной работы по OTR: "Off-the-Record communication, or, why not to use PGP".


Никита Борисов, Ян Голдберг и Эрик Брюер приводят следующие аргументы о том, что модель PGP больше подходит для подписания контрактов (обязательств), но не годится для простого пользователя:


  • После того как Ева сможет получить (похитить) приватные ключи Алисы и Боба, она сможет не только прочитать все их последующие сообщения, защищённые этим ключом, но и прочитать все предыдущие сообщения, которыми они обменивались, нередко в течении многих лет (если она их до этого перехватывала, записывала, но не могла расшифровать).
  • Без использования ЭЦП обмен неаутентифицированными сообщениями ненадёжен, но при наличии ЭЦП в сообщениях (что всегда и происходит по умолчанию) как получатель, так и прослушивающая сторона (похитившая приватный ключ получателя) могут доказать третьей стороне авторство отправителя.

Уделяется внимание в их работе и электронной почте:

However, the tools commonly used to protect email — PGP and S/MIME still provide the wrong kind of privacy properties

Поскольку использовать OTR в неинтерактивном протоколе сложно, они предлагают "растянутый по времени OTR" или упоминавшиеся выше "Ring signatures" — кольцевые подписи. Полпись вида [Alice--Bob] может создать любая из сторон — или Alice или Bob, а доказать кто именно её создал — невозможно. Но это полумера, так как даёт отрицаемость только в пределах пары переписывающихся и не подходит для некоторых протоколов анонимных коммуникаций. Кроме того, это не даёт PFS, авторы ссылаются на черновик PFS к openPGP, но с 2001 года "воз и ныне там".


Ещё интересна отсылка к работе Уго Кравчика "SKEME: a Versalate Secure Key Exchange Mechanism for Internet". Ещё в 1996 году Кравчик отмечал (параграф 2.3.2), что

Here we point out to some conflict between use of signatures and privacy requierements. A basic property of digital signatues is that they provide "non-repudiation". The term "non-repudiation" here dos necessarily imply "legal liability", but just ability to give a third party a strong evidence that the signed data originated with the signer. This makes digital signatures very useful in many scenarios, but also raises the following privacy concern <...> The provision of such "proofs of communication" raise a privacy concern even more serious than disclosing identities over the network <...> A better way to deal with this issues is to completely avoid the use of digital signatures in the protocol.

Поскольку это высказывание важное, вот его перевод:

Следует отметить некоторый конфликт между использованием подписей и требованиями приватности. Основным свойством цифровых подписей является "неотрицаемость". Термин "неотрицаемость" в данном случае необязательно означает "законодательную ответственность", а только возможность предоставить третьей стороне сильное доказательство того, что подписанные данные действительно исходили от отправителя. Это делает цифровые подписи очень полезными во многих случаях, но также увеличивает нижеприведённые опасения по поводу приватности <...> Предоставления такого рода "доказательств коммуникации" увеличивает опасения в плане приватности даже более серьёзно, чем раскрытие сетевой идентичности <...> Лучшим способом борьбы с этими проблемами был бы полный отказ от использования цифровых подписей в протоколе

В пропущенных местах цитаты — технические подробности, аналогичные приведённым в работе по OTR.


Что мы имеем? OpenPGP для рядового пользователя лучше чем сертификаты PKI (которые годятся вообще только для сетевого бизнеса или внутри иерархических связей внутри организации), но всё ещё далеко от идеала. OpenPGP хорошо подходит для открытых сообществ (например разработчиков свободного ПО — дистрибутивов Linux) — там неотрицаемость и получения доверия через "сеть доверия" (это отдельный аспект, потенциально снижающий анонимность) — там это оправданно.


Но для закрытых сообществ, анонимных (псевдонимных) пользователей, частной переписки — модель openPGP — "seriously wrong".


Не заметили, почему так непопулярны подписи на форуме, а некоторые даже специально пишут под гостем, а не под своим логином? Почему многие не хотят уговаривать вешать на свой открытый ключ подписи других людей (с кем они чаще всего переписываются) и тем более участвовать в "keysigning party"?


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


Интересно, что ряд теоретических работ по введению отрицаемости и PFS в неинтерактивные протоколы (электронную почту) был предложен, но впоследствии была опубликована работа, что некоторые из этих протоколов уязвимы к атакам на аутентификацию (например повторной отправкой сообщений).


По поводу PFS:


"A Practical Way to Provide Perfect Forward Secrecy for Secure E-Mail Protocols" — Sangjin Kim, Changyong Lee, Daeyoung Kim and Heekuck Oh.


"Cryptanalysis of e-mail protocols providing perfect forward secrecy" — Raphael C.-W. Phan.


По поводу отрицаемости:


"Toward the Fair Anonymous Signatures: Deniable Ring Signatures" — работа упоминалась выше.


"Provision of deniability of E-mail protocol" — Hyo Kim.


Кстати, здесь используется одно из интересных применений личностной криптографии[link5] — если в обычном виде её жёстко критикуют и считают ещё более авторитарной чем сертификаты PKI, то для отрицаемых подписей — каждый сам себе PKI и может проверять чужую подпись или подделать её сам себе или третьей стороне, но только для сообщений, которые предназначены для связи между участниками коммуникации.


По мере развития исследований в этом направлении модель openPGP возможно когда-нибудь будет серьёзно переработана.

Гость (03/03/2010 12:51)   
Никита Борисов, Ян Голдберг и Эрик Брюер
А насколько их работы обоснованы теоретически?
— unknown (03/03/2010 13:21)   
Это профессиональные и известные по публикациям криптографы, OTR — получивший признание протокол, пусть он и не является стандартом, хотя их работа конечно не перегружена такими подробными формальными доказательствами, как у Кравчука для протокола SKEME (тоже достаточно авторитетный криптограф), работа с именем Райвиста с похожими аргументами против использования ЭЦП для приватности была приведена ранее.

В общем для электронной почты нужен неинтерактивный протокол с PFS и отрицаемой аутентификацией, о чём профессиональные криптографы-теоретики говорили уже 15 лет назад.
— spinore (11/05/2010 06:33, исправлен 11/05/2010 06:47)   
В любом случае никто не мешает переделать любую программу так, чтобы извлекать из зашифрованного текста расшифрованный с подписью отправителя, имея возможность предоставить её третьей стороне, не раскрывая своего ключа расшифрования.

Асимметричное крипто в чистом виде без распределения симметричных сеансовых ключей существует только в экспериментальных протоколах, но даже если бы оно было где-то реализовано, получатель всё-равно может извлечь открытый текст после расшифрования и приклеить к нему вашу подпись обратно, не сдавая свой закрытый ключ, если только не подписывать шифртекст, полностью увязанный на асимметричное крипто.

Мне не очень понятно какова коммутация между приклеиванием подписи и шифрованием, особенно в контексте реализации в jabber. Допустим, руками можно зашифровать сообщение без подписи (gpg -e), а затем его подписать. Как теперь адресат приклеит эту подпись к расшифрованному тексту? Допустим, также, что раскрывать ключ шифрования он не заинтересован, но может раскрыть ключ подписи (иногда это разные ключи, так?). Опираюсь на комментарий:

Любой ключ v4 состоит из главного ключа подписи (RSA или DSS) и одного или нескольких подключей шифрования/подписи (для шифрования — RSA или Эльгамаль (Диффи-Хэллман в данном случае — это то же самое), для подписи — те же RSA или DSS).

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

С другой стороны, не понятно, почему они никак не пересекаются с правом. В случае следствия одним из доказательств может являться всё что угодно (записи в журнале на вахте о посещении какого-то офиса, свидетельства лиц-очевидцев, косвенные показания типа "да он ещё с дестства увелкался химией и взрывчатыми веществами" и т.д. – список бесконечен – и не надо явно оговаривать в законах что явно является доказательством, а что нет). К примеру, администратор jabber-сервера может прийти в суд, показать логи и сказать: да, действительно, в такие-то времена с таких-то IP была зарегистрирована переписка того-то с тем-то, зашифрованная ключом таким-то. В свою очередь лица на местах могут подтвердить, что в данных местах за данными PC были действительно означенные лица. В крайнем случае могут назначить автороведческую экспертизу, эксперт по которой может в суде сказать "с высокой вероятностью этот текст действительно принадлежит означенному лицу". В то же время и обычный компьютерный эксперт может сказать "наличие ЭЦП и анализ подписанных ею текстов подтверждает, что приватный ключ действительно принадлежит лицу, в то время как аргументы о внезапной утере ключа несостоятельны, и экспертиза не видит никаких подтверждений этому окромя голословных утверждений со стороны лица". Т.е. суд в конечном счёте хотя и старается процедуру формализовать, но по факту опирается лишь на фактор обычной человеческой убедительности. Достаточность/убедительность тех или иных доказательств/аргументов/экспертиз также оценивается на глазок исходя из риторики стороны обвинения. Я ошибаюсь?


После того как Ева сможет получить (похитить) приватные ключи Алисы и Боба, она сможет не только прочитать все их последующие сообщения, защищённые этим ключом, но и прочитать все предыдущие сообщения, которыми они обменивались, нередко в течении многих лет (если она их до этого перехватывала, записывала, но не могла расшифровать).

Если я правильно понимаю, то в случае OpenSSH и OpenVPN это тоже так, поскольку позволяет восстановить сеансовый симметричный ключ, которым зашифрованы все пакеты? В качестве полумеры для защиты можно порекомендовать периодически менять свой ключ, удаляя все его копии.


Не заметили, почему так непопулярны подписи на форуме, а некоторые даже специально пишут под гостем, а не под своим логином? Почему многие не хотят уговаривать вешать на свой открытый ключ подписи других людей (с кем они чаще всего переписываются) и тем более участвовать в "keysigning party"?

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

Кроме собственно параноидальных обоснований могут существовать и иные аргументы не писать от своего имени / не подписывать посты:

  1. Нет смысла подписывать свои сообщения, если они не особенно значительны, т.к. это приводит к длинной шапке над каждым комментарием, которая мозолит глаза. Урон от такого неудобства может оцениваться больше, чем сверхмалая вероятность того, что кто-то взломает сервер и напишет какое-то плохое сообщение от имени пользователя, да ещё и так, что тот потом не сможет легко доказать компрометацию своего аккаунта [вопрос эстетики и конкретного оформления подписей на сайте]. В отсутствие плагинов для подписи самим браузером, каждое сообщение нужно подписывать руками. Это создаёт отдельные ощутимые неудобства при том, что вероятность атаки, от которой защищается подписывающий, крайне мала [вопрос компромисса между удобством и безопасностью].
  2. По прошествии некоторого времени ключ пользователя обычно меняется на новый. Все его ранее подписанные комментарии автоматически приобретают назойливую серую шапку [вопрос эстетики], а с другой стороны – оставляют железные доказательства того, что такой-то ключ заведомо когда-то использовался таким-то пользователем [вопрос паранои]. И дело здесь может быть даже не в конвенциональной параное, а во вполне практической: много информации, не скрываемой по отдельности, во всей своей совокупности оказывается столь весомой, что требует скрытия. Об этом у нас уже проскакивала развёрнутая статья в новостях, да и в комментариях обсудили.
  3. Проставление авторства на всех постах начинает вести к репутации, у которой есть свои и плюсы, и минусы. Вместо того, чтобы нетрально оценивать мысль, высказанную Гостём каждый начинает невольно оценивать who is who – т.е. что за личность пишет под данным ником. Начинаются попытки нарисовать в своей голове исчерпывающий соцпортрет всех участников, в обсуждениях становится больше личного, и меньше конструктивного. Участнику с высоким рейтингом допускаются поблажки, а к новичку/анониму проявляются завышенные требования – это опять отводит дискуссии от контруктива. Одна и та же [даже сколь угодно глупая] мысль, сказанная человеком с репутацией, выносится в цитаты, но она же, высказанная неизвестной личностью, может никем не приниматься в серьёз. За всем этим стоит некоторая логика, которая даёт свои плюсы, я просто хотел отметить, что есть и минусы и субъективность. К тому же есть пользователи, которые от лица кого бы ни писали, всегда будут чётко распознаваемы, просто в силу характера своих постов и показываемых знаний [тот же unknown], в то время как остальных обычно можно распознать только по лингвистическому портрету.
  4. Подписываться ником означает поддерживать институт авторства. Последнее, если жизненно не необходимо, ведёт к тщеславию. Более того, многие находят в прославлении себя потомками тщеславии смысл своей жизни, хотя, между прочим, это вообще-то порок :-)

В то же время, иногда плюсы могут перевешивать минусы:

  1. Указание никнейма может быть целесообразно, когда автор отвечает в своём же топике: связывание всех его постов между собой существенно помогает понять какой вопрос ставится автором и что же он хочет добиться. В другом топике этот же автор мог бы называть себя по-другому.
  2. Иногда целесообразно подписываться при правке документов [что делается сравнительно не часто], что служит индикацией, что правка релевантна [репутация участника и оптимизация времени администрации, которая проверяет все правки].

Keysigning party целесообразна в крупных сообществах, где у народа часто возникает необходимость писать малознакомым лицам. Количество часто используемых социальных контактов, да ещё и тех, которые способны работать с PGP, редко превышает десяток человек, при этом ещё меньшая часть контактов может ответственно аутентифицировать и подписывать чужие ключи с пониманием происходящего. В этом случае разумней каждый раз заново устанавливать доверие к каждому контакту, сверяя подписи или пользуясь телефонным звонком, благо что нужно это не чаще раза в год [лично мой опыт].


Интересно, что ряд теоретических работ по введению отрицаемости и PFS в неинтерактивные протоколы

Но это же не решает вопросы типа "предъявления незаинтересованным лицом времён отправки всех сообщений через его сервер" => неотрицаемость. Если как адресат, так и админ независимо подтверждают эти времена отправки, а адресат ещё и раскрывает содержимое переписки, чем поможет формально-математическое PFS? Я намекаю на то, что полноценная PFS может не быть чисто криптографической задачей, равно как и вопросы стеганографии. Можно условно назвать всё такое побочное "социалкой", которая в ряде случае полностью обесчестит любой криптопротокол, даже не злонамеренно :)


Кстати, здесь используется одно из интересных применений личностной криптографии — если в обычном виде её жёстко критикуют и считают ещё более авторитарной чем сертификаты PKI, то для отрицаемых подписей — каждый сам себе PKI и может проверять чужую подпись или подделать её сам себе или третьей стороне, но только для сообщений, которые предназначены для связи между участниками коммуникации.

Приватным ключом в jabber будет что-то наподобие f(секрет_меня-сервера,мой jid)? Как я понял, личностная криптография эффективней в системах, где часто требуется писать контактам, малоизвестным отправителю, в случае же постоянной online-переписки абонентов удобней будет использовать именно OTR.

— unknown (11/05/2010 11:27, исправлен 11/05/2010 13:11)   
Допустим, руками можно зашифровать сообщение без подписи (gpg -e), а затем его подписать. Как теперь адресат приклеит эту подпись к расшифрованному тексту?

Ну это же изврат :) Формально старые протоколы OpenPGP создавались по идеологии "sign-then-encrypt" и только недавно стали появляться возгласы в сторону проектирования неочевидных протоколов "encrypt-then-sign" и не в контексте OpenPGP, а чисто теоретически.


Если я правильно понимаю, то в случае OpenSSH и OpenVPN это тоже так, поскольку позволяет восстановить сеансовый симметричный ключ, которым зашифрованы все пакеты? В качестве полумеры для защиты можно порекомендовать периодически менять свой ключ, удаляя все его копии.

Нет. Там по-умолчанию (и рекомендуется настраивать всегда именно так) — совместная генерация ключа по Диффи-Хеллману в реальном времени. После сенса ключ уничтожается.
Ключ, который у вас в конфиге — это для подписи этих сеансовых ключей, чтобы не было атаки человека посредине, когды вы совместно с сервером генерируете ключ. Для https также. В Tor ещё. В интерактивных протоколах как-раз это свойство легко достигается. Проблема только в неинтерактивных (почте).

Но это же не решает вопросы типа "предъявления незаинтересованным лицом времён отправки всех сообщений через его сервер" => неотрицаемость. Если как адресат, так и админ независимо подтверждают эти времена отправки, а адресат ещё и раскрывает содержимое переписки, чем поможет формально-математическое PFS

А если канал связи — анонимный? Логов как-таковых нет.

В то же время, иногда плюсы могут перевешивать минусы

С плюсами и минусами согласен, уже на прикладное социологическое исследование тянет :)
Повторяю только главный плюс: проект разработки открытого софта, там эта идеология идеальна для распространения пакетов и даже сборки и проверки целостности всего дистрибутива.

Как я понял, личностная криптография эффективней в системах, где часто требуется писать контактам, малоизвестным отправителю, в случае же постоянной online-переписки абонентов удобней будет использовать именно OTR.

Здесь не совсем так. Здесь нет привязки к центральному серверу аутентификации, которому нужно было бы доверять. Каждый сам себе УЦ и генерирует пару для связи с абонентом, которую мог бы использовать и он. Но чтобы не плодить кучу ключей пара будет иметь вид Alice-Bob, Alice-XXX и т.д. И Элис может всегда потом сказать "невиноватая я, он сам подписал".

— SATtva (11/05/2010 21:05)   
Формально старые протоколы OpenPGP создавались по идеологии "sign-then-encrypt" и только недавно стали появляться возгласы в сторону проектирования неочевидных протоколов "encrypt-then-sign" и не в контексте OpenPGP, а чисто теоретически.

Если речь о защите от пересылки, то предпочтительнее encrypt-sign-encrypt.
— spinore (15/05/2010 01:14)   
Каждый сам себе УЦ и генерирует пару для связи с абонентом, которую мог бы использовать и он. Но чтобы не плодить кучу ключей пара будет иметь вид Alice-Bob, Alice-XXX и т.д. И Элис может всегда потом сказать "невиноватая я, он сам подписал".

Это, наверно, эквивалентно следующему: Алиса и Боб используют один и тот же PGP-ключ, оба имея доступ к приватному. Тогда каждый из них всегда может обвинить другого в "подделывании" сообщения. Аналогично можно сделать и для группы контактов, где все друг другу доверяют.

Ключ, который у вас в конфиге — это для подписи этих сеансовых ключей, чтобы не было атаки человека посредине, когды вы совместно с сервером генерируете ключ.

Вопрос родился из соображений "что даст атакующему владение ключом, который лежит в /etc/ssh". Значит, ответ есть "ничего не даёт в случае отсутствия активного вмешиваетельства в канал с использованием MITM".

Ссылка для информации: обсуждение того "что делать" с неотрицаемостью ведётся здесь[link6].
— unknown (16/05/2010 16:15)   
Это, наверно, эквивалентно следующему: Алиса и Боб используют один и тот же PGP-ключ, оба имея доступ к приватному. Тогда каждый из них всегда может обвинить другого в "подделывании" сообщения.

Аналогично вышеупомянутые ring-signatures.
Гость (20/08/2010 19:23)   
К примеру, администратор jabber-сервера может прийти в суд, показать логи и сказать: да, действительно, в такие-то времена с таких-то IP была зарегистрирована переписка того-то с тем-то, зашифрованная ключом таким-то. В свою очередь лица на местах могут подтвердить, что в данных местах за данными PC были действительно означенные лица. В крайнем случае могут назначить автороведческую экспертизу, эксперт по которой может в суде сказать "с высокой вероятностью этот текст действительно принадлежит означенному лицу".


Как данная атака сможет быть применена при использовании связки GPG и Tor?
Гость (20/08/2010 23:56)   
Обсуждался случай с/без GPG в отсутсиве Tor. Можно ли её, и если можно то как её обобщить на случай Tor'а — думайте сами.
— spinore (12/04/2012 01:07)   
SATtva (05/11/2008 21:47):
spinore, для новой редакции OpenPGP готовится, в числе прочего, и предложение о реализации Perfect Forward Secrecy: даже если ключ окажется раскрыт, это не скомпрометирует совершённую ранее переписку.

SATtva, скоро пропозалу будет уже минимум 4 года. Есть ли какие-то подвижки в сторону PFS в OpenPGP?
— SATtva (13/04/2012 10:27)   
В группе OpenPGP тишина, только бурьян шевелится от тёплого весеннего ветра готовятся к принятию спецификаций эллиптических кривых. Каких-то предметных обсуждений нового формата ключей, пожалуй, с тех самых пор и не возникало.
— sentaus (13/04/2012 11:55)   
Наверно завершения конкурса SHA-3 ждут, чтобы её в качестве основной использовать.

Ссылки
[link1] http://www.iacr.org/archive/crypto2002/24420483/24420483.ps

[link2] http://xmpp.org/extensions/xep-0027.html#security

[link3] http://www.pgpru.com/comment23456

[link4] http://www.pgpru.com/comment23468

[link5] http://www.pgpru.com/biblioteka/statji/chtotakoelichnostnajakriptografija

[link6] http://www.pgpru.com/forum/kriptografija/offtopikiztemyvozmozhnostitruecryptproodnorazovyepodpisi