数据的加密和解密

数据的加密和解密

场景1:电视剧《潜伏》中余则成收听延安的电台,收到到一串数字,他找来一本杂志,根这些数字寻找对应的文字,然后将这些文字连起来就是上级的指示了。

 

场景2:甲乙两个人是夫妻,甲要将自己的银行卡密码短信发送给乙,但是甲又怕别人一不小心看到了密码,于是他对银行卡的密码进行加密,然后发送给乙。乙收到加密后的密码之后,再解密就得到了银行卡的密码。

 

场景3:甲在银行开办了个人网银业务,获得了一个ukey。他插上ukey,然后进入自己的网银进行转账汇款。

 

分析:

场景1

假设指示的内容是:“计划照旧”

1) 延安和余则成约定好加解密方法。他们约定每一组数字代表特定本杂志的第几页、第几行、第几列。

2) 延安将自己的指示中的每一个字都在杂志中找到相应的位置(第几页,第几行,第几列)。

(计):第一组数字:12,10,3

(划)第一组数字:100,21,4

(照)第三组数字:47,11,12

(旧)第四组数字:11,47,32

3) 然后将这些代表位置的一串数字播送给余则成。

4) 余则成收到这一串数字后,在杂志中就可以找到这串数字对应的文字。

第一组数字:12,10,3(计)

第一组数字:100,21,4(划)

第三组数字:47,11,12(照)

第四组数字:11,47,32(旧)

 

原文

加密

12

10

3

100

21

4

47

11

12

12

10

第3列

密文

(12,10,3)

(100,21,4)

(47,11,12)

(11,47,32)

解密

12

10

3

100

21

4

47

11

12

12

10

第3列

原文

场景2

假设甲的银行卡密码是:861228

1) 甲乙约定好加解密方法,加密方法是对每一位数字加1,解密方法是对每一位数字减1。

2) 甲用加密方法对自己的银行卡密码加密,得到972339。

3) 甲将972339发送给乙。

4) 乙用解密方法对972339解密,就得到了861228。

原文

8

6

1

2

2

8

加密

8+1

6+1

1+1

2+1

2+1

8+1

密文

9

7

2

3

3

9

解密

9-1

7-1

2-1

3-1

3-1

9-1

原文

8

6

1

2

2

8

密钥

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。

场景1中那本杂志就是密钥,场景2中那个数字1就是密钥。它们都可以被更换,那本杂志可以换成某本小说,那个数字1可以换成数字2。

对称加密

对称加密(也叫单密钥加密),是指同一个密钥可以同时用作信息的加密和解密的算法。

非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥 (privatekey)。公开密钥与私有密钥是一对,私钥自己持有,公钥对外公开。

如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

对称加密与非对称加密的比较

1、加解密时采用的密钥的差异:对称加密中,加解密使用的同一个密钥;而非对称密钥算法加解密使用的不同密钥,从一个密钥很难推出另一个密钥。
  2、加解密效率:对称加密具有加密处理简单,加解密速度快,密钥较短,发展历史悠久;非对称加密具有加解密速度慢,密钥尺寸大,发展历史较短等特点。
   3、密钥管理安全性的区别:对称加密由于加解密双方采用的密钥是相同的,因此密钥的分发、更换困难。而非对称密钥算法由于密钥已事先分配,无需在通信过程中传输密钥,安全性大大提高,也解决了密钥管理问题。
   4、安全性:对称加密和非对称加密的所有算法都是公开的。对称加密的的安全性依赖于分组的长度和密钥的长度,常的攻击方法包括:穷举密钥搜索法,字典攻击、查表攻击,差分密码 分析,线性密码分析。非对称密钥算法安全性建立在所采用单向函数的难解性上,如,160bit的椭圆曲线密码算法安全性相当于1024bit RSA算法。

 

对称加密

非对称加密

密钥数量

一个密钥

两个,一个公钥,一个私钥

加解密效率

安全性

密钥管理

困难

容易

常用算法

DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。

RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)

 

重点说明

*1、对称加密和非对称加密都是指一套算法,它们各自包含一个加密算法,和一个解密算法,而且加密算法和解密算法不一样。对于对称加密,加解密算法互为逆运算。对于非对称加密,加解密算法关联性不大。

*2、对于数据加解密来说,加解密算法都是公开的,加解密算法双方约定好了之后,一般就不再改变,变的只是密钥。

数据传输要求

1、身份的真实性(身份认证):甲乙双方通讯,甲、乙要彼此相互确认。

2、完整性:甲乙双方的通讯内容,是完整的,没有被别人篡改过。

3、不可抵赖性:甲乙双方发出的信息,都可以作为证据,不能否认。

4、安全性:甲乙双方的通讯内容,是秘密的,即使被人截获,别人也不知道通讯内容。

数字摘要

数字摘要就是采用单项Hash函数(比如MD5算法)将需要加密的明文“摘要”成一串固定长度(一般是128位)的密文。采用同一Hash函数,不同的明文形成的摘要密文,总是不同,同样的明文其摘要必定一致。

 

