.Net加密

Gus*_*nti 20 .net encryption clickonce connection-string app-config

我想知道的是加密配置文件中的连接字符串的明确方法.这是我的问题:

  1. 使用机器级加密,访问我的服务器的任何人都不能写一点.Net程序来读取连接字符串的内容吗?

  2. 如果我将我的应用程序部署到企业环境中的用户计算机,并且应用程序在配置文件中有连接字符串,我该如何确保只有我的应用程序可以解密它?在ClickOnce部署方案中,该方案特别有趣.我读过有关人们在发布服务器上存储未加密的配置并在第一次下载,安装和执行应用程序时在机器级加密的人.这听起来对我来说是错误的 - 连接字符串通过线路不受保护,并且在下载和应用程序执行之间保持不受保护的短暂时间.

  3. 我可以拥有公钥和私钥,签署我的应用程序,使用密钥加密配置文件,当用户执行它时,只能从签名的应用程序解密吗?

  4. 由于我使用ClickOnce,我可以在代码中嵌入加密的敏感信息或嵌入,因为除非版本#更改,否则ClickOnce不会检测到更改.因此,如果我需要重新编译,如果我更改我的连接字符串,app.config的点是静音的.我可以采取哪些其他方法,使用配置文件,以实现对服务器,客户端和中间连接字符串的保护?

Rem*_*anu 13

  1. 是.使用机器密钥加密的秘密可以由访问机器密钥的任何进程解密.使用用户密钥加密的秘密可以由同一用户启动的任何进程解密.
  2. 这是不可能的.所有相反的说法都是蛇油.您的应用程序需要一个秘密来解密某些东西.没有已知的方案来隐藏应用程序内的秘密.有各种混淆方案,但没有防弹.你能做的最好的就是提高标准.
  3. 没有.应用程序具有解密内容的密钥,在这种情况下,您返回到第2点,或者您的应用程序具有公钥,在这种情况下,任何人都可以解密相同的秘密,因此您基本上对配置进行验证(没有被篡改),但配置并不是秘密.
  4. 您无法安全地在应用程序中部署嵌入的机密.只是价格有多高的问题,如果您的受保护资产(秘密)是值得的,那么黑客就会得到它.

加密基础结构旨在保护当前用户与其他用户的秘密.它不是为了保护应用程序的秘密而不是使用它的用户.您要求的不是加密,是DRM,您需要查看DRM基础架构以获得答案.我不知道围绕DRM API的托管库.