security - PowerShell 的 ConvertFrom-SecureString -key 有多安全

标签 security powershell securestring

我有一个模块,其中包含一些字符串和一些应该很难获得但经常更改的私有(private)数据。我需要将此脚本放在可能访问它的各种机器上,以及由不应该拥有用于导出输出的信息的人读取代码的地方。

我真的很担心不时更改的字符串,因此我正在考虑创建一个脚本,提示输入这些值作为安全字符串并使用 key 加密它们并将它们转储到 xml 文件中。然后使用 XML 文件提供字符串。任何从该模块运行需要该数据的命令的人都必须提供 key ,以便可以解密字符串。

这基本上是我期望做的,但我将处理对象

$secure = Read-Host -AsSecureString
$encrypted =  ConvertFrom-SecureString -securestring $secure -key somekey
$encrypted | Export-Clixml testing.xml
$imported = Import-Clixml testing.xml
$value = ConvertTo-SecureString -string $imported -key somekey

我知道该字符串将使用 Rijndael 加密算法进行加密,我认为该算法也称为 AES。

如果可以访问脚本,需要多少努力才能破解位于 xml 文件中的加密 key ?

最佳答案

然后加密的 secret 字符串本身是安全的,但它可能无法以这种形式使用。 ConvertTo-SecureString 会将其从加密的标准字符串转换为 SecureString,但为此,您需要 key 。如果您的用户或脚本拥有 key ,那么他们就可以做任何事情。

您甚至可以将 SecureString 传递给您正在使用的任何应用程序,还是需要将其转换回常规字符串?如果 secret 数据在任何时候都是明文形式,那么您的用户就可以看到它。

即使您的应用程序支持 SecureString,您仍然会遇到麻烦,因为 SecureString 很容易破解:

[System.Runtime.InteropServices.Marshal]::PtrToStringAuto(
  [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securestring)
 )

用一些 key 加密 secret 数据,但允许低权限用户拥有 key 的方法被破坏了。这相当于“我不想让我的 friend 拿到我家的 key ,所以我会把 key 锁在一个盒子里,然后把盒子的 key 给他。”

关于security - PowerShell 的 ConvertFrom-SecureString -key 有多安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520006/

相关文章:

Powershell 文本框 SecureString

.net - 保存安全字符串

Java套接字权限: applet isn't initialized

powershell - powershell脚本将变量与参数混合

内存中的 Powershell 编码问题

c# - 将 SecureString 与 LogonUser 一起使用

asp.net - 隐藏字段与 View 状态

security - 启用“Access-Control-Allow-Origin : *“(wildcard) for a public and readonly webservice?”是否安全

security - 基于角色的访问控制 (RBAC) 关心权限还是角色?

azure - 如何使用 Powershell 将用户分配的身份添加到 AAD 组?