id: Гость   вход   регистрация
текущее время 06:06 20/04/2024
Владелец: unknown (создано 29/11/2013 14:24), редакция от 29/11/2013 21:12 (автор: unknown) Печать
Категории: криптография, симметричное шифрование, распределение ключей, управление ключами
http://www.pgpru.com/Новости/2013/ОдноразовыйБлокнотНаОптическихНосителяхНеклонируемыхФункций
создать
просмотр
редакции
ссылки

29.11 // Одноразовый блокнот на оптических носителях неклонируемых функций


Классическим способом достижения абсолютной стойкости в криптографии является т.н. одноразовый блокнот. Это система связи, основанная на использовании абсолютно случайных (полученных из некоторого физически случайного процесса), неповторяющихся ключей, равных по длине открытым данным. Поскольку ключи не должны повторяться, то после использования они уничтожаются, что придаёт системе свойство PFS (Perfect Forward Secrecy) — наперёд заданной секретности, невозможности прочесть данные, переданные до момента компрометации системы противником.


Классический одноразовый блокнот рассмотрен на рис. 1a:


1a. Классический одноразовый блокнот. (17 Кб)


Рис. 1а. Классический одноразовый блокнот.


У обеих сторон есть копия одноразового ключа OTPk, которую они используют в качестве одноразовой гаммы. Эту гамму они объединяют с открытым текстом посредством операции XOR для шифрования или с шифртекстом — для расшифрования.


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


В последнее время наметился интерес исследователей в направлении неклонируемых физических функций — т.н. PUF (Physical Unclonable Function). Наиболее перспективными считаются оптические PUF. Это объект из оптически прозрачного материала с множеством неоднородностей (частиц, пузырьков, фазовых областей, центров кристаллизации, включений примесей), которые образуются в процессе его создания непредсказуемым образом. Сделать точную копию такого объекта невозможно. Если на него подать определённым образом сформированный лазерный луч, в котором закодирована некоторая цифровая последовательность, то можно получить определённый ответ, из которого также можно извлечь определённую цифровую последовательность. Если использовать коды коррекции ошибок и криптографическое отбеливание (извлечение случайности из ответа путём т.н. «отбеливателей» или экстракторов случайности), то можно для одинаковых входных данных получать одинаковые случайные данные на выходе, что является физическим аналогом детерминированной случайной функции. При этом такая функция не может быть ни склонирована, ни (в идеальном случае) смоделирована математическим путём (неподвержена алгоритмическому взлому).


Естественным ограничением PUF является количество возможных уникальных запросов-ответов, ограничивающих её ёмкость по возможности извлечения случайности. Изначально ёмкость была небольшой, поэтому PUF рассматривались лишь как аутентифицирующие токены. Однако, исследователи Roarke Horstmeyer, Benjamin Judkewitz, Sid Assawaworrarit, Changhuei Yang (кафедра электротехники и биоинженерии калифорнийского технологического институтута, Пасадена, США) и Ivo Vellekoop (группа биомедицинской фотонной визуализации, институт биомедицинских технологий и технической медицины MIRA университета Твенте, Энсхедэ, Нидерланды) смогли применить оптические PUF с высокой плотностью извлечения случайности: 10 гигабит / 2мм2 в текущем эксперименте и 1 терабит / мм2 в перспективе.


На первый взгляд, PUF мало интересны в качестве носителей одноразовых блокнотов именно по причине неклонируемости. Сторона A может полностью оцифровать свой PUF, а затем попытаться как-то через тайник, доверенного курьера или ещё каким-то способом передать стороне B, которая также его оцифрует. Этот сценарий показан на рис. 1b.


1b. Передача одноразового блокнота через оптический носитель неклонируемых функций. (50 Кб)


Рис. 1b. Передача одноразового блокнота через оптический носитель неклонируемых функций.


