Suicide
03.02.2020, 20:03
В рамках проекта TFC (https://github.com/maqp/tfc) (Tinfoil Chat) предпринята попытка создания прототипа параноидально-защищённой системы обмена сообщениями, которая сохраняла бы тайну переписки даже при компрометации конечных устройств. Для упрощения проведения аудита код проекта написан на языке Python и доступен (https://github.com/maqp/tfc) под лицензией GPLv3.
Распространённые ныне системы обмена сообщениями, использующие сквозное шифрование, позволяют защитить переписку от перехвата на промежуточных серверах и от анализа транзитного трафика, но не защищают от проблем на стороне клиентского устройства. Для компрометации систем на базе сквозного шифрования достаточно на конечном устройстве скомпрометировать операционную систему, прошивку или приложение-мессенджер, например, через эксплуатацию ранее неизвестных уязвимостей, через изначальное внедрение в устройство программных или аппаратных закладок или через доставку фиктивного обновления с бэкдором (например, при оказании давления на разработчика спецслужбами или криминальными группами). Даже если ключи для шифрования находятся на отдельном токене, при наличии контроля за системой пользователя всегда остаётся возможность трассировки процессов, перехвата данных от клавиатуры и отслеживания вывода на экран.
TFC предлагает программно-аппаратный комплекс, требующий применения на стороне клиента трёх отдельных компьютеров и специального аппаратного сплиттера. Весь трафик в процессе взаимодействия участников обмена сообщениями передаётся через анонимную сеть Tor, а программы для обмена сообщениями выполнены в форме скрытых сервисов Tor (пользователи при обмене сообщениями идентифицируются по адресам скрытых сервисов и ключам).
https://www.opennet.ru/opennews/pics_base/0_1580723940.png (https://camo.githubusercontent.com/fc12f37e9af2ef375c0c55ddf739e8900de383e2/68747470733a2f2f7777772e63732e68656c73696e6b692e66 692f752f6f6f7474656c612f77696b692f726561646d652f6f 766572766965772e706e67)
Первый компьютер выступает шлюзом для подключения к сети и запуска скрытого сервиса Tor. Шлюз манипулирует только уже зашифрованными данными, а для шифрования и расшифровки используются два остальных компьютера. Второй компьютер может использовать только для расшифровки и отображения полученных сообщений, а третий только для шифрования и отправки новых сообщений. Соответственно, второй компьютер имеет только ключи для расшифровки, а третий только ключи для шифрования.
Второй и третий компьютеры не имеют прямого подключения к сети и отделены от компьютера-шлюза специальным USB-сплиттером, использующим принцип "диод данных (https://en.wikipedia.org/wiki/Unidirectional_network)" и пропускающим данные физически только в одном направлении. Сплиттер допускает только отправку данных в сторону второго компьютера и только приём данных от третьего компьютера. Направление данных в сплиттере ограничивается при помощи оптронов (https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D1%82%D1%80%D0%BE%D0%BD) (простого обрыва линий Tx и Rx в кабеле недостаточно, так как обрыв не исключает передачи данных в обратном направлении и не гарантирует, что линия Tx не будет использована для чтения, а Rx для передачи). Сплиттер можно собрать из подручных деталей, схемы прилагаются (https://github.com/maqp/tfc/wiki/TTL-Data-Diode-(breadboard)) (PCB (https://github.com/maqp/tfc/wiki/TTL-Data-Diode-(PCB))) и доступны под лицензией GNU FDL 1.3.
https://www.opennet.ru/opennews/pics_base/0_1580723913.png (https://camo.githubusercontent.com/be91382229596f4ae22250ed86091265e80ff6d7/68747470733a2f2f7777772e63732e68656c73696e6b692e66 692f752f6f6f7474656c612f77696b692f726561646d652f64 6174615f64696f64652e6a7067)
При подобной схеме компрометация шлюза не позволит (https://github.com/maqp/tfc/wiki/Security-design) получить доступ к ключам шифрования и не даст возможность продолжить атаку на оставшиеся устройства. В случае компрометации компьютера, на котором размещены ключи для расшифровки, информацию с него не получится передать во внешний мир, так как поток данных ограничен только получением информации, а обратную передачу блокирует диод данных.
https://www.opennet.ru/opennews/pics_base/0_1580726891.png (https://camo.githubusercontent.com/6f05945bc2ef889b1ba74d0e5dc282a00a14aa49/68747470733a2f2f7777772e63732e68656c73696e6b692e66 692f752f6f6f7474656c612f77696b692f7365637572697479 5f64657369676e2f385f73706c69745f746362322e706e67)
Шифрование выполнено на базе 256-разрядных ключей на XChaCha20-Poly1305, для защиты ключей паролем применяется медленная хеш-функция Argon2id (https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf). Для обмена ключами применяется X448 (https://eprint.iacr.org/2015/625.pdf) (протокол Диффи — Хеллмана на базе Curve448) или PSK-ключи (pre-shared (https://en.wikipedia.org/wiki/Pre-shared_key)). Каждое сообщение передаётся в режиме совершенной прямой секретности (PFS, Perfect Forward Secrecy (https://ru.wikipedia.org/wiki/Perfect_forward_secrecy)) на базе хэшей Blake2b, при котором компрометация одного из долговременных ключей не позволяет расшифровать ранее перехваченный сеанс. Интерфейс приложения предельно прост и включает окно, разбитое на три области - отправка, получение и командная строка с логом взаимодействия со шлюзом. Управление производится через специальный набор команд (https://github.com/maqp/tfc/wiki/Commands).
https://www.opennet.ru/opennews/pics_base/0_1580727616.png (https://camo.githubusercontent.com/0d07bc06ac5321d1f0aec9b3cf147fde8faf9810/68747470733a2f2f63732e68656c73696e6b692e66692f752f 6f6f7474656c612f77696b692f686f775f746f5f7573652f6c 61756e63682f335f312e706e67)
03.02.2020
http://www.opennet.ru/opennews/art.shtml?num=52305
Распространённые ныне системы обмена сообщениями, использующие сквозное шифрование, позволяют защитить переписку от перехвата на промежуточных серверах и от анализа транзитного трафика, но не защищают от проблем на стороне клиентского устройства. Для компрометации систем на базе сквозного шифрования достаточно на конечном устройстве скомпрометировать операционную систему, прошивку или приложение-мессенджер, например, через эксплуатацию ранее неизвестных уязвимостей, через изначальное внедрение в устройство программных или аппаратных закладок или через доставку фиктивного обновления с бэкдором (например, при оказании давления на разработчика спецслужбами или криминальными группами). Даже если ключи для шифрования находятся на отдельном токене, при наличии контроля за системой пользователя всегда остаётся возможность трассировки процессов, перехвата данных от клавиатуры и отслеживания вывода на экран.
TFC предлагает программно-аппаратный комплекс, требующий применения на стороне клиента трёх отдельных компьютеров и специального аппаратного сплиттера. Весь трафик в процессе взаимодействия участников обмена сообщениями передаётся через анонимную сеть Tor, а программы для обмена сообщениями выполнены в форме скрытых сервисов Tor (пользователи при обмене сообщениями идентифицируются по адресам скрытых сервисов и ключам).
https://www.opennet.ru/opennews/pics_base/0_1580723940.png (https://camo.githubusercontent.com/fc12f37e9af2ef375c0c55ddf739e8900de383e2/68747470733a2f2f7777772e63732e68656c73696e6b692e66 692f752f6f6f7474656c612f77696b692f726561646d652f6f 766572766965772e706e67)
Первый компьютер выступает шлюзом для подключения к сети и запуска скрытого сервиса Tor. Шлюз манипулирует только уже зашифрованными данными, а для шифрования и расшифровки используются два остальных компьютера. Второй компьютер может использовать только для расшифровки и отображения полученных сообщений, а третий только для шифрования и отправки новых сообщений. Соответственно, второй компьютер имеет только ключи для расшифровки, а третий только ключи для шифрования.
Второй и третий компьютеры не имеют прямого подключения к сети и отделены от компьютера-шлюза специальным USB-сплиттером, использующим принцип "диод данных (https://en.wikipedia.org/wiki/Unidirectional_network)" и пропускающим данные физически только в одном направлении. Сплиттер допускает только отправку данных в сторону второго компьютера и только приём данных от третьего компьютера. Направление данных в сплиттере ограничивается при помощи оптронов (https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D1%82%D1%80%D0%BE%D0%BD) (простого обрыва линий Tx и Rx в кабеле недостаточно, так как обрыв не исключает передачи данных в обратном направлении и не гарантирует, что линия Tx не будет использована для чтения, а Rx для передачи). Сплиттер можно собрать из подручных деталей, схемы прилагаются (https://github.com/maqp/tfc/wiki/TTL-Data-Diode-(breadboard)) (PCB (https://github.com/maqp/tfc/wiki/TTL-Data-Diode-(PCB))) и доступны под лицензией GNU FDL 1.3.
https://www.opennet.ru/opennews/pics_base/0_1580723913.png (https://camo.githubusercontent.com/be91382229596f4ae22250ed86091265e80ff6d7/68747470733a2f2f7777772e63732e68656c73696e6b692e66 692f752f6f6f7474656c612f77696b692f726561646d652f64 6174615f64696f64652e6a7067)
При подобной схеме компрометация шлюза не позволит (https://github.com/maqp/tfc/wiki/Security-design) получить доступ к ключам шифрования и не даст возможность продолжить атаку на оставшиеся устройства. В случае компрометации компьютера, на котором размещены ключи для расшифровки, информацию с него не получится передать во внешний мир, так как поток данных ограничен только получением информации, а обратную передачу блокирует диод данных.
https://www.opennet.ru/opennews/pics_base/0_1580726891.png (https://camo.githubusercontent.com/6f05945bc2ef889b1ba74d0e5dc282a00a14aa49/68747470733a2f2f7777772e63732e68656c73696e6b692e66 692f752f6f6f7474656c612f77696b692f7365637572697479 5f64657369676e2f385f73706c69745f746362322e706e67)
Шифрование выполнено на базе 256-разрядных ключей на XChaCha20-Poly1305, для защиты ключей паролем применяется медленная хеш-функция Argon2id (https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf). Для обмена ключами применяется X448 (https://eprint.iacr.org/2015/625.pdf) (протокол Диффи — Хеллмана на базе Curve448) или PSK-ключи (pre-shared (https://en.wikipedia.org/wiki/Pre-shared_key)). Каждое сообщение передаётся в режиме совершенной прямой секретности (PFS, Perfect Forward Secrecy (https://ru.wikipedia.org/wiki/Perfect_forward_secrecy)) на базе хэшей Blake2b, при котором компрометация одного из долговременных ключей не позволяет расшифровать ранее перехваченный сеанс. Интерфейс приложения предельно прост и включает окно, разбитое на три области - отправка, получение и командная строка с логом взаимодействия со шлюзом. Управление производится через специальный набор команд (https://github.com/maqp/tfc/wiki/Commands).
https://www.opennet.ru/opennews/pics_base/0_1580727616.png (https://camo.githubusercontent.com/0d07bc06ac5321d1f0aec9b3cf147fde8faf9810/68747470733a2f2f63732e68656c73696e6b692e66692f752f 6f6f7474656c612f77696b692f686f775f746f5f7573652f6c 61756e63682f335f312e706e67)
03.02.2020
http://www.opennet.ru/opennews/art.shtml?num=52305