<address id="r9vd9"><address id="r9vd9"><listing id="r9vd9"></listing></address></address>

      歡迎您光臨深圳塔燈網絡科技有限公司!
      電話圖標 余先生:13699882642

      網站百科

      為您解碼網站建設的點點滴滴

      非對稱加密與證書(上篇)

      發表日期:2018-08 文章編輯:小燈 瀏覽次數:5951

      SSL/TLS是一個密碼學協議,它的目標并不僅僅是網頁內容的加密傳輸。SSL/TLS的主要目標有四個:加密安全、互操作性、可擴展性和效率。對于安全性的保障,它還會從多個方面進行,包括機密性,真實性以及完整性。機密性是指,傳輸的內容不被除通信的雙方外的第三方獲?。徽鎸嵭允侵?,通信的對端正是期待的對端,而不是其它第三方冒充的;完整性則是指,傳輸的數據是完整的,數據沒有被篡改或丟失。為了平衡多種需求,SSL/TLS被設計為一個安全框架,其中可以應用多種不同的安全方案,每種方案都由多個復雜的密碼學過程組成。不同的安全方案,在安全性和效率之間有著不同的取舍,并由不同的密碼學過程組成。


      在密碼學上,非對稱加密具有更高的安全性,同時計算復雜度更高,性能更差;而對稱加密,則效率比較高,計算復雜度較低,但如果在通信過程中明文傳輸密鑰,或將密鑰以hard code的形式寫在代碼里,則安全隱患比較大。


      從密碼學過程的特性出發,整體來看,SSL/TLS連接是在會話協商階段,通過 非對稱加密 算法,如RSA、ECDHE等,完成身份驗證,及后續用到的對稱加密密鑰的交換;在整個數據傳輸階段,通過對稱加密算法,如AES、3DES等,對傳輸的數據進行加密;通過數據散列算法,如SHA1、SHA256等,計算數據的散列值并隨應用數據一起發送,以保證數據的完整性。


      本文主要描述非對稱加密的基本思想,及TLS的證書身份認證。


      非對稱加密


      非對稱加密 (asymmetric encryption) 又稱為公鑰加密 (public key cryptography),是使用兩個密鑰,而不像對稱加密那樣使用一個密鑰的加密方法;其中一個密鑰是私密的,另一個是公開的。顧名思義,一個密鑰用于非公開的私人的,另一個密鑰將會被所有人共享。


      非對稱加密的兩個密鑰之間存在一些特殊的數學關系,使得密鑰具備一些有用的特性。如果利用某人的公鑰加密數據,那么只有他們對應的私鑰能夠解密。從另一方面講,如果某人用私鑰加密數據,任何人都可以利用對應的公鑰解開消息。 后面這種操作不提供機密性,但可以用作數字簽名。


      非對稱加密保護數據安全


      盜用阮一峰老師的幾幅圖來說明,通過非對稱加密保護數據安全的過程。


      • 鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。


      • 鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。


      • 蘇珊要給鮑勃寫一封不希望別人看到的保密的信。她寫完后用鮑勃的公鑰加密,就可以達到保密的效果。


      • 鮑勃收到信后,用私鑰解密,就可以看到信件內容。



      對于非對稱加密,只要私鑰不泄露,傳輸的數據就是安全的。即使數據被別人獲取,也無法解密。


      非對稱加密的這些特性直擊對稱加密中只用一個密鑰,而該密鑰不方便傳輸、保存的痛點。它大大方便了大規模團體的安全通信,方便了安全通信在互聯網中的應用。

      非對稱加密生成數字簽名


      數據的加密安全只是數據安全的一個方面,數據的真實性同樣非常重要。經??梢钥吹竭@樣的案例,騙子在同學參加四、六級考試的時候,給同學的家長打電話或發短信,聲稱自己是學校的輔導員,并表示同學病重急需用錢,要求家長匯錢,同學家長匯錢給騙子而遭受巨大損失的情況。這就是數據/信息真實性沒有得到足夠驗證而產生的問題。


      再比如,一個仿冒的taobao網站,域名與真實的網站非常相似。我們一不小心輸錯了域名,或域名被劫持而訪問了這個仿冒的網站,然后像平常在taobao購物一樣,選擇寶貝,并付款,但最后卻怎么也收不到貨物。


      現實世界中,常常會請消息的發送者在消息后面簽上自己的名字,或者印章來證明消息的真實可靠性,如信件中的簽名,合同中的印章等等。類似地,在虛擬的網絡世界中,也會通過數字簽名來確認數據的真實可靠性。數字簽名依賴的主要算法也是非對稱加密,生成數字簽名主要是使用私鑰加密 數據的散列摘要 來簽名。


      通過幾幅圖來說明這個過程。


      • 鮑勃給蘇珊回信,決定采用"數字簽名"來證明自己的身份,表示自己對信件的內容負責。他寫完后先用散列函數,生成信件的摘要 (digest)。???? ?

        ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??


      • 然后,鮑勃使用自己的私鑰,對這個摘要加密,生成"數字簽名"(signature)。


      • 鮑勃將這個簽名,附在信件下面,一起發給蘇珊。


      • 蘇珊收到信后,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。


      • 蘇珊再對信件本身應用散列函數,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,則證明這封信確實是鮑勃發出的,信件完整且未被篡改過。

      ? ? ? ? ? ? ? ? ? ??


      如果鮑勃向蘇珊借了錢,并用上面這樣的過程寫信給蘇珊確認自己收到了錢,那么鮑勃就再也不能抵賴了——信件的末尾可是清清楚楚地簽著鮑勃的大名呢。


      如果我們的網絡世界能像上圖的過程那樣,每個人都可以方便地獲得可靠的公鑰,那就太美好了?;ヂ摼W上的網站成千上萬,每個人都走到自己要訪問的網站站長的辦公室把網站的公鑰拷走,或者網站站長挨個走到自己的目標用戶家門口,把自己網站的公鑰交給用戶,那可就太麻煩,代價太大了。


      公鑰通常都是通過網絡傳輸的。不懷好意的人,會試圖干擾這個傳輸過程,將自己偽造的公鑰發送給用戶,進而破壞后續整個數據傳輸的安全性。如果用戶拿到的是偽造的公鑰,那簽名也就形同虛設。


      如道格想欺騙蘇珊,他在鮑勃將公鑰交給蘇珊時攔住鮑勃,表示要替鮑勃轉交。正好鮑勃有老板交待的其它重要事情要完成,于是就把自己的公鑰交給道格請他幫忙轉交。但道格把鮑勃的公鑰丟進垃圾桶,而把自己的公鑰交給了蘇珊。此時,蘇珊實際擁有的是道格的公鑰,但還以為這是鮑勃的。因此,道格就可以冒充鮑勃,用自己的私鑰做成"數字簽名",寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進行解密。

      證書


      證書正是為了解決公鑰的信任問題而引入。證書體系通過引入可信的第三機構,稱為 證書簽發機構(certificate authority,簡稱CA),為公鑰做認證,來確保公鑰的真實可靠。證書是經過了 CA 私鑰簽名的 證書持有者的公鑰、身份信息及其它相關信息 的文件,用戶通過 CA 的公鑰解密獲取證書中包含的 證書持有者 的公鑰。只要 CA 的私鑰保持機密,通過證書驗證 證書持有者 的身份,及獲取公鑰的過程就可靠。


      證書的工作過程


      互聯網PKI證書體系的結構如下圖:




      證書訂閱人 ,也就是需要提供安全服務的人,向 證書中心 (CA) 的代理—— 登記機構 提交自己的公鑰來申請證書。 登記機構證書訂閱人 的身份進行核實,然后向 證書中心 (CA) 提交 證書訂閱人 的公鑰及身份信息。 證書中心 (CA) 用自己的私鑰,對 證書訂閱人 的公鑰、身份信息和其它一些相關信息進行加密,生成 "數字證書"(Digital Certificate) ,并發送給 登記機構。 登記機構 將證書發送給 證書訂閱人證書訂閱人 將證書部署在Web服務器上。 信賴方,即安全服務的用戶,維護 CA 根證書庫,并在與Web服務器通信時,從服務器獲得證書。 信賴方 用CA根證書驗證接收到的證書的有效性,進而驗證服務器的真實性。


      同樣通過幾幅圖來說明這個過程。


      • 鮑勃去找證書簽發機構,為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰、身份信息和一些其它相關信息一起加密,生成"數字證書"(Digital Certificate)。


      • 鮑勃拿到數字證書以后,就可以放心,以后再也沒人能冒充自己了。再需要發送自己的公鑰給朋友們時,只要把自己事先拿到的 數字證書 發送給朋友就可以了。需要寫信給蘇珊時,照常附上自己的數字簽名即可。


      • 蘇珊收到信后,用CA的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰,然后就能證明"數字簽名"是否真的是鮑勃簽的。


      證書里有什么


      PKI證書是 抽象語法表示一 (Abstract syntax notation one, ASN.1) 表示, 基本編碼規則 (base encoding rules, BER) 的一個子集 唯一編碼規則 (distinguished encoding rules, DER) 編碼的二進制文件。我們通常看到的證書則是DER使用Base64編碼后的ASCII編碼格式,即 PEM (Privacy-enhanced mail) 這種更容易發送、復制和粘貼的編碼格式的純文本文件。


      證書里到底都有些什么呢?這里我們通過一個實際的證書來看一下。我們可以通過openssl解碼數字證書,獲得證書的可讀形式:


      $ openssl x509 -in chained.pem -text -nooutCertificate: ? ?Data: ? ? ? ?Version: 3 (0x2)? ? ? ?Serial Number: ? ? ? ? ? ?03:5c:25:82:1d:c2:b2:2f:6f:73:39:48:9c:68:07:1b:48:2d? ?Signature Algorithm: sha256WithRSAEncryption ? ? ? ?Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3? ? ? ?Validity? ? ? ? ? ?Not Before: Oct 25 01:12:00 2016 GMT? ? ? ? ? ?Not After : Jan 23 01:12:00 2017 GMT ? ? ? ?Subject: CN=www.wolfcstech.com? ? ? ?Subject Public Key Info:? ? ? ? ? ?Public Key Algorithm: rsaEncryption? ? ? ? ? ? ? ?Public-Key: (4096 bit)

      Modulus:
      ? ? ? ? ? ? ? ? ? ?00:c3:92:70:78:ff:00:0a:22:c7:14:0b:3d:b3:26:
      ? ? ? ? ? ? ? ? ? ?34:cb:37:63:26:1d:d6:42:7b:5c:ab:51:cc:f7:12:
      ? ? ? ? ? ? ? ? ? ?57:26:b1:d1:4f:5f:a7:02:5b:3c:f3:e6:e1:ec:7c:
      ? ? ? ? ? ? ? ? ? ?66:61:ba:d8:5e:d6:61:60:48:d6:d3:4c:23:9a:50:
      ? ? ? ? ? ? ? ? ? ?75:4b:2d:1b:89:7d:7b:55:2f:12:63:b4:ac:c7:b5:
      ? ? ? ? ? ? ? ? ? ?d1:44:95:ed:a2:f4:9d:ee:77:3c:2b:06:48:d9:18:
      ? ? ? ? ? ? ? ? ? ?21:d1:ee:cf:5c:26:ad:c2:11:28:9c:27:65:11:94:
      ? ? ? ? ? ? ? ? ? ?c4:1d:0f:5e:4c:4f:00:71:cf:5d:1f:40:4b:9a:5e:
      ? ? ? ? ? ? ? ? ? ?3b:b0:42:45:c5:68:01:62:29:c2:92:b5:ad:8d:13:
      ? ? ? ? ? ? ? ? ? ?11:db:7e:02:65:14:6a:5d:4b:66:16:08:d4:ab:90:
      ? ? ? ? ? ? ? ? ? ?dc:06:28:27:cd:84:c0:b7:30:22:ff:54:71:c2:3b:
      ? ? ? ? ? ? ? ? ? ?8d:7d:8b:52:c3:a8:f1:ee:63:42:2a:dd:4d:a7:70:
      ? ? ? ? ? ? ? ? ? ?66:c5:c3:54:d5:8e:a1:e2:02:d0:8b:2f:f6:44:1d:
      ? ? ? ? ? ? ? ? ? ?f5:f2:85:fd:49:c7:e0:d7:d0:ae:21:b7:25:ae:7c:
      ? ? ? ? ? ? ? ? ? ?15:dc:56:51:45:f1:e7:19:d6:1c:95:2c:65:f7:34:
      ? ? ? ? ? ? ? ? ? ?2c:67:1c:93:00:81:a7:e2:23:da:1a:3c:d1:9f:84:
      ? ? ? ? ? ? ? ? ? ?5e:01:3f:71:e7:9c:cd:e0:4f:fc:db:a6:2f:33:3a:
      ? ? ? ? ? ? ? ? ? ?3d:ce:6d:52:72:47:0b:08:9c:04:1f:4a:cd:cd:71:
      ? ? ? ? ? ? ? ? ? ?db:c2:3f:0d:9c:b4:24:ca:25:06:49:2b:40:a7:96:
      ? ? ? ? ? ? ? ? ? ?b6:60:b7:8d:c7:b0:b4:84:96:06:63:3b:d9:0c:25:
      ? ? ? ? ? ? ? ? ? ?8d:af:ad:90:ce:b8:d5:c6:e6:28:28:bd:4b:72:92:
      ? ? ? ? ? ? ? ? ? ?28:1a:0a:b7:15:3c:28:26:15:ab:fc:88:22:74:50:
      ? ? ? ? ? ? ? ? ? ?77:cc:3d:a3:c8:be:83:14:3d:ca:0e:79:aa:71:66:
      ? ? ? ? ? ? ? ? ? ?56:b8:6f:fe:2a:2d:36:ff:0c:af:b9:61:5c:5b:5f:
      ? ? ? ? ? ? ? ? ? ?a4:cc:0a:5b:13:31:c9:16:3f:51:9c:19:56:dd:06:
      ? ? ? ? ? ? ? ? ? ?1d:c9:6f:f6:17:61:61:7b:4c:cb:aa:b9:92:52:25:
      ? ? ? ? ? ? ? ? ? ?9b:8f:02:2d:51:39:5f:f0:89:e2:e8:25:6f:04:2a:
      ? ? ? ? ? ? ? ? ? ?d3:6f:a3:3e:a7:44:a8:a1:db:01:55:ad:1d:3f:72:
      ? ? ? ? ? ? ? ? ? ?3a:9a:b7:0f:35:a3:de:d2:93:d7:7c:d6:12:66:b2:
      ? ? ? ? ? ? ? ? ? ?f9:da:c4:e3:e6:52:6f:55:07:5c:a2:57:0d:7a:ca:
      ? ? ? ? ? ? ? ? ? ?20:5a:59:1b:78:ba:cf:e2:1d:b3:33:0a:53:2e:26:
      ? ? ? ? ? ? ? ? ? ?9f:39:2f:ec:48:8b:9f:a0:b9:e8:e6:61:9b:89:34:
      ? ? ? ? ? ? ? ? ? ?59:02:07:bb:b4:c4:8d:1d:24:72:ea:1e:7c:5f:a9:
      ? ? ? ? ? ? ? ? ? ?a3:96:15:e9:4d:7e:4c:94:eb:cb:af:d2:70:83:78:
      ? ? ? ? ? ? ? ? ? ?be:36:eb
      ? ? ? ? ? ? ? ?Exponent: 65537 (0x10001)
      ? ? ? ?X509v3 extensions:
      ? ? ? ? ? ?X509v3 Key Usage: critical
      ? ? ? ? ? ? ? ?Digital Signature, Key Encipherment
      ? ? ? ? ? ?X509v3 Extended Key Usage:
      ? ? ? ? ? ? ? ?TLS Web Server Authentication, TLS Web Client Authentication
      ? ? ? ? ? ?X509v3 Basic Constraints: critical
      ? ? ? ? ? ? ? ?CA:FALSE
      ? ? ? ? ? ?X509v3 Subject Key Identifier:
      ? ? ? ? ? ? ? ?B8:27:0E:D4:47:BB:27:66:51:3B:E7:F9:8B:9C:48:2E:3D:FD:C8:97
      ? ? ? ? ? ?X509v3 Authority Key Identifier:
      ? ? ? ? ? ? ? ?keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1

      ? ? ? ? ? ?Authority Information Access:
      ? ? ? ? ? ? ? ?OCSP - URI:http://ocsp.int-x3.letsencrypt.org/
      ? ? ? ? ? ? ? ?CA Issuers - URI:http://cert.int-x3.letsencrypt.org/

      ? ? ? ? ? ?X509v3 Subject Alternative Name:
      ? ? ? ? ? ? ? ?DNS:wolfcstech.cn, DNS:wolfcstech.com, DNS:www.wolfcstech.cn, DNS:www.wolfcstech.com
      ? ? ? ? ? ?X509v3 Certificate Policies:
      ? ? ? ? ? ? ? ?Policy: 2.23.140.1.2.1
      ? ? ? ? ? ? ? ?Policy: 1.3.6.1.4.1.44947.1.1.1
      ? ? ? ? ? ? ? ? ?CPS: http://cps.letsencrypt.org
      ? ? ? ? ? ? ? ? ?User Notice:
      ? ? ? ? ? ? ? ? ? ?Explicit Text: This Certificate may only be relied upon by Relying Parties and only in accordance with the Certificate Policy found at https://letsencrypt.org/repository/

      ? ?Signature Algorithm: sha256WithRSAEncryption
      ? ? ? ? 46:a1:fb:1c:fe:6e:ef:af:fc:84:e3:7e:20:1d:c8:0c:0b:e4:
      ? ? ? ? d2:4b:9e:f6:bc:e5:31:59:08:bb:7e:0d:74:3f:e6:de:39:58:
      ? ? ? ? e2:f4:fa:bf:5c:26:86:96:19:8f:00:13:17:2b:4f:95:c4:bd:
      ? ? ? ? 02:ad:cd:a6:e5:80:21:f5:ee:e6:4d:01:86:07:82:37:5e:39:
      ? ? ? ? c9:55:40:ed:08:2e:8d:94:b8:86:2f:15:76:10:bd:97:46:06:
      ? ? ? ? b3:34:80:12:f4:dc:2a:2a:63:80:36:fe:ef:e1:9e:b6:dc:22:
      ? ? ? ? 51:c7:54:46:1a:b2:c5:e8:62:98:90:46:ea:92:8c:fd:d4:dd:
      ? ? ? ? 00:4f:fb:1e:25:24:93:c1:74:15:07:6f:67:d3:be:5b:47:7e:
      ? ? ? ? 18:56:02:01:55:09:fc:bf:7f:ff:27:fc:db:d8:53:55:02:43:
      ? ? ? ? 2e:a0:23:28:01:4d:4d:f9:bc:02:bc:fe:50:c2:67:d7:d4:48:
      ? ? ? ? 23:c2:0b:25:d4:65:e1:8f:3c:75:12:b6:87:b1:17:86:c8:1a:
      ? ? ? ? 26:72:0e:ba:07:92:c4:87:3e:e1:fc:e3:58:ef:a2:23:43:09:
      ? ? ? ? 85:c4:82:00:04:07:49:06:10:bc:fd:20:67:0f:63:f8:ff:bf:
      ? ? ? ? 7f:6f:da:72:77:51:1d:50:34:07:63:e8:68:e3:ef:70:5f:71:
      ? ? ? ? b4:11:9e:27

      ? ?

      可以看到主要包含證書格式的版本號;證書的唯一的序列號;簽名算法;頒發者的信息;證書的有效期;證書的使用者的信息、身份信息,在這里主要是幾個域名;證書使用者的公鑰等等。


      Let's Encrypt證書申請


      我們通過一個 Let's Encrypt 證書申請過程對證書做更多了解。 Let's Encrypt 是一個免費、自動化、開放的證書簽發機構,目前它已得到了Mozilla,Chrome等的支持,發展十分迅猛。


      證書申請


      Let’s Encrypt 使用ACME協議驗證申請人對域名的控制并簽發證書。要獲取Let’s Encrypt 證書,需使用ACME客戶端進行。Let’s Encrypt 官方推薦 使用Certbot這個功能強大,靈活方便的工具,不過也可以使用其它的ACME客戶端。


      這里我們通過Certbot申請Let’s Encrypt證書。


      Certbot安裝


      對于在Ubuntu 14.04平臺上部署nginx提供Web服務的情況,應該使用 certbot-auto 來安裝:


      $?wget?https://dl.eff.org/certbot-auto$?chmod?a+x?certbot-auto

      certbot-auto 接收與 certbot 完全相同的標記;不帶參數執行這個命令時,會自動安裝依賴的所有東西,并更新工具本身。執行如下命令:


      $?./certbot-auto



      相關閱讀:非對稱加密與證書(下篇)

      網易云SSL證書服務提供云上證書一站式生命周期管理,與全球頂級的數字證書授權機構(CA,Certificate Authority)和代理商合作,為你的網站與移動應用實現 HTTPS 加密部署。

      網易云新用戶大禮包:https://www.163yun.com/gift

      本文來自網易實踐者社區,經作者韓鵬飛授權發布。




      本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.webpost.com.cn/20416.html
      相關開發語言
       八年  行業經驗

      多一份參考,總有益處

      聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

      咨詢相關問題或預約面談,可以通過以下方式與我們聯系

      業務熱線:余經理:13699882642

      Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

      国产成人精品综合在线观看