2012-02-16 23 views
0

我想在密碼加密文件中存儲一些數據。該文件應該包含: 1)數據的有效期限 2)數據本身 到期日不一定需要加密,但需要從篡改保護(例如,整個文件可以簽名)。有沒有辦法將密碼加密數據和截止日期一起存儲?

有沒有辦法使用OpenSSL使用一些明確定義的加密格式? 我只對在C中編程(最好使用OpenSSL API,例如EVP_ *和朋友)感興趣,執行進程,腳本,Java,.NET,Python等是不可能的。

P.S. 我對OpenSSL API非常熟悉,但不知何故,我找不到任何好的(至少相對'乾淨')解決方案。

+0

我想我找到了正確的解決方案:PKCS#12格式是最接近我需要的東西。 – sirgeorge 2012-02-16 12:43:41

+0

這個問題有一個更輕的解決方案:被稱爲[AEAD](http://en.wikipedia.org/wiki/AEAD_block_cipher_modes_of_operation)。不幸的是,只有可用於openssl的補丁。當然,你需要密碼來驗證到期日期。 – 2012-02-18 01:03:40

+1

作爲單獨的註釋,不要忘記使用PBKDF2或bcrypt來創建密鑰。我建議不要直接使用密碼,如果這些算法不是一個選項,至少使用salt來散列它。 – 2012-02-18 01:07:31

回答

1

我想你回答了你自己的問題。您必須對包括過期日期在內的整個文件進行數字簽名,以便保護過期日期的真實性,即使是有權訪問可用於解密實際數據的密碼的用戶。

生成例如用於簽名加密文件的RSA密鑰對。應解密文件的用戶同時訪問RSA公鑰和密碼。

顯然有這樣一個計劃的幾個警告。例如,添加數字簽名不會阻止用戶簡單地忽略到期日期,數字簽名或兩者。

相關問題