В таком сценарии PUF — не более чем удобный носитель для передачи одноразового блокнота, который можно спрятать или опечатать. Кроме того, полная оцифровка PUF занимает много времени (не менее суток) и не может быть ускорена по физическим ограничениям, что даёт противнику малое окно времени для копирования.


Более интересным представляется случай, когда стороны имеют разные PUF, которые также имеют все преимущества неклонируемого неэлектронного носителя, но при этом их не требовалось бы передавать, зато иметь возможность постоянно хранить секрет только в них. Такой сценарий может быть реализован на практике, в чём и заключается новизна работы. Сторонам A и B достаточно встретиться один раз в безопасном месте (или однократно организовать канал безопасной связи, например — квантовый) и совместно оцифровать свои PUF. Объединив результаты оцифровки операцией XOR они получат согласованный одноразовый массив AB, который можно записать на электронный носитель информации. Этот массив не является секретным — он может быть расположен на общедоступном сервере. После совместного создания такого массива стороны расходятся на исходные пункты связи и весь их секрет сохраняется в PUF. Теперь эти PUF становятся согласованными для связи (Communication PUF — CPUF).


Общий вид такой схемы показан на рис. 1c.


1с. Согласованный одноразовый блокнот через два разных носителя неклонируемых функций. (55 Кб)


Рис. 1с. Согласованный одноразовый блокнот через два разных носителя неклонируемых функций.


Подробности реализации и работы с оптическими CPUF показаны на рис. 2. Они включают кодирование входных данных в параметры микрофокусировки лазера, считывание данных на фотосенсорную матрицу, обработку функцией отбеливания W для получения ключей.


2. Извлечение цифровых данных из оптического носителя неклонируемых функций. (151 Кб)


Рис. 2. Извлечение цифровых данных из оптического носителя неклонируемых функций.


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


3а. Схема согласования двух разных носителей неклонируемых функций. (60 Кб)


Рис. 3а. Схема согласования двух разных носителей неклонируемых функций.


На рис. 3bc более подробно показан сеанс связи на CPUF.


3bc. Шифрование-расшифрование с использованием согласованных носителей неклонируемых функций. (72 Кб)


Рис. 3bc. Шифрование-расшифрование с использованием согласованных носителей неклонируемых функций.


Результат экспериментальной передачи данных показан на рис 4.


4. Экспериментальная передача данных в канале из согласованных носителей неклонируемых функций. (165 Кб)


Рис. 4. Экспериментальная передача данных в канале из согласованных носителей неклонируемых функций.


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


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


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


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


Источник: arXiv.org, Physics > Optics.


 
На страницу: 1, 2, 3, 4 След.
Комментарии [скрыть комментарии/форму]
— Гость (08/12/2013 07:51)   <#>

Тогда PFS получается в смысле операционной безопасности:

от корреспондента требуется не просто следование коммуникационному протоколу, а полное соблюдение операционной безопасности. В зависимости от модели угрозы (а она у Вас, насколько понимаю, очень жёсткая), схема PFS с PGP-ключами получается очень хрупкой, она не выдерживает случайный fuck up со стороны корреспондента или его системы.

Обычные протоколы за это критикуют, а тут то же самое получается.


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


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


См. оговорку выше.


Кто сказал, что то, что получается из PUF, действительно случайно? Если мы не можем вот так сразу взять и предсказать вывод PUF, это ещё не значит, что биты, полученные при оцифровке, являются i.i.d.


Да хоть терабайт. Вопрос не в том, сколько данных вам удалось извлечь, а в том, как показать, что эти данные действительно случайны.


Смысл схемы прозрачен: двойное шифрование одноразовым блокнотом.


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


Интересная интерпретация.


Более, чем для двух сторон, тут, похоже, можно сделать только разделение секрета. Например, шифрование сообщения для всех членов группы (у каждого члена свой PUF), наверное, так сделать можно(?).


Подборка ссылок на старые обсуждения по этой теме есть здесь.
— Гость (08/12/2013 07:58)   <#>

