В рамките на проекта (Tinfoil Chat) е предвиден опит за създаване на прототип на параноидно защитена система за обмен на съобщения, която да запази тайна на кореспонденцията дори при компрометация на крайни устройства. За опростяване на одита кода на проекта е написан на езика Python и под лицензия GPLv3.
Разпространените в момента системи за обмен на съобщения, използващи крайно криптиране, позволяват да се защити кореспонденцията от прихващане на междинни сървъри и от анализ на транзитния трафик, но не защитават от проблеми на страната на клиентското устройство. За компрометиране на системи, базирани на крайно криптиране, е достатъчно да се компрометира операционната система, фърмуера или приложението за съобщения на крайното устройство, например, чрез експлоатация на преди неизвестни уязвимости, чрез първоначално внедряване на софтуерни или хардуерни бекдори или чрез доставка на фалшиво обновление с бекдор (например, при оказване на натиск върху разработчика от специални служби или криминални групи). Дори ако ключовете за криптиране се намират на отделен токен, при наличието на контрол върху системата на потребителя винаги остава възможността за проследяване на процесите, прихващане на данни от клавиатурата и наблюдение на извода на екрана.
TFC предлага софтуерно-апаратен комплекс, който изисква използването на три отделни компютъра от страна на клиента и специален хардуерен сплитер. Целият трафик в процеса на взаимодействие на участниците в обмена на съобщения преминава през анонимната мрежа Tor, а програмите за обмен на съобщения са реализирани под формата на скрити услуги в Tor (потребителите при обмена на съобщения се идентифицират по адресите на скритите услуги и ключовете).
Първият компютър функционира като шлюз за свързване с мрежата и стартиране на скритата услуга Tor. Шлюзът манипулира само вече криптирани данни, а за криптиране и декриптиране се използват двата останали компютъра. Вторият компютър може да се използва само за декодиране и показване на получените съобщения, а третият само за криптиране и изпращане на нови съобщения. Съответно, вторият компютър разполага само с ключовете за декриптиране, а третият само с ключовете за криптиране.
Вторият и третият компютър нямат директна връзка с мрежата и са разделени от компютъра-шлюз чрез специален USB сплитер, използващ принципа „“ и пропускащи данни физически само в една посока. Сплитерът допуска само изпращане на данни към втория компютър и само получаване на данни от третия компютър. Посоката на данните в сплитера е ограничена с помощта на (простото прекъсване на линията Tx и Rx в кабела не е достатъчно, тъй като прекъсването не изключва предаването на данни в обратната посока и не гарантира, че линията Tx няма да бъде използвана за четене, а Rx за предаване). Сплитерът може да бъде сглобен от налични части, () и са налични под лицензия GNU FDL 1.3.
При подобна схема компрометиране на шлюза достъп до ключовете за шифроване и няма да предостави възможност за продължаване на атаката срещу останалите устройства. В случай на компрометиране на компютъра, на който са разположени ключовете за декрипция, информацията от него не може да бъде предадена на външния свят, тъй като потокът от данни е ограничен само до получаване на информация, а обратното предаване е блокирано от диода на данни.
Шифроването е извършено на базата на 256-битови ключове на XChaCha20-Poly1305, за защита на ключовете с парола се използва бавна хеш функция . За обмен на ключове се използва (протоколът Дифи – Хелман на базата на Curve448) или PSK ключове (). Всяко съобщение се предава в режим на пълна пряка секретност (PFS, ) на базата на хешове Blake2b, при което компрометирането на един от дългосрочните ключове не позволява декриптиране на предишно прихванат сесия. Интерфейсът на приложението е изключително прост и включва прозорец, разделен на три области – изпращане, получаване и команден ред с лог на взаимодействието със шлюза. Управлението става чрез специален .
Източник: opennet.ru
