2011-08-10 11 views
8

Necesito proteger mi tráfico UDP. Por lo que yo entiendo, el protocolo DTLS es la mejor manera de hacerlo. Hay otro, IPsec, pero no parece aplicable para mí porque no es fácil de usar y hay posibles problemas de hardware.¿Asegurar UDP - OpenSSL o GnuTls o ...?

He encontrado que hay algunas bibliotecas que tienen DTLS implementado. Entonces, ¿estoy tratando de elegir - OpenSSL o GnuTls? ¿Podría decirme qué es mejor usar? ¿Cuáles son los inconvenientes o ventajas? ¿O puede haber otra biblioteca con soporte DTLS implementado?

Gracias.

+0

¿A qué plataforma/lenguaje/herramienta de desarrollo se dirige? –

+0

@Eugene Mayevski Ahora estoy usando C/GCC/Linux, tal vez Windows más tarde. – Rom098

+1

muchos tipos en openldap tienen problemas con gnutls, y sugieren usar openssl. Puede consultar este enlace http://www.openldap.org/lists/openldap-technical/201202/msg00379.html para obtener más información – HVNSweeting

Respuesta

11

he encontrado los siguientes hechos acerca de las bibliotecas y DTLS.

  1. Hay otra lib con soporte DTLS - CyaSSL, pero solo admite DTLS en modo de prueba por el momento.

  2. Aunque RFC 4347 data de abril de 2006, OpenSSL admite DTLS desde 2005 (v0.9.8). Muchas distribuciones de Linux incluyen esta versión. La API de OpenSSL se ve fea un poco, pero parece que la implementación de DTLS es estable.

  3. GnuTls admite DTLS desde 2011 (v3.0.0). Parece que Linux aún no incluye esta versión. (Por ejemplo, Ubuntu 11.04 usa v2.8.6, Ubuntu 11.10 va a usar v2.10.5, no v3.0.0.) No hay información sobre cuándo se usará v3.0. Puede construirse manualmente, sin embargo depende de demasiadas bibliotecas adicionales que pueden no tener soporte nativo en algunas distribuciones.

  4. Parece que todas estas bibliotecas se pueden utilizar en otras plataformas (por ejemplo, Windows).

  5. Problema conocido de OpenSSL: OpenSSL tiene la compresión habilitada por defecto para DTLS, pero no debería ser. La API OpenSSL v0.9.8 no proporciona ningún método para deshabilitar la compresión. El método debe implementarse manualmente.

RESUMEN:

Hablando sobre usabilidad, personalmente yo preferiría API GnuTLS, pero a la vez se ve más preferible usar OpenSSL.

+1

No olvide verificar las licencias y asegúrese de estar utilizando una que tenga una licencia que funcione para usted. – jtchitty

5

IPsec es el más antiguo y, por lo tanto, el más compatible y estable, pero requiere tareas del administrador del sistema y puede ser todo un reto para los principiantes. DTLS aborda el problema desde el lado de la aplicación, que el programador puede simplificar e integrar significativamente con entornos existentes con menos cambios.

La elección entre OpenSSL y GnuTLS casi siempre se debe a una licencia.

licencia de OpenSSL incluye una cláusula de publicidad:

3. Todo el material publicitario que mencione funciones o usos de este software * debe mostrar el siguiente reconocimiento: * "Este producto incluye software desarrollado por OpenSSL Project * para uso en el kit de herramientas de OpenSSL (http://www.openssl.org/)"

GnuTLS de Wikipedia:.

GnuTLS se creó inicialmente para permitir que las aplicaciones del proyecto GNU utilizaran protocolos seguros como TLS. Aunque OpenSSL ya existía, la licencia de OpenSSL no es compatible con la GPL; [4] por lo tanto, el software bajo la GPL, como el software GNU, no podría usar OpenSSL sin haciendo una excepción de enlace GPL.

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

+0

Gracias por la respuesta. ¿Conoces algún problema con el cumplimiento de RFC 4347, la compatibilidad de la plataforma o errores específicos? – Rom098