Шифрование коммуникаций потребует ещё аутентификации, согласования использумой гаммы, исправления ошибок, восстановления канала при сбоях во время передачи и т.д. Если всё вместе собрать в один флакон, то получится уже не всё так просто. С дисковым шифрованием проще, но кто-то тоже может захотеть иметь встроенную коррекцию ошибок, заголовки-идентификаторы для криптоконтейнеров, а также прочие атрибуты удобства и защиты от сбоев.
— unknown (08/12/2013 23:23)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Должны ли стороны предварительно оцифровать свой PUF, прежде чем начать его использовать? Если да, то оцифровку требуется где-то хранить, т.е. схема сводится к обычному одноразовому блокноту и ничем его не лучше.

Первый раз они должны оцифровать свой PUF полностью совместно — в защищённом помещении или по квантовому каналу. Но результат этих оцифровок ксорится и результат совместного XOR секретом не является. Его можно хранить открыто. Далее, весь смысл в том, чтобы пользоваться только PUF, не храня никаких секретных офифровок.

Это некая попытка в плане безопасности вернуться к физическому носителю — его можно убрать в сейф, запечатать в картридж, что-то вроде аналога физического ключа или толстой бумажной книги. Если до них физически добраться — их можно скопировать, но это долго и нудно, это будет замечено при условиях охраны и всяких старорежимных мер, наподобие «сдал — принял, дата, время, печать, подпись (неэлектронная)». И раньше могли шпионы и инсайдеры скопировать что-то, пощёлкав фотокамерой, но это медленно. А сейчас некто, наподобие Сноудена или Мэннинга, может массово стащить огромные количества документов — скорее защита против этого.

Ну и плюс — миниатюрность носителя (но не считывателя) — можно передавать через тайники другой стороне, как это было с микроплёнкой. В работе этот момент не упомянут, но в принципе миниатюрный PUF м.б. запечатан и замаскирован подо что-то обычное.

С критикой по поводу неуничтожимости гаммы можно согласиться — это принципиально неустранимое слабое место.

По поводу неслучайности и собственно неклонируемости — вопрос оценок и расчётов, если будут развивать это направление.

Более, чем для двух сторон, тут, похоже, можно сделать только разделение секрета. Например, шифрование сообщения для всех членов группы (у каждого члена свой PUF), наверное, так сделать можно(?).

Это эквивалентно согласованию «каждый с каждым» с соответствующим ростом накладных расходов.

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

Совершенно верно. И очень фатально к ошибкам, в отличие от более распространённого крипто. Одноразовый блокнот был хорош во времена, когда он исполнялся вручную на бумаге. Сейчас его возрождают, пытаясь привязать к специфическим физическим процессам, каналам или носителям. В обычных уязвимых компьютерных сетях он непрактичен.
— Гость (08/12/2013 23:47)   <#>

Смысл ясен. Так или иначе, но предъявляется требование на физическую безопасность оконечных точек. Т.е. это совсем не подходит обычным пользователям, раз они не могут исключить «маски-шоу».
— unknown (09/12/2013 11:07, исправлен 09/12/2013 11:57)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Есть сырые мысли, как можно улучшить CPUF в плане уничтожимости использованной гаммы и операционной безопасности.


Исходим из того, что все оценки и расчёты в плане зависимости энтропийной ёмкости, экстракции энтропии и кодов коррекции по шифрованию сделаны верно. Тогда «если PUF идеален, то при правильном соблюдении протокола обеспечиваемое им шифрование — информационно-теоретически стойкое». Эту часть пока закрываем.


Оценку стойкости по неклонируемости тоже пока полностью выносим за рамки текущего рассмотрения.


Тогда, основная идея такова: если всё идёт правильно, то мы остаёмся в рамках инф.-теор. безопасности; если PUF скомпрометирован (будем считать, что это менее вероятно, чем с обычным легко копируемым ключом), то срабатывает переключение на вычислительно-стойкую безопасность.


