非對稱式加密,數位簽章,公開金鑰私密金鑰,Openssl,https,TLS/SSL等概念說明

來源:互聯網
上載者:User

標籤:非對稱式加密   openssl   公開金鑰私密金鑰   https   tls/ssl   

    本文將通過個人口吻介紹有關公開金鑰私密金鑰,Openssl,https,TLS/SSL等的一些概念及簡單配置,在目前時間點(2017年5月7號)下,個人水平有限,存在不少知識理解不夠深入,望見諒,後續有新的收穫之後將會補充完善該博文。

關於http以及web等基礎概念,歡迎看我的另一篇博文:“http,https,www,web等的區別含義”

博文連結地址:http://watchmen.blog.51cto.com/6091957/1922919

本文參考文獻引用連結:

1、https://www.zhihu.com/question/23341334

2、https://zh.m.wikipedia.org/zh-hans/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86

3、http://baike.baidu.com/link?url=ida6z7jFkozSq--Z4EWORisdZAZRorbUd5PbTFRoTZug-oDdLzTq4nlzf1yM3AoaSSwiw_PBSpc7jgGse4Gd_IJ1B7cUDz7J-ddBIn4vfwo6ROUznaBPQ-2fvOLzlzYu

4、https://www.zhihu.com/question/25912483

  HTTPS是一種協議,等於HTTP+TLS(由於曆史原因,SSL3.0之後就被TLS1.0替代了)。

openssl是一套開源工具集,主要有兩個特性:

        1、實現了ssl2,ssl3,TLSv1,TLSv1.1,TLSv1.2協議。

        2、實現目前常用的密碼編譯演算法。

沒有一個非常精準的方法來判斷HTTPS是否使用openssl,保守估計至少70%以上的網站是使用openssl的。而windows系列的伺服器包括IIS,windows server等都是使用schannel實現,沒有使用openssl


    也就是說HTTPS是HTTP的基礎上通過TLS(之前是ssl)協議來實現的,而TLS協議所需的公開金鑰私密金鑰等可以由openssl來產生,也可以由其他工具來產生。

    接著拿我們宮保雞丁的例子來說,在這裡宮保雞丁這道菜不放鹽的情況下就是HTTP(肯定能吃,但是不好吃,你要不想吃送過來我吃),放鹽的情況下就是HTTPS,那麼這個多出來的S也就是鹽也就是我們的TLS協議,我們知道我們去超市買鹽,這個鹽的分類就多了,有便宜的有貴的,有海鹽有礦鹽等等等等。那麼這個openssl就是我們最經常買的銷量最大的中鹽集團(反正我是吃他家的海鹽),公開金鑰私密金鑰就是中鹽集團生產的鹽。

    也即OpenSSL 是 SSL /TLS的一個開源實現,跟 HTTP 一點關係也沒有。

或者也可以說:

HTTPS與SSL的關係就像HTTP與TCP的關係

SSL/TLS與OpenSSL的關係就像作業系統與Windows的關係


    那麼為什麼現在不用SSL,要使用TLS協議了呢?

    SSL協議由美國 NetScape公司開發,1996年發布了V3.0版本(最新也是最後版本)。SSL 3.0 已經存在超過 15 年之久,目前絕大多數瀏覽器都支援該版本。通常使用者的瀏覽器都使用新版本的安全性通訊協定與伺服器進行串連,為了保持相容性,當瀏覽器安全性通訊協定串連失敗的時候,就會轉而嘗試老版本的安全性通訊協定進行串連,其中就包括SSL 3.0。但是在SSL協議層級,會出現Poodle攻擊,原理就是駭客故意製造安全性通訊協定串連失敗的情況,觸發瀏覽器從TLS往下降級使用 SSL 3.0,然後使用特殊的手段,從 SSL 3.0 覆蓋的安全連線下提取到一定位元組長度的隱私資訊。因此,在Google40版本之後,Google就取消對了SSL的向下支援。因此現在主流的加密協議使用的都是TLS

    以上內容解釋了HTTPS和OpenSSl之間的關係,接下來我們繼續講解加密相關知識


    那麼為什麼我們要使用HTTPS呢,什麼非對稱機密,什麼是公開金鑰私密金鑰,以及他們的工作原理?


    非對稱式加密:(asymmetric cryptography)也稱為公開祕密金鑰加密(public-key cryptography)

