簡體   English   中英

在MySQL中對加密數據進行搜索過濾

[英]Search filter on encrypted data in MySQL

查詢描述:假設我有一個數據庫表,該表以加密形式存儲所有用戶的數據。 我具有管理員可以搜索用戶數據的功能。 現在的問題是,管理員將在文本框中輸入普通文本,我必須根據管理員的輸入過濾用戶列表(每次文本更改時)。 因此,與此同時,我擁有大量加密形式的數據,我必須根據Admin輸入的常規文本對其進行過濾。

到目前為止,我提出的解決方案是,首先解密所有數據,然后再應用過濾器。 但是我很好奇,如果我的數據庫中有數百萬條記錄,那么當前的方法似乎毫無用處且效率低下。

有人可以幫助我以最有效的方式搜索加密數據嗎?

任何幫助將不勝感激!

謝謝。

到目前為止,我提出的解決方案是,首先解密所有數據,然后再應用過濾器。 但是我很好奇,如果我的數據庫中有數百萬條記錄,那么當前的方法似乎毫無用處且效率低下。

您是正確的,這不是可擴展的解決方案。 如果您想深入研究此問題,請參閱: 使用PHP和SQL構建可搜索的加密數據庫

您想要做的是:

  1. 使用已驗證的加密 ,按原樣存儲加密的數據。
  2. 將明文的盲索引存儲在密文旁邊。
    • 盲目索引可以是HMAC-SHA256(plaintext, separate_key)
    • 敏感值應sodium_crypto_pwhash()使用sodium_crypto_pwhash()hash_pbkdf2()
    • 為了節省空間,請截斷盲指標並將其視為Bloom過濾器。

這為您提供了兩全其美的優勢:既可以抵御被動和主動攻擊,又可以在快速SELECT查詢中使用的數據加密。

更新(2019-03-27): 而不是自己構建它,而是查看實現此設計的CipherSweet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM