rc4c语言实现
① SSL/TLS协议原理解读
HTTPS是什么相信大家都知道,如果你不知道。。。请关闭此文!!!
HTTP的数据是明文传输的,没有安全性可言。HTTPS是秘文传输,那么HTTPS是怎么实现数据的安全(加密)传输的?那是因为HTTPS比HTTP多了个'S'。 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
SSL/TLS协议是网络安全通信的重要基石,本文将简单介绍SSL/TLS协议,主要关注SSL/TLS协议的安全性,特别是SSL规范的正确实现。 本系列的文章大体分为几个部分:
1、SSL/TLS简介
2、SSL/TLS协议的基本流程
3、从SSL到TLS
4、SSL/TLS的流行实现库
SSL全称是Secure Sockets Layer,安全套接字层,它是由网景公司(Netscape)设计的主要用于Web的安全传输协议,目的是为网络通信提供机密性、认证性及数据完整性保障。如今,SSL已经成为互联网保密通信的工业标准。
SSL最初的几个版本(SSL 1.0、SSL2.0、SSL 3.0)由网景公司设计和维护,从3.1版本开始,SSL协议由因特网工程任务小组(IETF)正式接管,并更名为TLS(Transport Layer Security),发展至今已有TLS 1.0、TLS1.1、TLS1.2这几个版本。
如TLS名字所说,SSL/TLS协议仅保障传输层安全。同时,由于协议自身特性(数字证书机制),SSL/TLS不能被用于保护多跳(multi-hop)端到端通信,而只能保护点到点通信。
SSL/TLS协议能够提供的安全目标主要包括如下几个:
认证性——借助数字证书认证服务器端和客户端身份,防止身份伪造
机密性——借助加密防止第三方窃听
完整性——借助消息认证码(MAC)保障数据完整性,防止消息篡改
重放保护——通过使用隐式序列号防止重放攻击
为了实现这些安全目标,SSL/TLS协议被设计为一个两阶段协议,分为握手阶段和应用阶段:
握手阶段也称协商阶段,在这一阶段,客户端和服务器端会认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及MasterSecret。后续通信使用的所有密钥都是通过MasterSecret生成。
在握手阶段完成后,进入应用阶段。在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信。
Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换;
ChangeCipherSpec 协议:一条消息表明握手协议已经完成;
Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型的错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告;
Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等。
图2、图3都是表示的协议流程,大同小异。可以对比着看加深理解。
每一个SSL/TLS链接都是从握手开始的,握手过程包含一个消息序列,用以协商安全参数、密码套件,进行身份认证以及密钥交换。握手过程中的消息必须严格按照预先定义的顺序发生,否则就会带来潜在的安全威胁。今年顶级安全会议CCS 有文章提出了建立综合状态机来检查SSL链接中消息序列……
2.1 握手过程中的消息序列
ClientHello:ClientHello通常是握手过程中的第一条消息,用于告知服务器客户端所支持的密码套件种类、最高SSL/TLS协议版本以及压缩算法。
ClientHello中还包含一个随机数,这个随机数由4个字节的当前GMT UNIX时间以及28个随机选择的字节组成,共32字节。该随机数会在密钥生成过程中被使用。
另外,ClientHello中还可能包含客户端支持的TLS扩展。(TLS扩展可以被用来丰富TLS协议的功能或者增强协议的安全性)
ServerHello:服务器接受到ClientHello后,会返回ServerHello。服务器从客户端在ClientHello中提供的密码套件、SSL/TLS版本、压缩算法列表里选择它所支持的项,并把它的选择包含在ServerHello中告知客户端。接下来SSL协议的建立就基于服务器选择的密码套件类型、SSL/TLS协议版本以及压缩算法。
ServerHello中同样会包含一个随机数,同样4+28 字节类型,由服务器生成。
Certificate:客户端和服务器都可以发送证书消息来证明自己的身份,但是通常客户端证书不被使用。 服务器一般在ServerHello后会接一条Certificate消息,Certificate消息中会包含一条证书链,从服务器证书开始,到Certificate authority(CA)或者最新的自签名证书结束。下图形象地描述了证书链:
SSL中使用的证书通常是X.509类型证书,X.509证书的内容如下表所示:
在用的X.509证书包含Version 1和Version 3两种版本,其中v1版本的证书存在安全隐患,同时不支持TLS扩展,被逐渐弃用。现在大多数在用的SSL证书都是V3版本。
同时证书会附带与协商好的密钥交换算法对应的密钥。密钥交换算法以及它们所要求的密钥类型如下表所示。
ServerKeyExchange:该消息仅当以下密钥交换算法被使用时由服务器发出:
RSA_EXPORT(仅当服务器的公钥大于512bit时)、DHE_DSS、DHE_DSS_EXPORT、DHE_RSA、DHE_RSA_EXPORT、DH_anon 使用其它密钥交换算法时,服务器不能发送此消息。
ServerkeyExchange消息会携带这些密钥交换算法所需要的额外参数,以在后续步骤中协商PreMasterSecret。这些参数需要被签过名。
CertificateRequest:这个消息通常在要求认证客户端身份时才会有。消息中包含了证书类型以及可接受的CA列表。
ServerHelloDone:服务器发送这条消息表明服务器部分的密钥交换信息已经发送完了,等待客户端的消息以继续接下来的步骤。这条消息只用作提醒,不包含数据域。
ClientKeyExchange:这条消息包含的数据与所选用的密钥交换算法有关。
如果选择的密钥交换算法是RSA,那么消息包含的参数为用服务器RSA公钥(包含在之前证书中的或者是ServerKeyExchange中的)加密过的PreMasterSecret,它有48个字节,前2个字节表示客户端支持的最高协议版本,后46个字节是随机选择的。
如果选择的密钥交换算法是DH或者DHE,则可能有两种情况:
隐式DH公开值:包含在Certificate消息里;
显示DH公开值:公开值是本消息的一部分。
CertificateVerify:这条消息用来证明客户端拥有之前提交的客户端证书的私钥。
Finished:表明握手阶段结束。这是第一条用协商的算法和密钥保护的消息。
因为是用协商好的密钥加密的消息,它可以用来确认已经协商好的密钥。
同时Finished消息包含一个verify_data域,可以用来校验之前发送和接收的信息。
Verify_data域是一个PRF函数的输出(pseudo-random function)。这个伪随机函数的输入为:(1)两个hash值:一个SHA-1,一个MD5,对之前握手过程中交换的所有消息做哈希;(2)the MasterSecret,由预备主密钥生成;(3)finished_label,如果客户端发送的则是”client finished”,服务器发送的则是”server finished”。关于这个PRF的细节在3.3节中会具体描述。 此外,Finished 消息不能够在ChangeCipherSpec前发送。
2.2 不同密钥交换算法对应的握手过程
不同的密钥交换算法对应的握手过程中的消息序列是不同的,相应的实现方式也不同,本节介绍几个常见密钥交换算法对应的握手过程。
TLS-RSA:在这个场景下,PreMasterSecret是由客户端指定的,并用RSA公钥加密发送给服务器。服务器不影响PReMasterSecret的生成。
TLS-DH:基于DH的密钥交换也被称为静态Diffie-Hellman。在这种场景下,可能是双方各自提交一个证书包含DH公开值,或者服务器端提交证书包含DH公开值,客户端在每次会话中选择一个值。协商好的DH值被用作PreMasterSecret。显然证书中的参数是固定的,那么每次链接的PreMasterSecret也是相同的。
TLS-DH不能提供前向安全性。
TLS-DHE:基于DHE的TLS握手中会有ServerKeyExchange消息。握手过程中交换参数的认证通过数字签名来实现,支持的签名算法包括RSA和DSS。DH参数会有它的数字签名一起被包含在ServerKeyExchange中被发送出去。客户端在ClientKeyExchange中返回它的公开DH参数,但没有签名保护。同样协商出来的DH密钥被用作PreMasterSecret。
2.3 密钥生成
Pseudo-random Function(PRF):伪随机函数是SSL协议中的一个重要组成部分,它被用来秘密扩展以及生成密钥。在3.1节讲解Finished消息时已经简单提及PRF,在这里我们详细讨论PRF的工作原理。SSL/TLS协议中的PRF如下图所示:
这个PRF基于两个hash函数:MD5和SHA-1,它有3个输入,一个Secret(比如PreMasterSecret),一个标志符(比如”client finished”, “server finished”),还有一个种子值(比如客户端随机数+服务器端随机数)。
Secret在使用时被分为长度相同的两半:S1和S2,分别作为P_MD5和P_SHA-1的输入。
PRF的输出按如下方式处理得到:
P_MD5和P_SHA-1都是扩展函数,用来扩展秘密值以用于密钥生成,它们的计算方式如下:
其中A(0) = seed, A(i) = HMAC hash( secret, A( i −1) )
这个秘密扩展会一直进行直到得到足够多的扩展数据。 Key Derivation:主密钥(MasterSecret)是利用上述PRF从预备主密钥(PreMasterSecret)生成的。每个MasterSecret为48字节,生成方式如下:
得到MasterSecret后,它会被进一步处理最后生成4个不同的密钥和2个初始向量(IV)。处理过程如下:
处理过程一直持续到足够多的输出被生成,然后把输出分为4个key和2个IV:
下图完整阐述了SSL/TLS协议中的密钥生成过程。
本节介绍SSL/TLS协议的版本变迁,不同版本的区别以及安全特性等。
SSL 1.0由于从来没有被公开过,并且存在严重安全漏洞,我们就不讨论了。
SSL 2.0:SSL 2.0于1995年4月被发布。SSL 2.0中主要存在的问题如下:
MAC不能覆盖填充长度域,攻击者可能利用这点破坏消息完整性;
缺乏握手认证,攻击者可以篡改密码套件列表,诱骗通信双方使用较弱的密码套件;
使用较弱的或有问题的密码算法(如MD5,RC4等),或者使用不安全的分组模式(如CBC模式);
对于不同的密码学基元使用相同的密钥,违背基本安全常识。
由于以上安全问题,RFC 6176已经明确提出避免使用SSL 2.0,但是现实生活中还有少量客户端和服务器支持SSL 2.0.
SSL 3.0:SSL 3.0引入了一些新的特性和机制解决了很多之前版本存在的漏洞。此外,SSL 3.0中引入了ChangeCipherSpec子协议。SSL 3.0向后兼容SSL 2.0,相对于SSL 2.0,它的主要改变包括以下几点:
支持更多的密码套件(支持更多的密码算法如DSS,SHA-1)
在握手阶段支持密钥协商(DH和FORTEZZA)
支持密码学参数的重协商
增加了消息压缩选项
MAC能够覆盖填充长度域了,同时MAC可以使用MD5或者SHA-1
不同的密码学基元使用不同的key
Alert子协议能对任何错误给出两种提示:Warning和Fatal
中止链接的时候会用一个close_notify警告通知通信双方
支持证书链,而非单个证书
通过Finished消息认证所有发送和接收的消息
加密了的PreMasterSecret包含当前使用的协议版本,防止协议回滚
TLS 1.0:TLS 1.0和SSL 3.0差别非常小。实际上,TLS 1.0是SSL 3.1,在IETF接手后改名为TLS。TLS 1.0版本是目前使用最广泛的SSL/TLS协议版本。
TLS 1.0不再支持使用FORTEZZA的密码套件。
TLS 1.0中MAC被替换成HMAC。
之前提到ChangeCipherSpec消息必须在Finished消息前发送,在TLS 1.0中,如果消息序列不符合这个要求,会产生FATAL警告并终止链接。
TLS 1.1:这个版本相比之前改动也很小。最重要的改动是预防了针对CBC分组模式的一些攻击。现在的填充错误变的和非法MAC错误不可区分了,防止攻击者利用可区分错误响应建立解密预言机对密文进行攻击。
在每次加密过程中,使用CBC分组模式时,都需要显示给出IV,而不用再密钥生成时使用PRF生成IV。
此外,TLS 1.1禁止为适应之前出口限制而使用弱化的密码套件。
TLS 1.2:这是最新的版本,部署的还比较少。这个版本禁用了PRF中的MD5和SHA-1,而用一个可配置的hash函数取代了它们,这样的修改简化了计算过程。修改后的PRF风格如下:
此外,TLS 1.2的一个重要变化是支持认证加密模式(支持GCM等)。但是由于一些AEAD(Authenticated Encryption with Associated Data)密码算法要求IV为隐式的,所以IV又恢复到由MasterSecret生成,即TLS 1.0以前的风格。
TLS 1.2支持使用GCM、CCM的新密码套件。
同时SSL 2.0被宣布放弃,不再向后兼容SSL 2.0.
本节简单介绍一下流行的SSL/TLS实现库,SSL协议非常复杂,由开发者自己实现常常会出错,开发者在具体实现SSL协议时通常会依赖于这些密码学库。
4.1 常见的SSL/TLS 实现
OpenSSL:这是非常流行的开源SSL/TLS实现。
OpenSSLim完全用c语言实现,支持SSL 2.0/3.0,TLS 1.0/1.1/1.2以及DTLS 1.0。
OpenSSL 近年来出现了很多的安全漏洞,比如2014年曝出的着名的Heartbleed漏洞等。
JSSE:这是使用Java实现的,支持SSL 3.0,TLS 1.0/1.1/1.2.
Bouncy Castle:它不仅仅支持SSL/TLS,它是一个完整的密码学库,支持各种密码学算法和协议。不过它仅仅支持TLS 1.0版本。
Android平台主要使用这个密码学库。
GnuTLS:这是另一个用C语言实现的库,支持SSL 3.0,TLS 1.0/1.1/1.2以及DTLS 1.0。主要在Unix世界被使用。同时以各种安全漏洞多而闻名。
NSS:这是最初由网景公司(Netscape)开发的库,支持SSL 2.0/3.0,TLS 1.0/1.1,现在主要被浏览器和客户端软件使用,比如Firefox使用的就是NSS库,Chrome使用的是一个NSS库的修正版。
下表是一些常见软件以及它们所使用的SSL/TLS实现库的情况:
其它还有一些常用的SSL实现库,如cryptlib、CyaSSL、MatrixSSL、PolarSSL等,由于市场占有率不高,我们这里就不多做介绍了。
4.2 流行SSL/TLS实现库的安全研究
最近几年曝出的高风险SSL安全漏洞大多跟SSL实现库有关,比如2014年4月曝出的“心脏滴血”漏洞,存在于OpenSSL 1.0.1-1.0.1f版本中,影响全球近17%的Web服务器;同样是2014年曝出的苹果公司iOS 7.0.6版本系统中存在的“gotofail”漏洞,因为程序员的疏忽导致SSL证书校验中的签名校验失效;包括今年曝出的SSL Freak攻击也是由于SSL实现库的安全漏洞导致的攻击,我们研究小组的同学对这个攻击有详细的分析,参见《SSL Freak来袭:如何实施一个具体的SSL Freak攻击》。同时我们还开发了一个基于python的中间人代理攻击框架“风声”对某国内知名电商的服务器进行具体的攻击,并上报了漏洞。
考虑到大量SSL/TLS实现库中存在安全问题,同时这些主流的SSL/TLS实现库对开发者而言使用难度较高,比如有些SSL/TLS实现库要求开发者自己进行随机数生成或密钥管理,让缺乏系统信息安全知识培训的开发者去使用这样高度复杂的密码学库容易产生很多安全问题。我们在这里推荐一些高级密码学库:Google keycazer、NaCl、Cryptlib、GPGME。这些密码学库存在的安全问题较少,同时封装了一些底层的密码学操作,降低了开发者的使用难度。
以上就是本次要介绍的SSL /TLS协议基本知识,后续的文章我们会对一些典型SSL/TLS攻击进行具体介绍。
参考:
1、 http://netsecurity.51cto.com/art/201505/476337.htm
2、 http://www.cnblogs.com/NathanYang/p/9183300.html
3、 https://www.cnblogs.com/bhlsheji/p/4586597.html
② 接口协议有哪些
问题一:webservice有哪些协议 WebService有哪些协议?
这个问题问的可能会有点问题.
首先:
Web service是一个平 *** 立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不差凯同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
他自己本身是一个技术的名称而已
如果您说的是.NET的WebService
那么就是SOAP协议了..XML格式的.
具体的话.
技术支持
Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。这些协议有:
XML和XSD
可扩展的标记语言(标准通用标记语言下的一个子集)是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB. NET或C#来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。
xml web service[2]
SOAP
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML(贺庆派标准通用标记语言下的一个子集)编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。
Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
WSDL
Web Service描述语言WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
UDDI
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、......>>
问题二:计算机协议有哪些 目前网络协议有许多种,但是最基本的协议是TCP/IP协议,许多协议都是它的子协议。下面我们就对TCP/IP协议作一下简单介绍。
1 TCP/IP协议基础
TCP/IP协议包括两个子协议:一个是TCP协议(Tran *** ission Control Protocol,禅贺传输控制协议),另一个是IP协议(Internet Protocol,互联网协议),它起源于20世纪60年代末。
在TCP/IP协议中,TCP协议和IP协议各有分工。TCP协议是IP协议的高层协议,TCP在IP之上提供了一个可靠的,连接方式的协议。TCP协议能保证数据包的传输以及正确的传输顺序,并且它可以确认包头和包内数据的准确性。如果在传输期间出现丢包或错包的情况,TCP负责重新传输出错的包,这样的可靠性使得TCP/IP协议在会话式传输中得到充分应用。IP协议为TCP/IP协议集中的其它所有协议提供“包传输”功能,IP协议为计算机上的数据提供一个最有效的无连接传输系统,也就是说IP包不能保证到达目的地,接收方也不能保证按顺序收到IP包,它仅能确认IP包头的完整性。最终确认包是否到达目的地,还要依靠TCP协议,因为TCP协议是有连接服务。
在计算机服务中如果按连接方式来分的话,可分为“有连接服务”和“无连接服务”两种。“有连接服务”必须先建立连接才能提供相应服务,而“无连接服务”则不需先建立连接。TCP协议是一种典型的有连接协议,而UDP协议则是典型的无连接服务。
TCP/IP协议所包括的协议和工具
TCP/IP协议是一组网络协议的 *** ,它主要包括以下几方面的协议和工具。
・TCP/IP协议核心协议
这些核心协议除了自身外,还包括用户数据报协议(UDP协议)、地址代理协议(ARP协议)以及网间控制协议(ICMP协议)。这组协议提供了一系列计算机互连和网络互连的标准协议。
・应用接口协议
这类协议主要包括Windows套接字(Socket,用于开发网络应用程序)、远程调用、NetBIOS协议(用于建立逻辑名和网络上的会话)和网络动态数据交换(Network,用于通过网络共享嵌入在文本中的信息)。
・基本的TCP/IP协议互连应用协议
主要包括finger、ftp、rep、rsh、telnet、tftp等协议。这些工具协议使得Windows系统用户使用非Microsoft系统计算机上(如UNIX系统计算机)的资源成为可能。
・TCP/IP协议诊断工具
这些工具包括arp、hostname、ipconfig、nbstat、netstat、ping和route,它们可用来检测并恢复TCP/IP协议网络故障。
・有关服务和管理工具
这些服务和管理工具包括FTP服务器服务(用于在两个远程计算机之间传输文件,这是远程控制通信中的关键功能)、网际命名服务WINS(用于在一个网际上动态记录和询问计算机的名字)、动态计算机配置协议DHCP(用于在Windows NT计算机上自动配置TCP/IP协议)以及TCP/IP协议打印(主要用于远程打印和网络打印)。
・简单网络管理协议代理(SNMP)
这个工具允许通过使用管理工具(如“Sun Net Manages” 或“HP Open View”),从远程管理Windows NT计算机。
(2)TCP/IP的主要协议简述
为了使读者能全面了解一些基本的网络通信协议和服务,本节就对TCP/IP协议所包括的几种主要协议进行简要说明。
・远程登录协议(Tel......>>
问题三:常用的网络协议有哪些? ARP(Address Resolution Protocol)地址解析协议
它是用于映射计算机的物理地址和临时指定的网络地址。启动时它选择一个协议(网络层)地址,并检查这个地址是否已经有别的计算机使用,如果没有被使用,此结点被使用这个地址,如果此地址已经被别的计算机使用,正在使用此地址的计算机会通告这一信息,只有再选另一个地址了。
SNMP(Simple Network Management P)网络管理协议
它是TCP/IP协议中的一部份,它为本地和远端的网络设备管理提供了一个标准化途径,是分布式环境中的集中化管理的重要组成部份。
BGP4(Border Gateway Protocol Vertion 4)边界网关协议-版本4
它是用于在自治网络中网关主机(每个主机有自己的路由)之间交换路由信息的协议,它使管理员能够在已知的路由策略上配置路由加权,可以更方便地使用无级内部域名路由(CIDR),它是一种在网络中可以容纳更多地址的机制,它比外部网关协议(EGP)更新。BGP4经常用于网关主机之间,主机中的路由表包括了已知路由的列表,可达的地址和路由加权,这样就可以在路由中选择最好的通路了。BGP在局域网中通信时使用内部BGP(IBGP),因为IBGP不能很好工作。
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
它是在TCP/IP网络上使客户机获得配置信息的协议,它是基于BOOTP协议,并在BOOTP协议的基础上添加了自动分配可用网络地址等功能。这两个协议可以通过一些机制互操作。DHCP协议在安装TCP/IP协议和使用TCP/IP协议进行通迅时,必须配置IP地址、子网掩码、缺省网关三个参数,这三个参数可以手动配置,也可以使用DHCP自动配置。
FTP(File Transfer Protocol)文件传输协议
它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。象传送可显示文件的HTTP和电子邮件的SMTP一样,FTP也是应用TCP/IP协议的应用协议标准。FTP通常用于将网页从创作者上传到服务器上供人使用,而从服务器上下传文件也是一种非常普遍的使用方式。作为用户,您可以用非常简单的DOS界面来使用FTP,也可以使用由第三方提供的图形界面的FTP来更新(删除,重命名,移动和复制)服务器上的文件。现在有许多服务器支持匿名登录,允许用户使用FTP和ANONYMOUS作为用户名进行登录,通常可使用任何口令或只按回车键。
HDLC(High-Level Data Link Control)高层数据链路协议
它是一组用于在网络结点间传送数据的协议。在HDLC中,数据被组成一个个的单元(称为帧)通过网络发送,并由接收方确认收到。HDLC协议也管理数据流和数据发送的间隔时间。HDLC是在数据链路层中最广泛最使用的协议之一。现在作为ISO的标准,HDLC是基于IBM的SDLC协议的,SDLC被广泛用于IBM的大型机环境之中。在HDLC中,属于SDLC的被称为通响应模式(NRM)。在通常响应模式中,基站(通常是大型机)发送数据给本地或远程的二级站。不同类型的HDLC被用于使用X.25协议的网络和帧中继网络,这种协议可以在局域网或广域网中使用,无论此网是公共的还是私人的。
HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本传输协议-版本1......>>
问题四:接口测试都有哪些协议 协议主要是HTTP为主,特别是对外的接口,而对外的接口又是bug重灾区,所以比较重要。
但以后也不排除还会出现比如websocket等协议,甚至很多内部使用的协议都是开发自己定义的,并没有名字
问题五:什么是Um接口协议 呵呵,帮你搜好了。
Um接口是GSM的空中接口。Um接口上的通信协议有5层,自下而上依次为物理层、MAC(Media Access Control)层、LLG(Logical Link Control)层、SNDC层和网络层。Um接口的物理层为射频接口部分,而物理链路层则负责提供空中接口的各种逻辑信道。GSM空中接口的载频带宽为200KHZ,一个载频分为8个物理信道。如果8个物理信道都分配为传送GPRS数据,则原始数据速率可达200Kbps。考虑前向纠错码的开销,则最终的数据速率可达164kbps左右;MAC为媒质访问控制层。MAC的主要作用是定义和分配空中接口的GPRS逻辑信道,使得这些信道能被不同的移动终端共享;LLG层为逻辑链路控制层。它是一种基于高速数据链路规程HDLG的无线链路协议;SNDC被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包,确定TCP/IP地址和加密方式;网络层的协议目前主要是Phasel阶段提供的 TCP/IP和L25协议。TCP/IP和X.25协议对于传统的GSM网络设备(如:BSS、NSS等设备)是透明的。
Um接口(也称空中接口)的无线信令规程由《800MHz CDMA数字蜂窝移动通信网空中接口技术规范》规定。中国电信和中国联通均已颁布了此规范。此规范基于TIA/EIA/IS-95A―宽带双模扩频蜂窝系统移动台-基站兼容性标准。
A接口的信令规程由《800MHz CDMA数字蜂窝移动通信网移动业务交换中心与基站子系统间接口信令技术规范》规定。中国电信和中国联通均已颁布了此规范。中国联通颁布的A接口信令规程与EIA/TIA/IS-634的信令规程基本兼容,是其一个子集。B、C、D、E、N和P接口的信令规程由《800MHz CDMA数字蜂窝移动通信网移动应用部分技术规范》规定。中国电信和中国联通均已颁而了此规范。此规范基于TIA/EIA/IS-41C―蜂窝无线通信系统间操作标准。中国联通颁布的MAP为IS-41C的子集,第一阶段使用IS-41C中51个操作(OPERATION)中的19个,主要为鉴权、切换、登记、路由请求、短消息传送等。
Ai接口的信令规程由《800MHz CDMA数字蜂窝移动通信网与PSTN网接口技术规范》规定。中国电信和中国联通均已颁布了此规范。此信令规程也称MTUP。
问题六:什么叫做API协议 API:应用程序接口(API:Application Program Interface)
应用程序接口(API:application programming interface)是一组定义、程序及协议的 *** ,通过 API 接口实现计算机软件之间的相互通盯。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。
问题七:系统接口,有哪一些协议,具体实现方式有什么区别,例如 摘要:在电子商务中,SSL协议得到了广泛的协议,而SET协议则是今后的发展趋势,本文在分析这两种协议原理的基础上,对两者的特点进行了比较。关键词:电子商务;SSL协议;SET协议1 SSL协议1.1 SSL协议概述SSL(Secure Sockets Layer)安全套接层协议是Netscape公司1995年推出的一种安全通信协议。SSL提供了两台计算机之间的安全连接,对整个会话进行了加密,从而保证了安全传输。SSL协议建立在可靠的TCP传输控制协议之上,并且与上层协议无关,各种应用层协议(如:HTTP,FTP,TELNET等)能通过SSL协议进行透明传输。SSL协议分为两层:SSL握手协议和SSL记录协议。SSL协议与TCP/IP协议间的关系如图一所示:HTTPSFTPSTELNETSIMAPS等 SSL握手协议 SSL记录协议 TCP传输控制协议 IP因特网协议 图一SSL协议与TCP/IP协议间的关系SSL协议提供的安全连接具有以下三个基本特点:(1)连接是保密的:对于每个连接都有一个唯一的会话密钥,采用对称密码体制(如DES、RC4等)来加密数据;(2)连接是可靠的:消息的传输采用MAC算法(如MD5、SHA等)进行完整性检验;(3)对端实体的鉴别采用非对称密码体制(如RSA、DSS等)进行认证。1.2 SSL握手协议SSL握手协议用于在通信双方建立安全传输通道,具体实现以下功能:(1)在客户端验证服务器,SSL协议采用公钥方式进行身份认证;(2)在服务器端验证客户(可选的);(3)客户端和服务器之间协商双方都支持的加密算法和压缩算法,可选用的加密算法包括:IDEA、RC4、DES、3DES、RSA、DSS、Diffie_hellman、Fortezza、MD5、SHA等;(4)产生对称加密算法的会话密钥;(5)建立加密SSL连接。一般的握手过程如图二所示:图二SSL协议的握手过程握手过程分为4个阶段:(1)初始化逻辑连接,客户方先发出ClientHello消息,服务器方也应返回一个ServerHello消息,这两个消息用来协商双方的安全能力,包括协议版本、随机参数、会话ID、交换密钥算法、对称加密算法、压缩算法等。(2)服务器方应发送服务器证书(包含了服务器的公钥等)和会话密钥,如果服务器要求验证客户方,则要发送CertificateRequest消息。最后服务器方发送ServerHelloDone消息,表示hello阶段结束,服务器等待客户方的响应。(3)如果服务器要求验证客户方,则客户方先发送Certificate消息,然后产生会话密钥,并用服务器的公钥加密,封装在ClientKeyExchange消息中,如果客户方发送了自己的证书,则再发送一个数字签名CertificateVerify来对证书进行校验。(4)客户方发送一个ChangeCipherSpec消息,通知服务器以后发送的消息将采用先前协商好的安全参数加密,最后再发送一个加密后的Finished消息。服务器在收到上述两个消息后,也发送自己的ChangeCipherSpec消息和Finished消息。至此,握手全部完成,双方可以开始传输应用数据。SSL握手协议在通信双方建立起合适的会话状态信息要素,如下表所示:会话状态信息要素 描述 对话标识 服务器选择的用于标识一个活跃的、重新开始的对话标识 对等证书 对等实体的X509证书 压缩方法 所采用的数据压缩算法 加......>>
问题八:接口除了协议外的,一般用到的还有什么协议的 loadrunner对系统的测试是基于系统的通信协议,不光是协议、loadrunner支持的协议多达60多种。
问题九:TCP/IP模型网络有几层?各层的主要协议分别是什么? 你好
1:分4层:从下到上分别是:网络接口层,互联层,传输层,应用层
网络接口层:负责通过网络发送数据和接收IP报文
丹联层:负责把报文分组发送到目的主机{1.处理来自传输层的发送请求.
2.处理接收的数据
3.处理互联的路径,流控和拥塞问题
}
传输层:负责进程中端对端通信.
应用层:包括所有的高层协议,不断增加新的协议.
2:TCP/IP是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目前国际上规模最大的计算机网络,正因为INTERNET的广泛使用,使得TCP/IP成了事实上的标准。之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。以下我们对协议族中一些常用协议英文名称和用途作一介绍:
TCP(Transport Control Protocol)传输控制协议
IP(Internetworking Protocol)网间网协议
UDP(User Datagram Protocol)用户数据报协议
ICMP(Internet Control Message Protocol)互联网控制信息协议
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议
SNMP(Simple Network manage Protocol)简单网络管理协议
FTP(File Transfer Protocol)文件传输协议
ARP(Address Resolation Protocol)地址解析协议
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网间网层、传输层、应用层。其中:
网络接口层 这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
网间网层 负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性,然后进行寻径――假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。
传输层 提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。
应用层 向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能...>>
问题十:串口有哪些?串口协议有哪些? u *** ,rs485,422,232是串口接口,
串口协议 常见 modbus RTU ASCII
③ rc4 密码c语言 求高手看看哪个语句错了,使其执行不了
void re_RC4(unsigned char *S,char *key)
{
unsigned char T[255]={0}; //问题在这,你的re_T第一个参数是unsigned char *,你传递的参数是 //char,所以不对
re_S(S);
re_T(T,key);
re_Sbox(S,T);
}
④ 网络安全干货知识分享 - Kali linux渗透测试 106 离线密码破解
前言
最近整理了一些 奇安信&华为大佬 的课件资料+大厂面试课题,想要的可以私信自取, 无偿赠送 给粉丝朋友~
1. 密码破解简介
1. 思路
目标系统实施了强安全措施
安装了所有补丁
无任何已知漏洞
无应用层漏洞
攻击面最小化
社会 工程学
获取目标系统用户身份
非授权用户不受信,认证用户可以访问守信资源
已知用户账号权限首先,需要提权
不会触发系统报警
2. 身份认证方法
证明你是你声称你是的那个人
你知道什么(账号密码、pin、passphrase)
你有什么(令牌、token、key、证书、密宝、手机)
你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)
以上方法结合使用
基于互联网的身份验证仍以账号密码为主要形式
3. 密码破解方法
人工猜解
垃圾桶工具
被动信息收集
基于字典暴力破解(主流)
键盘空间字符爆破
字典
保存有用户名和密码的文本文件
/usr/share/wordlist
/usr/share/wfuzz/wordlist
/usr/share/seclists
4. 字典
1. 简介
键盘空间字符爆破
全键盘空间字符
部分键盘空间字符(基于规则)
数字、小写字母、大写字符、符号、空格、瑞典字符、高位 ASCII 码
2. crunch 创建密码字典
无重复字符
crunch 1 1 -p 1234567890 | more
1
必须是最后一个参数
最大、最小字符长度失效,但必须存在
与 -s 参数不兼容(-s 指定起始字符串)
crunch 4 4 0123456789 -s 9990
读取文件中每行内容作为基本字符生成字典
crunch 1 1 -q read.txt
1
字典组成规则
crunch 6 6 -t @,%%^^ | more
-t:按位进行生成密码字典
@:小写字母 lalpha
,:大写字母 ualpha
%:数字 numeric
^:符号 symbols
输出文件压缩
root@kali:~# crunch 4 5 -p dog cat bird
1
-z:指定压缩格式
其他压缩格式:gzip、bzip2、lzma
7z压缩比率最大
指定字符集
root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab
1
随机组合
root@kali:~# crunch 4 5 -p dog cat bird
1
crunch 5 5 abc DEF + !@# -t ,@^%,
在小写字符中使用abc范围,大写字符使用 DEF 范围,数字使用占位符,符号使用!@#
占位符
转义符(空格、符号)
占位符
root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird
1
任何不同于 -p 参数指定的值都是占位符
指定特例
root@kali:~# crunch 5 5 -d 2@ -t @@@%%
1
2@:不超过两个连续相同字符
组合应用
crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
crunch 10 10 12345 –stdout | airolib-ng testdb -import passwd -
3. CUPP 按个人信息生成其专属的密码字典
CUPP:Common User Password Profiler
git clone https://github.com/Mebus/cupp.git
python cupp.py -i
4. cewl 通过收集网站信息生成字典
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt
-m:最小单词长度
-d:爬网深度
-e:收集包含email地址信息
-c:每个单词出现次数
支持基本、摘要 身份认证
支持代理
5. 用户密码变型
基于 cewl 的结果进行密码变型
末尾增加数字串
字母大小写变化
字母与符号互相转换
字母与数字互相转换
P@$w0rd
6. 使用 John the Ripper 配置文件实现密码动态变型
2. 在线密码破解
1. hydra
简介
密码破解
Windows 密码破解
Linux 密码破解
其他服务密码破解
图形化界面
xhydra
HTTP表单身份认证
密码破解效率
密码复杂度(字典命中率)
带宽、协议、服务器性能、客户端性能
锁定阈值
单位时间最大登陆请求次数
Hydra 的缺点
稳定性差,程序时常崩溃
速度控制不好,容易触发服务屏蔽或锁死机制
每主机新建进程,每服务新建实例
大量目标破解时性能差
2. pw-inspector
Hydra 小工具 pw-inspector
按长度和字符集筛选字典
pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5
3. mesa
Mesa 的特点
稳定性好
速度控制得当
基于线程
支持模块少于hydra(不支持RDP)
WEB-Form 支持存在缺陷
查看支持的模块
参数
-n:非默认端口
-s:使用SSL连接
-T:并发主机数
mesa -M ftp -q
3. 离线密码破解
1. 简介
身份认证
禁止明文传输密码
每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
服务器端用户数据库应加盐加密保存
破解思路
嗅探获取密码HASH
利用漏洞登陆服务器并从用户数据库获取密码HASH
识别HASH类型
长度、字符集
利用离线破解工具碰撞密码HASH
优势
离线不会触发密码锁定机制
不会产生大量登陆失败日志引起管理员注意
2. HASH 识别工具
1. hash-identifier
进行 hash 计算
结果:
进行 hash 识别
2. hashid
可能识别错误或无法识别
3. HASH 密码获取
1. sammp2
Windows HASH 获取工具
利用漏洞:Pwmp、fgmp、 mimikatz、wce
物理接触:sammp2
将待攻击主机关机
使用 Kali ISO 在线启动此主机
发现此 windows 机器安装有两块硬盘
mount /dev/sda1 /mnt
将硬盘挂载
cd /mnt/Windows/System32/config
切换目录
sammp2 SYSTEM SAM -o sam.hash
导出密码
利用 nc 传输 HASH
HASH 值:
2. syskey 工具进行密码加密
使用 syskey 进行加密(会对 SAM 数据库进行加密)
重启需要输入密码才能进一步登录
使用 kali iso live
获取到 hash 值
hashcat 很难破解
使用 bkhive 破解
使用 Bootkey 利用RC4算法加密 SAM 数据库
Bootkey 保存于 SYSTEM 文件中
bkhive
从 SYSTEM 文件中提取 bootkey
Kali 2.0 抛弃了 bkhive
编译安装 :http://http.us.debian.org/debian/pool/main/b/bkhive/
在windows的 kali live 模式下,运行
sammp2 SAM key (版本已更新,不再支持此功能)
建议使用 Kali 1.x
1. Hashcat
简介
开源多线程密码破解工具
支持80多种加密算法破解
基于CPU的计算能力破解
六种模式 (-a 0)
0 Straight:字典破解
1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21)
2 Toggle case:尝试字典中所有密码的大小写字母组合
3 Brute force:指定字符集(或全部字符集)所有组合
4 Permutation:字典中密码的全部字符置换组合(12 21)
5 Table-lookup:程序为字典中所有密码自动生成掩码
命令
hashcat -b
hashcat -m 100 hash.txt pass.lst
hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d
结果:hashcat.pot
hashcat -m 100 -a 3 hash -i –increment-min 6 –increment-max 8 ?l?l?l?l?l?l?l?l
掩码动态生成字典
使用
生成文件
计算 hash 类型
结果 MD5
查看 MD5 代表的值
进行破解
2. oclhashcat
简介
号称世界上最快、唯一的基于GPGPU的密码破解软件
免费开源、支持多平台、支持分布式、150+hash算法
硬件支持
虚拟机中无法使用
支持 CUDA 技术的Nvidia显卡
支持 OpenCL 技术的AMD显卡
安装相应的驱动
限制
最大密码长度 55 字符
使用Unicode的最大密码长度 27 字符
关于版本
oclHashcat-plus、oclHashcat-lite 已经合并为 oclhashcat
命令
3. RainbowCrack
简介
基于时间记忆权衡技术生成彩虹表
提前计算密码的HASH值,通过比对HASH值破解密码
计算HASH的速度很慢,修改版支持CUDA GPU
https://www.freerainbowtables.com/en/download/
彩虹表
密码明文、HASH值、HASH算法、字符集、明文长度范围
KALI 中包含的 RainbowCrack 工具
rtgen:预计算,生成彩虹表,时的阶段
rtsort:对 rtgen 生成的彩虹表行排序
rcrack:查找彩虹表破解密码
以上命令必须顺序使用
rtgen
LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、RIPEMD160
rtgen md5 loweralpha 1 5 0 10000 10000 0
计算彩虹表时间可能很长
下载彩虹表
http://www.freerainbowtables.com/en/tables/
http://rainbowtables.shmoo.com/
彩虹表排序
/usr/share/rainbowcrack
rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt
密码破解
r crack *.rt -h
rcrack *.rt -l hash.txt
4. John
简介
基于 CPU
支持众多服务应用的加密破解
支持某些对称加密算法破解
模式
Wordlist:基于规则的字典破解
Single crack:默认被首先执行,使用Login/GECOS信息尝试破解
Incremental:所有或指定字符集的暴力破解
External:需要在主配配文件中用C语言子集编程
默认破解模式
Single、wordlist、incremental
主配置文件中指定默认wordlist
破解Linux系统账号密码
破解windows密码
Johnny 图形化界面的john
5. ophcrack
简介
基于彩虹表的LM、NTLM密码破解软件
彩虹表:http://ophcrack.sourceforge.net/tables.php
⑤ mac64位电脑能编译32bit的openssl吗
OpenSSL介绍:OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
SSL是SecureSockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。
安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如,HTTP, FTP, TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
SSL协议提供的安全信道有三个特性:(1)、数据的保密性:信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密钥来加密数据然后在解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密钥要用一个安全的方法传送。加密过的数据可以公开地传送。(2)、数据的完整性:加密也能保证数据的一致性。例如,消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。(3)、安全验证:加密的另外一个用途是用来作为个人的标识,用户的密钥可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。
OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台。
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。
OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。
OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4.这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法DSA算法和椭圆曲线算法(EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名。DSA算法则一般只用于数字签名。
OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1.
OpenSSL的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其它辅助配置功能。
Engine机制目的是为了使OpenSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-10/108502p2.htm
OpenSSL在Windows7 64bit + vs2010中win32的编译步骤:
1. 从https://www.openssl.org/source/下载OpenSSL源代码 openssl-1.0.1g版本;
2. 从http://www.activestate.com/activeperl/downloads下载ActivePerl5.16.3 x64(ActivePerl为perl的一个脚本解释器);
3. 将ActivePerl安装到D:\ProgramFiles\Perl64目录下,打开命令提示符,将其定位到D:\ProgramFiles\Perl64\eg 目录下,执行perl example.pl ,若提示Hello fromActivePerl! 则说明Perl安装成功,可以开始使用Perl的相关命令来进行OpenSSL的安装了;
4. 将openssl-1.0.1g解压缩到E:\OpenSSL\openssl-1.0.1g目录下;
5. 从http://sourceforge.net/projects/nasm/下载nasm 2.07,将其安装到D:\ProgramFiles\NASM中,并将D:\ProgramFiles\NASM添加到系统环境变量Path中;
6. 将命令提示符定位到E:\OpenSSL\openssl-1.0.1g;
7. 输入perl Configure VC-WIN32 --perfix=E:\OpenSSL\openssl (将其安装到E:\OpenSSL\openssl);
8. 输入ms\do_nasm ;
9. 将命令提示符定位到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin , 然后输入 vcvars32.bat,会显示Settingenvironment for using Microsoft Visual Studio 2010 x86 tools. 如果没有这一步,会提示nmake不是内部或外部命令;
10. 再次将命令提示符定位到E:\OpenSSL\openssl-1.0.1g;
11. 输入 nmake –f ms\ntdll.mak ;执行完后会在openssl-1.0.1g目录下生成一个out32dll文件夹,里面包含了一些静态库、动态库和.exe文件;
12. 输入 nmake -f ms\ntdll.mak test ;若最终显示passed all tests说明生成的库正确;
13. 输入 nmake -f ms\ntdll.mak install ;则会在E:\OpenSSL\openssl目录下生成bin、include、lib、ssl四个文件夹;
14. 以上编译的是release库,若编译debug库,则将以上第7步中的VC-WIN32改成debug-VC-WIN32即可;
15. 若编译静态库则用ms\nt.mak替换掉上面用到的ms\ntdll.mak即可;
16. 若生成不带汇编支持的库,则需将以上第7、8步用perl Configure VC-WIN32 no-asm --prefix=E:\OpenSSL\openssl 和 ms\do_ms替换即可;
17. 在E:\OpenSSL\openssl-1.0.1g\tmp32dll文件夹下包含相应的汇编文件。
在win64下生成相应的库和汇编文件的编译步骤:
1. 将命令提示符定位到E:\OpenSSL\openssl-1.0.1g;
2. 输入 perl Configure VC-WIN64A --perfix=E:\OpenSSL\openssl\win64 ;
3. 输入 ms\do_nasm ;
4. 输入 ms\do_win64a ;
5. 将命令提示符定位到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 , 然后输入 vcvars64.bat,会显示Settingenvironment for using Microsoft Visual Studio 2010 x64 tools. 如果没有这一步,会提示nmake不是内部或外部命令;
6. 再次将命令提示符定位到E:\OpenSSL\openssl-1.0.1g;
7. 输入 nmake -f ms\nt.mak ;执行完后会在openssl-1.0.1g目录下生成out32和tmp32两个文件夹,out32文件夹中会生成两个静态库和一些执行文件,tmp32文件夹中会生成相应的汇编文件;
8. 输入 nmake -f ms\nt.mak test ;若最终显示passed all tests说明生成的库正确;
9. 输入 nmake -f ms\nt.mak install ;则会在E:\OpenSSL\openssl\win64目录下生成bin、include、lib、ssl四个文件夹;
10. 以上编译的是release库,若编译debug库,则将以上第2步中的VC-WIN64A改成debug-VC-WIN64A即可;
11. 若编译动态库则用ms\ntdll.mak替换掉上面用到的ms\nt.mak即可;
12. 若生成不带汇编支持的库,则需将以上第2步用perl Configure VC-WIN64A no-asm --prefix=E:\OpenSSL\openssl\win64替换即可;
13. 在E:\OpenSSL\openssl-1.0.1g\tmp32文件夹下包含相应的汇编文件。