前言

随着互联网用户的持续增长,基于互联网的应用逐步在电子商务、电子政务以及各个领成熟,新的业务模式层出不穷。

由于互联网的开放型,随之而来的安全问题越来越紧迫的摆在我们的面前:用户帐号/密被恶意窃取;私有或机密资料被泄露或被篡改;个人身份被假冒而造成损害;钓鱼网站层出穷,用户安全无法得到保证,同时由于证据有限而增加纠纷及解决成本;进而由于感受到网安全方面的弱点,造成用户裹足不前,影响网上应用的进一步发展。

基本概念与相关术语

数据安全的四要素

机密性: 防止数据被未授权的查看者理解,从而在传输和存储过程中,防止有意或者无意的信息内容泄露,保证信息的安全性;

完整性: 防止数据在存储和传输的过钟中受到非法的篡改。这种篡改既包括无授权者的篡改,也包括具备有限授权者的越权篡改。些意外的错误也可能导致信息错误,完整性检查应该能发现这样的错误;

身份验证(Authentication): 通过检查户的某种印鉴或标识,判断一份数据是否源于正确的创建者;

不可抗抵赖性: 必须有一个安全手段可以保证网络上的交易或者其他操作不被否认,对相关操作留有证据;

把机密性、身份验证、完整性、不可抵赖性结合起来,能够组成一个安全的网络传输环境。

数据加解密

相关术语介绍:

明文: 需要被隐蔽的消息;

密文: 明文经变换形成的隐蔽形式;

加密: 把明文信息转化为密文的过程;

解密: 把密文信息还原成明文的过程;

密钥: 在明文转换为密文或将密文转换为明文的算法中输入的参数;

加密算法根据其工作方式的不同,可分为对称加密非对称加密算法两种;

对称密钥加密

在对称加密算法中,通信双方共享一个秘密,作为加密/解密的密钥。这个密钥既可以是自接获得的,也可以是通过某种共享的方法推算出来的。所以,对称加密算法也称为单密钥算法

由于任何具有这个共享密钥的人都可以对密文进行解密,所以,对称加密算法的安全性依赖于密钥本身的安全性。由于这种加密方法加解密使用同一个密钥,所以发送人和接受人在开始传输数据之前必须先交换密钥。数据传输和接收通常在很多人之间进行的,每一对发送方和接收方都要有他们之间专用的密钥,因此这种加密算法对密钥的需求量较大。

再加以对称密钥加密方法执行效率一般都比较高,因此对称密钥加密算法适用于能够安全地交换密钥且传输数据量较大的场合。

对称密钥典型算法

算法

密钥

开发者

备注

DES

56位

IBM为美国政府(NBS/N IST)开发

很多国家政府强制性使用(但其实不安全)

3DES

3*56位

IBM为美国政府(NBS/N IST)开发

应用3次DES(但其实不安全)

CAST

40-256位可变

北方通信

比DES稍快

Rivest算法

可变

Ron Rivest(RSA数据安全)

专利细节未公开

RC 5

Ron Rivest(RSA数据安全)

AES

Joan Daem en/Vincent Rijmen

数字加密标准(DES)应用范围很广。它是由IBM公司在20世纪70年代开发出来的随后被美国政府采纳为美国国家标准。但这个算法有一个很致命的问题,就是算法没有公开只有美国国家安全局知道具体的算法,并且在批准这一算法用于公共用途时美国国家安全局把DES的密钥长度由原来的64位缩短为56位,这更加重了人们的担心。

3DES 又称之为“三重数字加密算法”,是 DES算法的加强算法。密钥长度达到了 168位与56位的 DES算法相比,安全性要高出不少,但出于安全考虑,国内的大部分政企机构并不会使用DSE与3DES加密算法,而是会使用安全程度更高的AES算法;

AES 又称 Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。目前已然成为对称密钥加密中最流行法之一。该算法为比利时密码学家 Joan Daemen 和 Vincent Rijmen 所设计。

