Muchos archivos que descargamos no tienen firmas digitales. Los archivos pueden infectarse o alguien puede modificarlos intencionalmente en nuestro disco duro.
Así que escribí un programa simple de hashing de archivos en c # que crea un hash SHA-256 de cada archivo & Lo almacena en un documento XML firmado. La clave privada se toma del almacén de certificados de Windows con un nivel de seguridad alto. (Es decir, cada vez que utilizo la clave privada, me pide la contraseña). También creé una hoja de propiedades para carpetas y amp; Superposiciones de iconos (básicamente muestra una imagen de verificación en el icono de un archivo si el hash está bien) para que pueda ver de un vistazo qué archivos están bien. Este programa también realiza una copia de seguridad de la lista de hashes en Google Drive y sincroniza automáticamente nuestra base de datos de hash. También agregué Authenticode a mis archivos de programa.
Tengo algunas preguntas en mente:
-
¿Es posible que el malware o cualquier tipo de explotación que se ejecuta con privilegios de administrador vuelque la clave privada sin la contraseña? (Las claves están en el Almacén de usuarios con alta seguridad).
-
¿Es posible explotar mi programa para que incluso si se modifica un archivo, lo muestre como si aún coincida con el hash almacenado? (Estoy en Windows 8 x64 con DEP y ASLR en.)
-
El ejecutable del programa verifica su propia firma digital & otros DLL que carga. Así que si no es válido existe. ¿Está bien?
-
Si el programa no es seguro, ¿cómo puedo mejorarlo para estar seguro?
Principalmente, quiero asegurarme de que los archivos que uso no se manipulen, incluso si mi computadora está comprometida. (Sé Open PGP pero solo quiero almacenar hash de archivos y otros atributos como longitud del archivo en bytes, qué usuario creó cada firma, fecha / hora en texto claro en XML firmado para que mis amigos también puedan verificar el hash con otro software, etc.)