當前位置:首頁 » 編程語言 » rc4c語言實現

rc4c語言實現

發布時間: 2024-10-07 10:08:34

① 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文件夾下包含相應的匯編文件。

熱點內容
u盤加密啟動電腦 發布:2024-11-24 13:30:44 瀏覽:905
宣片腳本詞 發布:2024-11-24 13:30:33 瀏覽:493
pythonforif一行 發布:2024-11-24 13:28:19 瀏覽:393
伺服器集群怎麼實現 發布:2024-11-24 13:26:51 瀏覽:598
秒評源碼 發布:2024-11-24 13:24:30 瀏覽:125
聯想筆記本e450c怎麼看配置 發布:2024-11-24 13:22:23 瀏覽:86
c語言如何運行程序 發布:2024-11-24 13:20:03 瀏覽:448
訪問oracle其他用戶 發布:2024-11-24 13:18:32 瀏覽:68
年青人的游戲密碼一般是什麼 發布:2024-11-24 13:17:01 瀏覽:785
培訓室密碼是多少 發布:2024-11-24 13:16:21 瀏覽:76