5 сентября 2011 г.

Выбор реализации DTLS

Как мне удалось выяснить, использование протокола DTLS для защиты UDP трафика требует минимальных трудозатрат при максимальной эффективности. К тому же еще и является платформонезависимым. В общем, встал вопрос о выборе существующей реализации этого протокола для использования в проекте.

К сожалению, удалось найти только три библиотеки, поддерживающие DTLS, и это при том, что протокол TSL, предназначенный для TCP, поддерживают около десятка некоммерческих библиотек, не говоря уже о коммерческих реализациях. Но как бы там ни было, выбирать приходится из того, что есть.

  1. CyaSSL. С момента появления поддержки DTLS в библиотеке CyaSSL прошло уже два с половиной года, но текущая версия (2.0.0 RC2) поддерживает DTLS всё ещё в экспериментальном режиме, а значит CyaSSL не может быть рассмотрена как постоянное решение для более-менее серьёзных продуктов.
  2. OpenSSL. Несмотря на то, что стандарт DTLS был опубликован в 2006 году, поддержка этого протокола в OpenSSL появилась ещё в версии 0.9.8 (2005 год). Версия 0.9.8 входит во многие дистрибутивы Linux, много раз фиксилась, и по всей видимости является стабильной. Хотя и имеет довольно уродский API.
  3. GnuTLS. Поддерживает DTLS начиная с версии 3.0.0, вышедшей в марте 2011 года. К сожалению, я не нашел дистрибутива Linux, в который была бы включена эта версия GnuTLS. Более того, похоже, что прежде, чем она будет куда-то включена, пройдет немало времени. Например, в последнюю версию Ubuntu (11.04) включена GnuTLS 2.8.6, а в будущей Ubuntu 11.10, будет использоваться GnuTLS 2.10.5. Когда будет поддержка 3.0.0 — неизвестно. Многие скажут, мол, собрать библиотеку из исходников не представляет никаких проблем, но на деле GnuTLS тянет за собой ряд библиотек, для которых также нет нативной поддержки в существующих дистрибутивах Linux, а значит они тоже должны быть собраны самостоятельно со всеми вытекающими. Дело вкуса.

Что касается переносимости, то OpenSSL и CyaSSL поддерживают Win/Linux/Mac, GnuTLS поддерживет Windows и "most Unix platforms", поэтому проблем с переходом на другую платформу быть не должно.

Как это не печально, выбор очевиден (по крайней мере для меня) — OpenSSL является самой стабильной и широко распространенной реализацией DTLS, с использованием этой реализации не должно возникнуть серьёзных проблем. Хотя лично я предпочел бы интерфейс GnuTLS, он какой-то более уютный что ли...

Комментариев нет:

Отправить комментарий