¿Qué formas existen de verificar un protocolo de auto-escritura?

23

Antes de que todos se pongan a gritar: "NUNCA HAGAS TU PROPIO CRIPTO", técnicamente (todavía estoy a mitad de camino), pero aparte de eso, estoy haciendo un protocolo tipo TLS, pero mucho más ligero.

Necesitaba asegurar la comunicación entre varios sistemas integrados con muy poca RAM / ROM y potencia del procesador (bueno, tiene 100 MHz, pero gran parte de ella está en uso constante y no puede interrumpirse).

Lo que voy a hacer es usar AES-128 con GCM (o CBC + HMAC) para asegurar la comunicación entre los dispositivos. Algunos dispositivos solo pueden usar GCM, otros usan CBC + HMAC, así que (aún trabajando en ello) tengo que hacer una estructura similar a TLS para acordar cuál usar (el dispositivo se comunica a través de un servidor, no de igual a igual, por lo que solo 1 de los 2 no es un problema; el servidor solo necesita los dos).

He estado investigando mucho estos últimos meses (2 1/2), y me gustaría decir que he cubierto lo básico. Ahora estoy empezando con la implementación de todo lo que he encontrado (uso de claves, IV, nonces, cifrado, luego MAC, etc.).

Ahora viene la pregunta: cuando termine, quiero verificar el código que creé. Obviamente, el escrutinio de nivel profundo por el que TLS ha pasado no será alcanzable, pero ¿qué formas hay? ¿Hay sitios donde puedo publicar mi código para revisión? ¿Hay empresas que puedan 'certificarlo'? ¿Qué ocurriría normalmente cuando una empresa creara una comunicación segura y desea verificar si protege contra las cosas que imaginaron?

Y sí, sé que no estoy usando una PKI. El hardware está en un entorno seguro, y no se pueden agregar nuevos dispositivos al servidor (el servidor mantiene una lista de dispositivos que pueden conectarse y monitorear si alguna vez se desconecta), por lo que la compañía dijo que PKI podría ser algo que considerarían más adelante, pero para una primera versión no sería necesario.

EDITAR: Quiero aclarar (estoy retirando unas pocas palabras). Usaré TLS para crear este protocolo, y la cantidad de usos de TLS aún no está clara. Cuando sea posible, simplemente trataré de eliminar todo lo que no necesito de TLS y lo crearé de esa manera, podría tomar partes de él (cifrar-luego-mac, agregar IV al texto cifrado, etc.) y usarlo.

Pero de cualquier manera, no es TLS e incluso solo eliminar elementos del código fuente de TLS podría presentar puntos débiles, por lo que aún es necesaria una 'auditoría'.

    
pregunta Vincent 20.04.2015 - 11:36
fuente

3 respuestas

5

Definir una especificación

Si está escribiendo / desarrollando un nuevo protocolo antes de cortar el código, debe comenzar escribiendo una especificación como una Solicitud de comentarios (RFC).

Incluso si nunca pretende publicar su protocolo, el proceso es la parte importante. El RFC sería la base de cualquier evaluación que desee realizar en el futuro.

Además de cómo funciona el protocolo, querría describir las razones por las que está desarrollando un nuevo protocolo / suite y por qué alguien debería implementar su protocolo.

Validación

Para validar su especificación, podría considerar una combinación de:

  • organizaciones de investigación de seguridad, por ejemplo, SANS
  • Universidades
  • Comunidad de seguridad a través de los trabajos de investigación de publicación
  • Evaluación de riesgos de terceros
  

Tenga en cuenta que desarrollar un protocolo robusto lleva tiempo, y es probable que necesite una versión, así que haga provisión para esto. Como ha mencionado, SSL / TLS se han sometido a muchas revisiones y se han versionado varias veces.

Implementación

Después de haber definido una especificación que ha recibido una revisión, deberá desarrollar una implementación de referencia que pueda ser una revisión completa del código y luego una prueba de concentración.

Para la revisión del código, estaría buscando un asesor con habilidades de seguridad especializadas en el lenguaje de programación que está utilizando y un fondo en pruebas de penetración. Estarán evaluando su código contra la especificación.

Para las pruebas de concentración, querrá encontrar un asesor que tenga la capacidad de desarrollar sus propias herramientas de prueba personalizadas y que tenga certificaciones reconocidas como ISO 27001 y Certified Ethical Hacker (CEH).

Otros puntos

  • Obviamente, antes de cometer un gasto tan grande en tiempo y dinero, debería considerar si realmente vale la pena para la vida útil potencial del sistema que está desarrollando.

  • Como han dicho otros, usar una implementación de protocolo existente generalmente cuesta menos y reduce los riesgos de seguridad.

  • Si bien tiene una capacidad informática limitada, puede haber otras formas de solucionar esto (en lugar de implementar una nueva pila de seguridad). ¿Realmente necesita privacidad de mensajes (en un entorno seguro controlado) o solo verificación de integridad de mensajes? O puede simplemente cifrar / descifrar el sobre.

De todos modos espero que ayude.

    
respondido por el Bernie White 22.04.2015 - 01:58
fuente
16

Hay compañías de seguridad de TI que brindan servicios como auditoría de código (la mayoría de las veces, junto con otros servicios como pruebas de penetración, etc.). Usted se comunica con ellos, describiendo sus necesidades y luego, si esto corresponde a sus competencias, le enviarán un presupuesto.

    
respondido por el WhiteWinterWolf 20.04.2015 - 11:46
fuente
2

Según el idioma y el entorno:

US DHS y un SWAMP de host de terceros (mercado de garantía de software). Debe solicitar acceso y membresía, pero vale la pena investigarlo.

SWAMP

    
respondido por el user67862 20.04.2015 - 18:37
fuente

Lea otras preguntas en las etiquetas