我需要加密雙向(對稱)不同的令牌。這些令牌有望重複使用(例如,它們是人名),但我不希望攻擊者得出哪些加密令牌來自相同的原始令牌。鹽是單向密碼學(散列)的途徑。對稱加密和鹽
有沒有一種方法可以用於對稱密碼學,解決方法或替代方法?
我需要加密雙向(對稱)不同的令牌。這些令牌有望重複使用(例如,它們是人名),但我不希望攻擊者得出哪些加密令牌來自相同的原始令牌。鹽是單向密碼學(散列)的途徑。對稱加密和鹽
有沒有一種方法可以用於對稱密碼學,解決方法或替代方法?
是的。正確使用,對稱加密不會透露任何有關明文的信息,甚至不會出現多個明文相同的情況。
正確使用意味着選擇使用初始化向量(IV)或隨機數(即非ECB)的操作模式,並適當選擇IV(通常爲隨機字節)。使用相同的密鑰和IV對多個明文進行加密使得這種攻擊幾乎與ECB模式一樣,並且使用靜態IV是一個常見的錯誤。
假設唯一要加密的項目是令牌(即它們沒有嵌入到更大的數據結構中),那麼Inicialization Vectors(IV)就是要走的路。
它們很容易理解:讓M爲你的令牌,填充以適應在對稱加密算法中使用的塊大小(我假定它是AES),IV是隨機數組,也是大小加密塊。
然後計算C = AES_ENCRYPT(M xor IV,K)其中C是加密數據,K是對稱密鑰。這樣,相同的消息M將不會多次以相同方式加密,因爲每次都隨機獲取IV。
要解密M,只需計算M =(AES_DECRYPT(C,K)xor IV)。
當然,IV和K都必須在解密時已知。傳送IV的最常用方式是將其沿着加密文本發送。這不會影響安全性,這與存儲鹽值非常相似,因爲加密密鑰對於其他人都是未知的。
請注意,除非泄漏有關名稱大小的信息,否則您可能需要將用戶名填充到特定大小。 – 2014-10-10 18:35:29
@ntoskmi非常密集的答案。您能否指出一個資源,可以進一步闡述什麼是歐洲央行以及在解密時如何知道IV? – yannisf 2014-10-10 20:26:52
@yannisf維基百科有一篇關於[操作模式]的文章(https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation)。特別要注意描述企鵝的一組圖像。您可以簡單地將IV與密文一起發送;它不需要保密。 – ntoskrnl 2014-10-11 14:57:58