id: Гость   вход   регистрация
текущее время 20:05 28/03/2024
создать
просмотр
ссылки

openPGP для анонимов


Если анониму (псевдониму? Как-то не по-русски звучит) всё же хочется использовать PGP/GPG и сеть доверия, как ему собрать на своём ключе подписи и как проверить валидность чужих ключей? На сессию заверителей, понятно, не прийти.


Раньше были роботы, подписывающие ключи после проверки e-mail'а (некоторые ещё проверяли владение секретным ключом), да все вымерли.


Делать так? Да ну. Там ясно, зачем это топикстартеру, а просто так просить подписать неловко как-то, тем более что не сможешь ответить тем же, если ключ не принадлежит тоже псевдонимному пользователю.


И отпечатки чужих ключей обычно из рук в руки просто так не получишь. Я просто собирал отпечатки / копии ключа по Сети. Ну, в расчёте на то, что если отпечаток ключа с кейсервера совпадает с тем, что указано на сайте человека и, скажем, в нескольких рассылках – ключ настоящий, не могли же его подменить всюду. Смотреть следует просто так, а потом через Tor – чтобы убедиться, что это не провайдер подменяет отпечатки.
Ненадёжно, конечно, ну так это не для подписи, а ничего другого в голову не приходит. Так можно собрать побольше ключей и хранить их для себя, а дальше уж сеть доверия начинает действовать. Может, есть лучшие варианты?


 
На страницу: 1, 2 След.
Комментарии
— Гость (18/08/2010 14:32)   <#>
Не то чтобы совсем по теме, но рядом: http://www.linuxsecurity.com/content/view/121645/49/
— unknown (18/08/2010 15:37)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
В комментариях /comment25910, /comment37670 в одном обсуждении мелькали ссылки и IMHO, из которых следует, что OpenPGP в нынешнем виде плохо сочетается с требованиями анонимности (псевдонимности), во многих случаях вообще для него не подходит.

PGP исторически разрабатывался только для открытых сообществ, подписание ключей автоматически выставляет напоказ связи между участниками (это то, с чего начинаются любые мероприятия по слежке). Для связи в анонимных (псевдонимных, тайных) сообществах требуются другие протоколы, ждать серьёзной теоретической проработки и практической реализации которых придётся очень долго.
— Гость (18/08/2010 18:14)   <#>
Да, конечно. Но ведь хочется же :)

Кстати, забавная (печальная?) вещь: у кулхацкеров входит в моду GPG вместо ужасных закрытых систем (ханаанский бальзам). Они решили проблему с сетями доверия очень просто. Игнорируют подписи ключей и необходимость проверки validity ключа в принципе – просто не знают об этом (вот, например). Ну а самое смешное то, что это может работать (небезопасно, конечно, но в принципе работать может) – кто-нибудь слышал о случаях, когда Мэллори в реальной жизни успешно подменял ключи при обмене ими?
— Гость (18/08/2010 19:06)   <#>
анониму ... всё же хочется использовать PGP/GPG и сеть доверия
Не понимаю, зачем это нужно. Может быть вы опишете атаку, от которой защищаетесь, на каком-то приземлённом примере?

Если аноним хочет связаться с неанонимным пользователем (захотел что-то передать Roger'у Dingledine'у), то берёт его ключ, опираясь на его (Roger'а) участие в PGP-сети доверия. В первом же сообщении аноним "представляется", оставляя свой PGP-ключ для связи: далее данный ключ считается адресатом (Roger'ом) доверенным. Иными словами говоря, "первое сообщение аутентифицирует пользователя". Раз вы — аноним, доказать что "вы есть вы" теряет смысл, остаётся лишь аутентифицировать вас по авторству каких-то сообщений, что итак делается искаропки.

