信息安全之基础术语

一.  SSL

SSL是用于服务器之上的一个加密系统,它可以确保在客户机与服务器之间传输的数据仍然是安全与隐秘的。要使服务器和客户机使用SSL进行安全的通信,服务器必须有两样东西:密钥对(Key pair)和证书(Certificate)

  • 密钥对:一个密钥对包括一个公钥和一个私钥。这两个密钥用来对消息进行加密和解密,以确保在因特网上传输时的隐秘性和机密性。
  • 证书:用来进行身份验证或者身份确认。证书可以是自签(self-signed)证书,也可以是颁发(issued)证书。自签证书是为自己私有的Web网络创建的证书。颁发证书是认证中心(certificate authority, CA)或者证书签署者提供(颁发)给你的证书。

SSL的工作过程:SSL使用安全握手来初始化客户机与服务器之间的安全连接。在握手期间,客户机和服务器对它们将要为此会话使用的密钥及加密方法达成一致。客户机使用服务器证书验证服务器。握手之后,SSL被用来加密和解密HTTPS(组合SSL和HTTP的一个独特协议)请求和服务器响应中的所有信息,包括:(1)、客户机正在请求的URL;(2)、提交的表单的内容;(3)、访问授权信息(比如用户名和密码);(4)、所有在客户机与服务器之间发送的数据。

SSL协议握手层实现是:

  1. client端向server端发送的第一个开始信息是hello单词以及SSL的版本号、client端支持的加密算法、一个client端自动生成的伪随机号等,向server端表示一个新会话连接的开始。
  2. server端根据client端发过来的信息判断是否接受这个新的会话,不需要就断开连接,client会继续发送hello建立会话,直到server接收这个会话连接或到自己放弃这个会话连接。如果server答应这个会话建立,则server在回应对方信息时将含有未来数据加密所必须的任何数据,如版本号、支持的加密算法、一个服务器端自动生成的伪随机数等;
  3. client端会依据收到的来自server端的数据产生主key,并使用server端的public key加密这个主key后,将加密过的key传给server,因为只有server有public key的另一把private key,所以只有真正的server能解密;
  4. server解密成功后,返回给client一个用主key认证的数据,以此数据让client端认证自己;
  5. 如果是双认证模式,还要采取方式对另一边也进行认证;
  6. 最后双方都要发送done或over信息表示握手结束,如图。
2016030311484728

图3 SSL协议握手层实现过程图

二.  加解密

加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

1.对称加密

对数据加密的技术分为两类,即对称加密(私人密钥加密)非对称加密(公开密钥加密)。对称加密以数据加密标准(DES,Data Encryption Standard)算法为典型代表,非对称加密通常以RSA(Rivest Shamir Adleman)算法为代表。对称加密的加密密钥和解密密钥相同,而非对称加密的加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密。

对称算法又可以分为两种:流加密算法和块加密算法流加密算法是将明文与一个密钥流进行XOR(逻辑异或)运算生成密文将密文与相同的密钥流进行XOR运算即可还原成明文。流加密算法在当今应用不是很广泛,比较著名的有RC4和A5算法。块加密算法是加密算法中应用最广泛的类型。块加密算法每次是对固定大小(如64位、128位、256位等)的位块进行加密。块加密算法将明文分成m个块,对每个块进行相同的变换,从而产生m个密文块。

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。缺点是:交易双方都使用同样密钥,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一密钥,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法包括:DES、3DES、TDEA、Blowfish、RC5、IDEA、AES、CAST、RC2、RC4。

2.不对称加密