目前的许多CPU默认支持AES的硬件卸载(Hardware Offload),在处理AES的加密数据包时直接在硬件层面处理,不需要经过内核处理和用户空间的处理,这极大的减少了对CPU性能的消耗并加快了AES数据包的加解密速度;

e4714b19e8a33db3aeabd53d88bd0a49

非对称密钥加密

非对称加密算法也称为公开密钥算法。此类算法为每个用户分配一对密钥:一个私有密钥和一个公开密钥。

私有密钥是保密的,由用户白己保管。公开密钥是公诸于众的,其本身不构成严格的秘密。这两个密钥的产生没有相互关系,也就是说不能利用公开密钥推断出私有密钥。

用两个密钥之一加密的数据,只有用另外一个密钥才能解密。发送方发送数据时,可以将准备发送给接收方的数据用接收方公开密钥进行加密,接收方接收到加密数据后用其私有密钥进行解密。

使用非对称加密算法的时候,用户不必记忆大量的共享密钥,只需要知道自己的密钥和对方的公开密钥即可。虽然处于安全目的,仍然需要一定的公开密钥管理机制,但是在降低密钥管理复杂性方面,非对称算法具有相当的优势。

非对称密钥加密的方式安全程度极高,但非对称加密算法的弱点在于其速度非常慢,吞吐量低。因此不适宜于对大量数据的加密。

非对称密钥典型算法

算法/协议

密钥长度

用途

安全性

RSA

1024/2048/4096 位

数字签名
密钥交换

高,大数分解

DSA

1024/2048 位

数字签名

高,离散对数

ECC(椭圆曲线加密)

160-521 位

SSL/TLS、区块链

超高(比 RSA 更高效)

SM2(国产非对称加密)

256 位

中国金融系统

DH

密钥交换

高,完全向前保密

非对称密钥的算法有好几个,其中最著名和最流行的要数RAS和DH了(国内官方要求使用国密算法)

RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪・萨莫尔(Adi Shamir)和德·阿德曼(LeonardAdleman)一起提出的。RSA算法是第一个能同时用于加密和数字的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的全性依赖于大数的因子分解。

DH算法这里需要注意一下,它并不是一种非对称加密算法,而是一种基于非对称密码学原理的密钥协商协议。与RSA不同的是,RSA可加密数据,而DH不直接加密数据,仅生成共享密钥,通常会与RSA搭配使用,前者管理身份和加密密钥,后者确保密钥安全传输;DH协议的一般过程如下:

1、相互产生密钥对。

2、交换公钥。

3、用对方的公钥和自己的私钥运行 DH算法得到另外一个密钥X(这里的奇妙之处是这个值两端的计算都是一样的)。

4、A产生对称加密密钥,用密钥X加密这个对称的加密密钥并发送到 B

5、B用密钥X解密,得到对称的加密密钥

6、B用这个对称的加密密钥来解密A的数据。

综上,对称加密技术有传输效率高,但高度依赖共享密钥,而非对称加密技术传输效率低下但安全性极高,有没有中合的方法,使得即有高效的传输速度又有极高的安全性呢?(有的兄弟,有的)那就是组合加密技术

image

组合加密技术

组合加解密技术将对称密钥算法的数据处理速度和不对称密钥算法对密钥的保密功能两方面的优势结合在一起。

比如A和B需要交换大量数据,并且这些数据必须严格保密。如果采用不对称加密算法则需要花费的时间较长;而交换对称加密算法的密钥的安全问题又让人不放心。

组合加密技术很好地解决了这个问题。首先,发送方选择一个对称密钥用于对需要传输的大量数据进行加密,同时通过不对称加密方法用接收方的公钥将该用于传输大量数据的对称密明加密,和加密好的数据一起传送给接收方。这样一来,接收方就能够接收到通过非对称加密方法加密的对称密钥并用此对称密钥来解密接收到的数据。

