2016-05-16 71 views
0

我有一個數據庫,我打算存儲KMS加密的斑點。有些字段未加密(需要加密),有些字段已經過KMS加密。檢測Blob是否爲AWS KMS加密

查看原始數據,所有KMS加密的東西看起來都有點類似。理想情況下,AWS KMS API或AWS SDK應該有一些像「isEncrypted()方法,但它不會出現。

有沒有好的辦法來本地檢測我的字段是否被加密,短追趕InvalidCiphertextException從在decrypt API

回答

2

我認爲你的觀察是,加密的東西看起來有點同樣是有效的,它是有效的,因爲在體內,第一部分實際上是用於加密的密鑰名稱。這是KMS如何知道如何解密沒有你指定的密鑰(所以基本上當你加密你得到的東西回來這就是:關鍵描述+實際加密的東西)

現在,問題是:你真的想依靠這個觀察來確保某些東西是否被加密?你想在運行時做到這一點?

就isEncrypted方法而言:與調用解密有什麼不同?這仍然是一個方法調用。

真實的答案是:您不應該依賴KMS來加密/解密您存儲的東西。你應該依靠KMS來加密/解密你用來加密/解密你的東西(即所謂的信封加密)的密鑰。如果您通過KMS直接解密/加密,您將受到可重新啓動KMS的電話數量以及您想要加密的最大大小的限制。

如果您切換到信封加密,只需嘗試解密並確定內容是否加密,應該是微不足道的。這就是說,我會建議實際上對加密和執行的內容非常嚴格(即不要猜測)。

因爲我們在這裏:還看爲KMS

+0

重新加密上下文:「你不應該依賴KMS加密/解密您存儲的東西。」你能更多地告訴(鏈接)我嗎? –

+0

確定:http://docs.aws.amazon.com/kms/latest/developerguide/workflow.html – Mircea