非对称加密算法(asymmetriccryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥,公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私钥对数据进行验签。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

非对称加密工作原理:(1)、A要向B发送信息,A和B都有产生一对用于加密和解密的公钥和私钥;(2)、A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A;(3)、A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥;(4)、A将这个信息发给B(已经用B的公钥加密信息);(5)、B收到这个消息后,B用自己的私钥解密A的信息。其它所有收到这个报文的人都无法解密,因为只有B才有B的私钥。

 非对称加密算法包括:RSA、Elgamal、背包算法、Rabin、DH、ECC(椭圆曲线加密算法)、DSA。

三.  摘要算法

消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络相同上使用。现在,消息摘要算法主要应用在“数字签名”领域,作为对明文的摘要算法

消息摘要算法的特点:消息摘要是把任意长度的输入柔和而产生长度固定的伪随机输入的算法。无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160个比特位的输出,SHA-1的变体可以产生192比特位和256比特位的消息摘要。一般认为,摘要的最终输出越长,该摘要算法就越安全

一般地,把对一个信息的摘要称为该消息的指纹或数字签名。数字签名是保证信息的完整性和不可否认性的方法。数据的完整性是指信宿接收到的消息一定是信源发送的信息,而中间绝无任何更改;信息的不可否认性是指信源不能否认曾经发送过的信息。其实,通过数字签名还能实现对信源的身份识别(认证),即确定“信源”是否是信宿意定的通信伙伴。

四.  数字签名

数字签名技术原理:为了确保数据传输的安全性,不得不采取一系列的安全技术,如加密技术、数字签名、身份认证、密钥管理、防火墙、安全协议等。其中数字签名就是实现网上交易安全的核心技术之一,它可以保证信息传输的保密性、数据交换的完整性、发送消息的不可否认性、交易者身份的确定性等。数字签名主要的功能是:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用Hash函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

一个数字签名体制一般包含两个组成部分:签名算法(signaturealgorithm)和验证算法(verification algorithm)。签名算法用于对消息产生数字签名,它通常受一个签名密钥的控制,签名算法或者签名密钥是保密的,有签名者掌握;验证算法用于对消息的数字签名进行验证,根据签名是否有效验证算法能够给出该签名为“真”或者“假”的结论。验证算法通常也受一个验证密钥的控制,但验证算法和验证密钥应当是公开的,以便需要验证签名的人能够方便的验证。

数字签名要实现的功能是我们平常的手写签名要实现功能的扩展。平常在书面文件上签名的主要作用有两点:一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。采用数字签名,也能完成这些功能:(1)、确认信息是由签名者发送的;(2)、确认信息自签名后到收到为止,未被修改过;(3)、签名者无法否认信息是由自己发送的。

数字签名的实现方法:建立在公钥密码技术上的数字签名方法有很多,有RSA签名、DSA签名和椭圆曲线数字签名算法(ECDSA)等等。

(1)、发送方采用某种摘要算法从报文中生成一个128位的散列值(称为报文摘要);(2)、发送方用RSA算法和自己的私钥对这个散列值进行加密,产生一个摘要密文,这就是发送方的数字签名;(3)、将这个加密后的数字签名作为报文的附件和报文一起发送给接收方;(4)、接收方从接收到的原始报文中采用相同的摘要算法计算出128位的散列值;(5)、报文的接收方用RSA算法和发送方的公钥对报文附件的数字签名进行解密;(6)、如果两个散列值相同,那么接收方就能确认报文是由发送方签名的。

最常用的摘要算法叫做MD5. MD5采用单向Hash函数将任意长度的“字节串”变换成一个128位的散列值,并且它是一个不可逆的字符串变换算法,换言之,即使看到MD5的算法描述和实现它的源代码,也无法将一个MD5的散列值变换回原始的字符串。这一个128位的散列值亦称为数字指纹,就像人的指纹一样,它就成为验证报文身份的“指纹”了。

数字签名是如何完成与手写签名类同的功能的呢?如果报文在网络传输过程中被修改,接收方收到此报文后,使用相同的摘要算法将计算出不同的报文摘要,这就保证了接收方可以判断报文自签名后到收到为止,是否被修改过。如果发送方A想让接收方误认为此报文是由发送方B签名发送的,由于发送方A不知道发送方B的私钥,所以接收方用发送方B的公钥对发送方A加密的报文摘要进行解密时,也将得出不同的报文摘要,这就保证了接收方可以判断报文是否是由指定的签名者发送。同时也可以看出,当两个散列值相同时,发送方A无法否认这个报文是他签名发送的。

在图6签名方案中,报文是以明文方式发生的。所以不具备保密功能。如果报文包含不能泄露的信息,就需要先进行加密,然后再进行传送。具有保密机制的RSA签名的整个过程如下:

  1. 发送方选择一个对称加密算法(比如DES)和一个对称密钥对报文进行加密;
  2. 发送方用接收方的公钥和RSA算法对第1步中的对称密钥进行加密,并且将加密后的对称密钥附加在密文中;
  3. 发送方使用一个摘要算法从第2步的密文中得到报文摘要,然后用RSA算法和发送方的私钥对此报文摘要进行加密,这就是发送方的数字签名;
  4. 将第3步得到的数字签名封装在第2步的密文后,并通过网络发送给接收方;
  5. 接收方使用RSA算法和发送方的公钥对收到的数字签名进行解密,得到一个报文摘要;
  6. 接收方使用相同的摘要算法,从接收到的报文密文中计算出一个报文摘要;
  7. 如果第5步和第6步的报文摘要是相同的,就可以确认密文没有被篡改,并且是由指定的发送方签名发送的;
  8. 接收方使用RSA算法和接收方的私钥解密出对称密钥;
  9. 接收方使用对称加密算法(比如DES)和对称密钥对密文解密,得到原始报文。

 

转自:http://www.secbox.cn/hacker/13753.html

END

0 评论
留言