【网络安全】网络安全之密码学

  • 格式:pdf
  • 大小:239.29 KB
  • 文档页数:4

【⽹络安全】⽹络安全之密码学

前⾔

⼀、密码学概述

现代

密码技术及应⽤已经涵盖数据处理过程的各个环节,如数据加密、

密码分析、数字签名、

⾝份识别、

零知识证明、

秘密分享等。通过

以密码学为核⼼的理论与技术来保证数据的机密性、完整性、可⽤性等安全属性。机密性指信息不泄漏给⾮授权的⽤户、实体或过程;

完整性指数据未经授权不能被改变,即信息在存储或传输过程中保持不被偶然或蓄意的删除、修改、伪造、乱序、重放、插⼊等操作所破坏;可⽤性是保证信息和信息系统可被授权实体访问并按需求使⽤的特性,即当需要时应能存取所需的信息。

这三个性质俗称CIA。除CIA外,其他安全属性还包括

不可否认性、认证性等。密码系统的保密性不依赖于对加密体制或

算法的保密,⽽依赖于密钥。

⼆、密钥体制的分类根据

加密密钥与

解密密钥的关系,密码体制可分为

对称密码体制和

⾮对称密码体制。

对称密码体制也称单钥或私钥密码体制,其

加密密钥和解密密钥相同,或实质上

等同,即从⼀个易推倒出另⼀个。常见的对称密钥算法

包括DES、3DES、IDEA、

AES、

RC4等。

⾮对称密码体制⼜称双钥或公钥密码体制,其

加密密钥和解密密钥不同,从⼀个很难推出另⼀个。其中,⼀个可以公开的密钥,称为公开密

钥,简称公钥;

另⼀个必须保密的密钥,称为私有密钥,简称私钥。典型的公私钥密码算法有

RSA、DSA、

DH、

ECC和

EIGamal等。按

明⽂的处理⽅式,可以将

对称密码体制分为

流密码和

分组密码。流密码也称为序列密码,是将明⽂消息按

字符逐位地加密,连续的处理输⼊明⽂,即⼀次加密⼀个⽐特或⼀个字节。

分组密码是将明⽂按组分成固定长度的块,⽤同⼀密钥和算法对每⼀块加密,每个输⼊块加密后得到⼀个固定长度的密⽂输出块,典型

的密码算法有DES、IDEA、

AES、

RC5、Twofish、

CAST-256、

MARS等。三、密钥管理

密码的种类繁多,⼀般可分为以下类型:

初始密钥( primary key),⼜称基本密钥(base key),是由⽤户选定或系统分配的到的,可在较长的时间(相对会话密钥)内使⽤;

会话密钥( session key)是通信双⽅在⼀次通话或交换数据时使⽤的密钥,可以由可信的密钥分发中⼼(KDC)分配,也可以由通信⽤户

协商获得;

密钥加密密钥(KEK)是对传输的会话或⽂件密钥进⾏加密的密钥;

主机主密钥(host master key)是对密钥加密密钥进⾏加密的密钥,它⼀般保存在主机处理器中。

推荐阅读链接

四、对称密钥算法

对称密码算法的

优点是

算法简单、计算量⼩、加密速度快、加密效率⾼、适合加密⼤量数据,明⽂长度与密⽂长度相等。它也存在⼀些

缺点:

1、通信双⽅钥进⾏加密通信,需要通过

秘密的安全信道协商加密密钥,⽽这安全信道可能很难实现

2、在有多个⽤户的⽹络中,任何两个⽤户之间都需要有共享的密钥,若每两个⽤户都采⽤不同的对称密钥,则

⽹络中的⽤户数越多,需要管理的密钥数越多越困难。

3、

⽆法解决对消息的篡改、否认等问题。DES(数据加密标准 data encryption standard)

它以64位的分组长度对数据进⾏加密,每个明⽂分组在64位长的密钥控制下进⾏加密变化,输出结果同样为64位长度的密⽂。由于64位

