2014-11-06 94 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有用对于较大的值, 查找表的大小和所需的加密数量为 初始化表变得太大而不实用。