Кабинентный протокол
Существуют ли протоколы и криптосистемы "кабинетной" работы?
Что я имею в виду. К примеру есть группа лиц, которые общаются в конференции в шифрованном чате. Каждый имеет свою ЭЦП и имеет доступ к конференции, т.е. может читать подписанные сообщения всех ее участников. Доступ к конференции посторонних лиц невозможен по причине того, что конференция как уже сказано шифрована. Иначе говоря моделируется ситуация работы группы лиц в закрытом кабинете.
Как это может быть практически? У каждго есть общий ключ шифрования, но ключ подписания у каждого свой. Соответственно у всех участников конференции должен быть открытый ключ каждого участника для сверки ЭЦП. Т.е. каждый участник такого чата имеет 2 ключа (подписания и общий расшифрования), а так же открытые ключи всех участников кабинета.
В общем интересно конечно чисто теоретически.
У тебя все еще батхерт по поводу петросяна? Это к проктологу.
Не очень понимаю схему работы, хорошо бы по пунктикам, а не в одну кучу.
Диффи-Хеллман есть асимметричный криптоалгоритм, одним ключом шифруем – другим расшифровываем.
Полегчало?
комментариев: 9796 документов: 488 редакций: 5664
Это-то да.
А вот это совсем не так по отношению к DH.
Предыдущее объяснение протокола касалось самой ранней версии. Сейчас там наворотили протокол "социалистических миллионеров" для согласования аутентификации.
Описание протокола по ссылке выше.
комментариев: 9796 документов: 488 редакций: 5664
Когда все аутентификационные параметры раскрыты, другая сторона (и даже прослушивающая, если я правильно понял), могут подделывать сообщения, которыми якобы обменивались A и B. Есть аутентификация (но только в момент сеанса связи) и отрицаемость (после завершения сеанса — в отличие от электронной подписи).
комментариев: 9796 документов: 488 редакций: 5664
Именно. А симметричным ключом вторая сторона уже с момента его вычисления иожет заверять любые тексты. Публикация текста третьей стороне вместе с этим ключом и обрывками DH-параметров ничего не доказывает.
Это никак не позволит доказать подпись на сообщениях, так как подписываются не они, а параметры сеанса, а затем происходит отвязка на свойстве симметричной аутентификации: каждый, кто знает симметричный MAC-код аутентификации может подделывать любое сообщение. Плюс сам код совместно выработан сторонами. Нельзя доказать, что он исходил от кого-то конкретно из них.
Они там при каждом сообщении кажется сбрасываются. И вообще, даже их публикация в открытую роли не играет. Вторая сторона с момента согласования кодов может подделывать текст. А если передаст третьей стороне — то сможет и третья, доказательности нет.
Протокол несколько раз менялся, есть некоторая путаница с описанием. Например в текущей версии предполагается начать связи с неаутентифицированного DH, проверить подлинность параметров внутри шифрованного туннеля, с помощью MAC отвязаться от подписей и начать передачу сообщений.
Может слайды по старой версии OTR облегчат понимание?
По крайней мере путём комбинирования DH и MAC такой протокол в разных вариантах возможен.
Подделавать то может, но вот по каналу связи с первой стороной передаются то не эти, а настоящие сообщения, и если эти шифрованные переговоры записываются "оппонентом" в реальном времени (и с отметками реального времени), то как выдать поддельные вместо них?
А потом это ведь как подделать надо, чтобы следователь (а на западе – судья) поверил...
OTR (да и вообще любое шифрование) не защищает от атаки вида "время всех сообщений записано, логи получены с такого-то компьютера и суд их считает достоверными, время получения сообщений адресатом соответствует времени прохождения сообщений через ISP и jabber-сервер". Подробней обсуждалось тут:/comment39243 и/comment31218
Вот ещё полезная информация:
Из параграфа "Мгновенные сообщения".
Стоит обратить внимание на /comment19934 и /comment19953.
комментариев: 9796 документов: 488 редакций: 5664
Что такое MAC? Это криптостойкая псевдослучайная функция ( PRF ) с симметричным ключом. Если в конкурсе SHA-3 победит идеальный хэш, то MAC ( M, k ) = SHA3-hash ( M || [длина сообщения] || k ) — условно как-то так. Сейчас из-за неидеальности хэшей пока используется более громоздкая конструкция из двух разных хэшей с промежуточными константами и ключом — HMAC. Для простоты понимания её можно представить в том же виде: как если бы к сообщению прибавили секретный ключ и просто посчитали хэш.
Теперь смотрим OTR-протокол (честно скажу, весь его пока не осилить, из-за различий в версиях и непонятках, как там функционирует прикрученный протокол "соцмиллионера"). Ну посмотрим упрощённо, исходя из общего понимания.
Стороны согласовались по неаутентифицированному DH (в новой версии вроде так). Т.е. A передала gx mod (P), B передал gy mod (P). P и g — публичные, фиксированные, одинаковые для всех в системе OTR параметры, чтобы образовывать нужную группу по Диффи-Хеллману; x и y — случайные секретные числа, генерируемые каждой стороной и выбрасываемые после сеанса. Стороны посчитали ( gx )y mod (P) = ( gy )x mod (P) = k, получили совместный параметр k, схэшировали его для надёжности (будем конечный результат согласования называть ключом k). Прослушивающая сторона не знает ни x, ни y, а только gx mod (P) и gy mod (P), полной информации для возведения в степень у неё нет. Поэтому придётся или заниматься мучительным и безуспешным вычислением дискретных логарифмов или делать подмену, атаку человека посредине (MITM).
Стороны уже имеют канал, шифрованный ключом k, но не уверены в подлинности установленной связи и отсутствии подмены данных (MITM). Внутри этого канала они могут подписать PGP-ключами свои параметры gx mod (P) и gy mod (P), чтобы проверить, что MITM не было. Доказывает это что-то? Да, факт того, что между ними был сеанс связи. Доказывает ли что-то метка времени на этих параметрах (если одна из сторон попытается передавать их для "доказательной" записи разговора)? Да, факт того, что сеанс между A и B был до того момента времени, когда его подали на проштамповку времени. А могли подать и с задержкой.
Далее, из ключа k обе стороны периодически вычисляют новые ключи для MAC. Даже если их не публиковать (что даёт только дополнительную защиту), то любая из сторон может далее придумать любой разговор, вычисляя из диалога с самим собой или Васей Пупкиным (в роли подставного собеседника) MAC, также легко, как можно посчитать хэш от любых данных. Даже простановка точных меток времени на сообщения ничего не доказывает — они могут быть исправлеными, выдуманными, фиктивными — обе стороны знают MAC-ключ и могут подделывать сообщения друг друга. Раскрытие MAC в заголовках после каждого сообщения и вычисление нового MAC — дополнительная, но не решающая мера. Просто для облегчения возможности подделки.
Сам OTR-протокол несколько сложнее и вероятно там учтены и более тонкие моменты. Чтобы даже публикация разговора с метками времени параметров ничего не доказывала.
Например, можно производить согласование по вопросам, не привязываясь к OpenPGP ключам:
комментариев: 9796 документов: 488 редакций: 5664
комментариев: 9796 документов: 488 редакций: 5664
А если OTR + Torchat? Анонимная среда (логи бессмысленны), ключей нет (соцмиллионер). Собственно протокол соцмиллионера предназначен для аутентификации без использования OpenPGP. Обе стороны могут сравнить текущий совместно выработанный симметричный ключ сеанса, "склеенный" с ответом на вопрос — в отсутствии MITM и знании ответа это значение должно совпасть, но не раскрыться прослушивающей стороне при неудачных попытках.