una seguro segura requisito referencia que previo para nombre necesita marque manera implementar hacer firmado firma estar ensamblado electronica debe con como c# .net .net-assembly digital-certificate strongname

c# - seguro - Manera correcta de firmar digitalmente la aplicación con ensamblados referenciados



implementar firma electronica c# (1)

Tengo una aplicación que tiene 1 ensamblado referenciado (test.exe, test.dll)

Lo que quiero es que cuando se ejecuta el test.exe , debería mostrar el nombre del editor como "TestCompany".

Para hacer eso, lo firmé digitalmente y hace lo que quiero. Y si test.exe un byte de test.exe el nombre del editor es "Desconocido". Lo que es bueno.

Pero si test.dll el test.dll , la aplicación se ejecuta como si nada test.dll pasado y muestra el nombre del editor como "TestCompany". Lo que no es bueno para mí.

Así que puse un nombre test.dll en test.dll y agregué <bypassTrustedAppStrongNames enabled="false" /> en app.config.

De nuevo, no hay diferencia. Así que busqué de nuevo y descubrí que bypassTrustedAppStrongNames solo verifica si los ensamblajes tienen un nombre bypassTrustedAppStrongNames o no. No la verificación. Lo que no es bueno para mí otra vez.

Lo que quiero exactamente es proteger al usuario, no a mi aplicación. Si el usuario ejecuta mi aplicación y dice que es de mí, debe ser de mí como cada byte. Si se modificó la aplicación, incluso un solo byte, debe notificar al usuario, no es mío. Que es lo que se supone que haga la firma digital junto con un nombre fuerte, pero todos parecen no ser tan buenos todavía. O me estoy perdiendo algo ?

La última forma posible de pensar es verificar manualmente el nombre seguro del ensamblaje.

PS: Target .NET Framework es 2.0


La mayoría de mis ensamblajes importantes no se cargan como referencia en mi proyecto. Lo que hago es declarar interfaces de interoperabilidad (comunes a todos los proyectos como una base ... sí, se hace referencia a esto ...) luego cargo todos los ensamblajes en tiempo de ejecución usando:

Assembly assembly = Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1"); Type type = assembly.GetType("MyClass"); object instanceOfMyType = Activator.CreateInstance(type);

Yo uso esto por varias razones. Tengo diferentes implementaciones de clase a las que debo llamar dependiendo de la configuración del usuario / cliente. También parece una buena opción para garantizar que está cargando un ensamblaje específico con mi token público y mi versión.

Después de un poco de investigación, encontré estos mensajes:

Bueno, me sorprendió un poco después de ver tu pregunta ... Me preocupa que ahora haga referencia a mis DLL. Ya no sé qué tan seguro es esto, pero parece ser bastante más seguro que solo referenciarlo.

No he encontrado ninguna referencia en la documentación de MS para usar Assembly.Load y bypassTrustedAppStrongNames . Realizaré algunas pruebas más tarde, pero parece más seguro usar esto.