Ich muss meinen UDP-Verkehr sichern. Soweit ich weiß, DTLS-Protokoll ist der beste Weg, es zu tun. Es gibt einen anderen - IPsec - aber es scheint nicht anwendbar für mich, weil es nicht einfach zu bedienen ist und es mögliche Hardwareprobleme gibt.
Ich habe festgestellt, dass es Bibliotheken gibt, in denen DTLS implementiert ist. Also jetzt versuche ich zu wählen - OpenSSL oder GnuTls? Können Sie mir bitte sagen, was ist besser zu benutzen? Was sind Nachteile oder Vorteile? Oder vielleicht gibt es eine andere Bibliothek mit DTLS-Unterstützung implementiert?
Danke.
Ich habe die folgenden Fakten über die Bibliotheken und DTLS gefunden.
Es gibt eine weitere Lib mit DTLS-Unterstützung - CyaSSL, aber DTLS wird nur im Testmodus unterstützt.
Obwohl RFC 4347 vom April 2006 stammt, unterstützt OpenSSL DTLS seit 2005 (v0.9.8). Viele Linux-Distributionen enthalten diese Version. OpenSSL-API sieht ein wenig hässlich aus, aber es scheint, dass DTLS-Implementierung stabil ist.
GnuTls unterstützt DTLS seit 2011 (v3.0.0). Sieht so aus, als ob diese Version noch kein Linux enthält. (Ubuntu 11.04 verwendet zum Beispiel v2.8.6, Ubuntu 11.10 verwendet v2.10.5, nicht v3.0.0.) Es gibt keine Informationen darüber, wann v3.0 verwendet wird. Es kann manuell erstellt werden, es hängt jedoch von zu vielen zusätzlichen Bibliotheken ab, die in einigen Distributionen keine systemeigene Unterstützung haben.
Es sieht so aus, als könnten alle diese Bibliotheken auf anderen Plattformen (z. B. Windows) verwendet werden.
Bekanntes OpenSSL-Problem: OpenSSL hat die Komprimierung standardmäßig für DTLS aktiviert, sollte dies aber nicht sein. OpenSSL v0.9.8 API bietet keine Methode zum Deaktivieren der Komprimierung. Die Methode sollte manuell implementiert werden.
ZUSAMMENFASSUNG:
Wenn ich über Usability spreche, würde ich persönlich die GnuTls-API bevorzugen, aber zu der Zeit scheint OpenSSL besser zu sein.
IPsec ist das älteste und daher kompatibelste und stabilste, erfordert aber Tasks vom sysadmin und kann für Anfänger sehr schwierig sein. DTLS löst das Problem von der Anwendungsseite, die der Programmierer erheblich vereinfachen und in bestehende Umgebungen mit weniger Änderungen integrieren kann.
Die Wahl zwischen OpenSSL und GnuTLS ist fast immer auf eine Lizenz zurückzuführen.
OpenSSL-Lizenz enthält eine Werbeklausel:
3. Alle Werbematerialien erwähnen Eigenschaften oder Verwendung dieser * Die Software muss folgende Bestätigung anzeigen: * "Dies Das Produkt enthält Software, die vom OpenSSL-Projekt * für entwickelt wurde Verwendung im OpenSSL Toolkit. ( Ссылка ) "
GnuTLS aus Wikipedia:
GnuTLS wurde ursprünglich erstellt, um Anwendungen des GNU-Projekts zu ermöglichen sichere Protokolle wie TLS verwenden. Obwohl OpenSSL bereits existiert, Die OpenSSL-Lizenz ist nicht mit der GPL kompatibel, also Software unter der GPL, wie GNU-Software, konnte OpenSSL nicht ohne verwenden eine GPL-Verknüpfungsausnahme machen.