密码学身份鉴别
一、身份认证
身份验证又称“验证”、“鉴权”,是指通过一定的手段,完成对用户身份的确认。
身份认证分为三类:
-
实体所知
是最为广泛的方法,因为其成本低,实现简单,所以一般应用在密码、验证码等。
该方法面临的威胁较大,如暴力**、木马等。
-
实体所有
实体所有是安全性较高、成本较高的一类,主要应用在IC卡、门禁卡等。
缺点是实体所有因为存在固体实物,因此会面临着损坏和被复制的风险。
另外,数字签名是在网络传输过程中进行身份认证,属于实体所有的一种认证方式。数字签名的目的是为了防止数据被“否认”,数字签名包含生成签名和验证签名两部分,注意不是邮件尾部那种签名。
-
实体特性
实体特性是安全性最高的一种方式,通常采用生物识别方法进行验证。主要应用在指纹、虹膜、声波特征等验证方式。
实体特性鉴别的准确性和效率取决于开发过程中的算法特征。
实体特性的鉴别方法为:错误拒绝率(FRR)、错误接受率(FAR)、交叉错判率(CER)
二、数字证书
概念:数字证书是指在互联网通讯中,标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。因此,数字证书又称数字标识。
作用:数字证书对网络用户在计算机网络交流中的信息和数据等,以加密或解密的形式,保证了信息和数据的完整性和安全性。
简单的流程:第一步,把个人信息和公钥提交到某权威机构的证书中心;
第二步,这个中心用自己的私钥将提交过来的信息加密而形成数字证书。
权威机构的组成部分:
1、PKI
公钥基础设施的简称。PKI利用公开秘钥技术建立的、提供信息安全服务的在线基础设施。它利用加密、数字签名、数字证书来保护应用、通信或事务处理的安全。
2、CA
PKI的核心,主要职责为:签发证书、更新证书、管理证书(撤销、查询、审计、统计)、验证数字证书、黑名单认证(CRL)、在线认证(OCSP)。
其中,CRL即证书撤销列表,也称“证书黑名单”,存放被撤销证书的***,证书有效期内因某种原因(如人员调动、私钥泄露等),导致证书不再真实可信,因此需要进行证书撤销。
3、RA
受理用户的数字证书申请:对证书申请者身份进行审核并提交CA制证
提供证书生命期的维护工作:受理用户证书申请、协助颁发用户证书、审核用户真实身份、受理证书更新请求、受理证书吊销
4、证书库
证书存放、管理信息的存储库,提供了证书的保存、修改、删除和获取的能力
数字证书的申请过程:Alice和Bob通讯,Bob需要对Alice进行身份认证,并确保自己拿到的是Alice的公钥。
完整流程如下:
-
Alice发送注册信息给RA
-
RA审查通过后发送给CA
-
CA将Alice个人信息、Alice公钥,可能还包括Alice的数字签名,打包成数字证书
-
CA将数字证书交给证书库保存
-
同时,CA将签发的数字证书下载凭证
-
CA将下载凭证交给RA
-
RA将下载凭证交回给Alice
-
Alice向CA提交下载证书申请和凭证
-
Alice从CA下载证书
-
Alice向Bob发送自己的证书
-
Bob验证证书
数字证书验证需要注意的几点:
1、由浏览器使用已经存储在其中的Root CA的公钥,来验证中间证书的数字签名
2、如果该证书的签发机构能够在信任签发机构中找到,则为可信任证书
3、如果查询不到,则从授权信息访问信息段中,获得该签发机构的数字证书
4、用获得的数字证书,来判断该授权机构的数字证书的签发机构是否能够在可信任签发机构中找到
5、如果找到,则该授权机构是可信的,并从授权机构的数字证书中获得授权机构的公钥
6、如果找不到,则重复第3步,继续查找
7、如果最终都没有找到可信机构,则为不可信证书
三、HTTPS
1、由Http加上TLS/SSL协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称秘钥等技术完成互联网数据传输加密,实现互联网传输安全保护。
2、用户通过http协议访问网站时,浏览器和服务器之间是明文传输。服务器安装SSL证书后,使用https加密协议访问网站,可**客户端浏览器到网站服务器之间的“SSL加密通道”(SSL协议)。
3、TCP包头格式:
4、三次挥手&四次握手:
-
三次握手:
第一次握手:客户端会发起SYN请求,向服务端请求建立连接,此时协议头主要内容为:SYN=1,ACK=0,Seq***为123456(随机生成的)
第二次握手:服务端接到请求后会进行响应,向客户端发起ACK响应,此时协议头主要内容为:SYN=1,ACK=1,Seq***为22222(随机生成的),Ack应答号为123457(第一次握手时,Seq***的值加1)
第三次握手:客户端接到服务端的ACK响应之后,会进行检查,查看Ack应答号是否是第一次握手时Seq***的值加1,如果不是则无法建立连接,如果是则重新向服务端发起ACK响应请求,此时协议头的主要内容为:SYN=0,ACK=1,Seq***为123457(第二次握手时的Ack应答号),Ack应答号为22223(为第二次握手时Seq***的值加1)
-
四次挥手:
第一次挥手:客户端发起FIN请求,向服务器请求断开连接,此时协议头主要内容为:FIN=1,ACK=0,Seq***为46(随机生成的)
第二次挥手:服务端响应一个ACK请求,表示已经接到了断开的请求,此时协议头主要内容为:FIN=0,ACK=1,Seq***为100(随机生成的),Ack应答号为47(即第一次挥手时序列加1)
第三次挥手:服务端同时会发起一个FIN请求,表示服务端即将断开连接,此时协议头主要内容为:FIN=1,ACK=1,Seq***为100(同第二次挥手),Ack应答号为47(同第二次挥手)
第四次挥手:客户端接到服务端的响应后,会进行检查,检查第二次和第三次挥手的协议头中的应答号是否为第一次挥手时的Seq***加1,之后会发起一个ACK响应请求,表示客户端知道服务端已经断开连接,此时协议头主要内容为:FIN=0,ACK=1,Seq***为47(为第二次挥手时Ack应答号的值),Ack应答号为101(为第二次挥手时Seq***加1)
四、Kerberos体系
1、Kerberos是一种网络认证协议,其设计目标是通过秘钥系统为客户机/服务器应用程序提供强大的认证服务。
2、优势:该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。
3、协议的安全主要依赖于参加者对时间的松散同步和短周期的叫做Kerberos票据的认证声明。
4、流程图:
5、流程:
-
客户端发送客户端名+TGS服务器名到AS
-
AS在数据库中检查是否有客户存在
-
如果用户存在,则生成临时秘钥K1
-
AS将客户端秘钥的Hash值作为KC(KeyClient)秘钥,加密K1,记为KC(K1)
-
AS产生TGT信息,TGT包括K1、客户端名、有效期
-
TGT会被加密,TGT加密的秘钥保存在AS和TGS上,作为一个固定秘钥Kkdc
-
AS发送K1和TGT信息到客户端
-
客户端进行验证,如果客户端秘钥正确,则生成正确的Hash值,并解密出K1
-
客户端用K1为秘钥,加密客户端名
-
客户端将K1加密的客户端名、TGT发送给TGS,获取SGT
-
TGS验证用户身份,用固定秘钥Kkdc解密TGT信息,获取TGT中的K1秘钥、客户端名、有效期
-
TGS从TGT中解密的K1秘钥,再解密从客户端传过来的由K1加密的客户端名,并与TGT信息中的客户端名对比判断
-
TGS产生SGT信息,SGT包含TGS为了本次服务生成的临时秘钥K2、客户端名、有效期
-
SGT用固定秘钥Ks为秘钥进行加密,其中Ks分别存放于AS、TGS和Web应用服务器,作为固定秘钥 (Ks很早之前就存在于这三个服务器中)
-
TGS用AS生成的临时秘钥K1为秘钥,加密K2
-
TGS将加密后的K2,SGT发送给客户
-
客户端先用秘钥K1解密加密的K2,再用K2秘钥加密客户端名
-
客户端将加密后的客户端名、SGT、时间戳发送给Web应用服务器
-
Web应用服务器有Ks秘钥,因此可以解密SGT,获得客户端名、K2秘钥、有效期
-
Web应用服务器通过K2秘钥解密由K2秘钥加密的客户端名,并与SGT中的客户端名对比判断
-
Web应用服务器利用K2秘钥加密时间戳,返回给客户端,并提供服务
-
客户端通过K2秘钥解密时间戳,验证Web应用服务器是合法服务器