移动商务智能的加密算法

序言

BI应用的主要对象是对数据安全非常敏感的企业,这就要求我们在Mobile BI的开发过程中要特别注意对数据的存储、通信、验证等进行保护,而加密算法可以防止数据的读取确保数据的完整性以及实现身份认证,这篇文章对应用普遍的加密算法进行简单的介绍,以便在后继Mobile BI安全功能的讲解中可以对安全功能实现的理论基础有一个清晰的认知。

加密算法可以简单的分为“对称密钥加密算法”和“非对称密钥加密算法”,这是以加解密过程中使用的密钥是否相同来区分的:

  • “对称加密算法”是指加密和解密使用同一个密钥,一般而言,算法的强度与密钥的长度成正比,涉及的加密算法包括:AES、DES、Triple DES、RC2、RC4、IDEA、Camellia等。
  • “非对称密钥加密算法”是指加密和解密使用不同的密钥,通常包括两个密钥,一个公钥,可以对外公开,一个私钥,只有自己知道,这种算法现在的主要应用是在开放且不安全的网络上认证身份。这里涉及的加密算法包括:RSA、DSA、Diffie-Hellman等。

此外,如果不需要保证消息可以被完整的读取出来,只需要验证消息本身,还有消息摘要这类算法。摘要算法多用于信息的比对和验证,使得在不暴露原始信息,以及缩小比对量的情况下保证结果的正确性,这里涉及的算法包括:MAC、MD5、SHA1、SHA256等。

对称密钥加密

对称密钥加密 Symmetric Key Algorithm 又称为对称加密、私钥加密、共享密钥加密:这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥,对称加密的速度一般都很快。

分组密码

分组密码 Block Cipher 又称为“分块加密”或“块加密”,将明文分成多个等长的模块,使用确定的算法和对称密钥对每组分别加密解密。这也就意味着分组密码的一个优点在于可以实现同步加密,因为各分组间可以相对独立。

与此相对应的是流密码:利用密钥由密钥流发生器产生密钥流,对明文串进行加密。与分组密码的不同之处在于加密输出的结果不仅与单独明文相关,而是与一组明文相关。

分组密码的工作模式 Block cipher mode of operation 描述加密每一个数据块的过程,包括加密和认证的过程:

初始化向量
初始化向量 IV Initialization Vector 用于将加密随机化,以便同样的明文被多次加密也会产生不同的密文。

IV通常不需要保密,但不应该在使用同一密钥的情况下使用同一个IV。重用IV在CBC和CFB下会导致泄露明文首个块的某些信息,而在OFB和CTR下会导致完全失去安全性。

填充
填充 Padding,块密码只能对确定长度的数据块进行处理,而消息的长度通常都是可变的,因此在一些模式下,比如ECB、CBC,需要对最后一块数据在加密前进行填充。

位填充:在信息后添加一个“设定”位"1",再添加“重设”位"0"至要求大小。此方法可用于填充任意长度的信息。... | 1011 1001 1101 0100 0010 0111 0000 0000 |

字节填充:用于可编码为整数字节大小的信息

  • ANSI X.923:使用"0"填充,直到最后一个字节定义填充的界限或者填充的字节数 ... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 |
  • ISO 10126:使用随机数填充,直到最后一个字节定义填充的界限 ... | DD DD DD DD DD DD DD DD | DD DD DD DD 81 A6 23 04 |
  • PKCS7:使用需要填充的字节数为值来填充 ... | DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 |
  • Zero Padding:直接使用"0"来填充 ... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 00 |

电子密码本
电子密码本 ECB Electronic Codebook 模式:需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密。这个模式的优点在于模式简单、有利于并行计算、误差也不会被传递;但问题在于同样的明文块会被加密成相同的密文块,因此不能很好的隐藏数据模式。

可以参考下图,这种模式比较容易受到重放攻击[Replay attack]:(https://en.wikipedia.org/wiki/Replay_attack)的威胁

 

密文分组链接
密文分组链接 CBC Cipher Block Chaining 模式:这种模式要求消息填充,以便保证每一个明文块都是完整的一块,每个明文块先与前一个密文块进行异或后加密,这样每个密文块都依赖于它前面的所有明文块,而对于第一个块,需要使用初始化向量。这种模式的优点在于较好的安全性,但是加密过程是串行的,也就是不利于并行运算,可导致误差传递,但是反过来的话,从相邻的两个密文块即可得到一个明文块,所以解密的过程是可以并行的。

填充密码块链接
填充密码块链接 PCBC Propagating Cipher Block Chaining, 或称为明文密码块链接 Plaintext Cipher Block Chaining:可以使密文中的微小更改在解密时导致明文大部分错误的模式,并在加密的时候也具有相同的特性,这种方式主要用于Kerberos V4。

密文反馈
密文反馈 CFB Cipher Feedback 模式类似于CBC,可以将块密码变为自同步的流密码,工作过程也类似,CFB的解密过程即使颠倒的CBC的加密过程。这种模式隐藏了明文模式,使得分组密码转化成了流模式,可以及时加密传送小于分组的数据,而不需要数据填充。而缺点与CBC类似,加密不能并行化,但解密可以。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值