Data-Privacy
通過明文查找加密文本而不解密
我已經在我的網路項目中實現了優惠券模組,我用它來生成兌換獲取等……優惠券。
由於憑證程式碼被認為是敏感的,因此我考慮使用 AES-GCM 對其進行加密。
但是如何查詢清晰的憑證程式碼到加密的一個以檢查憑證的有效性以便以後兌換?
我想到了這兩種解決方案
- 我正在考慮為文件中的明文程式碼製作一個 MD5,以便將其與明文程式碼查詢相匹配?
- 反向分發,在哪裡給使用者加密的代金券程式碼,並將清晰的代金券程式碼儲存在數據庫中,當查詢申請兌換代金券時,系統解密應用密鑰和iv的代金券並尋找匹配?
這些方法是否比解密整個數據帶來更少的性能成本?考慮其中一種方法是否安全。
威脅受眾
- 系統管理員
- 攻擊者
- 數據庫數據洩露
查詢
SELECT
ECB
只要憑證程式碼是唯一的,就可以使用帶模式的 AES 。當密鑰和明文相同時,ECB 模式會為您提供相同的結果。- 另一種解決方案是繼續使用 AES-GCM 來保存您的優惠券程式碼。要使
SELECT
語句相等,請使用安全散列函式,例如從 SHA3 系列中選擇。以可忽略的機率,您將發生碰撞。如果你有一個碰撞儲存值,你就會出名。無論如何,您將在雜湊值匹配後解密 AES-GSM。攻擊
正如我在評論中所說,您的攻擊範圍非常廣泛;我會針對單個案例給出答案;
- **系統管理員:**如果您不信任他們,這是一個嚴重的問題。他們可以查詢所有內容,即使您部署了 HSM。他們可以插入、刪除等。保留數據庫的查詢日誌可以幫助您進行調查。此外,還有像RSA Beehive 這樣的作品,可以檢測系統使用者的行為變化,從而阻止行動。他們聲稱“我們可以阻止斯諾登。 ”
- **攻擊者:**關於數據庫攻擊,見下。如果攻擊者訪問應用程序伺服器,他們將與惡意系統管理員一樣,可能會在很短的時間內。
- 數據庫數據洩露:由於清晰的憑證不在數據庫中,我們希望通過無衝突和 AES-GCM 的安全性,數據庫不會受到影響。但是,如果數據庫攻擊者也是活躍的攻擊者,您可能需要對行進行一些完整性,甚至需要對列進行一些連結。一個簡單的打擊;
r_i = |data_1|... |data_k| h_i = hash(data_1,...,data_k)| sign(h)| r_i+1 =|data_1|....|data_k| h_i+1 = hash(data_1,...,data_k)| sign(h_i+1||h_i|)|