Если аноним хочет что-то написать другому анониму, то пишет на публикуемый им ключ, указывая в сообщении свой ключ. В принципе здесь можно говорить о подмене ключа, но есть ряд "но". Во-первых, подмену сделать трудно, если речь идёт о скрытых ресурсах Tor и Jabber: слишком много разрозненных каналов связи, во-вторых, можно ввести правило: каждый выкладывает на сервер ключей ключ со своим анонимным ником — если на сервере только один ключ с данным ником, скорей всего подмены не было (это практичный, а не теоретический подход; считается, что атакующему будет довольно затратно подменить логи сервера ключей). Часто PGP-переписке предшествует обычная переписка, в которой есть доверие что сообщения доставляются именно от нужного адресата, а раз так — и ключ должен быть от него. И напоследок, MITM-атака всех каналов — вещь довольно трудозатратная, и невероятно предполагать, что противник пойдёт именно по этому пути, особенно если не знает кто, с кем и когда планирует связаться, и по какому именно каналу. Если группа анонимов образует свою собственную PGP-сеть доверия, то достаточно, чтобы при приёме нового члена он предъявлял свой ключ — после этого аноним будет считаться "неотличимым" от своего ключа (да, можно гипотетически представить, что атакующий MITM'ит всех новых участников и прослушивает все сообщения в сети — эдакий глобальный монстр, но если не наделять его магическими возможностями, то понятно, что это нереально — рано или поздно атакующий ошибётся и участники заподозрят атаку, начав более пристально проверять каналы связи).

PS: это всё к тому, что хотя теоретически вопрос непроработан и нерешён, на практике проблемы обычно не возникает. В конечном счёте и PGP сеть доверия не страхует от подмены: можно прийти на сессию заверителей с поддельным паспортом и подписать свой ключ. Отпечаток ключа, диктуемый по телефону, чисто теоретически тоже можно подменить в реальном времени. Всегда есть какой-то уровень доверия и границы на силу атакующего. Лично я вообще скептично настроен по отношению к сети доверия: ИМХО, доверие можно установить либо лично, зная адресата по голосу или внешности, либо на основе установки такого доверия кем-то, кому уже сам доверяешь. К примеру. как познакомить 2х анонимов, если я их уже знаю и их ключи у меня помечены как доверенные? Каждому адресату сообщаются ключи — они их импортируют, помечают доверенными, а затем сообщаются контакты для связи, после чего они уже с первых сообщений пишут друг другу шифрованные письма без лишних заморочек. Есть ещё и такой момент: если аноним пытается сменить ключ, а мне известны его контакты, можно поспрашивать по контактам — правда ли, что он сменил ключ.
— Гость (18/08/2010 22:49)   <#>
Не понимаю, зачем это нужно. Может быть вы опишете атаку, от которой защищаетесь, на каком-то приземлённом примере?

Если аноним хочет связаться с неанонимным пользователем (захотел что-то передать Roger'у Dingledine'у), то берёт его ключ, опираясь на его (Roger'а) участие в PGP-сети доверия.
Нельзя опираться на участие в сети доверия – аноним не знает ни одного настоящего ключа. Может быть, противник сгенерировал фальшивый ключ Roger'а Dingledine'а, много других фальшивых ключей, подписал ими друг друга и теперь подменяет ответы сервера ключей. Как раз это не очень сложно – разрешать доменное имя в IP-адрес своего сервера (пусть наш аноним ходит в Интернет через Tor, а противник владеет десятью процентами нод и ему везёт – аноним всегда попадает на его Exit-ноды), куда загрузить свои поддельные ключи. Но не так это и важно – сложно или нет. У каждого своя паранойя. В обычной ситуации OpenPGP защищает от такой атаки.

Ну или вот ещё. Положим, некто под псевдонимом публикует где-то в Сети роман о приключениях одного хитроумного идальго, на всякий случай подписав сообщение своим ключом. Через какое-то время автор с удивлением узнаёт про появившееся фальшивое продолжение. А как же OpenPGP подпись? Оказывается, какой-то самозванец сгенерировал новый ключ, скопировал оригинальный текст, подписав этим ключом, а потом добавил своё продолжение, тоже подписанное. И нет никакого действительно надёжного (полагаться на лингвистический анализ текста? Свидетельства очевидцев о том, что, где и через какое время было опубликовано? Ненадёжно в сравнении с криптографией) способа узнать правду – настоящего автора никто не знает, на обоих ключах нет ни одной подписи. Желай автор раскрыть своё инкогнито, он пришёл бы на сессию заверителей, получил бы подписи на ключ, попал бы в прочный набор и никто не смог бы написать фальшивое продолжение его книги. Но настоящему автору – псевдониму приходится, когда он на самом деле напишет вторую часть, пытаться всех убедить, что он-то и есть настоящий, что вторая часть скроена тем же мастером и из того же сукна, а чтобы избежать дальнейших подделок – довести своего героя до самой могилы.
Если угодно – пусть это будет программа, а не книга, суть та же.

Часто PGP-переписке предшествует обычная переписка, в которой есть доверие что сообщения доставляются именно от нужного адресата, а раз так — и ключ должен быть от него.
Это уже чересчур серьёзные допущения. Противник взломал почтовый сервер и делает с сообщениями то, что хочет – вполне реально.

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

Лично я вообще скептично настроен по отношению к сети доверия: ИМХО, доверие можно установить либо лично, зная адресата по голосу или внешности, либо на основе установки такого доверия кем-то, кому уже сам доверяешь.
Ну да – это и есть сеть доверия. Если знакомый адресат лично передал отпечаток ключа – его можно подписать. Если кто-то, кому Вы доверяете, подписал чей-то ключ, он заявляет, что ключ достоверный и Вы можете избежать необходимости встречаться и проверять отпечатки лично.

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

Есть ещё и такой момент: если аноним пытается сменить ключ, а мне известны его контакты, можно поспрашивать по контактам — правда ли, что он сменил ключ.
Так неправильно. Ключ – самое важное, самое дорогое, защищается лучше всего. Он первичен, e-mail'ы, JID'ы и прочее – вторично. Если ключ меняется, то сообщение об этом должно быть подписано старым ключом. Иначе какой смысл в безопасных ключах, если можно, взломав ящик (что много проще, чем, например, похитить ключ со смарт-карты и получить пассфразу), отправить сообщение о том, что ключ сменился?


То есть вопрос по сути такой – как псевдонимному пользователю получить подписи на свой ключ и как проверить validity чужих ключей, не встречаясь с их владельцами?
— Гость (19/08/2010 01:17)   <#>
Нельзя опираться на участие в сети доверия – аноним не знает ни одного настоящего ключа. Может быть, противник сгенерировал фальшивый ключ Roger'а Dingledine'а, много других фальшивых ключей, подписал ими друг друга и теперь подменяет ответы сервера ключей.
Значит либо противник контролирует все сервера ключей, либо все exit'ноды Tor'а, потенциально включая все удалённые ssh-сервера, на которых у меня есть аккаунт, и через которыея могу загрузить ключ, а также противник контролирует все такие каналы моих друзей, с которыми у меня уже есть надёжная PGP-связь. Также противник контролирует все файлы в интернете, подписанные истиным ключом Роджера, чтобы не дать мне заподозрить неладное. В том числе противник контролирует pgpru, где отпечаток ключа Роджера опубликован. Каждый из этих моментов по отдельности — реален, все вместе — нет, потому я и начал говорить о заземлении.

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

Но настоящему автору – псевдониму приходится, когда он на самом деле напишет вторую часть, пытаться всех убедить, что он-то и есть настоящий, что вторая часть скроена тем же мастером и из того же сукна
В этом проблемы нет: он подпишет 2ую часть тем же ключом, и всем будет очевидно, что автор ключа "согласен" со 2ой частью, хотя, согласен, не очевидно, что автор ключа есть автор произведения. Здесь ничего лучше авторизующего сервера не предложить из имеющихся инструментов, и, как вы уже должны догадаться, от этого PGP-сеть доверия не защитит, бо вопрос "кто первый опубликовал", а не "кто подписал".

Противник взломал почтовый сервер и делает с сообщениями то, что хочет – вполне реально.
Особенно если этот сервер – скрытый ресурс сети Tor, название которого публично не известно, и он может быть не один для связи.

Если кто-то, кому Вы доверяете, подписал чей-то ключ, он заявляет, что ключ достоверный и Вы можете избежать необходимости встречаться и проверять отпечатки лично.
Я не вижу большого практического смысла в сети доверия. Моё доверие (разумный старт), может транслироваться только на людей, которых я знаю лично и с которыми я систематически общаюсь. Если ключ помечен как доверенный вследствие наличия "достоверной цепочки" в сети доверия, это означает, что я доверяю кому-то, кто доверяет ещё кому-то, кто доверяет ещё кому-то, кто видел владельца и подписал его ключ. Слишком длинно и нифига неубедительно. И какая величина должна быть у такой сети, чтобы между никак не связанными между собой людьми из разных стран образовалось доверие? И вообще, что за "сессии заверителей"? Я заверяю ключи каких-то людей, которых я первых раз вижу на основании того, что они мне показали свой паспорт? Бред. ИМХО.

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

как псевдонимному пользователю получить подписи на свой ключ и как проверить validity чужих ключей, не встречаясь с их владельцами?
Вроде бы unknown уже всё сказал. Ваша задача на современном уровне развития криптографии в идеале не решается. Более того, приведённый вами пример применения этой затеи вообще никак не связан с наличием PGP-сети доверия (см. выше).
— sentaus (19/08/2010 07:42, исправлен 19/08/2010 10:58)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
это означает, что я доверяю кому-то, кто доверяет ещё кому-то, кто доверяет ещё кому-то, кто видел владельца и подписал его ключ.

Нет. Перечитайте инструкцию :)
Ключ становится подлинным, если его подписывает человек, которому вы доверяете или несколько, которым вы доверяете частично.


И какая величина должна быть у такой сети, чтобы между никак не связанными между собой людьми из разных стран образовалось доверие? <...> Я заверяю ключи каких-то людей, которых я первых раз вижу на основании того, что они мне показали свой паспорт?

При заверении ключа этого достаточно. Разумеется, никто не обязывает вас доверять, что ключи, подписанные этим человеком, подлинные.


— unknown (19/08/2010 13:16)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Интересная дискуссия, согласен сразу с двумя (или более) спорящими гостями, взаимоисключающие параграфы органично сочетаются и рвут все шаблоны. Теперь (почти) серьёзно :)

