1. 什么是SSL安全网官
是指管理互联网安全的专职人员,主要负责SSL(安全套接层及其继任者传输层安全是为网络通信提供安全及数据完整性的一种安全协议)。
2. SSL协议是什么有什么用
SSL(Secure Sockets Layer安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。具体可以看网络词条里详细介绍,如下图:
3. ssl协议属于网络什么的标准协议
SSL是一种网络安全协议。
SSL(Secure Sockets Layer)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSL为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
4. 此服务器要求安全连接ssl是什么意思
有些网站为了安全,防止信息别窃听,所以你的浏览器和服务器通信的时候需要建立加密通道,这样就不怕别人窃听你的密码了。
一般银行网站都是用的,都以https开头
5. 什么是SSL证书:你不可不知的5件事
随着网络攻击愈演愈烈,加之人们对网络监控的认识愈加清晰,对互联网安全的呼吁也越来越强烈。要加强网络安全,其中一个重要部分就是对进出网站的信息流进行加密。
虽然SSL/TLS(安全套接层/传输层安全)加密协议运作起来比较棘手,而且成本较高,但包括谷歌,Facebook和微软在内的众多企业都在极力推广这一加密技术。那么,关于SSL证书你需要了解哪些基础知识呢?
什么是SSL/TLS?
它最初一份由Netscape公司在90年代开发的网络协议,旨在确保网站的真实性,并使其与终端用户进行安全的数据交换。它使用公钥密码建立网站加密连接,被加密的网站通常由“https”开头,在浏览器URL窗口会出现一把挂锁,表示该网站已加密。
为什么SSL很重要?
仅用http(超文本传输协议)交流的数据很容易被黑客截获。这些数据可以被收集或篡改,从而让用户承受安全及隐私风险。如今,几乎所有着名的银行和电子商务网站使用SSL/TLS,但许多规模较小的网站仍然还没有使用这一协议。
SSL证书是否很难设置?
SSL/TLS被公认为运行复杂、难以实施,特别是对于大型网站而言。证书颁发机构(CA)往往出售用于验证网站的不同类型的数字证书。根据证书类型,证书颁发机构将验证请求的网站是否合法,以防范欺诈网站。但是,有些证书过于昂贵,有评论指出,SSL证书的成本和复杂性让人望而生畏。而且,证书也有有效期,所以IT管理员必须牢记更新日期。
SSL证书是否有缺点?
总而言之,缺点不少。多年来,网络安全专家已设计出了很多让SSL/TLS连接无法识别的攻击。此外,在OpenSSL,这一被广泛使用的SSL应用程序中,也发现了Heartbleed(心脏出血)这样的软件漏洞。证书颁发机构偶尔会被黑客入侵,为钓鱼网站颁发SSL证书。2011年,译解密码员Moxie Marlinspike概述了证书颁发机构体系的诸缺陷以及找到替代品的复杂性。“SSL与同一个时期的很多其他协议背道而驰,但却仍然存在这么长时间,这太不可思议了。”Marlinspike写道。目前市场上超过600家证书颁发机构发行或出售SSL/TLS证书,其中名气较大的公司包括威瑞信和科摩多。
如何解决SSL证书的问题?
Gworg SSL证书,当然比较好的优势,他支持淘宝申请,域名验证数字证书,向网站用户普及加密技术。SSL/TLS证书只有发现了新攻击,才会对漏洞进行修补,但就目前而言确实没有一个可替代整个系统的备选项。要改变这一现状,需要全行业的支持,而这在短期内不太可能实现。保护私有SSL/TLS密钥的安全可能是眼下最重要的任务,不过市场上各种硬件安全模块(HSM)足以安全管理这些数字证书。
6. 解码SSL:SSL证书如何防止黑客
SSL是对发送方和接收方之间的通讯进行加密,避免第三方监听的协议。SSL是保护Web服务器和浏览器之间连接的加密技术。若客户端和服务端要通过SSL连接进行通信,网站需要部署SSL证书。
使用SSL证书保护的网站地址始终以https开头,而不是常规的http开头。在地址栏通过安全锁显示SSL的状态,表示网站已加密,用户可以放心的访问该网站。
另外,SSL作为安全层,SSL证书对信息进行了加密,即使黑客能够拦截相关信息,信息内容对于他们来说也是毫无意义的。因为加密的信息会变成符串随机散列的组合,难以辨认。同时也因为目前的SSL证书采用的加密强度比较长,128以上的加密强度暂时还没有破解的方法。
全球网络对于网络安全越来越重视。全球各大浏览器皆表示支持更安全的网络传输协议,所以现在当用户访问没有部署SSL证书的网站时,Chome、Firefox以及一些浏览器都会向用户显示一条消息,警告浏览者该网络服务器不安全或未经验证身份。
7. EV SSL证书,对于网络安全有什么意义
SSL证书按照验证方式可划分为域名型DV SSL证书、企业型OV SSL证书以及增强型EV SSL证书。EV SSL证书目前安全等级最高的SSL证书。
申请EV SSL证书需要通过CA机构严格的审核才能颁发,一般需要5-7个工作日。网站安装EV SSL证书可在浏览器地址栏形式绿色企业名称,即:绿色小锁+绿色企业名称+https。
网站部署EVSSL证书的好处
1、有助于增加网站交易量
2、保护用户免受钓鱼网站攻击
EVSSL证书通过向网站访问者提供一种可靠的方式来确认网站的真实身份,可以降低用户遭受钓鱼网站和其他假冒网站的攻击,在绿色地址栏中显示的公司名称有助于用户辨别真假网站。
3、消除谷歌等浏览器的“不安全”警告
谷歌等浏览器要求所有的web页面都必须使用SSL加密,无论交易是否在该页面进行,任何不属于https的页面都会在浏览器地址栏自动收到“不安全”的警告,防止这些警告的唯一方法是使用SSL证书保护网站中的所有页面。
4、有助于提升品牌形象
通过提供优质的客户服务可以提高客户满意度以及对网站的信任度,而这反过来又可以提高企业收益和口碑。
8. SET协议 SSL协议
两种都是应用于电子商务用的网络安全协议。都能保证交易数据的安全性、保密性和完整性。
SSL叫安全套接层协议,是国际上最早用的,已成工业标准,但它的基点是商家对客户信息保密的承诺,因此有利于商家而不利于客户。
SET叫安全电子交易协议,是为了在互联网上进行在线交易时保证信用卡支付的安全而设立的一个开放的规范。因它的对象包括消费者、商家、发卡银行、收单银行、支付网关、认证中心,所以对消费者与商家同样有利。它越来越得到众人认同,将会成为未来电子商务的规范
近年来,IT业界与金融行业一起,推出不少更有效的安全交易标准。主要有:
(1) 安全超文本传输协议(S-HTTP):依靠密钥对的加密,保障Web站点间的交易信息传输的安全性。
(2) 安全套接层协议(SSL协议:Secure Socket Layer)是由网景(Netscape)公司推出的一种安全通信协议,是对计算机之间整个会话进行加密的协议,提供了加密、认证服务和报文完整性。它能够对信用卡和个人信息提供较强的保护。SSL被用于Netscape Communicator和Microsoft IE浏览器,用以完成需要的安全交易操作。在SSL中,采用了公开密钥和私有密钥两种加密方法。
(3) 安全交易技术协议(STT:Secure Transaction Technology):由Microsoft公司提出,STT将认证和解密在浏览器中分离开,用以提高安全控制能力。Microsoft将在Internet Explorer中采用这一技术。
(4) 安全电子交易协议(SET:Secure Electronic Transaction):SET协议是由VISA和MasterCard两大信用卡公司于1997年5月联合推出的规范。SET主要是为了解决用户、商家和银行之间通过信用卡支付的交易而设计的,以保证支付信息的机密、支付过程的完整、商户及持卡人的合法身份、以及可操作性。SET中的核心技术主要有公开密匙加密、电子数字签名、电子信封、电子安全证书等。
目前公布的SET正式文本涵盖了信用卡在电子商务交易中的交易协定、信息保密、资料完整及数字认证、数字签名等。这一标准被公认为全球网际网络的标准,其交易形态将成为未来“电子商务”的规范。
支付系统是电子商务的关键,但支持支付系统的关键技术的未来走向尚未确定。安全套接层(SSL)和安全电子交易(SET)是两种重要的通信协议,每一种都提供了通过Internet进行支付的手段。但是,两者之中谁将领导未来呢?SET将立刻替换SSL吗?SET会因其复杂性而消亡吗?SSL真的能完全满足电子商务的需要吗?我们可以从以下几点对比作管中一窥:
SSL提供了两台机器间的安全连接。支付系统经常通过在SSL连接上传输信用卡卡号的方式来构建,在线银行和其他金融系统也常常构建在SSL之上。虽然基于SSL的信用卡支付方式促进了电子商务的发展,但如果想要电子商务得以成功地广泛开展的话,必须采用更先进的支付系统。SSL被广泛应用的原因在于它被大部分Web浏览器和Web服务器所内置,比较容易被应用。
SET和SSL除了都采用RSA公钥算法以外,二者在其他技术方面没有任何相似之处。而RSA在二者中也被用来实现不同的安全目标。
SET是一种基于消息流的协议,它主要由MasterCard和Visa以及其他一些业界主流厂商设计发布,用来保证公共网络上银行卡支付交易的安全性。SET已经在国际上被大量实验性地使用并经受了考验,但大多数在Internet上购的消费者并没有真正使用SET。
SET是一个非常复杂的协议,因为它非常详细而准确地反映了卡交易各方之间存在的各种关系。SET还定义了加密信息的格式和完成一笔卡支付交易过程中各方传输信息的规则。事实上,SET远远不止是一个技术方面的协议,它还说明了每一方所持有的数字证书的合法含义,希望得到数字证书以及响应信息的各方应有的动作,与一笔交易紧密相关的责任分担。
. SSL安全协议
SSL安全协议最初是由Netscape Communication公司设计开发的,又叫“安全套接层(Secure Sockets Layer)协议”,主要用于提高应用程序之间的数据的安全系数。SSL协议的整个概念可以被总结为:一个保证任何安装了安全套接字的客户和服务器间事务安全的协议,它涉及所有TC/IP应用程序。
SSL安全协议主要提供三方面的服务:
用户和服务器的合法性认证
认证用户和服务器的合法性,使得它们能够确信数据将被发送到正确的客户机和服务器上。客户机和服务器都是有各自的识别号,这些识别号由公开密钥进行编号,为了验证用户是否合法,安全套接层协议要求在握手交换数据进行数字认证,以此来确保用户的合法性。
加密数据以隐藏被传送的数据
安全套接层协议所采用的加密技术既有对称密钥技术,也有公开密钥技术。在客户机与服务器进行数据交换之前,交换SSL初始握手信息,在SSL握手情息中采用了各种加密技术对其加密,以保证其机密性和数据的完整性,并且用数字证书进行鉴别。这样就可以防止非法用户进行破译。
护数据的完整性
安全套接层协议采用Hash函数和机密共享的方法来提供信息的完整性服务,建立客户机与服务器之间的安全通道,使所有经过安全套接层协议处理的业务在传输过程中能全部完整准确无误地到达目的地。
要说明的是,安全套接层协议是一个保证计算机通信安全的协议,对通信对话过程进行安全保护。例如,一台客户机与一台主机连接上了,首先是要初始化握手协议,然后就建立了一个SSL。对话进段。直到对话结束,安全套接层协议都会对整个通信过程加密,并且检查其完整性。这样一个对话时段算一次握手。而HTTP协议中的每一次连接就是一次握手,因此,与HTTP相比。安全套接层协议的通信效率会高一些。
(1)接通阶段:客户通过网络向服务商打招呼,服务商回应;
(2)密码交换阶段:客户与服务器之间交换双方认可的密码,一般选用RSA密码算法,也有的选用Diffie-Hellmanf和Fortezza-KEA密码算法;
(3)会谈密码阶段:客户与服务商间产生彼此交谈的会谈密码;
(4)检验阶段:检验服务商取得的密码;
(5)客户认证阶段:验证客户的可信度;
(6)结束阶段,客户与服务商之间相互交换结束的信息。
当上述动作完成之后,两者间的资料传送就会加密,另外一方收到资料后,再将编码资料还原。即使盗窃者在网络上取得编码后的资料,如果没有原先编制的密码算法,也不能获得可读的有用资料。
发送时信息用对称密钥加密,对称密钥用非对称算法加密,再把两个包绑在一起传送过去。
接收的过程与发送正好相反,先打开有对称密钥的加密包,再用对称密钥解密。
在电子商务交易过程中,由于有银行参与,按照SSL协议,客户的购买信息首先发往商家,商家再将信息转发银行,银行验证客户信息的合法性后,通知商家付款成功,商家再通知客户购买成功,并将商品寄送客户。
SSL安全协议是国际上最早应用于电子商务的一种网络安全协议,至今仍然有很多网上商店使用。在传统的邮购活动中,客户首先寻找商品信息,然后汇款给商家,商家将商品寄给客户。这里,商家是可以信赖的,所以客户先付款给商家。在电子商务的开始阶段,商家也是担心客户购买后不付款,或使用过期的信用卡,因而希望银行给予认证。SSL安全协议正是在这种背景下产生的。
SSL协议运行的基点是商家对客户信息保密的承诺。但在上述流程中我们也可以注意到,SSL协议有利于商家而不利于客户。客户的信息首先传到商家,商家阅读后再传至(银行,这样,客户资料的安全性便受到威胁。商家认证客户是必要的,但整个过程中,缺少了客户对商家的认证。在电子商务的开始阶段,由于参与电子商务的公司大都是一些大公司,信誉较高,这个问题没有引起人们的重视。随着电子商务参与的厂商迅速增加,对厂商的认证问题越来越突出,SSL协议的缺点完全暴露出来。SSL协议将逐渐被新的电子商务协议(例如SET)所取代。
[page]
11. SET安全协议
在开放的因特网上处理电子商务,保证买卖双方传输数据的安全成为电子商务的重要的问题。为了克服SSL安全协议的缺点,满足电子交易持续不断地增加的安全要求,为了达到交易安全及合乎成本效益的市场要求,VISA国际组织及其它公司如Master Card、Micro Soft、IBM等共同制定了安全电子交易(SET:Secure Electronic Transactions)公告。这是一个为在线交易而设立的一个开放的、以电子货币为基础的电子付款系统规范。SET在保留对客户信用卡认证的前提下,又增加了对商家身份的认证,这对于需要支付货币的交易来讲是至关重要的。由于设计合理,SET协议得到了许多大公司和消费者的支持,己成为全球网络的工业标准,其交易形态将成为未来“电子商务”的规范。
安全电子交易规范,为在因特网上进行安全的电子商务提供了一个开放的标准。SET主要使用电子认证技术,其认证过程使用RS
9. 什么是ssl
ssl加密的方法
关键词: ssl加密的方法
随着计算机网络技术的发展,方便快捷的互连网使人们渐渐习惯了从Web页上收发E-mail、购物和
交易,这时Web页面上需要传输重要或敏感的数据,例如用户的银行帐户、密码等,所以网络安全
就成为现代计算机网络应用急需解决的问题。
现行网上银行和电子商务等大型的网上交易系统普遍采用HTTP和SSL相结合的方式。服务器端采用
支持SSL的Web服务器,用户端采用支持SSL的浏览器实现安全通信。
SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。
Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公
开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支
持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。本文着重在
SSL协议和SSL程序设计两方面谈谈作者对SSL的理解。
SSL协议初步介绍
安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,
还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于
它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于
SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证
工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
通过以上叙述,SSL协议提供的安全信道有以下三个特性:
1.数据的保密性
信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要
用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密匙
要用一个安全的方法传送。加密过的数据可以公开地传送。
2.数据的一致性
加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可
以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。
3.安全验证
加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的标识。
SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。
目前,大部分的Web 服务器及浏览器都广泛支持SSL 技术。当浏览器试图连接一个具有SSL认证加
密的服务器时,就会唤醒一个SSL会话,浏览器检查认证,必须具备下面三个条件:
1)有一个权威机构发放证书,当然可以创建自我签订的证书(x509 结构)。
2)证书不能过期。
3)证书是属于它所连接的服务器的。
只有全部具备了这三个条件,浏览器才能成功完成认证。通过这三个条件,用户能确认其浏览器连接
到正确的服务器,而不是连接到一些想盗取用户密码等重要信息的虚假的服务器上。
在当今的电子商务中还有一项被广泛使用的安全协议是SET协议。SET(Secure Electronic Transaction,
安全电子交易)协议是由VISA和MasterCard两大信用卡公司于1997年5月联合推出的规范。SET能在电
子交易环节上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺诈的可能性。SET交
易分三个阶段进行:用户向商家购物并确定支付;商家与银行核实;银行向商家支付货款。每个阶段都
涉及到RSA对数据加密,以及RSA数字签名。使用SET协议,在一次交易中,要完成多次加密与解密操作,
故有很高的安全性,但SET协议比SSL协议复杂,商家和银行都需要改造系统以实现互操作。
在Linux 下,比较流行支持SSL认证的是OpenSSL服务器。OpenSSL项目是一个合作的项目,开发一个
健壮的、商业等级的、完整的开放源代码的工具包,用强大的加密算法来实现安全的Socket层
(Secure Sockets Layer,SSL v2/v3)和传输层的安全性(Transport Layer Security,TLS v1)。
这个项目是由全世界的志愿者管理和开发OpenSSL工具包和相关文档。
如何在Linux下配置OpenSSL服务器,首先从OpenSSL的主页(http://www.openssl.org/)上下载
openssl-version.tar.gz软件包来编译安装,与Apache服务器配合可以建立支持SSL的Web服务器,
并可以使用自我签订的证书做认证,关于如何编译、安装OpenSSL服务器,可以参考一下OpenSSL HOWTO
文档。
SSL 程序设计初步介绍
SSL 通讯模型为标准的C/S 结构,除了在 TCP 层之上进行传输之外,与一般的通讯没有什么明显的区
别。在这里,我们主要介绍如何使用OpenSSL进行安全通讯的程序设计。关于OpenSSL 的一些详细的信
息请参考OpenSSL的官方主页 http://www.openssl.org。
在使用OpenSSL前,必须先对OpenSSL 进行初始化,以下的三个函数任选其一:
SSL_library_init(void);
OpenSSL_add_ssl_algorithms();
SSLeay_add_ssl_algorithms();
事实上 后面的两个函数只是第一个函数的宏。
如果要使用OpenSSL的出错信息,使用SSL_load_error_strings (void)进行错误信息的初始化。以后
可以使用void ERR_print_errors_fp(FILE *fp) 打印SSL的错误信息。
一次SSL连接会话一般要先申请一个SSL 环境,基本的过程是:
1. SSL_METHOD* meth = TLSv1_client_method(); 创建本次会话连接所使用的协议,如果是客户端可
以使用
SSL_METHOD* TLSv1_client_method(void); TLSv1.0 协议
SSL_METHOD* SSLv2_client_method(void); SSLv2 协议
SSL_METHOD* SSLv3_client_method(void); SSLv3 协议
SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 协议
服务器同样需要创建本次会话所使用的协议:
SSL_METHOD *TLSv1_server_method(void);
SSL_METHOD *SSLv2_server_method(void);
SSL_METHOD *SSLv3_server_method(void);
SSL_METHOD *SSLv23_server_method(void);
需要注意的是客户端和服务器需要使用相同的协议。
2.申请SSL会话的环境 CTX,使用不同的协议进行会话,其环境也是不同的。申请SSL会话环
境的OpenSSL函数是
SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 参数就是前面我们申请的 SSL通讯方式。返回当前
的SSL 连接环境的指针。
然后根据自己的需要设置CTX的属性,典型的是设置SSL 握手阶段证书的验证方式和加载自己
的证书。
void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )
设置证书验证的方式。
第一个参数是当前的CTX 指针,第二个是验证方式,如果是要验证对方的话,就使用
SSL_VERIFY_PEER。不需要的话,使用SSL_VERIFY_NONE.一般情况下,客户端需要验证对方,而
服务器不需要。第三个参数是处理验证的回调函数,如果没有特殊的需要,使用空指针就可以了。
void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*);
加载证书;
第一个参数同上,参数二是证书文件的名称,参数三是证书文件的路径;
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
加载本地的证书;type 指明证书文件的结构类型;失败返回-1
int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
加载自己的私钥;type 参数指明私钥文件的结构类型;失败返回-1
加载了证书和文件之后,就可以验证私钥和证书是否相符:
BOOl SSL_CTX_check_private_key (SSL_CTX*);
3.既然SSL 使用TCP 协议,当然需要把SSL attach 到已经连接的套接字上了:
SSL* SSL_new (SSL_CTX*); 申请一个SSL 套节字;
int SSL_set_rfd (SSL*); 绑定只读套接字
int SSL_set_wfd (SSL*); 绑定只写套接字
int SSL_set_fd ( SSL*); 绑定读写套接字
绑定成功返回 1, 失败返回0;
4. 接下来就是SSL 握手的动作了
int SSL_connect (SSL*); 失败返回 -1
5. 握手成功之后,就可以进行通讯了,使用SSL_read 和SS_write 读写SSL 套接字代替传统的
read 、write
int SSL_read (SSL *ssl, char *buf, int num );
int SSL_write (SSL *ssl, char *buf, int num);
如果是服务器,则使用 SSL_accept 代替传统的 accept 调用
int SSL_accept(SSL *ssl);
6. 通讯结束,需要释放前面申请的 SSL资源
int SSL_shutdown(SSL *ssl); 关闭SSL套接字;
void SSL_free (ssl); 释放SSL套接字;
void SSL_CTX_free (ctx); 释放SSL环境;
OpenSSL 虽然已经发展到了0.9.96版本,但是它的文档还很少,甚至连最基本的man 函数手
册都没有完成。所以,本文紧紧是讲述了使用OpenSSL 进行程序设计的框架。更加详细的资
料可以参考OpenSSL 的文档或者 Apache mod_ssl 的文档。
通过以上的介绍,我想读者对SSL协议已经有了一定的了解,作者有机会将会继续给大家介绍
SSL协议的其他方面的内容。
SSL原理解密
本文出自:
http://noc.cstnet.net.cn/
范晓明
RSA公钥加密在计算机产业中被广泛使用在认证和加密。可以从RSA Data Security Inc.获得的RSA公钥加密许可证。公钥加密是使用一对非对称的密码加密或解密的方法。每一对密码由公钥和私钥组成。公钥被广泛发布。私钥是隐密的,不公开。用公钥加密的数据只能够被私钥解密。反过来,使用私钥加密的数据只能用公钥解密。这个非对称的特性使得公钥加密很有用。
使用公钥加密法认证
认证是一个身份认证的过程。在下列例子中包括甲和乙,公钥加密会非常轻松地校验身份。符号{数据} key意味着"数据"已经使用密码加密或解密。假如甲想校验乙的身份。乙有一对密码,一个是公开的,另一个是私有的。乙透露给甲他的公钥。甲产生一个随机信息发送给乙。甲——〉乙:random-message
乙使用他的私钥加密消息,返回甲加密后的消息。 乙——〉甲:{random-message}乙的私钥
甲收到这个消息然后使用乙的以前公开过的公钥解密。他比较解密后的消息与他原先发给乙的消息。如果它们完全一致,就会知道在与乙说话。任意一个中间人不会知道乙的私钥,也不能正确加密甲检查的随机消息。
除非你清楚知道你加密的消息。用私钥加密消息,然后发送给其他人不是一个好主意。因为加密值可能被用来对付你,需要注意的是:因为只有你才有私钥,所以只有你才能加密消息。所以,代替加密甲发来的原始消息,乙创建了一个信息段并且加密。信息段取自随机消息(random-message)并具有以下有用的特性:
1. 这个信息段难以还原。任何人即使伪装成乙,也不能从信息段中得到原始消息;
2. 假冒者将发现不同的消息计算出相同的信息段值;
3. 使用信息段,乙能够保护自己。他计算甲发出的随机信息段,并且加密结果,并发送加密信息段返回甲。甲能够计算出相同的信息段并且解密乙的消息认证乙。
这个技术仅仅描绘了数字签名。通过加密甲产生的随机消息,乙已经在甲产生的消息签名。因此我们的认证协议还需要一次加密。一些消息由乙产生:
甲——〉乙:你好,你是乙么?
乙——〉甲:甲,我是乙
{信息段[甲,我是乙] } 乙的私钥
当你使用这个协议,乙知道他发送给乙的消息,他不介意在上面签名。他先发送不加密的信息,"甲,我是乙。",然后发送信息段加密的消息版本。甲可以非常方便地校验乙就是乙,同时,乙还没有在他不想要的信息上签名。
提交公钥
那么,乙怎样以可信的方式提交他的公钥呢?看看认证协议如下所示:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的公钥
甲——〉乙:prove it
乙——〉甲:甲,我是乙 {信息段[甲,我是乙] } 乙的私钥
在这个协议下,任何人都能够成为"乙"。所有你所要的只是公钥和私钥。你发送给甲说你就是乙,这样你的公钥就代替了乙的密码。然后,你发送用你的私钥加密的消息,证明你的身份。甲却不能发觉你并不是乙。为了解决这个问题,标准组织已经发明了证书。一个证书有以下的内容:
* 证书的发行者姓名
* 发行证书的组织
* 标题的公钥
* 邮戳
证书使用发行者的私钥加密。每一个人都知道证书发行者的公钥(这样,每个证书的发行者拥有一个证书)。证书是一个把公钥与姓名绑定的协议。通过使用证书技术,每一个人都可以检查乙的证书,判断是否被假冒。假设乙控制好他的私钥,并且他确实是得到证书的乙,就万事大吉了。
这些是修订后的协议:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校验
甲——〉乙:prove it
乙——〉甲:甲,我是乙 {信息段[甲, 我是乙] } 乙的私钥
现在当甲收到乙的第一个消息,他能检查证书,签名(如上所述,使用信息段和公钥解密),然后检查标题(乙的姓名),确定是乙。他就能相信公钥就是乙的公钥和要求乙证明自己的身份。乙通过上面的过程,制作一个信息段,用一个签名版本答复甲。甲可以校验乙的信息段通过使用从证书上得到的公钥并检查结果。
如果一个黑客,叫H
甲——〉H:你好
H——〉不能建立一个令甲相信的从乙的消息。
交换密码(secret)
一旦甲已经验证乙后,他可以发送给乙一个只有乙可以解密、阅读的消息:
甲——〉乙:{secret}乙的公钥
唯一找到密码的方法只有使用乙的私钥解码上述的信息。交换密码是另一个有效使用密码加密的方法。即使在甲和乙之间的通讯被侦听,只有乙才能得到密码。
使用密码作为另一个secret-key增强了网络的安全性,但是这次这是一个对称的加密算法(例如DES、RC4、IDE甲)。因为甲在发送给乙之前产生了密码,所以甲知道密码。乙知道密码因为乙有私钥,能够解密甲的信息。但他们都知道密码,他们都能够初始化一个对称密码算法,而且开始发送加密后的信息。这儿是修定后的协议:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校验
甲——〉乙:prove it
乙——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私钥
甲——〉乙:ok 乙,here is a secret {secret}乙的公钥
乙——〉甲:{some message}secret-key
黑客窃听
那么如果有一个恶意的黑客H在甲和乙中间,虽然不能发现甲和乙已经交换的密码,但能干扰他们的交谈。他可以放过大部分信息,选择破坏一定的信息(这是非常简单的,因为他知道甲和乙通话采用的协议)。
甲——〉H:你好
H——〉乙:你好
乙——〉H:嗨,我是乙,乙的校验
H——〉甲:嗨,我是乙,乙的校验
甲——〉H:prove it
H——〉乙:prove it
乙——〉H:甲,我是乙 {信息段[甲,我是乙] }乙的私钥
H——〉甲:甲,我是乙 {信息段[甲,我是乙] }乙的私钥
甲——〉H:ok 乙,here is a secret {secret} 乙的公钥
H——〉乙:ok 乙,here is a secret {secret} 乙的公钥
乙——〉H:{some message}secret-key
H——〉甲:Garble[{some message}secret-key ]
H忽略一些数据不修改,直到甲和乙交换密码。然后H干扰乙给甲的信息。在这一点上,甲相信乙,所以他可能相信已经被干扰的消息并且尽力解密。
需要注意的是,H不知道密码,他所能做的就是毁坏使用秘钥加密后的数据。基于协议,H可能不能产生一个有效的消息。但下一次呢?
为了阻止这种破坏,甲和乙在他们的协议中产生一个校验码消息(message authentication code)。一个校验码消息(MAC)是一部分由密码和一些传输消息产生的数据。信息段算法描述的上述特性正是它们抵御H的功能:
MAC= Digest[some message,secret ]
因为H不知道密码,他不能得出正确的值。即使H随机干扰消息,只要数据量大,他成功的机会微乎其微。例如,使用HD5(一个RSA发明的好的加密算法),甲和乙能够发送128位MAC值和他们的消息。H猜测正确的MAC的几率将近1/18,446,744,073,709,551,616约等于零。
这是又一次修改后的协议:
甲——〉乙:你好
乙——〉甲:嗨,我是乙,乙的校验
甲——〉乙:prove it
乙——〉甲:嗨,我是乙,乙的校验
甲,我是乙
{信息段[甲,我是乙] } 乙的私钥
ok 乙,here is a secret {secret} 乙的公钥
{some message,MAC}secret-key
现在H已经无技可施了。他干扰了得到的所有消息,但MAC计算机能够发现他。甲和乙能够发现伪造的MAC值并且停止交谈。H不再能与乙通讯。
OpenSSL FAQ