安全认证与信息加密
计算机病毒、黑客、钓鱼网站以及网页仿冒诈骗等恶意威胁,给在线交易的安全带来了极大挑战。层出不穷的网络犯罪,引起人们对网络身份的信任危机。如何证明“我是谁?”、如何防止身份冒用等问题,日益成为人们关注的焦点。
实际中,一方面要保证信息的机密性,另一方面是保证信息的完整性和有效性,即要确认与之通信的对方身份的真实性, 以防止信息在传输过程中被窃取、篡改、仿冒和抵赖,这都需要认证(Authentication)。
为此,基于计算机科学、生物学和网络技术的信息与安全认证技术应运而生。
3.1认证技术
认证(Authentication)的基本思想:通过验证称谓者(人或事)的一个或多个参数的真实性和有效性,以验证称谓者是否是真实的,如下图所示。
3.1 认证概述
认证是防止主动攻击(如:伪造、篡改信息等)的重要手段。
认证的目的:
1、验证信息发送者是否合法真实,而不是冒充的,称为实体验证,包括信源、信宿的认证(识别)。
2、验证信息的完整性以及数据在传输或存储中是否被篡改、重放或延迟等。
各种应用信息系统中的第一道安全防线就是认证,故极为重要。
在认证系统中常用的参数有:口令、标识符、密钥、信物、智能卡、指纹、声纹、视网膜等。
对于长时间保持不变的参数(也称非时变参数,如:指纹、声纹、视网膜等),采用在保密条件下,预先产生、采集并存储的方式进行认证。
一般认为,利用人的生理特征参数进行认证(即生物认证)的安全性较好,但技术要求往往也较高。
3.2 报文认证
报文认证一种是基于密钥的认证技术。它必须使通信双方能够验证每份报文的发送方和接收方的身份真实性以及报文内容、时间的真实性和完整性。也就是说,通信双方要能够确定:
(1)报文是由议定的发送方发出的;
(2)报文是传送给议定的接收方;
(3)报文内容有无篡改或发生错误;
(4)报文是按确定的次序接收。
3.2.1 报文源的认证
通过收发双方共享的密钥实现。设A为报文的发送方,称为报文源;B为报文的接收方,称为报文宿。A和B共享保密的密钥为Ks。A的标识为IDA,要发送的报文为M,则B认证A的过程为:
A—>B:E(IDA ||M,Ks)
为使B能认证A,A在发送给B的每份报文中都加入一个IDA ,并用Ks加密后发送给B。
2、用公钥密码
只要发送方对每一份报文进行数字签名,接收方验证签名即可。
3.2.2 报文宿的认证
1、用对称密码
为使报文的接收方能够认证自己是否是已定的接收方,可在每份报文中,加入接收方的标识IDB:
A—>B: E (IDB ||M, Ks)
2、用公钥密码
发送方对每份报文用B的公开密钥KsB加密,因为只有B才能用其保密的私有密钥解密,所以若还原的报文是正确的,则B能确认自己是已定的接收方:
A—>B: E(IDB ||M, KsB)
3.2.3 报文内容的认证
报文内容认证是指:接收方能够确认报文内容的真实性,这时需使用认证码来进行认证。产生认证码有报文加密、消息认证码和散列(Hash)函数三种方法。
1.报文加密法
将整个报文加密后的密文作为认证码。在传统密码中,发送方A要发送报文给接收方B,则A用双方共享的保密密钥K对发送的报文M加密后发送给B:
A—>B : E(M,K)
只有A和B知道密钥K,其他人不能恢复出明文。另外,除B外只有A拥有K,故只有A能产生让B解密的密文,B相信该报文发自A。
攻击者不知道密钥K,无法改变密文中的数据位,使明文发生变化。如果B可恢复出明文M,则B可认为M中的每一数据位都未被改变。
这种报文加密方法既可提供保密性,又提供认证。
2.消息认证码法
消息认证码(Message Authentication Code,简称MAC)是消息内容M和保密密钥K的一个函数C的输出,即用C函数产生固定长度的MAC。
MAC=C(M,K)
即MAC是一种附加字串码。
假定通信双方共享密钥K,若发送方A向接收方B发送报文M,则A先计算出MAC,再将报文M和MAC一起发送给接收方B:
A—>B : M||MAC
B收到报文后,用相同的保密密钥K计算后得出新的MAC,并将其与收到的MAC进行比较。若二者相同,则说明:
(1)接收方可相信报文未被修改。如果攻击者改变了报文,这将使接收方计算出的MAC不等于接收到的MAC。
(2)接收方可相信报文来自议定的发送方。因为其他人不知道秘密密钥,无法产生有正确MAC的报文。
注意:上述方法中,报文是以明文形式发送的,故该方法只能提供认证,不能提供保密性。若要保密,可使用以下两种方法。
1)先用密钥K1和C算法产生MAC,再用密钥K2对报文M加密,然后,A将密文和MAC一起发送给B。即:
A—>B : E(M,K2)||C(M,K1)
2)在用C算法之前,先用密钥K2对报文M加密获得保密性,再用密钥K1和C算法产生MAC,然后,A将对报文M加密后的密文和MAC一起发送给B:
A—> B : E(M,K2)||C(E(M,K2),K1)
3. HASH函数(散列函数)法
散列函数是一种特殊的函数,它可将任意长度的输入字串转换成具有固定长度的输出字串,该定长的输出字串作为报文的认证码。
散列函数将在后面进一步讨论。
3.2.4 报文时间性认证
报文的时间性是指报文的顺序性,认证就是要接收方在收到一份报文后,能确认报文是按正确的顺序、无断漏和重复。时间性(顺序性)的认证方法有:
1.序列号
发送方在每条报文后附加序列号,接收方只有在序列号正确时才接收报文。
2.时间戳
发送方在第i份报文中加入时间参数Ti,接收方验证Ti的顺序是否合理,来确认报文的顺序是否正确。当报文包含的时间戳与接收方认为的当前时间足够接近时,认为收到的报文是新报文。(扣除网络延时)
3.随机数
每当A要发报文给B时,A先通知B,由B动态地产生一个随机数RB,并发送给A;A将RB加入报文中,加密后发给B;B收到报文后解密RB ,若解密所得RB与原RB一致,则确认报文的顺序正确。
这种方法适合于全双工通信,但不适合无连接的应用,因为它要求在传输之前必须先建立连接。
3.3 身份认证
用户身份认证是应用系统的第一道防线,它识别用户的合法性,阻止非法用户的访问。
3.3.1身份认证概述
身份认证分为:
1)用户与系统间的认证(常用,单向)
2)系统与系统之间的认证(随电商兴起)
身份认证中常采用的因素有:口令、信物、智能卡、指纹、声纹、视网膜等。
身份认证所采用的因素越多,认证的可靠性就越高。
3.3.2 口令认证
口令是最简单也是最常用的身份认证方法,用户的口令由用户自己设定。只要能正确输入口令,计算机就认为操作者是合法用户。
1.静态口令认证
静态口令其数据是静态的,且每次验证使用的验证方法都相同,容易被驻留在计算机内存中的木马程序或网络中的监听设备所截获。
属单因素认证机制,不够安全!
指用户每次登录系统时所用的口令都不同,是动态的,且一次有效。可用散列函数(HASH)产生“一次性口令”。如:
1991年美国的贝尔研究中心用DES加密算法,研制出基于MD散列算法的一次性口令身份认证系统——S/KEY。
1999年我国中科院的信息安全国家重点实验室(DCS中心),也研制成功具有独立知识产权的动态口令身份认证系统。动态口令身份认证系统为用户开展网上银行交易、电子商务等业务提供了极大方便。
3.挑战/应答式认证
每次客户请求认证时,认证服务器端都给客户端发送一个不同的“挑战”码,客户端收到这个“挑战”码后,根据客户端和服务器共享的密钥以及“挑战”码做出”应答”,服务器根据应答的结果,验证客户端的身份。
认证过程:
1) 客户向认证服务器发出请求,请求身份认证;
2) 认证服务器从用户数据库中查询用户是否是合法的用户;
3) 认证服务器产生一个随机数,作为“挑战”码,发送给客户;
3.3.3 利用信物的身份认证
1.智能卡认证
智能卡内置集成电路芯片,芯片中存有与用户身份相关的数据,合法用户随身携带,登录时将智能卡插入专用的读卡器验证用户的身份。(仍存在安全隐患)
2.USB Key认证 (USB接口)
基于USB Key的身份认证方式采用软硬件结合,USB Key内置有智能芯片,存储用户的密钥或数字证书,通过USB Key内置的密码算法,实现对用户身份的认证。(如:加密狗)
3.3.4 基于人类生物特征的身份认证
采用生物识别技术,通过人体固有的生理特性(如:指纹、面部、视网膜)和行为特征(如:笔迹、步态、声音)进行身份的鉴定。
1.指纹识别认证
每个人的(皮肤纹路)是唯一的,并且终身不变。依靠这种唯一性和稳定性,把一个人同其的指纹对应起来,通过将其指纹和预先保存在数据库中的指纹,用指纹识别算法进行比对,验证其真实身份。
2.视网膜识别认证
视网膜生物特征极其稳定,作为身份认证精确度高,它通过激光照射眼球的背面,扫描摄取几百个视网膜的特征点,经数字化处理后形成记忆模板存储于数据库中,认证时做比对验证。
3.声音识别认证
声音识别技术是一种行为识别技术,用声音录制设备反复不断地测量、记录某人声音的波形和变化,并进行频谱分析,经数字化处理后,做成声音模板存储起来,以识别该人的身份。
3.3.6 非对称密钥认证
有时需对系统外用户进行身份认证,如在分布式系统中。“系统外用户”即指预先没有在系统中注册的用户,但要求能对其身份进行认证。
在非对称密钥认证机制中每个用户有一对密钥,其中私钥由用户保密,公钥向所有人公开。用户如果能够向验证方证实自己持有私钥,就证明了自己的身份。
用作身份认证时,验证方需要用户对信息进行数字签名,即用户方以用户私钥作为加密密钥,对信息进行加密,传给验证方,而验证方根据用户方预先提供的公钥作为解密密钥,将用户的数字签名进行解密,若能解密则确认信息是该用户所发,进而认证该用户的身份。
3.6 数字签名
数字签名是附加在数据单元上的一种数据,这种数据能使接收者确认数据单元的来源和数据的完整性,并保护数据不被他人伪造。
3.6.1 数字签名原理
数字签名的本质是:该签名只有通过签名者的私有信息才能产生,也就是说,签名者的签名只能唯一地由他自己产生。
当收发双方发生争议时,第三方(仲裁机构)能根据消息上的数字签名,来裁定这条消息是否确实由发送方发出,从而提供抗抵赖服务。
数字签名可达到以下目的:
(1)消息来源可信:消息的接收者通过签名,可以确认消息确实来源于议定的发送者;
(2)不可伪造:签名应是独一无二的,其他人无法假冒或伪造;
(3)不可重用:签名是消息的一部分,不能被挪用到其他消息上;
(4)不可抵赖:签名者事后不能否认自己签过名的消息。
3.6.2 通过对称加密和仲裁第三方实现数字签名
设A与B通信,A对发送给B的文件数字签名,以向B证明是自己发送的,防止他人伪造。设A与仲裁者共享一个秘密密钥KAC,B与仲裁者共享一个秘密密钥KBC。
3.6.3 通过公钥密码体制实现数字签名
公钥密码体制使得数字签名不再需要第三方的签名和验证。实现过程如下:
1)A用其私钥加密消息,相当于对文件签名;
2)A将签名(加密)的消息发给B;
3)B用A的公钥解密消息,说明B能确认消息来源于A,相当于验证签名。
A的私钥只有他一个人知道,用私钥加密形成的签名,别人无法伪造,B用A的公钥能够解密,说明B确认消息的来源是A,且A无法否认他自己的签名。
注意,因为A的私钥只有他一个人知道,故这种签名无法重用在他人伪造发送的消息上。(如:领导签字)
3.6.4 通过公钥密码体制和散列函数实现数字签名
通过单向散列函数产生消息的指纹,用公钥密码算法对指纹加密,形成数字签名。实现过程如下:
1)A把消息M通过单向散列函数H,产生散列值,即消息指纹或消息认证码;
2)A用私钥加密散列值,形成数字签名;
3)A把消息和数字签名一起发给B;
4)B收到消息和数字签名后,用A的公钥解密数字签名S,再用单向散列函数H对消息M产生散列值;
5)最后B把自己产生的散列值和解密的数字签名相比较,看是否匹配,从而验证签名。
3.6.6 多重签名与数字签名标准DSS
有时同一消息需要多个人签名,这称为多重签名。多重签名的过程如下:
1)A用自己的私钥对消息的散列值进行签名;
2)B用自己的私钥对消息的散列值进行签名;
3)B把消息和自己的签名以及A的签名一起发给C;
4)C用A的公钥验证A的签名,用B的公钥验证B的签名。
DSS是数字签名算法的一种标准,它为计算和核实数字签名指定了一个数字签名算法(DSA)。
3.7 数字摘要
数字摘要是发送方对被传送的报文施加某种计算,产生一个报文的摘要值(又称报文摘要),并将此摘要值与原始报文一起发送给接收方,接收方应用此摘要值检验报文在网络传送过程中有否改变。
3.7.1数字摘要概述
采用散列Hash函数可将需加密的明文“摘要”成一长度为128bit的定长的密文(数字摘要),也称做数字指纹。不同的明文产生不同的摘要,而相同的明文产生的摘要必定相同,故把摘要作为验证明文的“指纹”。
(2)发送方用自己的私有密钥对摘要加密,形成数字签名。
(3)将原文和加密的摘要都发送给接收方。
(4)接收方用发送方的公钥对摘要解密,同时对收到的文件用SHA或MD5算法加密产生又一摘要。
(5)将解密后的摘要与收到的文件在接收方重新加密产生的摘要进行比较。如两者一致,则说明传送过程中文件没有被破坏或篡改过,否则,文件可能被篡改。
2、散列函数的安全特性
(1)一致性:相同的输入将产生相同的输出;
(2)随机性:消息摘要外观上看是随机的,以防被猜出源消息;
(3)唯一性(抗碰撞性):不可能找到两个不同的消息x、y,产生相同的消息摘要(即使得H(x)=H(y))。
(4)单向性:即给定任何x,易算出H(x)。但反向计算困难,即已知一个h值,想反向找出输入消息源x很难。
(5)抗修改性:对原数据的任何改动,都将引起摘要很大的变化。
3、针对哈希函数的攻击
1)对Hash函数的穷举攻击,给定Hash函数H(x)(即某个摘要)后,破译者尝试逐个地生成多个其他文件yi,然后计算这些明文yi的摘要,进行比较,使H(x)=H(yi)。
2)对Hash函数的修正分组攻击或差分分析攻击,这主要是利用Hash函数的代数结构和代数弱性质。
常用的散列函数有:消息摘要4(MD4)散列函数、消息摘要5(MD5)散列函数、安全散列函数(SHA-1)等。
3.7.3 MD5消息摘要算法
1、MD5算法描述
1990年,先提出MD4哈希算法,MD5是MD4的改进版,它比MD4更复杂,产生128位的摘要值。
MD5的作用:把大容量信息在用数字签名签署私钥前,就“压缩”成一种保密的形式。
MD5算法按512位分组来处理输入的信息,且每一分组又被分成16个32位的子分组,经过一系列运算后,算法的输出由四个32位的分组组成,将这四个32位分组级联后即生成一个128位的散列值(报文摘要)。
2、MD5算法分组过程
对于任意长度的明文,首先要进行填充(即填加位数),使其总长度恰好为一个比512的倍数仅小64bit的数(即448位),即要求填充的明文长度:N*512+448。
填充位数的方法:第一个位数填一个1,其余都填位数0,然后在这个结果后面,附上以64位二进制数表示的填充前明文长度。这样填充后,明文的长度恰好是512的整数倍,且保证不同明文在填充后不相同。
即:N*512+448+64=(N+1)*512。
3、MD5算法流程
1)对于512位的明文分组,MD5再将其分成16个32位的子分组。
2)MD5产生4个32位的链接变量,初始值记作A、B、C、D,分别为(用16进制表示):A=0x0,B=0x89abcdef,C=0xfedcba98,D=0x。
3)将子分组与链接变量进行四轮主循环运算(MD4只有三轮),每一轮进行16次操作,每次操作都包含一次非线性的函数运算。
4)每一轮主循环前,A、B、C、D先分别赋值给a、b、c、d。最后一轮的A、B、C、D输出将分别与a、b、c、d做求和运算,其结果作为处理下一个512位分组的初始值。
为在网上建立信任及信任验证机制,网上各方应有一个验证标识,这就是数字证书。数字证书是各实体(持卡人/个人、商户/企业、网站/银行等)在网上进行信息交流及在线交易活动的身份证明。
网上各方都信任的,专门负责数字证书的发放和管理,确保网上信息安全的机构称为数字认证中心(Certificate Authority,简称CA),其所发数字证书符合相应的国际标准,且具有唯一性。
3.8.1 CA组成与功能
CA负责产生、分配并管理所有参与网上交易的实体所需的数字证书。数字证书负责网上交易和结算中的安全,以建立电子商务各主体之间的信任关系。
1、CA的作用
CA中心可为每个使用公钥的用户发放一个数字证书,以证明证书中列出的用户名称与证书中列出的公钥相对应;CA中心的数字签名可防止伪造和篡改数字证书;作为可信赖的第三方,CA中心为用户提供权威、公正的认证。
1)注册服务器通过Web Server建立站点,为客户提供每天24小时的服务,客户在网上提出证书申请和填写相应的证书申请表。
2)申请受理和审核机构负责接受客户证书申请并进行审核。
3)认证服务器负责数字证书的生成和发放,同时提供对所发放证书的管理、证书废止列表(CRL)的生成和处理等服务。
1)接收验证用户数字证书的申请;
2)确定是否接受用户数字证书的申请并审核;
3)向申请者颁发、拒绝颁发数字证书;
4)接收、处理用户的数字证书更新请求;
5)接收用户数字证书的查询或撤销请求;
6)产生和发布证书废止列表(CRL);
7)数字证书的归档;
8)密钥归档;
9)历史数据归档。
3.8.2 数字证书
它由CA发行,用于在网上识别对方的身份,提供一种在互联网上验证身份的方式,其作用类似于驾照或身份证。
数字证书是经CA数字签名的,包含公开密钥拥有者信息以及公开密钥的一种文件。
数字证书包含一个公开密钥、密钥的有效时间、用户名称、CA的数字签名、CA名称以及证书的序列号等信息。
CA数字证书遵循 ITUT X.509国际标准。
X.509数字证书的内容:
1)证书的版本信息;
2)证书的序列号,每个证书都有一个唯一的证书序列号;
3)证书所使用的签名算法;
4)证书的发行机构名称,命名规则采用X.500格式;
5)证书的有效期,通用证书采用UTC时间格式,计时范围为:1950-2049;
6)证书所有人的名称,证书所有人的公开密钥,证书发行者对证书的签名。
3.8.3 密钥管理
密钥管理包括:使用密钥协议分发密钥,在通信系统之间对密钥的长度、生存期和密钥算法进行协商。
密钥管理体现在从密钥的产生到密钥的销毁的各个方面,如:管理体制、管理协议、密钥分配、更换和注入等。
3.8.4 PKI
PKI(Public Key Infrastructure)称做公钥基础设施。它采用证书管理公钥,通过第三方的可信任机构——CA认证中心,把用户的公钥和用户的其他标识信息绑定在一起,在Internet网上验证用户的身份,实现密钥的自动管理,保证网上数据的安全传输。
PKI具体由公开密钥密码技术、数字证书、CA和安全策略等部分共同组成。
一、SHA1算法概述
SHA1对任意长度明文的预处理和MD5的一样,即预处理后明文长度是512位的整数倍。不同的是:
1)SHA1的原始报文长度不能超过264。
2)SHA1生成的是160位的报文摘要。
3)SHA1算法简单且紧凑,易在硬件上实现。
● 安全性:SHA1产生的摘要比MD5长32位。若两种散列函数在结构上没有问题,SHA1比MD5更安全。
● 速度:两种算法都是考虑以32位处理器为基础的系统结构。但SHA1的运算步骤比MD5多了16步,而且SHA1记录单元的长度比MD5多了32位。因此若是以硬件来实现SHA1,其速度大约比MD5慢25%。
● 简易性:两种算法在实现上不需要很复杂的程序或大量的存储空间。但总体讲,SHA1对每一步骤的操作描述比MD5稍为简单。
二.SHA1算法流程
对于任意长度的明文,SHA1先对其进行分组,使得每一组的长度为512位,然后对这些分组反复运算。对于每个明文分组的运算过程如下:
(1)将512位的明文分组划分为16个子分组,每个子分组为32位。
(2)申请5个32位链接变量,记A、B、C、D、E。
(3)16个子分组扩展为80份,并进行4轮运算。
(4)链接变量与初始链接变量进行求和运算。
(5)链接变量作为下一个分组输入重复以上操作。
(6)最后5个链接变量里面的数据就是SHA1摘要。
三.SHA1分组过程
对于任意长度的明文,SHA1的明文分组过程与MD5类似,首先需对明文添加位数,使明文总长度为448(mod 512)位。在明文后第一个添加l,其余都是0。然后将真正明文的长度(没有添加位以前的明文长度)以64位表示,附加于前面已添加过位的明文后,此时的明文长度正好是512位的倍数。
SHA1有4轮运算,每一轮包括20个步骤(共80步),当最后一个明文分组计算完成后,链接变量A,B,C,D,E中的数据就是散列值(即160位的数字摘要)
到此这篇消息认证码(消息认证码无法提供的安全属性是)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/te-aq/58944.html