2012-09-11 30 views
2

我使用AES加密敏感文本標記並將它們存儲在數據庫中。我想對這些令牌進行部分搜索,而不僅僅搜索完全匹配。 解密所有令牌會太慢,所以我的想法是將令牌的開頭作爲明文存儲在數據庫的其他列中。AES:存儲用於搜索目的的加密數據的清晰部分

令牌爲90個字符,對每個用戶都是唯一的。我會存儲例如20個第一個字符。

如果有人得到數據庫的副本,這是否是一個安全問題,我的意思是重建具有明確部分的完整令牌會更容易嗎?

我的AES加密的設置是:

  • AES-128具有32個字節的加密密鑰。
  • 加密模式是CBC。
  • IV對於每個令牌都是唯一的。
+0

我知道發佈答案的太少,但我認爲在理論上,對於一般情況,運行已知明文攻擊的額外風險(http://en.wikipedia.org/wiki/Known-plaintext_attack) - 不過,至少在維基百科文章中指出,AES目前不容易受到此類攻擊。不過,不知道有關這方面的詳細分析。總之,這些敏感數據的一部分已經以明文形式提供,這不是一個安全問題嗎? – codeling

回答

3

創建每個值的散列(或每一個值的第一部分,如果它們是長),如10,000次迭代前20個字節的PBKDF2,並存儲作爲單獨的字段/列。要檢查一個值,執行相同的操作並根據新的字段進行檢查。新字段中的值不可逆並且比較操作便宜(直接二進制比較)。