PGPfone / Zfone


Оглавление документа:

[b]После установления соединения с абонентом появляется маленький список из четырёх слов. Что это такое? [/b]

Этот набор случайных слов называется отпечатком сеансового ключа и служит той же цели, что и отпечаток открытого ключа в PGP – для предотвращения атаки "человек в середине". Для аутентификации абонентов PGPfone/Zfone используют биометрическую подпись – попросту, голос. После установления связи вы должны громко и отчётливо прочитать друг другу эти слова и убедиться, что ваши списки идентичны (убедитесь также, что слышите голос человека, которому звонили). В противном случае велика вероятность, что некто пытается прослушать разговор.

[b]Установив программу я обнаружил, что в ней не используются ключи PGP. Каким тогда образом шифруется канал связи? [/b]

Непосредственно коммуникационный трафик шифруется симметричным сеансовым ключом, как это делает и PGP для шифрования сообщений. Остаётся лишь одна проблема: как согласовать этот симметричный ключ по незащищённому каналу без риска, что он будет перехвачен? Для разрешения этой задачи применяется алгоритм Диффи-Хеллмана и протокол распределения секретного ключа по открытому каналу. Не приводя его математическую сторону (если интересуетесь, загляните в 22 главу "Прикладной криптографии" Брюса Шнайера), можно сказать, что ни один злоумышленник, прослушивающий канал, не сумеет определить сеансовый ключ – он просто не получит для этого никакой информации.

Алгоритм Диффи-Хеллмана уязвим к атакам "человек в середине", поэтому в порядке контрмеры используется биометрическая подпись и отпечаток сеансового ключа для проверки его идентичности у обоих абонентов: смотрите ответ на предыдущий вопрос.

Все секретные показатели асимметричного ключа согласования Диффи-Хеллмана также являются сеансовыми, т.е. используются только единожды и генерируются случайным образом для каждого звонка. Обеспечиваемое этим фактом свойство называется Perfect Forward Secrecy: благодаря ему даже записав шифрованный трафик для последующего дешифрования взломщик не сумеет позднее получить от абонентов ключ, поскольку тот используется лишь для одного сеанса и тут же стирается.

[b]А если мне не знаком голос абонента, как я узнаю, что он, а не противник, читает мне отпечаток сеансового ключа? [/b]

Есть простой способ убедиться в аутентичности абонента, даже если никогда прежде с ним не общались. Вы можете воспользоваться стандартными средствами PGP, чтобы предварительно согласовать некую кодовую фразу и отзыв к ней (это могут быть просто две последовательности цифр или осмысленный пароль-отзыв, как в шпионских фильмах), которые должны будете произнести друг другу после прочтения биометрических слов отпечатка. Для этой цели вам понадобятся достоверные копии открытых ключей друг друга; воспользуйтесь одним из приведённых здесь[link1] способов безопасного обмена ключами. Затем придумайте, подпишите + зашифруйте и обменяйтесь по почте кодовыми словами, по которым сможете безошибочно опознать друг друга в ходе первого разговора.

[b]Я хочу использовать PGPfone для звонков через Сеть. Какие порты мне открыть на брандмауэре?[/b]

Для соединений через интернет PGPfone использует протокол UDP и входящие/исходящие порты 7448, 7449 и 17447. Обратите внимание, что из-за специфики UDP-соединений работать с PGPfone через Сеть, находясь за NAT, невозможно. Если же ваш компьютер расположен за прокси-сервером, установите на нём переадресацию трафика на указанные порты (port forwarding).


Ссылки
[link1] https://www.pgpru.com/faq/kriptografija#q2