Шифрование трафика в Direct Connect, ч.2
— Ты кто???
— Я новый русский.
— А я тогда кто?!
Предисловие
В первой части статьи мы обустраивали ADCs хаб и рассуждали о Direct Connect в целом.
Сегодня нам предстоит научиться использовать такой хаб по прямому назначению. Для этого мы рассмотрим совместимые DC клиенты, поговорим об их особенностях и подружимся с TLS.
В настройках каждого из них нужно будет обратить внимание на раздел Encryption, он же Security & certificates или Безопасность.
Излишне упоминать, что при использовании активного режима TCP порт для TLS также должен быть проброшен.
AirDC++
Наследник легендарного fulDC++, самого первого мода оригинального клиента. Продвинут, нагляден и адекватен.
Настройки AirDC++ для работы на ADCs хабе
Ключ и сертификат генерируются при первом запуске клиента (или по требованию) и валидны 360 дней.
Заметьте, при соединении клиентов друг с другом TLS вообще-то можно использовать и на обычном ADC хабе, но, правда, с непредсказуемым результатом (см. первую часть статьи).
А что для клиента есть hub with trusted certificate?
Как показали тесты, даже если скормить хабу настоящий, подписанный центром авторизации сертификат (да хотя бы от Let’s Encrypt), для клиента он доверенным не будет.
[S] = Secure, [U] = Untrusted
Критерием доверия к ADCs хабу является совпадение самостоятельно полученного клиентом отпечатка сертификата c явно указанным в адресе хаба.
*** Connecting to adcs://babylon.aab21pro.org:412/? kp=SHA256/1QTHF6U3SDQPQKCTCG3ZYK4LQS322MIXI64GMAX7PXLGKYCYTJOQ…
*** TLS error: Keyprint mismatch
*** The keyprint in the address doesn’t match the server certificate, use /allow to proceed with untrusted connection
Трогательно, но бесполезно, поскольку keyprint не будет вечно одним и тем же;, а значит, для массового использования он не годится.
Кто для клиента есть user with trusted certificate?
Если все клиентские сертификаты по умолчанию самоподписанные, а удостоверить валидность нельзя… Загадка!
Что такое direct encrypted private message channels?
DC++, AirDC++ и, внезапно, SharikDC умеют отправлять личные сообщения друг другу по защищённому каналу, минуя хаб. Привет, Телеграм!…
DC++
Оригинальный NMDC/ADC клиент, самый непритязательный. Впрочем, его разработчики немало внимания уделяют безопасности.
Настройки DC++ для работы на ADCs хабе
ApexDC++
Настройки ApexDC++ для работы на ADCs хабе
Работает не вполне внятно. На момент написания статьи добиться с его помощью соединений только по зашифрованному каналу не представляется возможным — проскакивают обычные (например, с FlylinkDC++).
Так или иначе, это лучший вариант для «горячей» замены напрочь устаревшего StrongDC++.
FlylinkDC++
Самый строгий и самый неадекватный. Да и перевод опций выполнен не вполне корректно.
Настройки FlylinkDC++ для работы на ADCs хабе
Строгий, потому что требует от всех и вся подписанных сертификатов, которые всё равно не может проверить. Неадекватный, потому что по умолчанию полностью игнорирует безопасные соединения и разрешает обычные.
EiskaltDC++
По всей видимости, этот клиент основан на чересчур старом ядре DC++ и, хотя он может присоединиться к ADCs хабу, работа через TLS для него проблематична.
AirDC++ vs. EiskaltDC++
Эпилог
В случае успешной установки соединения с использованием TLS (например, при скачивании файллиста) колонка Cipher или Шифр в окошке передач будет заполнена (в AirDC++ иначе, см. ниже)
Как видите, не без шероховатостей, но TLS в DC имеет место быть и работает; есть и планы по дальнейшей разработке этой темы. Кстати! Десятого февраля сего года в 19:00 CET на офхабе DCNF состоится первая в этом году онлайн-встреча участников DC сообщества; будет публичное обсуждение одной новой идеи… Интересно? Тогда заходите на огонёк!