数字摘要保证了数据的完整性。

数字签名

数字签名就是对数字摘要,用私钥加密得到的密文。

数字摘要保证了,数据的完整性和不可抵赖性。

数字信封

数字信封是将对称密钥通过非对称加密(即:有公钥和私钥两个)的结果分发对称密钥的方法。

数字信封保证了对称密钥传输的安全性。

数字证书

数字证书是一种权威性的电子文档。它提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构----CA证书授权(CertificateAuthority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。

 

数字证书保证了通讯双方身份的真实性。

 

数字证书主要包含以下内容:

--Version 版本
  --Serial Number 序列号
  --Algorithm ID 算法标识
  --Issuer 颁发者
  --Validity 有效期
  >Not Before 有效起始日期
  >Not After 有效终止日期
  --Subject 使用者
  --Subject Public Key Info 使用者公钥信息
  -- Public Key Algorithm 公钥算法
  --Subject Public Key 公钥
  --Issuer Unique Identifier (Optional) 颁发者唯一标识
  --Subject Unique Identifier (Optional) 使用者唯一标识
  --Extensions (Optional) 扩展
  ...
  Certificate Signature Algorithm 证书签名算法
  Certificate Signature 证书签名

 

数字证书一般存储于ukey中,ukey中的证书不能被导出或复制,且key使用时需要输入key的保护密码。所以即使ukey丢失,也是安全的。从数字证书里。

 

网上银行交易全过程

场景3是一个通过网上银行进行交易的过程,一般步骤如下:

 

1、银行生成自己的的公钥和私钥,并向证书授权中心(CA)申请自己的数字证书。

2、客户办理网银时生成自己的公钥和私钥,银行代客户申请数字证书(数字证书一般存在ukey里)。

3、客户在电脑插上ukey,打开浏览器登录银行网银系统。

4、网银系统将自己的数字证书发送给客户的浏览器,浏览器校验该系统是不是仿冒。

5、客户将自己的数字证书发送给网银系统,网银系统校验该客户是不是仿冒。

6、客户要发送转账汇款指令,先把汇款转账指令进行hash运算得出数字摘要。

7、客户再用自己的私钥对数字摘要进行加密,得到数字签名。

8、客户随机生成一个对称密钥,对转账汇款信息进行对称加密,形成密文。

9、客户将对称密钥用银行的公钥加密形成数字信封。

10、客户将密文,数字签名、数字信封,一块发送给银行。

11、银行受到密文,数字签名、数字信封后,用银行的私钥解密数字信封得到对称密钥。

12、银行用对称密钥解开密文,得到原文。

13、银行用客户的公钥解密数字签名,得到数字摘要。

14、银行采用相同的hash函数对原文进行运算得出数字摘要。

15、银行比对计算得到的数字摘要和解密得到的数字摘要,相同则证明汇款转账指令没有被篡改过。

16、银行执行汇款转账指令。

明文

明文

 

 

 

加密

将明文进行hash运算—>数字摘要

 

 

将数字摘要用客户私钥加密—>数字签名

 

 

 

随即生成对称密钥

 

 

将对称密钥用银行公钥加密—>数字信封

将明文用对称密钥加密—>密文

密文

数字签名

数字信封

密文

 

 

 

解密

将数字签名用客户公钥解密—>数字摘要

将数字信封用银行的私钥解密—>对称密钥

 

 

 

将密文用对称密钥解密—>原文

 

 

将原文进行hash运算—>数字摘要

比对两个数字摘要,相同则证明数据未被篡改

明文

明文

分析:

1、甲要发送转账存款指令,并且确保存款转账的指令的安全性,所以他要对存款转账指令加密。考虑到对称加密和非对称加密的优缺点,他决定采用对称加密,因为对称加密的加解密速度快。

2、甲采用对称加密就产生了一个对称密钥,这个对称密钥必须传给银行,银行才能解密,因为对称加密,加解密使用同一个密钥。这个密钥也需要安全的传给银行,于是甲用银行的公钥加密。公钥加密,只有私钥能解密,所以只有银行能解密得到对称密钥。

3、甲为了防止数据在传输过程中被篡改,采用MD5算法,对数据生成数字摘要。因为不同的数据生成的数字摘要肯定不同,一旦数据被篡改,通过数字摘要就可以校验出来。

4、甲为了证明数据是自己发送的,用自己的私钥对数字摘要进行加密。因为私钥加的密,只有公钥能解开,而甲的私钥只有甲才有,这样就可以证明是数据是甲发送的。

5、甲需要将自己的存款转账指令发送到银行,但是他担心银行是仿冒的。他需要银行证明自己的身份,当然银行自己是无法证明自己的,于是银行就寻求第三方机构认证也就是证书授权中心(CA)的证明。证书授权中心会给银行颁发一个数字证书,证明银行就是银行,是可信的。

6、反过来银行也需要认证甲不是别人冒充的,于是银行也需要甲证明自己的身份。同样的甲也会向证书授权中心(CA)申请一个数字证书,证明自己就是甲(只不过这个数字证书的过程是银行代为申请的)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值