Аналог PGP с обеспечением отрицаемости и наперёд заданной секретности оффлайн?
Обсуждение в соседней теме натолкнуло на мысль: существует ли решение, аналогичное PGP и обеспечивающее для оффлайн-сообщений конфиденциальность и аутентификацию, но плюс отрицаемость и наперед заданную секретность (PFS), ну, и, желательно, тихое уведомление о прессинге. Нашел похожий вопрос на crypto.stackexchange: похоже, что готовых решений пока нет. Возможно, где-то на pgpru это уже обсуждалось, или что-то уже появилось?
комментариев: 9796 документов: 488 редакций: 5664
Отрицаемая аутентификация могла бы быть реализована на основе кольцевых подписей. Но этот протокол не реализован ни в одном из известных криптопродуктов.
Таких протоколов не встречалось даже в теоретических публикациях. Т.е. все попытки изобрести это на коленке без предварительной формализации можно заранее считать провальными.
комментариев: 393 документов: 4 редакций: 0
Окно ключей – неплохой вариант.
Я посмотрел протокол OTR, и возникла идея тоже использовать DH в варианте "для ответа на полученное оффлайн сообщение – новый ключ". Получить DH-секрет можно минимально за 4 шага, и если в каждом сообщении (туда или сюда) объединять по шагу для 4-х последовательных ключей, то всегда будем иметь новый ключ для ответа на входящее. Если пишем несколько раз подряд, то тогда уже будет окно: каждый раз хешируем старый ключ, удаляем и заменяем хешем. То же самое, если сообщение теряется, или невалидно.
Вначале инициатор связи создает временную PGP-связкy ключей для согласования аутентификационной фразы (тот час удаляя связку после использования) и однократно использует публичный PGP вызываемого абонента. Это никого не компроментирует.
По возможности попробую набросать протокол по наличию свободного времени. Понятно, что наколенно, но, может, у кого-то возникнут свежие идеи.
комментариев: 9796 документов: 488 редакций: 5664
Лучше, чем эти работы?
A Forward-Secure Public-Key Encryption Scheme. Ran Canetti and Shai Halevi and Jonathan Katz.
Self-Updatable Encryption: Time Constrained Access Control with Hidden Attributes and Better Efficiency. Kwangsu Lee and Seung Geol Choi and Dong Hoon Lee and Jong Hwan Park and Moti Yung.
Это только по PFS. Опишите свой вариант PFS, который превосходит хотя бы эти публикации, так чтобы можно было сравнить вашу работу и работы других авторов, да ещё прикрутите к нему отрицаемость со всеми доказательствами, чтоб не хуже, чем у них.
Есть что добавить к сказанному в конце /comment71009?
комментариев: 393 документов: 4 редакций: 0
unknown, спасибо, Вы стимулируете меня изучать весьма теоретические работы, в которые я сам никогда бы не стал вникать, ограничившись просмотром имеющихся реализаций :) Конечно, любой мой вариант PFS не будет ничего превосходить, да и не в этом цель.
Просто появилась мысль в каждом оффлайн-сообщении одновременно выполнять различные этапы независимых DH-согласований для последовательных ключей. При этом новый общий секрет, абсолютно не зависящий от предыдущего, будет получен после каждого входящего сообщения. На сколько это впишется в модель невозможности восстановить последовательность подписей в случае полной коллекции всех выхлопов DH изначально злонамеренным собеседником, я пока не могу осознать, т.к. это только не более чем наброски.
Тем более, я никогда подобным не занимался и ничуть не претендую на гуру в криптографии: просто в свободное время хочется размяться, и ни меня, ни других это ни к чему не обяжет. Так что пока не обдумаю хотя-бы до уровня приличия, добавить к comment71009 нечего.
Наверное, есть что добавить к comment71041.
Почему бы для оффлайн-общения не использовать специально написанные и поднятые на HS onion-сервера с протоколом TorChat? Идея в том, что их абоненты, имея onion-email вида: own_onion_address@server_onion_address
при офлайне получателя с помощью обычного торчат-клиента смогут отправлять сообщение на свой сервер, указав onion-email получателя. Задача сервера: передать сообщение на сервер получателя (или хранить некоторое время, если недоступен). Задача сервера-получателя – сбросить сообщение получателю при его первом подключении (или хранить некоторое время). Аутентификацию можно обеспечить в самом сообщение, это уже другой вопрос.
Это просто как пример возможностей HS-инфраструктуры к вопросу, почему же такой потенциал так скудно используется на фоне такого внимания к Jabber etc.
Под jabber есть стандартные программы, клиенты, интерфейсы. Под TorChat есть один-единственный гуйный клиент, написанный нарками:
Не получится ровно по той же причине, что и для jabber'а:
На инфраструктуру скрытых сервисов почти никакие стандартные интернет-протоколы не переносятся. Чтобы их можно было перенести туда, надо перетащить на них весь антианонимный трэшак типа DNS-серверов, соответствующих стандартов и прочего. Есть редкие исключения (вроде IRC заставить работать можно).
У OTR в таких случаях происходит рассогласование сессии и сообщения молча "глотаются", пока кто-нибудь вручную не перезапустит. Это ужасно выбешивает, хочется разъебать лицо тому кто этот OTR придумал. Если ваш протокол в таких условиях работает неправильно, он будет доставлять проблемы, учтите это.
комментариев: 9796 документов: 488 редакций: 5664
Затем, в девяностые, стали проектировать системы с PFS. Для онлайна и реалтайма — понятное дело DH. А для оффлайна (почты?). Думаете вы первый? Нет, тоже первым делом всплывала идея реализовать DH по шагам в оффлайновом режиме. Почему от неё опять отказались?
Почему с начала 2000-х оффлайновое PFS посчитали сложной проблемой и стали разрабатывать для него более сложные протоколы?
Вообще, всегда трудно найти информацию о том, почему какое-то направление признали бесперспективным или почему оно упорно не взлетает, хотя есть и исследования и востребованность.
У меня только какие-то смутные догадки, но полного понимания картины нет. Подозреваю, что команда OpenPGP перерыла теоретическую часть по этому вопросу более десяти лет назад и возможно пришла к каким-то скептическим выводам не на пустом месте, отказавшись развивать стандарт PFS для переписки.
комментариев: 393 документов: 4 редакций: 0
Подразумевалось использование протокола TorChat в качестве анонимного транспорта, а внутри – PGP, OTR и т.п. протоколы. Транспортный XMPP тут не вписывается никак. Другое дело, что нет клиентов/плагинов, и я уже интересовался, почему. И получил ответ, но остался при своем мнении. Написать клиент – неделя для нормального программиста при наличии конкретного ТЗ.
Я и не собирался разделять, рассматриваю все сообщения как оффлайновые (модель переписки с использованием электронной почты). Но разделяю исходящие на "Answer" (ответ на входящее, шифруется новым ключем, полученным на основе DH-материала во входящем) и "Repost" (последующие исходящие, шифруются хешем от прошлого ключа, включают KEYID, указывающий, сколько раз уже проведено хеширование ключа). Это окно ключей, которое завершается тот час после получения нового входящего.
Как раз и хочу сделать восстановление (выход из окна ключей и возврат к PFS) автоматически и при этом безопасно. Пока вообще не уверен, что это получится. Возможно, это и есть основная проблема.
Есть вопрос, возможно, тупой, но мне хотелось лишний раз удостоверится:
Алиса посылает Бобу неподписанное PGP-сообщение (естественно, зашифрованное публичным ключем Боба), состоящее из двух слов X и Y. Ева перехватывает сообщение. Ей не известно содержание сообщения, но известна его структура (длина слов, их офсеты). Может ли она заменить X на нужное ей Z, оставив Y неизменным, и переслать Бобу сообщение Z+Y?
Другими словами, обеспечивает ли PGP целостность неподписанного сообщения?
А какая разница, если Ева может создать любое соощение для Боба с нуля?
Может, если правильно угадает Y. По самому сообщению угадать его содержимое невозможно (разве что по размеру, но он переменный даже для одинакового plaintext'а), так что остаются только внешние методы типа социнженерии.
комментариев: 11558 документов: 1036 редакций: 4118
Да, см. RFC4880, 5.14, Modification Detection Code (MDC).
комментариев: 393 документов: 4 редакций: 0
ОК, тогда идем дальше.
Предположим, что Алиса и Боб имеют предварительно согласованный общий секрет Y, известный только им двоим. Алиса пишет Бобу сообщение X+Y, где X – определенный текст. Боб получает сообщение, видит Y и уверен, что X тоже написано Алисой.
Но доказать это третьей стороне он не может, т.к. ему тоже известно Y, и он мог отправить это сообщение для себя сам.
Это верно?
(Это начало протокола, обеспечивающее отрицаемость. Извините, что по кусочкам мысль выкладываю, просто хочу, чтобы вовремя остановили, когда Остапа понесет)
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 9796 документов: 488 редакций: 5664
Голый хэш вместо HMAC? Поначалу удивляет, но дальше всё разъясняется.
А проблема (не)отрицаемости давно была известна разработчикам.
Короче, gegel, спасибо за свежий взгляд, а SATtv'e за напоминание. Вы кажется нашли элементарное и готовое решение, которое лежало рядом, а все здесь присутствующие его в упор не замечали:
Любая из сторон при таком шифровании может подделывать сообщения от другой стороны.
Отрицаемость в OpenPGP, оказывается, давно уже есть из коробки! Нет только PFS.
Т.е., как и в обычном OTR по шагам протокола нельзя отрицать факт связи A с B, но можно отрицать содержимое написанного, обвиняя противоположную сторону в подделке разглашённой переписки.