Для этого стороны заранее должны сгенерировать обычный короткий симметричный ключ (256 бит) — у каждой стороны свой: KA и KB. Этим ключом следует инициализировать вычислительно-стойкую псевдослучайную функцию (PRF) как генератор гаммы. Но это должен быть не простой PRF-генератор (об этом подробнее дальше).


Тогда, при совместной встрече, стороны создают совместный массив из оцифровки PUF, и гаммы PRF-генератора: (PUFA ⊕ PRFA) ⊕ (PUFB ⊕ PRFB). С точки зрения математики скобки не имеют смысла — ведь порядок операций не имеет значения. Но порядок операций имеет значение с точки зрения безопасности протокола: стороны не должны раскрывать друг другу свои гаммы (не говоря уже о стартовых ключах).


Самая суть в том, какой использовать PRF-генератор. Лучше всего подходит Duplex-Sponge шифрование на основе Keccak-подобных алгоритмов.


После совместной оцифровки стороны сохраняют стартовые ключи KA и KB, а вот в процессе шифрования происходит уничтожение этих ключей и промежуточных параметров для достижения PFS.


Сначала сторона A инициализирует Sponge-генератор ключом KA в фазе абсорбции, сразу уничтожая ключ KA, затем с каждого блока отжатия половину гаммы отдаёт на выход, а половину подаёт на блок следующего блока абсорбции в качестве временного ключа. В процессе шифрования A вырабатывает гамму из такой PRF и ксорит с оцифровкой своей PUF. В конце сеанса сторона сохраняет внутреннее состояние Sponge и текущий ключ — эти два параметра являются секретом для продолжения гаммы в последующих сеансах. Если противник захватит текущее состояние и текущий ключ, то он вычислительно не сможет узнать предыдущие состояния: это потребует инвертирования хэш-функции, что невозможно в рамках вычислительной модели, т.к. все временные ключи уничтожаются. Сторона B также проводит шифрование со своим стартовым ключом KB.


При согласовании гамма вырабатывалась также, только там ничего не уничтожалось, гамма генерировалась целиком и эти тонкости не были важны в первоначальном описании.


Т.о., стороны используют симметричное шифрование в режиме PRF, не зная симметричного ключа друг друга — их ключи (точнее, просчитанные из них гаммы) также согласованы в общий массив, как и данные оцифровки PUF. Если одна из сторон будет скомпрометирована, это не повлияет на другую. Если данные вычислительной гаммы подавать на ксор с PUF до кодов коррекции ошибок, то можно выявить и ошибку синхронизации гаммы ещё до её отправки в канал связи: коды проверки ошибок покажут слишком большое расхождение и система должна будет аварийно завершить работу. Т.е. это будет страховка от повторного использования гаммы.


Получается, что если PUF и их устройства считывания сделать ёмкими и миниатюрными, то можно эти качества сохранить, прикрутив поверх вычислительно-стойкую безопасность для PRF и устойчивости к сбоям.

— Гость (12/12/2013 01:41)   <#>

Есть сырые мысли, как можно разломать ваш протокол и показать, что PFS в нём нет. Допустим, Алиса шифрует DATA, PUFA похитило АНБ, и АНБ предположительно знает, какие DATA посылала Алиса (шифрование должно быть стойким к known plaintext attack). Шифрование:
EncTEXT = DATA ⊕ (PUFA ⊕ PRFA) ⊕ PUBXOR, (1)
где
PUBXOR = (PUFA ⊕ PRFA) ⊕ (PUFB ⊕ PRFB)

PUBXOR хранится где-то в третьем месте, не охраняется, и известен атакующему. EncTEXT ему тоже известен, раз он прослушивает канал. PUFA, как сказано выше, ему известен, потому что украден. DATA тоже предположительно известны. Следовательно, ему известна левая часть уравнения (1) и все члены правой части (1) кроме PRFA, поэтому PRFA вычисляется элементарно. Далее атакующий сравнивает концовку гаммы PRFA с тем текущим PRF-ключом (секретом), который на момент атаки использовала Алиса. Если секрет совпадает, то АНБ доказывает, что DATA, которые отправляла в канал Алиса, именно те самые, которые АНБ и предполагало. Кто из нас сырей, unknown, я или вы?