(在密碼學中,公開鑰匙密碼學,簡稱公開金鑰密碼學,又稱為非對稱密碼學)這是一種密碼學演算法類型,在這種類型中,需要一對密鑰,一個是私人密鑰,一個是公開密鑰。這兩個密鑰是數學相關,用某個使用者的祕密金鑰加密後的資訊,只能使用該使用者的解密密鑰才能進行解密查看。

    只是知道其中一個的密鑰(密鑰在這裡泛指公開金鑰和私密金鑰,如沒有特殊說明,公開金鑰和私密金鑰均可以被稱為密鑰,在這裡請廣大讀者注意),不能計算出另一個密鑰,因此,對外公布一個密鑰的內容,不會影響另一個密鑰的安全性,因此即使公開金鑰在網上被截獲,如果沒有與之匹配的私密金鑰,也無法解密。在這裡,我們將對外公布的密鑰稱之為公開金鑰,不公開的對內保留的密鑰稱之為私密金鑰。

注意:也可以使用私密金鑰進行加密,然後用公開金鑰進行解密,沒有明確說只能使用公開金鑰加密資料。這種特殊情況我們下面會說到。

總結:使用公開金鑰加密資料,使用私密金鑰解密資料的這種操作就叫做非對稱式加密

    

    公開金鑰加密:使用者使用公開金鑰對資料進行加密,並將加密後的資料轉送給私密金鑰的所有者,這個操作就叫做公開金鑰加密(狹義)。這是正常的選擇,下面我們說說剛才說的使用私密金鑰進行加密


    數位簽章:但是如果我們使用私密金鑰進行加密資料(私密金鑰永遠不對外發布),就可以使用公開金鑰對其進行解密,這用於客戶驗證擁有私密金鑰的一方發布的資料或者是檔案是否是準確完整的,擁有公開金鑰的接收者可以判斷這段資料,由此得知發布這段資料的真實身份是否確實是擁有私密金鑰的某人。

    也即:數位簽章=使用私密金鑰加密的資料


    數位憑證:我們所擁有的公開金鑰是以數位憑證的形式儲存的。也即:公開金鑰=資料認證


總結:數位簽章技術是將摘要資訊用寄件者的私密金鑰加密,與原文一起傳送給接收者。接收者只有用寄件者的公開金鑰(數位憑證,所有人都可以擷取)才能解密被加密的摘要資訊(數位簽章),然後用HASH函數對收到的原文產生一個摘要資訊,與解密的摘要資訊對比。如果相同,則說明收到的資訊是完整的,在傳輸過程中沒有被修改,否則說明資訊被修改過,因此數位簽章能夠驗證資訊的完整性。整個過程也即使用數位憑證去驗證數位簽章

    加密:既然是加密,那麼肯定是不希望別人知道我的訊息,所以只有我能解密,那麼可以得出是使用公開金鑰負責加密,私密金鑰負責解密。

    簽名:既然是簽名,那肯定是不希望有人冒充我發訊息,因此只有我才能發布這個簽名,所以可以得出私密金鑰負責簽名,公開金鑰負責驗證。


    我們在實際應用中最常見的一種公開金鑰加密演算法就是RSA(兩個大質數(p,q)乘積(n)難以逆向求解),也就是說公開金鑰使用這種演算法對資料進行加密,私密金鑰也用這種演算法對資料進行解密。





    通過openssl產生密鑰實現https的內容以及CA認證相關知識,在我的另一篇博文

博文地址:正在編寫,後續補充





本文出自 “清風攬月的部落格” 部落格,請務必保留此出處http://watchmen.blog.51cto.com/6091957/1923426

非對稱式加密,數位簽章,公開金鑰私密金鑰,Openssl,https,TLS/SSL等概念說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.