长的密钥中包括了8位奇偶校验位,所以实际密钥长度为56位。

3DES

它不是⼀种全新设计的算法,⽽是相对简单的执⾏三次DES来达到增加密钥长度及安全性。其第⼀、三次直接采⽤DES加密算法,⽽第⼆次

则是采⽤DES解密算法,从⽽得到密⽂。这种加密过程即采⽤“加密-解密-加密”过程,⼜被称为EDE⽅案。

根据实际使⽤密钥的数量不同,3DES⼜分为两⼤类:三个密钥的3DES和两个密钥的3DES,两个密钥的3DES中,k1和k3是相同的,则

三个密钥的3DES算法密钥长度为168位(56*3),⽽两个密钥的3DES算法密钥长度位112位。

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位的哈希输出值。⼀般下载操作系统镜像的时候,都会显⽰MD5值,来⽤户来

确定下载是否正确。检验⽂件下载是否正确:

Linux:

md5sum ⽂件名把内部的数据经过很复杂的过程,转换为32位的的⼗六进制数,可以标识⼀个⽂件(相差⼀个字母,都会相差很⼤很⼤,类似于雪崩效应)

win下,cmd进⼊终端,进⼊⽂件下载的路径,dir

certutil -hashfile ⽂件名 MD5将两个⽂件md5⽐较即可,

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%,但它更加安全。【Git 中的commit id就是运⽤SHA1算法计算的,可以通过哈希值找到对应的提交内容】

哈希函数⼀般⽤于密码的加密存储,数字签名,⽂件完整性验证(commit id)等。七、消息鉴别码

消息认证是证实⼀个收到的消息来⾃可信的源点,且

未被篡改、重放或延迟等。除哈希函数之外,

消息认证码和

数字签名都是常⽤的

消息认证技术。消息认证码或称消息鉴别码(Message Authentication Code, MAC)利⽤

密钥来⽣成⼀个固定长度的短数据块,并将该

数据块附加在消

息之后。

常见的

MAC函数是基于哈希函数的MAC,即

HMAC。

其典型应⽤是⽤在

“挑战/响应”⾝份认证中。

1、客户端向服务器发出⼀个验证请求

2、服务器接到此请求后⽣成⼀个

随机数并通过⽹络传输给客户端(此为挑战)

3、客户端⽤⾃⼰的密钥进⾏HMAC计算并得到⼀个结果作为认证传给服务器(此为响应)

4、服务器⽤存储在服务器中的客户密码对随机数进⾏

HMAC计算,如⼀致则认为客户端是合法⽤户

这⾥

客户端不直接⽤哈希函数对⾃⼰的密码计算后传递给服务器,服务器

再做同样的计算后对⽐来验证这样操作,防⽌。

消息鉴别码和哈希函数的

主要区别在于,消息鉴别码更像⼀种加密算法,它引⼊了密钥`,其安全性不完全依赖于所使⽤的HASH算法。

参考链接

⼋、数字签名

是指

附加在

数据单元上的⼀些数据,或是对数据单元所做的

密码变换,这种数据或变换能使数据单元的接收者确认数据单元来源和数据单元的

完整性,防⽌被⼈伪造。

基于

公钥的数字签名过程与

数据加密过程是不⼀样的,

数据加密过程中,发送者使⽤接收者的公钥加密所发送的数据,接收者使⽤⾃⼰的私钥来解密数据,⽬的是保证数据的机密性;

数字签名中,签名者使⽤⾃⼰的私钥签名关键性信息(如信息摘要)发送给接收者,接收者使⽤签名者的公钥来验证签名信息的真实

性。

参考链接: 、 、

九、HTTPS

数字签名和

数字证书可以⽤于

⽂件,当然也能⽤于

html⽹页数据。本⼈没有https相关开发经验,故不做深⼊探讨只是简单介绍下。

http的安全缺陷