Сама идея такой схемы понятна, на слуху и имеет разные вариации. Например, PUFы можно вообще убрать, если не нужна IT-безопасность. Если если ещё дополнительно положить KA = KB, то можно получить идентичные гаммы у обоих адресатов. Ксоря данные с такой гаммой, можно использовать PRF как потоковый шифр, если я правильно понимаю.


Может, туплю, но вот этот пассаж совсем не понял. Как вы собираетесь вычленять ошибку по результатам DATA ⊕ PUFA ⊕ PRFA ⊕ PUBXOR?
— unknown (12/12/2013 10:03, исправлен 12/12/2013 11:20)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
шифрование должно быть стойким к known plaintext attack

Так оно остаётся стойким, несмотря на то, что вами правильно указано.


Далее атакующий сравнивает концовку гаммы PRFA с тем текущим PRF-ключом (секретом), который на момент атаки использовала Алиса. Если секрет совпадает, то АНБ доказывает, что DATA, которые отправляла в канал Алиса, именно те самые, которые АНБ и предполагало.

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


Вычислительно нельзя инвертировать PRF-гамму влево, т.к. использованные вычислительные ключи для каждого блока перетираются. Если известно сообщение, которое было в прошлом сеансе, то нельзя доказать, что было отправлено именно оно, т.к. неизвестен ни стартовый ключ, ни промежуточные — только выход половины гаммы. Нечто похожее реализовано в /dev/urandom через цепочку неинвертируемых хэшей (пока всё ещё md5).


Т.е.: зная гамму PRFA, по ней нельзя восстановить внутреннее состояние предыдущих блоков и промежуточных ключей, которые используются для перехода от блока к блоку.


Режим должен быть реализован похожим на Sponge шифрование, как на этом рисунке, но не совсем:
Рис. 5 Дуплексный режим Sponge (41 Кб)
σ0 — стартовый ключ KA, Z0 — частично идёт на выход гаммы, т.е. только половина Zn идёт на выход (как блок для шифрования ксором для PRFA), а вторая половина отделяется в σ1 и поступает на вход следующего блока в качестве временного ключа. Все предыдущие σ уничтожаются. В конце сеанса остаётся только последний σ и внутреннее состояние. В чистом виде, да можно вообще инвертировать всю цепочку обратно. Значит, надо ещё продумать как переходы σ0 → σ1 → … → σn сделать неинвертируемыми, т.к. простое половинное деление гаммы не подойдёт: надо сжимать большее в меньшее.


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


Может, туплю, но вот этот пассаж совсем не понял. Как вы собираетесь вычленять ошибку по результатам DATA ⊕ PUFAPRFA ⊕ PUBXOR?

Здесь скорее я точно прогнал: надо где-то хранить массив MAC для блоков PUFAPRFA и сверяться с ним перед отправкой, что конечно, непрактично.


Сама идея такой схемы понятна, на слуху и имеет разные вариации. Например, PUFы можно вообще убрать, если не нужна IT-безопасность. Если если ещё дополнительно положить KA = KB, то можно получить идентичные гаммы у обоих адресатов. Ксоря данные с такой гаммой, можно использовать PRF как потоковый шифр, если я правильно понимаю.

Это да, если нужно PFS и непредсказуемость использованной гаммы влево, то при использовании соответствующих PRF это и достигается.

— Гость (13/12/2013 03:42)   <#>

Этот случай тривиален. Интереснее возможность доказать, что мы правильно угадали открытый текст, который был использован до взлома, если нам доступны все параметры на последнем шаге (ну, или за несколько последних шагов).


А мы не будем её инвертировать.


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

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

