加解密算法、消息摘要、消息认证技术、数字签

  当发送方A向接收方B发送数据时,需要考虑的问题有:

  1.数据的安全性

  2.数据的完整性,即数据不被篡改。

  3.数据的真实性,即数据确实来自于发送方,传输过程中没有被替换。

  4.数据的不可否认性,即验证发送方确实发送了数据。

  本文只是对整套体系做一个整体的介绍,后续文章详细讲解各个步骤和算法。

  本文的整体结构见下图。

加解密算法、消息摘要、消息认证技术、数字签

  基本概念: 

  密码:按特定法则编成,用以对通信双方的信息进行明密变换的符号。

  密钥:在现代密码学中,秘钥指的是一组特定的秘密数据,在加密时,它控制密码算法按照指定的方式将明文变换为相应的密文,并将一组信源标识信息变换不可伪造的签名;在解密时,它控制密码算法按照指定的方式将密文变换为相应的明文,并将签名信息变换成不可否认的信源证据。

1.数据传输的安全

  保证数据传输安全的方法就是对数据进行加密了,常用的加密算法有对称加密和非对称加密。

1.1 对称加密

  又称共享加密,加解密使用相同的密钥

常见算法

  DES 3DES AES RC5 RC6

  1).为了安全,A将数据加密发送给B。

  2).密文即使在传送过程中被截获,因为不知道密钥也无法解密。

  3).B接收到密文之后,需要使用加密相同的密钥来解密。

  4).需要A将密钥传给B,但保证密钥传输过程中的安全又成了问题。

优点

  计算速度快。

缺点

  为了传送数据的安全,将数据加密后进行传输,但是对称加密需要发送方将密钥安全地传给接收方以便接收方解密,因此密钥如何安全传送又成了一个问题

问题

  如何保证密钥的安全性?

1.2 非对称加密

  也称公钥加密,这套密钥算法包含配套的密钥对,分为加密密钥和解密密钥。加密密钥时公开的,又称为公钥;解密密钥时私有的,又称为私钥。数据发送者使用公钥加密数据,数据接收者使用私钥进行数据解密

常见算法

  RSA

  1).B生成密钥对,将公钥传给A,私钥自己保留。公钥即使被其他人获得也没有关系。

  2).A用B传过来的密钥将要发送的明文数据加密,然后将密文发送给A。其他人即使获得密文也无法解密,因为没有配对的用来解密的私钥。

  3).B接收到A传送过来的密文,用自己保留的私钥对密文解密,得到明文。

优点

  解决了密钥的安全性问题

缺点

  一是计算速度慢;

  二是无法保证公钥的合法性,因为接收到的公钥不能保证是B发送的,比如,攻击者截获B的消息,将公钥替换。

  这里先留下一个问题,后面叙述解决办法:如何保证公钥是合法的?

2.保证数据完整性 消息摘要

  消息摘要函数时一种用于判断数据完整性的算法,也称为散列函数或哈希函数,函数的返回值就散列值,散列值又称为消息摘要或者指纹。

  这种算法是不可逆的,即无法通过消息摘要反向推导出消息,因此又称为单向散列函数。

常见算法

  MD5 SHA

  当我们使用某一软件时,下载完成后需要确认是否是官方提供的完整版,是否被人篡改过。通常软件提供方会提供软件的散列值,用户下载软件之后,在本地使用相同的散列算法计算散列值,并与官方提供的散列值向对比。如果相同,说明软件完整,未被修改过。

优点

  可以保证数据的完整性

缺点

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/56046400e5f2ad43f69858f0bcff2391.html