解密在不同系統上加密的文件
我的家庭伺服器執行 OpenBSD 5.3,使用 Samba 向多台 Windows 機器提供文件。我編寫了一個腳本來通過加密每個文件
openssl enc -aes-256-cbc
並將其上傳到 Amazon S3 來備份影片文件。為了測試一種可能的恢復方案,我嘗試在文件上執行腳本,將文件下載到其中一台 Windows 機器上,並使用幾個宣傳為解密 AES 加密文件的程序對其進行解密,但他們無法解密它。用 OpenSSL 加密的文件只能用 OpenSSL 解密嗎?在 OpenBSD 上由 OpenSSL 加密的文件是否只能由 OpenBSD 上的 OpenSSL 解密?作為記錄,我將文件下載到我的伺服器並使用 OpenSSL 解密它沒有問題。但是,我很想知道無論我選擇何種伺服器設置,我在 S3 上的影片(快速存檔到 Glacier)是否仍然可以訪問。
AES-CBC-256 完全指定了加密算法和解密算法。給定明文、密鑰和 IV,AES-256-CBC 加密的兩種實現將產生相同的密文。給定一個密文、一個密鑰和一個 IV,AES-256-CBC 的兩個實現將產生相同的明文。
IV 是加密消息時生成的隨機字元串。如果你對相同的數據加密兩次,你會得到不同的密文,因為 IV 會不同。這部分是因為只能看到兩個長度相同的密文的人無法檢測密文是否相等。大多數工具都會在密文前面加上 IV,以便解密所需的所有數據都在一個地方(當然除了密鑰)。
OpenSSL 命令行工俱生成一個包含 16 字節標頭、IV 和密文的文件。此格式特定於 OpenSSL,但不依賴於平台。
OpenSSL 的命令行更多地是作為庫可能性的展示,而不是生產級命令行工具。我不建議使用它,它太容易犯錯誤,最終得到不可恢復的數據或不安全的數據。OpenSSL 也不會幫助您進行密鑰管理。
相反,請使用旨在加密文件的工具。GPG就是為此目的而設計的。生成密鑰對,然後使用
gpg -e your-gpg-id@example.com /path/to/file
.