Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ProtectData类使用哪种加密算法?_C#_.net_Windows_Encryption_Dpapi - Fatal编程技术网

C# ProtectData类使用哪种加密算法?

C# ProtectData类使用哪种加密算法?,c#,.net,windows,encryption,dpapi,C#,.net,Windows,Encryption,Dpapi,我知道该类最终会调用Windows的数据保护API(DPAPI)。提供了诸如密钥存储位置、谁可以解密数据等详细信息。但是,我还没有找到任何关于实际底层加密算法的文档。(我需要了解安全文档保护方法的详细信息,以便在即将进行的审计中使用)。这只是使用AES或类似的东西吗?这有多安全?使用三重DES 它使用经过验证的加密例程,如CBC模式下的强三重DES算法、强SHA-1算法和基于PBKDF2密码的密钥派生例程 它使用经过验证的加密构造来保护数据。所有关键数据都受到加密完整性保护,机密数据使用标准方

我知道该类最终会调用Windows的数据保护API(DPAPI)。提供了诸如密钥存储位置、谁可以解密数据等详细信息。但是,我还没有找到任何关于实际底层加密算法的文档。(我需要了解安全文档保护方法的详细信息,以便在即将进行的审计中使用)。这只是使用AES或类似的东西吗?这有多安全?

使用三重DES

  • 它使用经过验证的加密例程,如CBC模式下的强三重DES算法、强SHA-1算法和基于PBKDF2密码的密钥派生例程
  • 它使用经过验证的加密构造来保护数据。所有关键数据都受到加密完整性保护,机密数据使用标准方法包装
  • 它使用较大的秘密大小,以大大减少暴力攻击泄露秘密的可能性
  • 它使用PBKDF2进行4000次迭代,以增加试图破坏密码的对手的工作系数
  • It健全性检查主密钥过期日期
  • 它通过使用相互认证和隐私保护的RPC通道来保护与域控制器的所有必需网络通信
  • 它通过从不将机密写入磁盘并将其暴露在可交换RAM中最小化,从而将泄露机密的风险降至最低
  • 对注册表中的DPAPI参数进行任何修改都需要管理员权限
  • 它使用Windows文件保护来帮助保护所有关键DLL不受联机更改的影响,即使是具有管理员权限的进程也不例外
DPAPI最初生成一个称为主密钥的强密钥,即 受用户密码保护。DPAPI使用标准的加密方法 PKCS#5中描述的基于密码的密钥派生过程 从密码生成密钥。然后,此密码派生密钥将被删除 与三重DES一起用于加密最终存储的主密钥 在用户的配置文件目录中

然而,据报道,DPAPI使用AES256。至少在Windows7上

  • DPAPI使用经过验证的加密算法。例如,Windows 7默认情况下在CBC模式下使用AES256加密,SHA512用于散列,PBKDF2用作基于密码的密钥派生例程

请参阅soureCode:@FelipeOriani:ProtectData的源代码中没有此类信息,因为它通过interop调用CryptProtectData。您需要查看Crypt32的源代码以确定算法。然而,有一些文档解释了所有这些,而不需要查看源代码。谢谢,这非常有帮助。这个答案的唯一问题是无关的,可能会误导的形容词“strong”和“profed”。这让它看起来像一个营销宣传。SHA-1很强大??在去年(2017年)的密码标准中,它被认为是
坏的
。@stenportov我认为批评/否决答案是不合理的,因为你不同意微软的实施。答案总结了微软文档中关于该主题的相关部分(这正是问题的目的——这篇文档最终出人意料地难以找到)@ EJoshuaS拿起任何关于密码的文章,这是超过几岁,引用它没有思想是完全不负责任的,使OP和其他人(1)考虑DPAPI安全,因为营销语言从2001和(2)考虑SHA-1安全性。