博文

目前显示的是 十二月, 2020的博文

Format Preserving Encryption

图片
Format Preserving Encryption Format Preserving Encryption 保格式加密(format preserving encryption,简称FPE)是一种 对称密码学 工具,它能够在保证原有格式的情况下进行加密. 对于明文空间中的一条信息,其加密结果也应该是中的一条信息. 比如对于一个手机号的加密结果还是一个手机号. 因此,保格式加密相当于对进行了一次排列,将其映射到另一条信息. 形式化的说,FPE是一个四元函数​ E : K × N × T × X → X ∪ { ⊥ } E: \mathcal{K}\times\mathcal{N}\times\mathcal{T}\times\mathcal{X}\rightarrow\mathcal{X}\cup\{\perp\} E : K × N × T × X → X ∪ { ⊥ } 其中 K \mathcal{K} K ​表示密钥集合,​​​​​​ T \mathcal{T} T 表示格式集合,​ T \mathcal{T} T 表示调整键集合,​ X \mathcal{X} X 表示域空间. 上述所有集合都非空并且​. 对于一个特定的FPE可以缩写为​,其表示为使用密钥​和调整键​在格式​的情况下对​进行加密. 一个理想的FPE表现为域 ​ 中的一个随机排列. 对于FPE而言,目前主流的方法是使用块加密来构建. 关于块加密方法的对比可以参考 这里 . 视频教学可以参照 这里 . 应用 FPE主要应用在老旧系统的向下兼容:业已存在的系统不需要经过太大的改动就能够进行加密匹配. 例如系统中需要使用信用卡号,如果使用AES进行加密,那么其产生的结果将会包含16进制字符,因此系统需要进行较大修改才能够保证正常使用. 如果使用FPE,那么其结果同样会是一个信用卡号,对于已有系统的改动就会较小 [1] . 除此之外,FPE还能适用于数据库当中. 例如某个用户想将自己的加密信用卡号存储在一个数据库中,他就可以使用FPE加密自己的信用卡号,而服务端则会将其当作信用卡号进行存储. 如果使用AES进行加密,那么服务端将不能识别其为一个信用卡号 [1] . 算法 基本原理——排序加密法 由于之前关于FPE的介绍我们可以得知