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

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

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

    零全零美(www.zzgwt.com)
    生活中的很多事情,并不像If...Else那么簡單!
    posts - 96,comments - 52,trackbacks - 0
    發信站:BBS水木清華站(FriNov1020:30:492000)

    引用請指明原作/譯者fordesign@21cn.com


    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 2009-11-27 17:30 零全零美 閱讀(195) 評論(0)  編輯  收藏 所屬分類: 安全相關
    主站蜘蛛池模板: av免费不卡国产观看| 精品亚洲永久免费精品| 成年女人免费视频播放77777| 337p日本欧洲亚洲大胆精品555588 | 久久久无码精品亚洲日韩蜜桃 | 亚洲国产精品人久久电影| 2019中文字幕在线电影免费| 久久亚洲精精品中文字幕| 亚洲精品免费在线视频| 久久综合久久综合亚洲| 国产免费拔擦拔擦8x| 一级特黄a大片免费| 国产亚洲av片在线观看16女人| 国产午夜免费高清久久影院| 亚洲欧洲在线观看| AV大片在线无码永久免费| 亚洲爆乳无码专区www| 免费在线观看理论片| 国产麻豆成人传媒免费观看| 亚洲成a人片在线网站| 国产精品二区三区免费播放心 | 72pao国产成视频永久免费| 亚洲成AV人片一区二区| 亚洲高清在线视频| 国产成人精品久久免费动漫| 2020天堂在线亚洲精品专区| 婷婷综合缴情亚洲狠狠尤物| 成全视频在线观看免费| 33333在线亚洲| 久久精品国产亚洲精品| 91精品全国免费观看含羞草| 中文亚洲AV片在线观看不卡| 91福利免费视频| 久久久久久亚洲精品无码| 亚洲一区无码中文字幕| 国产一卡2卡3卡4卡2021免费观看| 老司机福利在线免费观看| 亚洲影院在线观看| 午夜国产大片免费观看| 久久久久久夜精品精品免费啦 | 中文字幕在线视频免费|