Давайте абстрагируемся от метода выработки гаммы. Она откуда-то взялась и она есть. Данные можно считать шифрующимися одноразовым блокнотом, так? Тогда EncTEXT = DATAГАММА. Вы не будете возражать, что если DATA полностью угаданы, а EncTEXT известен, то ГАММА известна тоже? Надеюсь, не будете, тогда идём дальше и замечаем, что часть ГАММА на шаге n+1 связана с ГАММА на шаге n через промежуточный ключ σn. В момент n мы провели атаку и получили σn. Теперь замечаем:

  1. Если DATA угаданы правильно, то и ГАММА угадана правильно. Если DATA угадана неверно, то и ГАММА угадана неверно.
  2. Если ГАММА угадана верно (см. п. 1), то и концовка (её значение на шаге n) угадана верно.
  3. Зная концовку ГАММА, мы можем определить, какую σn она должна дать. Если ГАММА угадана, угадана и σn.
  4. Проверяем значение σn, полученное вышеописанным способом, с тем σn, которое мы получили во время атаки. Если они совпали, мы доказываем, что DATA были именно теми (см. п. 1), какими предполагались. Т.е. мы смогли «расшифровать» влево, угадав DATA.

Теперь понятно? Возможно, я был не очень аккуратен с индексами (где должен быть n, где n+1, а где n-1), но это уже не так принципиально. Также целесообразно считать, что атакующий получит σ не только за последний шаг, а за последние k шагов sponge-конструкции, вмешавшись в работающую систему и отключив стирание промежуточных ключей.

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

В общем, идея простая, объясняется в рамках чёрных ящиков. Из-за чего она не работает, по-вашему? Где моя ошибка?
— unknown (13/12/2013 10:15, исправлен 13/12/2013 15:35)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Здесь моя самонадеянность в том, что я только привёл губку, наиболее похожую под схему. Потому что готовый рисунок уже есть на сайте. И попытался словами объяснить, что в нём надо перерисовать.


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


Получается даже не Duplex-Sponge, а её расширение — Parazoa. Пока не могу найти слайды с понятными картинками, где наглядно показано, что это такое.


Причины таковы:


Блок гаммы PRFA_nZA_n ≠ σA_n+1. Только часть Zn идёт на выход из губки и формирует PRFA. Допустим, только треть Zn идёт на выход и формирует блок PRFA_n, а другие две трети делятся пополам, ксорятся между собой и формируют σn+1. Нужна ли такая перестраховка? Также как и заполнение последнего блока в сеансе рэндомом? Допустим, только половина Zn идёт на выход и формирует блок PRFA_n, а другая половина формирует σn+1, который поступает на вход следующего дуплекса.


Т.е. зная последний блок PRFA_n, противник не сможет посчитать PRFA_n-1, не сможет восстановить промежуточные ключи и внутренние состояния, он вообще связи между блоками (без вычислительного взлома) установить не сможет.


Да, по вашей идее, что абсолютно верно замечено, противник знает PRFA_n-1 из перехвата и знания открытого текста, но этого недостаточного для вычисления перехода PRFA_n-1PRFA_n


Отсюда следует, что ваш п.3 неверен.


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

Угадав открытый текст и восстановив по нему гамму (т.к. лишь часть её выходит наружу в виде PRFA, а часть используется в выработке временных ключей σ и изменении внутреннего состояния), нельзя угадать промежуточные ключи. Нужно подбирать именно такую конструкцию PRF. Об этом я подумал изначально, хотя не очень внятно изложил, решив, что это и так само собой разумеется.


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


P.S. Важное дополнение насчёт последнего σn.

В конце сеанса пользователю A надо сохранить полное значение внутреннего состояния f последнего дуплекса, который идёт после всех использованных; и полный выход Zn, который идёт после него в этом дуплексе. Это, чтобы можно было продолжить последующие сеансы. Но надо уничтожить не только все предыдущие f и σ, но и последний σn из последнего дуплекса, который (т.е. сам дуплекс) ещё даже не использован.

