【发布时间】:2019-03-31 01:02:46
【问题描述】:
我希望使用 OpenSSL(多个文件)安全地加密千兆字节的数据。
我使用这个命令(openSSL 1.0.2p-i386-win32):
openssl.exe enc -e -aes-256-ctr -in secret.txt -out encrypted.txt -salt -pass pass:AsIDHnd19!&@#@!#lJglG1f31!
我的问题是:
- 使用什么模式?点击率还是CBC? (点击率是为了速度?)
- 如何生成随机 IV?例如在 PowerShell 脚本中。 (我使用的是 Pshell v2.0)
- 我提供的命令是否足够安全?
- 我可以为每个文件使用相同的盐以提高加密速度吗?
- 20-30 字符的真正随机密码是否可以弥补密码的不足? 四?
编辑:
我下载了一个更新的版本,可以使用 PBKDF2 (openSSL 1.1.1-win32-mingw):
openssl.exe enc -e -aes-256-ctr -in secret.txt -out encrypted.txt -salt -pass pass:AsIDHnd19!&@#@!#lJglG1f31! -pbkdf2 -p
使用 -p 我可以看到用于加密文件的盐、密钥和 IV。每次我运行 openssl 时,所有 3 个参数都会发生变化,即使在同一个文件上并且使用相同的传递。
这是否意味着我现在很安全并且 IV 是随机的?
【问题讨论】:
-
20-30个随机字符的密码表明它不是只存在于某些用户头部的密码,而是存储在某处的东西。在这种情况下,您应该只使用实际的二进制 AES 密钥。 AES 本身不使用密码,OpenSSL 需要做很多额外的事情才能将您的密码变成密钥.. 例如。添加盐,并做一些密码拉伸等。你得到了很多额外的处理,最多相同的安全性。
-
这是如何生成 AES 密钥的吗? stackoverflow.com/questions/52979457/…这是我的另一个问题。所以现在我已经生成了它,我只是将密钥提供给 openssl 中的 -k 标签还是什么?顺便说一句,密码是随机生成并保存在另一台机器上的。
-
我运行了前面的命令,但是添加了一个 -p 标签来查看 iv、key 和 salt,每次我用相同的密码加密同一个文件时,所有 3 个参数都会随机变化。这意味着我很安全,openssl 会为我随机生成?
-
@kelalaka 好的,谢谢。这意味着我可以用这个命令安全地加密?
-
@kelalaka 我需要从命令行执行它,没有交互模式。从文件中读取密码然后粉碎文件是否更安全?使用 tagg -pass file:FILEPATH
标签: powershell encryption openssl aes