大家好,又见面了,我是你们的朋友全栈君
PKI(Pubic Key Infrastructure)是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。用户可利用PKI平台提供的服务进行安全通信。
使用基于公钥技术系统的用户建立安全通信信任机制的基础是:网上进行的任何需要安全服务的通信都是建立在公钥的基础之上的,而与公钥成对的私钥只掌握在他们与之通信的另一方。这个信任的基础是通过公钥证书的使用来实现的。公钥证书就是一个用户的身份与他所持有的公钥的结合,在结合之前由一个可信任的权威机构CA来证实用户的身份, 然后由其对该用户身份及对应公钥相结合的证书进行数字签名,以证明其证书的有效性。
PKI必须具有权威认证机构CA在公钥加密技术基础上对证书的产生、管理、存档、发 放 以及作废进行管理的功能,包括实现这些功能的全部硬件、软件、人力资源、相关政策和操作程序,以及为PKI体系中的各成员提供全部的安全服务。如:实现通信中各实体的身份认证、保证数据的完整、抗否认性和信息保密等。
PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等。
1、加密定义:
加密是指使用密码算法对数据作变换,使得只有密钥持有人才能恢复数据面貌,主要目的是防止信息的非授权泄漏。现代密码学的基本原则是:一切密码寓于密钥之中即算法公开,密钥保密。密码算法的分类:
(1)对称密码算法:加密密钥和解密密钥相同,Ke=kd,密钥必须特殊保管。
优点:保密强度高,计算开销小,处理速度快。
缺点:密钥管理困难
(2)非对称密码算法:加密密钥与解密密钥不同,不可能由加密密钥解出解密 密 钥。每个用户都有两个密钥:一个在信息团体内公开称公钥,一个由用户秘密保存,称为私钥。
优点:便于密钥管理、分发、便于签字签名。
缺点:计算开销大,处理速度慢。
若以公钥KPB加密,用私钥KPV解密,可实现多个用户加密信息,只能由一个用户解读,是用于保密通信;若以私钥KPV加密,用公钥KPB解密,能实现由一个用户加密 的信息而由多个用户解密,是用于数字签名。
(3)单向函数算法:也称HASH算法,能够非常容易地把明文变成密文(把密文转成明文是困难的)
特点:1)适用不需要把密文转换为明文的场合。
2)很容易地将明文转换密文(密文再转明文不可能)
3)适用不需要解密的场合(鉴别、密钥管理)
用hash函数变换得到的hash值,通常称为“数据摘要”视作:MD。
2数字签名:
定义:数字签名是指使用密码算法对待发的数据(报文、票证等)进行加密处理,生成一段信息,附着在原文上一起发送,这段信息类似现实中的签名或印章,接收方对其进行验证,判断原文真伪。
目的:提供数据完整性保护和抗否认功能。
(1)过程:先用hash算法将原文压缩为数据摘要,然后用公开密钥算法对摘要进行加密和解密,(原文任何变化都会使数据摘要改变)
(2)数字签名还有另外一个过程:即用公开密钥(非对称算法)而不用hash单 向散列函数。其过程是:
首先将原文用私钥加密,得数字签名,然后将原文和数字签名一起发向接收 方,收方用发方的公钥解密,再与原文比较
只要比较X’=X可确定三件事:
·消息X确实由A方发出的(即真实性);
·签发Y确实由A方发出的(即不可否认性);
·B方收到的信息是完整的(即完整性);
这两种数字签名的主要区别在于,前者是一种对压缩信息的签名,适用于长文件信息 ;后者是一种对整个消息的签名,适用于短文件信息。
数字签名与消息认证不同,消息认证使收方能验证消息发送者是谁及所发消息是否被窜改,当收发者之间没有利害冲突时,只对防止第三者破坏是足够了。但是,当发收双方有利害冲突时,单是消息认证技术就无法解决他们之间的纠纷,此时就必须采用数字签名了 。
3、数据完整性机制
定义:数据完整性机制是保证数据在存储、传输、处理过程中的真实有效和一致性 。
方法:报文鉴别码MAC:保护待发的数据(报文、文电)。
数据鉴别DAC:保护存储的数据(数据库表中的字段)。
过程:使用密码算法对原数据(报文及数据库中数据)或原数据中的关键字段进行计算 ,得到一小段附加数据。这一小段数据与原数据的每一位都相关,使得原数据的每一位的变 化都会反映到这小段数据上来。因此,用它可判断原数据的内容是否被改变,出处是否真实。
SET中数字信封传送模式
4、数字信封
定义:数字信封是信息发送端用接收端的公钥,将一个通信密钥(Symmentric Key)加密后,传送后接收端,只有指定的接收端才能打开信封,取得秘密密钥(SK),用它来解开传送来的信息。
过程:
(1)要传输的信息经杂凑(Hash)函数运算得到一个信息摘要MD,MD=Hash(信息);
(2)MD经传送者A的私钥PVA加密后得到一个数字签名;
(3)传送者A将信息明文、数字签名及他证书上的公钥三项信息通过对称算法,以DES加密密钥SK进行加密得加密信息E;
(4)A在传送信息之前,必须先得到B的证书公开密钥PBB,用PBB加密,秘密密钥SK,形成一个数字信封DE;
(5)E DE就是A所传送的内容;
(6)接收者B以自己的私人密钥PVB,解开所收到的数字信封DE,从中解出A所用过的SK ;
(7)B用SK将E还原成信息明文、数字签名和A的证书公开密钥;
(8)将数字签名用A证书中的公开密钥PBA,解密将数字签名还原成信息摘要MD;
(9)B再以收到的信息明文,用hash函数运算,得到一个新的信息摘要MD’;
(10)比较收到已还原的MD和新产生的MD’是否相等,相等无误即可确认,否则不接收。
5.双重数字签名
定义:有的场合需要寄出两个相关信息给接收者,接收者只能打开一个,而另一个只需转送,不能打开看其内容。
(持卡人向商户提出订购信息的同时,也给银行付款信息,以便授权银行付款,但持卡人不希望商户知道自己的账号的有关信息,也不希望开户行知道具体的消费内容,只需按金额贷记或借记账即可。)
过程:一个人的双重签名可以分别传送信息给特约商户和开户行,特约商户只能解开 与自己相关的信息却解不开给开户行的信息。
如下图中A为持卡人,B为特约商户C为开户银行。
①~④为双重数字签名:将B信息OI、C信息PI做摘要后连接为MDBC,并以发送者A的私人密钥形成数字签名DS,以使收到信息的B、C两方能各自用A的公钥解密验证;
⑤~⑥:A用秘密密钥SK1和SK2对传送给B、C的信息加密,得密文EMB、EMC。在加密前,必须把信息B的摘要MDB传给C,信息C的摘要MDC传给B;
⑦~⑧:以接收者B和C证书的公钥将SK1、SK2加密,分别得到两个信封DEB和DEC。
⑨:B将收到A发来的两份信息,一份自己解开,另一份B看不到只能转输给C;
⑩~15:为接收者B,收到了EMB和DEB。B先用自己的私钥PVB打开数字信封DEB,取出秘密密钥SK1;B再用SK1的对称DES算法解开密文EMB,B只能看到A传给他的信息,而看不到A在开户行C的信息,用A的公钥PBA,解出数字签字,B验证MD’BC=MD’B
16~21:为接收者C收到了B转发来的EMB和DEB,然后用其解开密文EMC。 用A的公钥PBA,解出数字签名MDBC,并与MD’BC相比,证实A传来的信息, 没被B看过。
6非对称算法原理(RSA)
公开密钥算法即非对称算法保密技术是70年代末,由美国斯坦福大学几位学者发明的,以他们的名字(Rivest、Shamir、Adelman)命名为RSA密码算法。
它与传统EFT中所采用的DES、MAC保密算法,对数据保密防篡改不同,RSA可以做到对 发送过的信息,具有抗抵赖性(不可否认性),用于数字签名、数字信对等技术。
RSA算法要求是一对数字,一个叫公开密钥(Public Key),一个叫私人密钥(Private K ey),其中私钥由个人所有,保密;公钥可以公开。
要传送信息时,可用对方的公钥对信息加密上网,对方收到这个信息要靠他的私钥解 密;或者发送方用自己的私钥加密,接收方用发送方的公钥解密,两个数字吻合为一。
RSA的演算方法是:
1)用户选择2个够大的保密质数q、p(一般为100位以上十进数)
2)令n=pq,n是公开的,从n分解除qp是极其困难的。
n的欧拉函数:Φ(n)=(p-1)(q-1)
Φ(n)小于等于n,并与n互质
3)选择一个相对大的整数e作为加密指数,使e与Φ(n)互质,
4)解同等方程:
ed=1modΦ(n)
求出解密指数d
5)设M、C分别为要加密的明文和被加密的密文(M、C小于n)
则:加密运算为:C=Memod n
解密运算为:M=Cdmod n
6)每个用户都有一组密钥(e、d、n)
(e,n)为PK’可以公开在手册上的公钥,e为加密指数,
(d,n)为SK’(或PV)是用户保密的私钥
将p.q销毁
7)要求明文X
举例:
1) 选两个质数: p=47 q=71
2)计算: n=pq=3337 Φ(n)=(47-1)(71-1)=3220
3) e必须与Φ(n)互质,选e=79
4) 计算:ed=1modΦ(n)=1mod(3220)
d=1019
将e、n公布,d保密,p.q消毁
如有一明文 M=6882326879666683要加密,则先将M分割成多块:
m1=688,m2=232,m3=687,m4=966,m5=668,m6=3
将第1块M1加密后得密文C1:
C1=m1e(mod3337)=68879(mod3337)=1570
依次对各区块加密后得密文C:
C=15702756271422762423158
对C1解密得m1
M1=C1d(mod3337)=15701019(mod3337)=688
依次解密得原文M
转载于:https://my.oschina.net/fuckmylife0/blog/1623055
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172020.html原文链接:https://javaforall.cn