Защита UDP-OpenSSL или GnuTls или ...?

Мне нужно защитить трафик UDP. Насколько я понимаю, протокол DTLS-лучший способ сделать это. Есть еще один-IPsec-но он выглядит неприменимым для меня, потому что он не прост в использовании и возможны проблемы с оборудованием.

Я обнаружил, что есть некоторые библиотеки, в которых реализованы DTLS. Итак, теперь я пытаюсь выбрать-OpenSSL или GnuTls? Не могли бы вы посоветовать мне, что лучше использовать? Какие недостатки или преимущества? Или может быть есть другой библиотека с поддержкой DTLS реализована?

спасибо.

2 ответов


Я нашел следующие факты о библиотеках и DTLS.

  1. есть еще один lib с поддержкой DTLS-CyaSSL, но пока он поддерживает DTLS только в тестовом режиме.

  2. хотя RFC 4347 датируется апрелем 2006 года, OpenSSL поддерживает DTLS с 2005 года (v0.9.8). Многие дистрибутивы Linux включают эту версию. OpenSSL API выглядит немного уродливо, но кажется, что реализация DTLS стабильна.

  3. GnuTls поддерживает DTLS с 2011 года (v3.0.0). Похоже, что Linux еще не включает эту версию. (Например, Ubuntu 11.04 использует v2.8.6, Ubuntu 11.10 будет использовать v2.10.5, не v3.0.0.) Нет информации о том, когда v3.Будет использоваться 0. Он может быть построен вручную, однако это зависит от слишком многих дополнительных библиотек, которые могут не иметь собственной поддержки в некоторых дистрибутивах.

  4. похоже, что все эти библиотеки можно использовать на других платформах (например, Windows).

  5. известно OpenSSL проблема: OpenSSL имеет сжатие включено по умолчанию для DTLS, но это не должно быть. OpenSSL v0.9.8 API не предоставляет никакого метода для отключения сжатия. Метод должен быть реализован вручную.

резюме:

говоря о юзабилити, лично я предпочел бы gnutls API, но в то время OpenSSL выглядит более предпочтительным для использования.


IPsec является самым старым и, следовательно, наиболее совместимым и стабильным, но требует задач от sysadmin и может быть довольно сложным для новичков. DTLS решает проблему со стороны приложения, которое программист может значительно упростить и интегрировать с существующими средами с меньшими изменениями.

выбор между OpenSSL и GnuTLS почти всегда из-за лицензии.

лицензия OpenSSL включает рекламную статью:

3. Все рекламные материалы, упоминающие особенности или применение этих * программное обеспечение должно отображать следующее подтверждение: * " это продукт включает программное обеспечение, разработанное проектом OpenSSL * для использования в инструментарии OpenSSL. (http://www.openssl.org/)"

GnuTLS из Википедии:

GnuTLS был первоначально создан, чтобы разрешить приложения проекта GNU для использования защищенных протоколов, таких как TLS. Хотя OpenSSL уже существовал, Лицензия OpenSSL несовместима с GPL; [4] таким образом, программное обеспечение в рамках GPL, таких как программное обеспечение GNU, нельзя использовать OpenSSL без создание исключения связывания GPL.

http://en.wikipedia.org/wiki/GnuTLS