- 分组加密模式和序列加密模式。它们之间最大的区 别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进 行加密运算处理。事实上,在实际设计应用的算法中,并没有那么严格的区别,它们有可能是相互结合的。比如输出反馈分组加密模式,就可以看作分组加密算法和序列加密模式 的结合。事实上,该序列加密模式的输出函数由分组加密算法和一个位选择器组成。
- 表列出了分组加密模式和序列加密模式的一些性能上的对比。 分组加密模式和序列加密模式各有优势。
- 分组加密模式便于软件实现,可以每次对一组数据进行处理,避免耗时特别大的位操作,也更能阐释计算机目前常用的分组概念。序列加密模式更适于硬件操作,因为硬件很适合逐位进行计算操作,这对算法的硬件实现是 非常有利的。
传输数据加密
-
将传输数据的加密分为物理信道加密、链路加密、终端加密、会话加密及应用加密。
物理信道加密
- 物理信道加密方式的加密设备或程序放置在链路层和物理层之间,也就是说,所有经过物理设备的数据都将被加密保护,无论是数据还是上层的协议信息。这种数据保护方式 非常有利于使用硬件加密设备,因为一般的物理接口都是工业标准化的。但是,因为该方式对所有数据包括路由信息都进行了加密,所以该方式只适合使用在专有线路或者同类型 线路上,任何中间的路由在处理信息之前都必须先进行加密。
- 就安全性来说,这种数据保护方式是非常有效的,因为它对物理信道中传输的所有信 息都进行了加密,不但隐藏了数据,而且将所有可能的通信信息都保护起来,攻击者不能 得到通信源和目的地址,也不能得到通信的时长和数据量。因为物理信道总是在传输一系 列的数据位,没有终止的时候。
- 但是,物理信道加密的方式也存在问题。因为它是对所有数据进行加密,所以网络节 点上的路由器都需要对所有数据进行解密和加密,工作量非常大。此外,因为是基于物理链接的加密,所以必须保证网络上所有的节点都是可信和安全的,如果网络上有任何一个 节点有安全问题,那么就会泄漏大量信息。但是,对于一个大的网络来说,通常很难做到保证所有节点都安全可信
链路加密
- 链路加密方式的加密设备放置在链路层和网络层 (IP)之间,它将通过IP传输的所有数据 (包括原始的IP头部)都进行加密保护,然后添加新的IP头发往设定的目标地 址 。 基 于 IPSec 隧 道 方 式 的 VPN 技 术 就 是 其 实 现 的 例 子 。 跟 物 理 信 道 加 密 方 式 不 一 样 , 该方式运行于链路层协议之上,并将所有基于IP传输的数据发往特定的目标地址,这构 成了一个逻辑意义上的私有网络,将公共网络的数据和这个逻辑私有网络的数据分离开来,不能互通,这就是所谓的虚拟专用网技术。
- 相对于物理信道加密方式,由于使用链路加密方式的数据一般在公共网络中进行传输,所以给攻击者透露了更多的通信信息,比如IP网关目的地址和源地址,通信的数据量等。但是因为通过两个网关的数据可能是许多实际终端数据无序的综合,所以攻击者很 难获取有用的信息,从而起到了很好的通信量保密作用。同时,链路加密方式也需要考虑 密钥管理等问题。
- 基于链路加密方式的最热门的应用就是VPN技术,该技术通过在公共网络 (如 Internet) 中 构 建 一 个 虚 拟 的 专 用 网 络 , 从 而 为 具 有 很 多 分 支 机 构 的 组 织 和 公 司 提 供 了 廉价的专用网络替代解决方案。
终端加密
- 终端加密的加密设备放置在网络层 (IP)和传输层 (TCP、UDP等传输协议)之间, 它对传输层的数据和协议进行了加密保护,然后发往指定的目标终端。目标终端接收到该 信息之后,同样需要对IP层传送上来的数据进行解密,然后再交给传输层相应的协议模 块进行处理。跟链路加密方式不一样,终端加密方式对IP首部不进行保护,所以适合于 端对端的通信,能够保护两个终端之间所有通过IP进行传输的数据。IPSec的传输方式 就是终端加密方式实现的例子之一。
- 终端加密的方式只对两个终端之间传输的数据进行加密,很容易受到基于信息量分析 的安全攻击。此外,同样需要考虑密钥分发等密钥管理问题。
会话加密
- 会话加密的加密设备放置在传输层和应用协议 (如 HTTP,FTP等)之间,它对上层特定应用协议的数据进行加密保护,然后再交给传输层处理。SSL (SecureSocket Layer)协议就是会话加密方式实现的著名例子。事实上,会话加密存在很多灵活的形式,
- 比如可以只对基于TCP之上的数据进行加密保护,也可以只对基于UDP上的数据进行保护,甚至可以只对基于 TCP之上的 HTTP协议进行单独的保护等。虽然理论上可以实现对所有基于特定传输协议 (如 TCP)之上的应用协议进行统一的保护,但是目前来说, 更多的是针对特定应用协议的保护,如针对 HTTP协议的保护。
- 会话加密通常是对两个终端之间的一个会话链接进行加密保护,所以能够给攻击者透露很多通信量方面的信息,如通信的数据量、通话时长,等等,容易受到通信量分析攻 击。此外,密钥管理同样是需要考虑的问题。
- 会话加密的优点是灵活性好,可移植性好,不需要更改系统底层的协议。设计、开发 及投入应用的周期相对比较短,并且能够适应特别行业客户的需要。比如有的用户可能只对 HTTP 协 议 的 数 据 保 密 感 兴 趣 , 那 么 它 就 完 全 没 有 必 要 采 用 VPN 技 术 , 因 为 这 种 技 术可能还会妨碍他对其他协议的使用。
应用加密
- 应用加密的加密设备或程序是放置在应用网络协议之上的,它对真正的信息数据进行 加密保护,而对应用协议信息不作任何保护,是一种最上层的数据加密保护方式。PGP (Pret ty Good Privacy) 程 序 是 该 加 密 模 式 实 现 的 例 子 之 一 , 该 程 序 对 要 通 过 电 子 邮 件 发 送的信息进行加密保护,然后再使用电子邮件的相应协议发送出去。
- 应用加密方式具有非常大的灵活性,如果愿意,可以在任何应用程序之中嵌入应用加密程序,从而实现对数据的保护。同样,如果需要通过网络进行传输,应用加密模式也面 临密钥管理的一系列问题。其通信量的泄漏跟会话加密方式基本相同。
存储数据加密
- 加密算法还经常被用于加密存储的数据,比如对文件、数据库或驱动器进行加密。存 储数据的加密跟通信数据的加密有很多不同点,比如密文的保存时间、密文的数据量及密 钥的保存时间,等等。
- 单个文件的数据加密非常容易解决,进行统一的加密就可以了。如果文件过大,为了安全性,可以使用一个长密钥的不同部分对文件的不同部分进行加密;也可以使用多个子密钥对文件的不同部分进行加密,然后使用一个主密钥加密这些子密钥,这样可以降低字典攻击成功的危险。
- 对于数据库这样的存储方式,虽然对整个数据库进行统一的加密将是简单的,但是会 带来一系列问题。首先是对于大型数据库,如果只需要读取其中一条记录的一个字段的数据,却需要花大量的时间对整个数据库进行解密,这是很不可行的。其次,对于数据库字段的不同部分,可能有不同的权限控制,这样使用相同的密钥显然是实现不了的。解决的 办法是对不同的字段使用不同的密钥进行加密,但是这样很容易受到分组重放攻击,此外,还需要设计产生不同密钥的方法。
- 经常会涉及对驱动器加密的问题。针对驱动器的加密具有数据量大的特点,所以一般 使用主密钥加密数据加密密钥的密钥管理方式。事实上,可以有两种不同的驱动器数据加 密方式:驱动器级和文件级。文件级加密方式是针对每个文件分别进行加密,一般每个文件都使用不同的加密密钥,所有这些加密密钥都使用一个主密钥进行保护。这样在使用某 个文件时,需要对这个文件进行解密、使用,然后再加密。驱动器级的加密方式对整个逻 辑驱动器进行加密,但是涉及驱动器安装、文件扇区管理及磁盘数据随机存取等问题,所 以实现起来比较复杂。这种情况下,启动驱动器前会要求用户输入一个口令,通过这个口 令产生一个主密钥,然后用这个主密钥解密真正的解密密钥。
存储数据的加密通常有以下特点
- 密文和密钥存储的时间长,需要安全可靠的方式保管密钥。
- 因为针对存储设备,要求快速进行数据的加密和解密,甚至需要采用硬件加密设备或者特殊算法。
- 对于数据库这样的加密应用,因为数据库每个字段的长度可能比加密算法的数据块长度小,所以会导致密文长度比明文长度大,这样会导致需要更多的存储空间。
- 密钥管理更加复杂,因为不同的人可能需要存取不同的文件或者同一个数据库的不同部分。因为加密的数据量太大,不能使用一个单独的密钥加密所有数据,否则密钥很容易受到唯密文攻击。
- 安全管理非常重要。你必须保证你加密的数据相对应的明文不会在别的地方被攻 击者取得,否则很容易受到已知明文攻击。还必须保证在阅读解密后的内容之后彻底将解 密的内容销毁,否则也容易受到攻击。
硬件加密和软件加密的对比
- 速度优势。加密算法的运行很多不是普通计算机所能完成的,所以在计算机上运 行效率会非常低,而使用专门针对某种特定算法设计的硬件却能大大加快计算速度。
- 安全性。对于软件加密算法或者程序,可以通过程序跟踪攻击更改算法而却能不 让任何人发现。但是硬件加密设备进行了严密的封装,包括防篡改、防电子辐射等设备, 使得硬件的安全性更有保障。
- 容易使用。硬件加密设备一般是做成了标准的硬件接口,不需要什么密码知识就 能简单地将设备连接到计算机或其他设备中进行使用。而如果使用软件,则需要多得多的 知识。
虽然硬件加密有这么多优点,但是这些优点是针对用户来说的。对于开发者来说,开发一个硬件加密设备所需要的成本可能会比开发一个软件加密程序高得多,需要的时间也 长得多。这也是国内目前硬件加密设备比较少的重要原因。
软件解密
- 软件可以实现任何加密算法,其缺点是速度慢、开销大和容易受到篡改;优点是灵活 性好、可移植性强及容易升级。软件加密程序很容易得到,所以个人用户可以轻松地使用 软件加密保护自己的文件和数据。加密软件开发的周期一般来说也比较短,不需要开发公 司投入大量的前期资金。这就是软件加密在国内流行的重要原因。