接收方收到数据后首先用自己的私钥解密得到对称加密密钥,然后用该对称加密密钥来解密发送方的加密数据。
这就使得既能够安全地交换对称密钥,又能够加快加密工作的处理效率。使用这种方式的技术有很多,其中使用最多的就是IPSec VPN了;

image

数据完整性的实现

为了保证数据的完整性,我们通常使用摘要算法(HASH)。采用HASH函数对一段长度可变的数据进行 hash 计算,会得到一段固定长度的结果,该结果称之为原数据的摘要,也称为消息验证码(MessageAuthentication Code,MAC)。摘要中包含了被保护数据的特征,如果该数据稍有变化,都会导致最后计算的摘要不同。另外HASH函数具有单向性。也就是说无法根据结果导出原始输入,因而无法构造一个与原报文有相同摘要的报文。

总体而言,HASH算法具有如下三个特征:

1、无法根据结果推出输入的消息。

2、无法人为控制某个原始数据的 HASH 值等于某个特定值

3、无法找到具有相同摘要的两个不同输入。

如果你想保证一条消息在传输过程中不被篡改,可以在将它发给接受者之前先计算出该消息的摘要,然后将这个摘要随消息一起发送给接收者。接收者收到消息后,先计算出该消息的要,然后将计算出的摘要值和接收到的摘要值进行比较,如果两个值相等就说明该消息在传输过程中没有被篡改。

HMAC算法则进一步提高了数据安全性,该算法是原来单输入的HASH算法的改进:
该算法需要收发双方共享一个MAC密钥,计算摘要时,除了数据报文外,还需要提供MAC密钥。这样计算出来的 MAC 值不但取决于输入的数据报文,还取决于MAC 密钥参数。

如果黑客截获了报文,修改了报文内容,伪造了摘要,由于不知道MAC密钥,黑客无法构造出正确的摘要。接收方重新计算报文摘要时,一定可以发现报文的MAC值与携带的MAC值是不一致的。

数字签名与数字证书

数字签名
数字签名是指使用密码算法对待发的数据进行加密处理,生成一段信息,附着在原文上一起发送,这段信息类似现实中的签名或印章,接收方对其进行验证,判断原文真伪,数字签名技术是不对称加密算法的典型应用。

因为非对称加密算法直接对原始数据进行加密处理效率较低,一般而言,数字签名的过程是:数据发送方首先对数据进行 HASH 运算,然后使用自己的私钥对HASH值进行加密处理,然后将该加密的HASH值和原始数据一起发送给接收方,完成对数据的合法“签名”。数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。

数字签名技术是在网络虚拟环境中确认身份的重要技术,完全可以代替现实过程中的“亲笔签字”,在技术和法律上有保证,可以保证信息传输的完整性,确认发送者的真实身份并防止交易中的抵赖发生。

数字签名过程:

1、发送方首先将待发送的原始数据进行HASH运算,得到该原始数据的MAC值,然后用自己的私钥对该MAC值进行加密,得到一个密文串。将该密文串附在原始报文后面一起发送给接收方。

2、接收方接收到该内容后,也对原始报文内容进行HASH运算,得到一个MAC值,然后用发送方的公钥对接受报文中的密文串进行解密,比较解密后的值和运算得到的MAC值是否相等,如果相等说明报文确实是合法的发送方的,且报文在传送过程中没有被修改。

image

数字证书
数字证书相当于电子化的身份证明,它就和身份证差不多。证书里面是一些帮助确定身份的信息资料。从技术上讲,数字证书就是:把公钥和身份绑定在一起,由一个可信的第三方对绑定后的数据进行签名,以证明数据的可靠性。

数字证书主要包含下列内容:发信人的公钥、发信人的姓名、证书颁发者的名称、证书的序列号、证书颁发者的数字签名、证书的有效期限等。其可以用来验证某个用户或某个系统的身份,也可以用来加密通信的内容。

