что jimichi не защищает
инструменту, который скрывает часть метаданных, легко доверять больше, чем он заслуживает. вот его границы, прямо.
- глобальный наблюдатель
- модель не покрывает нарушителя, который видит все каналы сразу.
- скомпрометированное устройство
- если ваш телефон или компьютер захвачен, jimichi не поможет. атаки по сторонним каналам на него тоже вне модели.
- root на машине с узлом
- заблокированная память защищает от выгрузки, а не от привилегированного чтения. против root на машине с узлом меры уровня процесса не работают.
- моменты соединений
- каждая цепочка открывает и закрывает свои tcp-соединения по всей цепочке. эти моменты совпадают и видны глобальному наблюдателю; атака в работе их не измеряет.
- принуждение
- отрицаемый контейнер даёт легенду, а не иммунитет против требования выдать пароль.
где кончаются результаты.
стенд
- узлы это контейнеры на одной машине. сетевые задержки и разнесённость операторов моделируются, а не воспроизводятся.
- атака корреляции работает там, где известна истинная разметка потоков. оценки переносятся на реальную сеть с осторожностью.
- датасет синтетический: фоновый трафик генерируется, а не снят с реальных пользователей.
- замер задержки требует часов точнее миллисекунды, поэтому прогоны с задержкой идут в linux, а не на хосте windows.
криптография и память
- реализация гост не является сертифицированным скзи. алгоритмы те же и проверены контрольными примерами из стандартов, но класс защиты не заявляется.
- библиотеки держат свои копии ключей на куче go, рабочий ключ aead живёт там всю жизнь цепочки. secmem защищает только собственные буферы.
- слои цепочки не обладают прямой секретностью против соседа: ключ узла живёт до его перезапуска. запись с провода без эфемерных ключей каналов не читается.
- формат ячейки даёт постоянный размер и защиту от повтора, но это не полный sphinx: позицию узла в цепочке больше ничто не скрывает.
тайминг
- отправка по своим часам требует, чтобы период узла был на несколько процентов короче клиентского; стенд берёт 5%. при равных периодах пропущенный тик уже не наверстать.
- канал закрыт, только если меру включил узел, который по нему шлёт. клиент не может проверить, что его узлы это делают.
- служебная ячейка установки цепочки уходит сразу, не по часам узла, и отмечает начало цепочки на каждом канале.
- без отправки по своим часам ответ выхода уходит после доставки, и время доставки у настоящего получателя стало бы заметным.
отрицаемость
- она ломается окружением, а не криптографией: журналы файловой системы, теневые копии, временные метки, wear-leveling и trim на ssd оставляют следы записи.
- наблюдатель с несколькими снимками контейнера во времени видит изменения там, где по легенде ничего не происходило. против него свойство не заявляется.