2009-11-20 53 views
0

我們的客戶想給我們一個數據庫。原始數據庫有一個電話號碼列。他不想給我們一個電話號碼。不知何故,我不知道爲什麼 - 這是決定客戶端會給我們加密的電話號碼與128位AES密鑰加密。請諮詢是否使用加密的情況

我們會告訴客戶哪個電話號碼將被列入某個目的,但我們永遠不會知道實際的電話號碼是什麼。我們只會知道加密的號碼。

這裏有事情,我不明白:

  1. 是使用適合於這一目的的128位AES密鑰加密?
  2. 應在客戶端保存用來將數字轉換或 應在客戶端,而不是 保存密鑰創建數據庫 與 加密數字映射一部開拓創新的數字AES密鑰
  3. 應使用同一個密鑰的所有轉換數字或不同
  4. 如果使用隨機生成的密鑰來加密數字是不是 可能對於兩個電話號碼 加密的文本可能是相同的?
+1

順便說一句,有沒有一個主持人在SO - 任何人只要有一相當高的代表可以解決問題。不要認爲問題是封閉的最好方法不是認爲它是相關的,而是通過寫一個好的相關問題來表明*。不管對MODs有任何「個人」上訴,好問題都會停止,壞問題也會被關閉。 – 2009-11-20 09:44:43

回答

1

尋址爲了您的顧慮:

  1. 它可能是,也可能不是。實際上,您並沒有真正提到目的:

    • 爲什麼需要加密?
    • 誰受到保護?
    • 對數據的價值(或對您的責任,如果丟失)是什麼?
    • 假設的攻擊者假設的動機如何?
    • 安全增益可以接受的性能損失是多少?
    • 你有什麼硬件可用?
    • 誰有什麼物理/邏輯訪問系統的各個部分?

    依此類推,等等。不知道這種情況,不可能說這是否是一個合適的加密方案。 (雖然它可能是一個堅實的選擇)。

  2. 當然這是由客戶決定的?但是,我會說,後一種情況似乎完全破壞了加密的目的。
  3. 相同的密鑰應該用於轉換所有的數字,除非你喜歡玩雜耍的密鑰試圖記住哪一個用來解密哪個電話號碼。如果安全系統設計得好,這不會帶來任何額外的安全性,而且會成爲一件奇怪的事情。
  4. 按定義加密,no。它總是一個可逆映射,這意味着不會丟失任何信息,比如你使用散列獲得的信息。因此,密文的每個實例都有一個唯一的明文,它將用一個給定的密鑰進行加密。

儘管所有這一切聽起來並不像需要。這聽起來像某人一直在根據外觀而不是技術優點做出決定 - 「我們使用瀏覽器中使用的相同128位加密對您的電話號碼進行加密」聽起來不錯,但實際上是否需要?

5

IMO這是錯誤的做法。客戶端應該使用一個ID來代替它們,而不是對電話號碼進行加密,但仍然有可能解密它(例如,由於有人泄漏了密鑰),而是用一個指向具有真實電話號碼的表格的ID代替;當然,這張查詢表與他保持一致,你永遠不會得到它。

I.E.

原始表:

Name | Phone 
-------+--------- 
Erich | 555-4245 
Max | 1234-567 

你得到:

Name | Phone 
-------+--------- 
Erich | 1 
Max | 2 

只有你的客戶有:

ID | Phone 
---+--------- 
1 | 555-4245 
2 | 1234-567