Пусть противник перехватит x предыдущих блоков и знает их открытый текст.


Даже если противник захватит последний, неиспользованный в передаче Zn и f, из которых вырабатываются последующие σn+y, f и Zn+y, то не зная σn, он не только не может инвертироваться до предыдущих блоков, но и не сможет, зная предыдущие блоки гаммы PRFA, вычислить текущий Zn или проверить гипотезу об угадывании открытого текста, т.к. на формирование гаммы PRFA уходят только фрагменты Zn-x, как описано выше в тексте. Полностью восстановить Zn-x по перехваченной гамме PRFA_n-x вычислительно невозможно, также как и проверить все переходы между блоками к моменту уничтожения всех σ. Ни влево, ни вправо.
— Гость (22/12/2013 10:32)   <#>

Если идти от сохи и пользоваться разумными преположениями, то нужно принять на веру, что схема, которую вы предлагаете, не является сверхестественной, т.е. она не может черпать свои параметры напрямую из только ей доступного астрала. Все используемые функции детерминистичны (иначе Боб не сможет расшифровать результат), так? Значит, зная все входы функций, можно узнать и их выход. Это пока не криптография, а тупо логика тупо и математика.

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

Пусть противник перехватит x предыдущих блоков и знает их открытый текст.

требует апгрейда в виде «противник знает всё: и внутренние состояния всех блоков, и открытый текст, и гамму, и всё то, что поидее должно бы уничтожаться и забываться».


В вами приведённой pdf'ке на второй стр. есть сноска

Parazoa is the name of the subkingdom of animals to which the sponges belong [29].

Если потом погуглить, то находятся и fileслайды с картинками и статьи с объяснениями для нубов. В вики тоже есть немного на эту тему. Как я понял, все ныне существующие конструкции-паразои — губки, паразоев-негубок не существует, что в целом подтверждает мои опасения: как ни наворачивай конструкцию, всё равно она будет сводится к обычной губке (Duplex-Sponge?).


Звучит, как взаимоисключаюшие параграфы. Имеется в виду, что он его захватил и знает, но не может его вычислить сторонним методом, чтобы проверить гипотезу? Кстати, что такое Zn? Как называется эта переменная?


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

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

P.S. В общем, в целом, почему схема шифрования с такими заявленными свойствами в принципе может существовать, мне ясно, а как это организовывается технически, мне всё равно дёшево не понять (но это уже не так важно).
— unknown (22/12/2013 16:04)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Просто обычно определение PFS Perfect Forward Secrecy даётся только для асимметрики с подкачкой новой энтропии и обменом параметрами в каждом сеансе.

Если убрать слово "perfect", то можно представить forward security (secrecy) и без подкачки новой энтропии, обмена параметрами и только на основе симметрики, как разновидность вычислительной безопасности. Причём та, которая "perfect", она тоже вычислительная, хотя "perfect" обычно зарезервировано за инф.-теор. стойкими схемами. Путаница в терминологии (отсутствие чётких конвенциональных определений для всех случаев) ведёт к путанице в понятиях.

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

требует апгрейда в виде «противник знает всё: и внутренние состояния всех блоков, и открытый текст, и гамму, и всё то, что поидее должно бы уничтожаться и забываться».


В общем случае, это нарушает определение любого типа PFS: если противник захватил систему, то он может читать все последующие проходящие через неё данные, но не предыдущие (до момента взлома). Если он сделал это незаметно, тем хуже для пользователей с этого момента. Но данные до захвата по определению должны оставаться безопасными. Для их чтения, при знании всех захваченных параметров, противник всё равно должен совершить некий вычислительный взлом.