По практической части очень интересны ситуации с книгой, подменой и т.д. В какой-то критической области такие жизненные ситуации могут легко разрушить красивые теоретические построения. Действительно, чрезмерные требования к паранойе могут оказаться и недостаточными даже в простом случае. Всё потому, что происходит попытка действовать не по стандарту: OpenPGP и его предшественники не создавались для анонимов/псевдонимов. Тогда стойкая (хотя бы по сегодняшним меркам) анонимность была только в теории.

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

Идеально OpenPGP подходит для подписи Linux-дистрибутивов. Вам как-то придётся установить первоначальное доверие к своей операционке (раз уж вы ей собираетесь пользоваться), всем её пакетам, т.е. её главному заверяющему ключу (подписи всех пакетов проверяются перед установкой прозрачно по дефолтному конфигу). По этому ключу скачиваете и проверяете пакет-связку всех ключей от разработчиков. Один из них пакует Tor и по совместительству входит в Tor-project, его ключ подписан Роджером. Так вы узнали ключ Роджера. Фактически приемлемо это реализовано IMHO только в Debian. Если вы разработчик Debian (но не аноним), то ваш ключ доверяем по крайней мере среди пользователей Debian, а следовательно и от вас тянется цепочка доверия на другие проекты. Зависит ещё от того, насколько важный разработчик в системе, подозреваю, что среди тысяч разработчиков найдётся достаточно раздолбаев в плане обращения с ключами.

С другой стороны, есть понятие "оппортунистическое шифрование". Если переписка или трафик не очень важны, а доверие никак не установить, то просто игнорировать возможность MITM. Это спасает хотя бы от массового нецелевого прослушивания, одновременно расширяя область применения криптографии, хотя и сомнительным путём.

Но ТС нужен псевдоним со строгой аутентификацией.

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


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

Вот ещё один пример: однонаправленные сумматоры. Их изобрели ещё в 1994 году и с тех пор они приобрели репутацию. См. работу fileOne-Way Accumulators: A Decentralized Alternative to Digital Signatures, особенно пункт 5.2. Это аналог хэш-функций, но не совсем. Он близок к RSA и обладает свойством квазикоммутативности.

Пусть есть секретный список секретных членов секретной организации S = [Alice, Bob, Bond007, Вася Пупкин ...]. Для защиты от брутфорса кроме имён есть ещё случайные параметры. Члены секретной организации не знают никого из списка, его размер (количество участников организации) тоже неизвестно (обо всём знает только составитель списка). Они знают только некоторое значение H = f (S). Выглядит как хэш, но это хэш-аккумулятор или однонаправленный сумматор. Ещё у каждого члена есть парочка секретных параметров.

При встрече секретные агенты могут обменяться параметрами так, что докажут друг другу причастность к списку организации: у них сойдётся H, которое из разных, но правильно выданных участникам чисел получается одинаковым (в отличие от обычных хэшей). Они даже могут доказать свою причастность к организации постороннему человеку: значение H может быть опубликованным и несекретным, а подобрать параметры, чтобы пролезть в список нереально (2128, 2256, как обычно).

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

