安全的openSSL文件加密

时间:2018-10-26 09:40:04

标签: powershell encryption openssl aes

我希望使用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!

我的问题是:

  1. 使用哪种模式?点击率还是CBC? (点击率是速度吗?)
  2. 如何生成随机IV?例如在PowerShell脚本中。 (我正在使用Pshell v2.0)
  3. 我提供的命令是否足够安全?
  4. 我可以对每个文件使用相同的盐,以提高加密速度吗?
  5. 是否使用20到30个字符的真正随机密码来补偿缺少 IV?

编辑:

我下载了较新的版本,可以使用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个参数都会更改,即使是在同一文件中且使用相同的密码。

这是否意味着我现在很安全并且静脉注射是随机的?

1 个答案:

答案 0 :(得分:0)

  1. CBC和CTR应该具有相同的速度。
  2. 如果未指定,则使用pbkdf2从您的密码生成IV。
  3. 点击率是recommended的CBC。
  4. 不建议使用相同的盐。 Salt用于防止来自OpenSSL文档的密码攻击。
  

如果没有-salt选项,则可以对密码进行有效的字典攻击并攻击流密码加密的数据。原因是没有盐,相同的密码始终生成相同的加密密钥。使用盐时,将为盐保留加密数据的前八个字节:加密文件时会随机生成该盐,解密后会从加密文件中读取该盐。

    IV并不缺乏。如果没有提供OpenSLL,则为您提供。