要想获得一份数字证书,必须要向某个颁证机构申请。如果申请成功,颁证机构将用其私钥给申请者签发一份证书。申请过程将生成两个密钥,一个是申请者的公钥,一个是申请者的私钥。公钥将被写进申请者的数字证书中,而私钥需要申请者自己收好防止盗用。

X.509证书

国际标准化组织ITU的X.509标准制定了标准证书格式。该标准格式经过了改进和发展后出现过 V1.0、V2.0、V3.0三个版本。目前最常用的是 V3.0版本,此版本的证书被称为K509v3证书。该格式主要包含了如下内容:

Subject Name: 个体的名字;

Subject’s public key info: 公钥信息,包括算法、密钥参数(密钥长度)、公钥;

Signature: 由认证机构提供的对证书的数字签名,使用认证机构提供的公钥证书可以验证数字签名的正确性,从而确保了证书的完整性的权威性;

Version: 版本,包括V1.0、V2.0、V3.0;

Certificate Serial Number: 证书序列号,在同一个认证机构签发的证书中唯一;

Period ofvalidity: 有效期,包括开始时间和结束时间;

image

公钥基础设施PKI

概述

PKl(Publc Key Infrastructure)即“公开密钥体系”,它不是一个单一的产品,也不是个单一的协议、技术,它是一个签发证书、传播证书、管理证书、使用证书的环境。PKI采用了多种技术,由多个实体协同运作的一种环境,包含软件、硬件、人、企业、多种的服务、多种应用。PKI保证了公钥的可获得性、真实性、完整性。

完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。

PKI体系结构

一个PKI体系由终端实体、证书机构、注册机构和PKI存储库四类实体共同组成。

终端实体: PKI产品或服务的最终使用者,可以是个人、组织、设备(如路由器、交换机)或计算机中运行的进程。

证书机构CA: PKI的信任基础,是一个用于签发并管理数字证书的可信实体。其作用包括:发放证书、规定证书的有效期等。

注册机构RA: CA的延伸,可作为CA的一部分,也可以独立。RA功能包括个人身份审核、CRL管理、密钥对产生和密钥对备份等。PKI国际标准推荐由一个独立的RA来完成注册管理的任务,这样可以增强应用系统的安全性。

PKI存储库:包括LDAP(Lightweight DirectoryAccess Protocol,轻量级目录访问协议)服务器和普通数据库,用于对用户申请、证书、密钥、CRL和日志等信息进行存储和管理,并提供一定的查询功能。

PKI工作过程

针对一个使用PKI的网络,配置PKI的目的就是为指定的实体向CA申请一个本地证书并由设备对证书的有效性进行验证。当由于用户姓名的改变、私钥泄漏或业务中止等原因,要存在一种方法将现行的证书撤消,即撤消公开密钥及相关的用户身份信息的绑定关系。

在PKI中,所使用的这种方法为证书废除列表。任何一个证书被废除以后,CA就要发布CRL来声明该证书是无效的,并列出所有被废除的证书的序列号。CRL提供了一种检验证书有效性的方式。

🔔 PKl的工作过程

1、实体向RA提出证书申请;

2、RA审核实体身份,将实体身份信息和公开密钥以数字签名的方式发送给CA;

3、CA验证数字签名,同意实体的申请,颁发证书;

4、RA接收CA返回的证书,发送到LDAP服务器以提供目录浏览服务,并通知实体证书发行成功;

5、实体获取证书,利用该证书可以与其它实体使用加密、数字签名进行安全通信;

6、实体希望撒消自己的证书时,向CA提交中请,CA批准实体撤消证书,并更新CRL发布到 LDAP 服务器;

证书的验证

在使用每一个证书之前,必须对证书进行验证。证书验证包括对签发时间、签发者信息以及证书的有效性等几方面进行验证。证书验证的核心是检查CA在证书上的签名,并确定证书在有效期内,而且未被废除,因此在进行证书验证操作之前必须首先获取CA证书。

配置证书验证时可以设置是否必须进行CRL检查,如果配置为使能CRL检查,则检验证书的有效性,必须通过CRL判断。