¿Cómo garantizar que un programa se implementa según su recomendación?

3

Tengo un protocolo de seguridad cuya implementación será realizada por muchos desarrolladores externos (llamémoslos "fabricantes") que a su vez se programarán en el hardware incorporado diseñado por ellos.
Hay algunas pautas obligatorias (por ejemplo, una operación criptográfica particular debe llevarse a cabo utilizando cryptoprocesor pero no utilizando una biblioteca de software) que deben ser seguidas por ellas.

Ahora, ¿hay alguna forma de verificar si han seguido todas las pautas del protocolo y certificar su implementación si tiene acceso a la fuente y al archivo binario de la implementación?

¿Cómo puedo asegurarme de que el fabricante haya programado solo la implementación certificada en todas las muestras de hardware?

Edit 1:
Según mi conocimiento, una solución para la certificación: el código fuente se puede inspeccionar manualmente para verificar el cumplimiento de cada recomendación. Luego, el código fuente y el binario obtenido de él se pueden certificar utilizando la firma de la autoridad certificadora en la suma de comprobación de ambos archivos.
Corríjame si hay algún vacío en este proceso de certificación que pueda ser explotado por un fabricante.

Ahora, si el binario del protocolo implementado se programa por separado, podemos verificar el sistema de archivos y ubicar este binario, calcular su suma de verificación y verificarlo con el binario certificado. Pero si el protocolo se implementa dentro de otra aplicación, entonces no podemos tener esta certificación, en lugar de eso, la aplicación final que incluye la implementación del protocolo tiene que estar certificada. Pero esto puede complicar el proceso de certificación.

    
pregunta mk09 22.05.2017 - 08:53
fuente

2 respuestas

6

No hay una respuesta criptográfica a su pregunta, porque por teorema de Rice sabemos que cualquier no trivial, La propiedad semántica de cualquier programa es indecidible. No puede escribir un programa que pueda decidir si dos programas son funcionalmente equivalentes o seguir alguna de sus pautas.

Lo que realmente necesitas es algún tipo de proceso de certificación, por ejemplo, Criterios comunes . En CC hay diferentes Niveles de garantía de evaluación , y debe encontrar el que mejor se adapte a su tipo de software. Todo el proceso de certificación es una gran compensación entre la garantía, el esfuerzo por el diseño y el esfuerzo para la prueba / verificación.

    
respondido por el tylo 22.05.2017 - 15:48
fuente
1

En su caso, puede obtener de forma encubierta una selección aleatoria de los dispositivos terminados, luego retire y reemplace el criptoprocesador seguro con un generador de señales inteligente que genera un patrón conocido en lugar de uno aleatorio (por ejemplo, en lugar de generar un número aleatorio, podría imprima todos los 1s, invirtiendo en lugar de cifrar lo que se pretendía cifrar).

Si su preocupación es que están siendo perezosos y no están implementando el criptoprocesador, puede ser suficiente deshabilitar el chip en un dispositivo y ver que aún funciona para mostrarle que tomaron un atajo. Si está preocupado por algún negocio de puertas traseras del mundo de los espías y no confía en este tercero, podría ser mejor hacer la fabricación en casa.

    
respondido por el daniel 23.05.2017 - 12:53
fuente

Lea otras preguntas en las etiquetas