加密传输原理

数字签名,就是通过在数据单元上附加数据,或对数据单元进行秘密变换,从而使接收者可以确认数据来源和完整性。简单说来,数字签名是防止他人对传输的文件进行破坏,以及确定发信人的身份的手段。

目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。它的主要方式是:报文的发送方从报文文本中生成一个128位的散列值(又称报文摘要,数字指纹)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值,接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。

采用数字签名,能确认以下两点:

第一,信息是由签名者发送的;

第二,信息自签发后到收到为止未曾作过任何修改。这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息。或发出(收到)信件后又加以否认等情况发生。

应用广泛的数字签名方法主要有三种,即:RSA签名、DSS签名和Hash签名。

这三种算法可单独使用,也可综合在一起使用。用RSA或其它公开密钥密码算法的最大方便是没有密钥分配问题(网络越复杂、网络用户越多,其优点越明显)。因为公开密钥加密使用两个不同的密钥,其中有一个是公开的,另一个是保密的。公开密钥可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密钥。而私有密钥是用户专用的,由用户本身持有,它可以对由公开密钥加密信息进行解密。RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。DSS数字签名是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。Hash签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指纹法(Digital Finger Print)。它与RSA数字签名是单独的签名不同,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。

对电子文件进行数字签名并在网上传输,其技术实现过程大致如下:首先要在网上进行身份认证,然后再进行签名,最后是对签名的验证。

1. 认证

PKI提供的服务首先是认证,即身份识别与鉴别,确认实体即为自己所声明的实体。认证的前提是甲乙双方都具有第三方CA所签发的证书,认证分单向认证和双向认证。

(1)单向认证是甲乙双方在网上通信时,甲只需要认证乙的身份即可。这时甲需要获取乙的证书,获取的方式有两种,一种是在通信时乙直接将证书传送给甲,另一种是甲向CA的目录服务器查询索取。甲获得乙的证书后,首先用CA的根证书公钥验证该证书的签名,验证通过说明该证书是第三方CA签发的有效证书。然后检查证书的有效期及检查该证书是否已被作废(LRC检查)而进入黑名单。

(2)双向认证。双向认证是甲乙双方在网上通信时,甲不但要认证乙的身份,乙也要认证甲的身份。其认证过程与单向认证过程相同。

2. 数字签名与验证过程

网上通信的双方,在互相认证身份之后,即可发送签名的数据电文。数字签名的全过程分两大部分,即签名与验证。即发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文与数字签名一起发送给接受方;收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果二者匹配,说明经数字签名的电子文件传输成功。

数字签名原理中定义的是对原文做数字摘要和签名并传输原文,在很多场合传输的原文是要求保密的,要求对原文进行加密的数字签名方法如何实现?这里就要涉及到“数字信封”的概念。“电子信封”基本原理是将原文用对称密钥加密传输,而将对称密钥用收方公钥加密发送给对方。收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。其详细过程如下:

(1) 发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;

(2) 发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;

(3) 发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;

(4) 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;

(5) 发方A将加密信息E和数字信封DE一起发送给收方B;

(6) 收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;

(7) 收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;

(8) 收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;

(9) 收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD’;

(10)将两个数字摘要MD和MD’进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。

这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。

原文地址:https://www.cnblogs.com/woshijiuke/p/11286929.html

时间: 2024-10-11 04:20:28

加密传输原理的相关文章

Openldap配置TLS加密传输

为啥要用TLS? Openldap默认使用简单验证,对slapd的所有访问都使用明文密码通过未加密通道进行.为了确保信息安全,需要对信息进行加密传输,SSL(Secure Sockets Layer)是一个可靠的解决方案. 它使用 X.509 证书,由可信任第三方(Certificate Authority (CA))进行数字签名的一个标准格式的数据.有效的数字签名意味着已签名的数据没有被篡改.如果签名的数据被更改,将不会通过验证 SSL/TLS 加密原理简介 SSL/TLS 是基于 PKI 机

加密工作原理

