<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人人夜夜澡人人爽 | 一级毛片无遮挡免费全部| 国产高清在线精品免费软件| 久久亚洲中文字幕无码| 亚洲高清成人一区二区三区| 春意影院午夜爽爽爽免费| 亚洲色婷婷综合久久| 日本在线看片免费| 亚洲春色在线观看| 暖暖免费高清日本中文| 精品剧情v国产在免费线观看| 国产午夜亚洲精品不卡| 亚洲另类少妇17p| 久久美女网站免费| 亚洲一级毛片免费看| 欧洲美熟女乱又伦免费视频| 日日躁狠狠躁狠狠爱免费视频| 国产亚洲?V无码?V男人的天堂| 青青青国产手机频在线免费观看| 亚洲精品无码久久久久久久 | 91免费在线播放| 亚洲av无码一区二区三区人妖| 亚洲综合最新无码专区| 91禁漫免费进入| 美女一级毛片免费观看| 亚洲av成人无码久久精品| 无码区日韩特区永久免费系列| 色偷偷亚洲男人天堂| 亚洲熟妇无码八AV在线播放| 日韩欧毛片免费视频 | 在线观看永久免费| 羞羞漫画在线成人漫画阅读免费| 久久精品九九亚洲精品天堂| 久九九精品免费视频| eeuss影院www天堂免费|