2014-11-06 72 views
11

有沒有開源的FPE實現?我不是密碼學專家,但我意識到FPE背後的基本概念,我正在尋找一個通用庫,它可以幫助我爲敏感數據(如電話號碼,社會安全號碼等)實施FPE。沒有強大的編程語言偏好,但魯棒性的算法和實現非常重要。哪些加密庫支持格式保留加密(FPE)?

我發現迄今:

但我還沒有親自使用它們。

有沒有其他圖書館支持FPE,或將在不久的將來?建議使用哪些或其他的,爲什麼?

+1

關於FPE(這本質上是確定性的)最重要的一點是,只要有可能,您應該避免使用語義安全加密。 – CodesInChaos 2014-11-20 10:32:55

+1

感謝您的提醒,但讓我們假設現在有適合的FPE應用程序。 – wau 2014-11-20 14:28:26

回答

0

我已經作出了小的JavaScript(節點)lib中FPE:

https://github.com/mderazon/node-fpe

它使用一個prefix cipher方法。 維基百科:

一種簡單的方法來創建上的FPE算法{0,...,N-1}是僞隨機權重分配給每一個整數,則排序(重量)。權重是通過對每個整數應用現有的分組密碼來定義的。 Black和Rogaway將這種技術稱爲「前綴密碼」,並表明它可以和所使用的分組密碼一樣好。

因此,在其上創建域{0,1,2,3}一個FPE,給定一個密鑰K應用AES(K)的每個整數,給予,例如,

weight(0) = 0x56c644080098fc5570f2b329323dbf62 
weight(1) = 0x08ee98c0d05e3dad3eb3d6236f23e7b7 
weight(2) = 0x47d2e1bf72264fa01fb274465e56ba20 
weight(3) = 0x077de40941c93774857961a8a772650d 

排序[0,1,2,3](重量)給出[3,1,2,0],這樣的密碼是

F(0) = 3 
F(1) = 1 
F(2) = 2 
F(3) = 0. 

這種方法僅適用於小v有用對於較大的值, 查找表的大小和所需的加密數量爲 初始化表變得太大而不實用。