我已經閱讀了很多關於加密和認識了很多新的東西已經出來了,因爲PHP 7.我寫兩個功能(加密和decrpyt)存儲在我的數據庫加密的數據。OpenSSL編成密碼隨機密鑰和IV-存放在DB
我瞭解OpenSSL的功能的作品,但我想知道如果我在我的數據庫存儲得當,或者我應該說安全。我的代碼如下:
function wm_encryptString($string) {
$method = 'aes-256-xts';
$key = random_bytes(16);
$iv = random_bytes(16);
$cipherText = openssl_encrypt($string, $method, $key, 0, $iv);
$cipherText = $key.$iv.$cipherText;
$cipherText = base64_encode($cipherText);
return $cipherText;
}
function wm_decryptString($cipher) {
$cipher = base64_decode($cipher);
$method = 'aes-256-xts';
$key = substr($cipher, 0, 16);
$iv = substr($cipher, 16, 16);
$cipher = substr($cipher, 32);
$readableText = openssl_decrypt($cipher, $method, $key, 0, $iv);
return $readableText;
}
當我運行這兩個函數它加密和解密就好了。我的具體問題是,是使用隨機字節生成密鑰和IV安全,並將其附加到密文安全存儲在數據庫?我存儲了一些敏感信息,並希望確保它被安全地加密。
我的第二個問題是,我知道我可以使用這些函數加密字符串,但我可以加密使用此功能相同的斑點?我在我的數據庫中存儲了一些文檔(我知道很多人會說從不將數據存儲在數據庫中,但是使用數據庫,因爲我只存儲少於100個文檔,並且使備份更容易)。我可以使用這個相同的功能加密一個blob /文件嗎?
任何反饋將不勝感激,因爲我希望我的應用盡可能安全。注意我知道我必須採取更多的安全措施來確保我的應用程序是安全的,我的問題僅限於加密。謝謝。
這真的是我的問題嗎?我無法找到存儲密鑰的行業標準。沒有人有關於如何/在哪裏存儲密鑰的建議? – user982853
存儲和保護密鑰顯然很重要,加密不會比密鑰更安全。關鍵存儲沒有行業標準。您需要根據您的威脅模型確定所需的安全級別。攻擊者的範圍從阻止好奇到挫敗的民族國家。選項可以從便箋,配置文件以及高端HSM中的物理安全位置運行。 – zaph