《信息安全技术》读书笔记

Posted by 周思进 on June 7, 2021

之前阅读《信息安全技术》这一书时做的本地笔记,直接发下。对相关密码算法有个大概的了解,后面再针对具体概念按自己的理解梳理下。

密码学概述

现代密码技术及应用已经涵盖数据处理过程的各个环节,如数据加密、密码分析、数字签名、身份识别、零知识证明、秘密分享等。通过以密码学为核心的理论与技术来保证数据的机密性、完整性、可用性等安全属性。机密性指信息不泄漏给非授权的用户、实体或过程;完整性指数据未经授权不能被改变,即信息在存储或传输过程中保持不被偶然或蓄意的删除、修改、伪造、乱序、重放、插入等操作所破坏;可用性是保证信息和信息系统可被授权实体访问并按需求使用的特性,即当需要时应能存取所需的信息。这三个性质俗称CIA。除CIA外,其他安全属性还包括不可否认性、认证性等。

密码系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。


密钥体制的分类

根据加密密钥与解密密钥的关系,密码体制可分为对称密码体制和非对称密码体制。对称密码体制也称单钥或私钥密码体制,其加密密钥和解密密钥相同,或实质上等同,即从一个易推倒出另一个。常见的对称密钥算法包括DES、3DES、IDEA、 AES、RC4等。

非对称密码体制又称双钥或公钥密码体制,其加密密钥和解密密钥不同,从一个很难推出另一个。其中,一个可以公开的密钥,称为公开密钥,简称公钥;另一个必须保密的密钥,称为私有密钥,简称私钥。典型的公私钥密码算法有RSA、DSA、DH、ECC和EIGamal等。

按明文的处理方式,可以将对称密码体制分为流密码和分组密码。流密码也称为序列密码,是将明文消息按字符逐位地加密,连续的处理输入明文,即一次加密一个比特或一个字节。分组密码是将明文按组分成固定长度的块,用同一密钥和算法对每一块加密,每个输入块加密后得到一个固定长度的密文输出块,典型的密码算法有DES、IDEA、AES、AES、RC5、Twofish、CAST-256、MARS等。


密钥管理

密码的种类繁多,一般可分为以下类型:初始密钥(primary key),又称基本密钥(base key),是由用户选定或系统分配的到的,可在较长的时间(相对会话密钥)内使用;会话密钥(session key)是通信双方在一次通话或交换数据时使用的密钥,可以由可信的密钥分发中心(KDC)分配,也可以由通信用户协商获得;密钥加密密钥(KEK)是对传输的会话或文件密钥进行加密的密钥;主机主密钥(host master key)是对密钥加密密钥进行加密的密钥,它一般保存在主机处理器中。


对称密钥算法

对称密码算法的优点是算法简单、计算量小、加密速度快、加密效率高、适合加密大量数据,明文长度与密文长度相等。它也存在一些缺点:
1、通信双方要进行加密通信,需要通过秘密的安全信道协商加密密钥,而这安全信道可能很难实现
2、在有多个用户的网络中,任何两个用户之间都需要有共享的密钥,若每两个用户都采用不同的对称密钥,则网络中的用户数越多,需要管理的密钥数越多越困难。
3、无法解决对消息的篡改、否认等问题。

AES (高级加密标准 advanced encryption standard)
AES是具有可变分组长度和可变密钥长度的迭代分组密码,其分组长度和密钥长度均可独立地设定为32位的任意倍数,最小值为128位,最大值为256位。为满足AES的要求,限定分组长度128位,密钥长度可以位128、192和256位,分别称为AES-128、AES-192、AES-256,其内部采用的循环加密轮数分别为10、12和14.


非对称加密算法

公钥密码算法克服了对称密码算法的缺点,解决了密钥传递的问题,大大减少了密钥持有量,并且提供了对称密码技术无法或很难提供的认证服务(如数字签名),其缺点是计算复杂,耗用资源大,并且回导致密文变长。关于公钥算法,有几种常见的误解:
1、公钥密码更安全。任何一种现代密码算法的安全性都依赖于密钥长度
2、公钥算法使得对称密码算法称为过时的技术。公钥算法计算速度较慢,加密数据的速率较低,通常用于密钥管理和数字签名。实际应用中,人们通常将对称密码和公钥密码结合起来使用,对称密码算法将长期存在。
3、使用公钥密码实现密钥分配非常简单。使用公钥密码也需要某种形式的协议,通常包含一个可信中心,其处理过程并不比传统密码的密钥分配过程简单。
RSA密钥长度:512、768、1024、2048、5120、21000、120000


哈希函数

前面介绍的对称密码和非对称密码,主要是针对窃听、业务流分析等形式的威胁,解决消息的机密性问题。而实际的系统和网络还可能受到消息篡改、冒充和抵赖等形式的攻击。哈希函数是进行消息认证的基本方法,其主要用途是消息完整性检测和数字签名。
哈希函数接受一个消息作为输入,产生一个称为哈希值的输出,也可称为散列值、消息摘要。更准确的说,哈希函数是将任意有限长度比特串映射为固定长度的串。

MD5
MD系列算法是Ron Rvest设计的单向哈希函数,包括MD2、MD3、MD4、MD5,其中MD5是MD4的改进版,两者采用了类似的设计思想和原则,对于任意长度的速入消息M,都产生长度为128位的哈希输出值。

SHA (Secure Hash Algorithm 安全哈希算法)
包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512 几种单向哈希算法,后面4种算法有时被合并称为SHA-2。SHA-1、SHA-224、SHA-256适用于长度不超过2^64 二进制位的消息,SHA-384和SHA-512适用于长度不超过2^128 二进制位的消息。
SHA-1算法处理与MD5算法类似,对输入消息按512比特的分组位单位进行处理,输出160位的哈希值。尽管SHA-1算法比MD5算法的速度钥慢25%,但它更加安全。
哈希函数一般用于密码的加密存储,数字签名,文件完整性验证等。


消息鉴别码

消息认证是证实一个收到的消息来自可信的源点,且未被篡改、重放或延迟等。除哈希函数之外,消息认证码和数字签名都是常用的消息认证技术。
消息认证码或称消息鉴别码(Message Authentication Code, MAC)利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。
常见的MAC函数是基于哈希函数的MAC,即HMAC。 其典型应用是用在“挑战/响应”身份认证中。
1、客户端向服务器发出一个验证请求
2、服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为挑战)
3、客户端用自己的密钥进行HMAC计算并得到一个结果作为认证传给服务器(此为响应)
4、服务器用存储在服务器中的客户密码对随机数进行HMAC计算,如一致则认为客户端是合法用户
这里客户端不直接用哈希函数对自己的密码计算后传递给服务器,服务器再做同样的计算后对比来验证这样操作,防止重放攻击。
消息鉴别码和哈希函数的主要区别在于,消息鉴别码更像一种加密算法,它引入了密钥,其安全性不完全依赖于所使用的HASH算法。


数字签名

是指附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换能使数据单元的接收者确认数据单元来源和数据单元的完整性,防止被人伪造。
基于公钥的数字签名过程于数据加密过程是不一样的,在数据加密过程中,发送者使用接收者的公钥加密所发送的数据,接收者使用自己的私钥来解密数据,目的是保证数据的机密性;在数字签名中,签名者使用自己的私钥签名关键性信息(如信息摘要)发送给接收者,接收者使用签名者的公钥来验证签名信息的真实性。