<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    捕風之巢

    統計

    留言簿(3)

    java友情鏈接

    閱讀排行榜

    評論排行榜

    openssl簡介(四)--協議

    ?

    一.???? 協議

    SSL(SecureSocketLayer) netscape 公司提出的主要用于 web 的安全通信標準 , 分為 2.0 版和 3.0 .TLS (TransportLayerSecurity) IETF TLS 工作組在 SSL3.0 基礎之上提出的安全通信標準 , 目前版本是 1.0, RFC2246.SSL/TLS 提供的安全機制可以保證應用層數據在互聯網絡傳輸不被監聽 , 偽造和竄改 .

    一般情況下的網絡協議應用中,數據在機器中經過簡單的由上到下的幾次包裝,就進入網絡,如果這些包被截獲的話,那么可以很容易的根據網絡協議得到里面的數據 . 由網絡監聽工具可以很容易的做到這一點。

    SSL
    就是為了加密這些數據而產生的協議,可以這么理解,它是位與應用層和 TCP/IP 之間的一層,數據經過它流出的時候被加密,再往 TCP/IP 送,而數據從 TCP/IP 流入之后先進入它這一層被解密,同時它也能夠驗證網絡連接倆端的身份。


    它的主要功能就是倆個:
    一:加密解密在網絡中傳輸的數據包 , 同時保護這些數據不被修改 , 和偽造。
    二:驗證網絡對話中雙方的身份

    SSL
    協議包含倆個子協議,一個是包協議,一個是握手協議。包協議是說明 SSL 的數據包應該如何封裝的。握手協議則是說明通信雙方如何協商共同決定使用什么算法以及算法使用的 key 。很明顯包協議位于握手協議更下一層。我們暫時對包協議的內容沒有興趣。

    SSL
    握手過程說簡單點就是:通信雙方通過不對稱加密算法來協商好一個對稱加密算法以及使用的 key, 然后用這個算法加密以后所有的數據完成應用層協議的數據交換。


    握手一般都是由 client 發起的, SSL 也不例外。

    1client
    送給 server 它自己本身使用的 ssl version(ssl 一共有三個 version), 加密算法的一些配置,和一些隨機產生的數據,以及其他在 SSL 協議中需要用到的信息。

    2server
    送給 client 它自己的 SSL version, 加密算法的配置,隨機產生的數據,還會用自己的私有密鑰加密 SERVER-HELLO 息。 Server 還同時把自己的證書文件給送過去。同時有個可選的項目,就是 server 可以要求需要客戶的 certificate 。

    3client
    就用 server 送過來的 certificate 來驗證 server 的身份。如果 server 身份驗證沒通過,本次通信結束。通過證書驗證 之后,得到 server 的公共密鑰,解開 server 送來的被其用私有密鑰加密過的 SERVER-HELLO 信息,看看對頭與否。如果不對,說明對方只有 server 的公共密鑰而沒有私有密鑰,必是假的。通信告吹。

    4client
    使用到目前為止所有產生了的隨機數據 (sharedsecret),client 產生本次握手中的 premastersecret( 這個步 驟是有可能有 server 的參與的,由他們使用的加密算法決定 ), 并且把這個用 server 的公共密鑰加密,送回給 server. 如果 server 要求需 要驗證 client, 那么 client 也需要自己把自己的證書送過去,同時送一些自己簽過名的數據過去。

    SSL
    協議有倆種技術來產生 sharedsecret( 真不好意思,又是一個很難意譯的詞組 ),
    一種是 RSA, 一種是 EDH.

    RSA
    就是我們上一章說過的一種不對稱加密算法。首先 server 把自己的 RSA 公共密鑰送給 client,client 于是用這個 key 加密一個隨機產生的值 ( 這個隨機產生的值就是 sharedsecret) ,再把結果送給 server.

    EDH
    也是一種不對稱加密算法,但它與 RSA 不同的是,它好象沒有自己固定的公共密鑰和私有密鑰,都是在程序跑起來的時候產生的,用完就 K 掉。其他的步驟倆者就差不多了。

    RSA,DSA,DH
    三種不對稱加密算法的區別也就在這里。 RSA 的密鑰固定,后倆個需要一個參數來臨時生成 key.DH 甚至要求雙方使用同樣的參數,這個參數要事先指定。如果 SSL 庫沒有 load 進這個參數, DH 算法就沒辦法用。 DSA 沒研究過。

    5Server
    驗證完 client 的身份之后,然后用自己的私有密鑰解密得到 premastersecret 然后雙方利用這個 premastersecret 來共同協商,得到 mastersecret.

    6
    雙方用 master 一起產生真正的 sessionkey, 著就是他們在剩下的過程中的對稱加密的 key 了。這個 key 還可以用來驗證數據完整性。雙方再交換結束信息。握手結束。

    接下來雙方就可以用協商好的算法和 key 來用對稱加密算法繼續下面的過程了。

    很簡單吧?其實要復雜一些的,我簡化了很多來說。

    不過還是有個問題,喜歡搗蛋的人雖然看不懂他們在交流些什么,但篡改總可以吧?
    記得我們在加密算法里面介紹過的哈希算法嗎?就是為了對付這種搗蛋者的。在每次送信息的時候,附帶把整條信息的哈希值也送過去,接收方收到信息的時候,也 把收到的內容哈希一把,然后和對方送來的哈希值對比一下,看看是否正確。搗蛋者如果亂改通信內容,哈希出來的值是不同的,那么就很容易被發現了。


    但這樣子,搗蛋者至少可以學舌。他可以把之前監聽到的內容重復發給某一方,而這些內容肯定是正確的 , 無法驗證出有問題的。哎, SSL 是怎么對付這種人的我還沒看出來。有篇文章說:多放點隨機數在信息里可以對付,我也沒去研究這句話是什么意思。

    posted on 2006-10-17 15:22 捕風 閱讀(394) 評論(0)  編輯  收藏 所屬分類: java安全

    主站蜘蛛池模板: 美女羞羞喷液视频免费| 黄页免费视频播放在线播放| 免费无码AV电影在线观看| 亚洲AV日韩AV永久无码色欲| 中文字幕精品无码亚洲字| 免费国产成人午夜在线观看| 亚洲最大的黄色网| 亚洲乱码中文字幕手机在线 | 三级片免费观看久久| 国产AV无码专区亚洲Av| 丁香花免费完整高清观看| 日韩在线一区二区三区免费视频 | 亚洲精品线路一在线观看| 18禁美女黄网站色大片免费观看| 亚洲AV无码男人的天堂| 国产精品国产亚洲精品看不卡| 大陆一级毛片免费视频观看| 大地资源中文在线观看免费版| 亚洲中文字幕无码久久| 久久精品国产亚洲av成人| 国产又粗又猛又爽又黄的免费视频 | 免费日韩在线视频| 91精品国产免费久久国语蜜臀 | 欧洲精品99毛片免费高清观看| 亚洲精品自偷自拍无码| 亚洲电影免费在线观看| 亚洲AV无码成H人在线观看| 84pao国产成视频免费播放| 一级做a爰片久久毛片免费陪 | 亚洲精品无码久久久久去q| 全免费A级毛片免费看网站| 日韩精品无码一区二区三区免费| 国产亚洲男人的天堂在线观看| 亚洲精品无码久久毛片波多野吉衣| 亚洲人成电影在线播放| 精品国产一区二区三区免费看| 最近中文字幕大全中文字幕免费| 久久久久久久国产免费看| 久久亚洲精品11p| 四虎必出精品亚洲高清| 亚洲熟妇无码久久精品|