No importa dónde se almacenan los datos cifrados, importa cómo se cifran.
Las secciones encriptadas en un web.config normalmente están encriptadas con la API de protección de datos , que es extremadamente difícil de descifrar sin comprometer toda la máquina. También puede usar un contenedor de claves RSA, que es similar (difícil de sacar de la máquina).
Supongo que si desea almacenar la cadena encriptada en la DLL, está bien, aunque no es inherentemente más segura que una web.config encriptada (cualquiera puede mirar esa DLL con Reflector ), y obviamente es más difícil de cambiar (usted necesitaría recompilar). Pero nuevamente, lo que es mucho más importante es cómo se generó esa cadena encriptada; presumiblemente no estás usando los mismos proveedores que usarías para un web.config encriptado, entonces, ¿qué estás usando?
Un esquema de cifrado es tan fuerte como la clave privada o el secreto compartido. Si esa clave también se almacena en su ensamblaje, entonces es posible que no tenga cifrado en absoluto. Si está almacenado en alguna base de datos externa, entonces plantea la cuestión de cómo se asegura la cadena de conexión de esa base de datos. Esto realmente solo puede conducir a una seguridad más débil en general.
Por otro lado, si usted fuera un proveedor de servicios y la cadena de conexión estuviera encriptada con una contraseña de usuario , eso sería más seguro que usar una clave de máquina estática. Por otra parte, si está utilizando contraseñas de usuario para cifrar, es bastante improbable que codifique los datos cifrados en su ensamblado, ya que debe generarse y almacenarse en respuesta a la acción del usuario (no del desarrollador).
Realmente no puedo pensar en demasiadas situaciones en las que codificar una cadena de conexión (encriptada) en la DLL sea más segura que encriptar la sección web.config relevante. En el mejor de los casos, solo agrega inconvenientes, en el peor de los casos, depende de una seguridad personalizada torpemente escrita llena de agujeros. Hazte un favor y haz lo que Microsoft recomienda: solo encripta tu web.config si hay datos confidenciales allí.