Защита UDP - OpenSSL или GnuTls или ...? - PullRequest
8 голосов
/ 10 августа 2011

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

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

Спасибо.

Ответы [ 2 ]

11 голосов
/ 17 ноября 2011

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

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

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

  3. GnuTls поддерживает DTLS с 2011 года (версия 3.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, но это не должно быть. API OpenSSL v0.9.8 не предоставляет какого-либо метода отключения сжатия. Метод должен быть реализован вручную.

РЕЗЮМЕ:

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

5 голосов
/ 11 августа 2011

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

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

Лицензия OpenSSL включает пункт о рекламе:

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...