Вы всё правильно поняли и сами на свой вопрос практически ответили. Просто до SHA-2 хэши нельзя было использовать напрямую для замены RO и приходилось городить из них протоколы. Например, потоковый шифр из хэша делать не рекомендовалось, типа Hash (счётчик || ключ) — потому что хэши были кривыми. С Keccak уже можно и так. Кроме того в Sponge можно запихать почти весь протокол, наподобие описанного вами.
— SATtva (22/12/2013 17:18)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Просто до SHA-2 хэши нельзя было использовать напрямую для замены RO

s/SHA-2/SHA-3/ ?
— unknown (22/12/2013 17:33)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Правильный фикс!
— Гость (29/12/2013 14:58)   <#>

Если верить ссылке на вики, то FS — это один ключ на всю сессию, а PFS — на каждое сообщение внутри сессии свой ключ. И там же оговорка:

This is not to be confused with the concept of perfect secrecy demonstrated by one-time pads, where the ciphertext reveals no information whatsoever and appears completely random.

По ссылке на IT-безопасность это полнее раскрыто:

An interesting special case is perfect security: an encryption algorithm is perfectly secure if a ciphertext produced using it provides no information about the plaintext without knowledge of the key.

It is common for a cryptosystem to leak some information but nevertheless maintain its security properties even against an adversary that has unlimited computational resources. Such a cryptosystem would have information theoretic but not perfect security.

В общем, я тоже не вижу прямой связи между «perfect security» и «perfect forward secrecy».

По ссылке на PFS в конце:

A patient attacker can capture a conversation whose confidentiality is protected through the use of public-key cryptography and wait until the underlying cipher is broken (e.g. large quantum computers could be created which allow the discrete logarithm problem to be computed quickly). This would allow the recovery of old plaintexts even in a system employing forward secrecy.

Возникает вопрос: разве это правда? Мне всегда казалось, что взлом, например, DH в OTR даст атакующему только возможность устроить MITM, но не получить сессионные ключи. Соответственно, отложенный взлом асимметрики никак не поможет взломать протокол. Странно ожидать иной картины для PFS, которая на этом основана.

Кстати, это правда, что в OTR именно PFS, а не FS? Там на каждое новое сообщение действительно генерится новый симметричный ключ?


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

В общем, я хотел подчеркнуть, что схема должна быть безопасной назад не только если атакующему полностью известен текущий блок, но и если ему известны текущий + последующие блоки (хотя это полутривиально). Просто из-за того, что изначально я думал, что завязка на знание открытого текста играет важную роль (а это не так), такое уточнение могло бы быть важным, т.к. атакующий мог бы полностью увидеть все детали работы алгоритма на всех известных параметрах (включая плейнтекст) на плейнтексте некоторой существенной длины (а не только одного блока). Это могло бы лучше подтверждать гипотезу, что ранее использовавшийся плейнтекст (до атаки на линию) именно тот самый. Понятно, что сейчас такие мысли — уже неактуальная бредятина. Но это я так, исторической точности ради.
— unknown (29/12/2013 20:09, исправлен 29/12/2013 20:13)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Возникает вопрос: разве это правда? Мне всегда казалось, что взлом, например, DH в OTR даст атакующему только возможность устроить MITM, но не получить сессионные ключи. Соответственно, отложенный взлом асимметрики никак не поможет взломать протокол. Странно ожидать иной картины для PFS, которая на этом основана.

Может. Можете поискать по сайту. Когда в Debian была дыра в ГПСЧ для OpenSSL, я поправил Роджера Дингдайна в вопросе о том, что если все три узла в сети Tor имеют такой генератор, то противник сможет расшифровать сессии создания общего ключа по DH и расшифровать весь ранее записанный трафик, послав лесом PFS. Роджер тогда согласился где-то в рассылке. В новость он вроде исправления не вносил, но позднее, в последующих упоминаниях этого случая торпроджектом было подробнее посчитана вероятность образования такой цепочки (доли процента), хотя за пару лет таких цепочек у пользователя могло и накопиться некоторое заметное количество.


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

На страницу: 1, 2, 3, 4 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3