最原始的数据传输方式就是明文传输.所谓"明文"就是输入什么在文件中最终也显示什么,别人获取到文件后就知道里面的全部内容了.很显然,这种数据传输方式很不安全,被非法截取后,什么都暴露了. 随后就有了加密传输的理念及相应的技术了,对原始的明文数据进行加密,加密后生成的数据称之为"密文".密文与明文最大的区别就是打乱了原来明文数据中字符的顺序,甚至生成一堆非字符信息(通常称之为"乱码"),其目的就是让非法获取者看不懂里面真实的数据内容,这样即使数据被非

Openssl加密解密原理与命令使用--尚未完善

Openssl加密解密原理: 示例: 比如A与B通信发送数据: 加密原理: 在A把要发送的内容通过单向加密方式进行数据指纹计算,计算出数据指纹后,会用自己的私钥加密数据指纹,并把加密的数据指纹添加到原数据的后面.然后对整个数据(原数据+数据指纹)进行对称加密算法进行计算(让明文转换成密文),得出的数据为整个数据的密码,再用B的公钥进行这个密码进行加密,并放到这个数据的后面一并发给B. 解密原理: 1.B用自己的私钥能够解密---------至此说明数据保密的. 2.B用私钥解密出来的密码,去解密

用RSA加密实现Web登录密码加密传输

用RSA加密实现Web登录密码加密传输 通常我们做一个Web应用程序的时候都需要登录,登录就要输入用户名和登录密码,并且,用户名和登录密码都是明文传输的,这样就有可能在中途被别人拦截,尤其是在网吧等场合. 这里顺带一个小插曲,我以前有家公司,办公室装修时候安排的网口相对较少,不太够用,于是我和另外一个同事使用了一个hub来共享一个网口,这就导致了很有趣的现象:任何他的网络包我都能抓得到,当然了,我的他也能抓得到.这是不是有很大的安全隐患了?我有可能在不经意间会泄漏自己的密码. 所以,很多安全要求

Base64加密解密原理以及代码实现(VC++)

Base64加密解密原理以及代码实现 转自:http://blog.csdn.net/jacky_dai/article/details/4698461 1. Base64使用A--Z,a--z,0--9,+,/ 这64个字符.    2. 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了.    3. 解码原理:将4个字节转换成3个字节.先读入4个6位(用或运算),每次左移6位

Linux运维之加密/解密原理、自建CA及搭建基于https的Apache

上几次博文我们具体讨论了Apache(httpd)的基础知识: HTTP协议基础(参见博文:http://sweetpotato.blog.51cto.com/533893/1656137) Apache2.2的基本配置(参见博文:http://sweetpotato.blog.51cto.com/533893/1657668) Apache2.2的虚拟主机(参见博文:http://sweetpotato.blog.51cto.com/533893/1660229) 本次博文我们具体讨论下加密/

SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输

SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输 微软高兴地宣布所有主流SQL Server客户端驱动和SQL Server发行版已经支持Transport Layer Security 1.2简称TLS 1.2. 发布时间是 2016年1月29日,这次发布提供了SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 and SQL Server 2014对TLS1.2的完全支持. 支持

JavaMail实现收发邮件(五)使用SSL实现加密传输

一 概念简介 Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听.一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境.只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL.当前版本为3.0.它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输.(PS:来至百度百科) 二 在JavaM

RSA 加密传输 (php)

RSA加密传输: 对于初接触RSA加密的童鞋来说,很可能会被绕进去.最近写了一个RSA加密传输的需求,总结一下.希望能对你有点帮助. 首先要明白以下几点: 1:公钥和私钥一定是成对的才可以 2:私钥是保密的,公钥是公开的 3:公钥和私钥,可以互为加密和解密 4:用其中一个密钥加密数据,则只有对应的那个密钥才能解开 主要有两种用法 1:公钥加密 A传输数据给B (1),A用公钥加密数据,传输给B (2),B用私钥解密 2:公钥认证 A传输数据给B (1),A用私钥加密数据(也就是私钥签名),传输给