Пока слабо представляется, что-то когда-то подобные протоколы разовьют до стандартов и прикрутят к OpenPGP. Но возможно когда-нибудь системы для оперирования псевдонимными идентичностями будут обычным делом.
— Гость (19/08/2010 16:25, исправлен 19/08/2010 20:02)   <#>
это означает, что я доверяю кому-то, кто доверяет ещё кому-то, кто доверяет ещё кому-то, кто видел владельца и подписал его ключ.

Нет. Перечитайте инструкцию :)
Ключ становится подлинным, если его подписывает человек, которому вы доверяете или несколько, которым вы доверяете частично.

Вообще-то это настраивается (в GnuPG).


Из gpg(1):
--completes-needed n
Number of completely trusted users to introduce a new key signer (defaults to 1).


--marginals-needed n
Number of marginally trusted users to introduce a new key signer (defaults to 3)


--max-cert-depth n
Maximum depth of a certification chain (default is 5).


Вон там SATtva очень подробно объяснял про validity и trust.

— Гость (19/08/2010 21:18)   <#>
Если ключ меняется, то сообщение об этом должно быть подписано старым ключом.
А сообщение это гласит, что старому ключу уже доверия нет :)
— Гость (19/08/2010 23:10)   <#>
Эм... а сертификаты отзыва уже отменили???
— Гость (20/08/2010 19:16)   <#>
PGP исторически разрабатывался только для открытых сообществ, подписание ключей автоматически выставляет напоказ связи между участниками (это то, с чего начинаются любые мероприятия по слежке). Для связи в анонимных (псевдонимных, тайных) сообществах требуются другие протоколы, ждать серьёзной теоретической проработки и практической реализации которых придётся очень долго.

Если есть те или иные связи между людьми, значит, имхо, уже полной анонимности нет как миниумум. Но ведь можно использовать некие "профили псевдонимности", включая идентификаторы GPG и адреса эл. почты – для каждого случая – свои. При этом, всю связь через Сеть вести через Tor, включая пересылку почты и обмен ключами с серверами ключей, не?
— Гость (20/08/2010 22:34)   <#>
[offtopic]
Гость (19/08/2010 16:25, исправлен 19/08/2010 20:02)
А как Гость исправил свой комментарий? И что в нём изменилось (вроде ничего)? Баги?
[/offtopic]
— SATtva (20/08/2010 23:20, исправлен 20/08/2010 23:20)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Иногда исправляют модераторы. В данном случае ссылка была приведена к правильному формату.

— Гость (20/08/2010 23:38)   <#>
[offtop]
А как Гость исправил свой комментарий?
Есть тайные методики :)
P.S.: Иногда сообщения (разметку в них) испрвляют модераторы. Может быть, есть опция редактирования (сомневаюсь), если участник, будучи залогиненным на сайт, публикует сообщение от Гостя.
[/offtop]
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3