SSL相關理論知識

1. SSL及證書相關理論知識

wiki關於證書及SSL的部分說明如下:

內容 URL
Transport Layer Security https://en.wikipedia.org/wiki/Transport_Layer_Security
PKCS https://en.wikipedia.org/wiki/PKCS
X.509 https://en.wikipedia.org/wiki/X.509
X.690 https://en.wikipedia.org/wiki/X.690
傳輸層安全協議 https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E5%8D%94%E8%AD%B0
公鑰密碼學標準 https://zh.wikipedia.org/wiki/%E5%85%AC%E9%92%A5%E5%AF%86%E7%A0%81%E5%AD%A6%E6%A0%87%E5%87%86
X.509 https://zh.wikipedia.org/wiki/X.509
ASN.1 https://zh.wikipedia.org/wiki/ASN.1

以下爲wiki中部分較重要內容的摘錄。

1.1. Transport Layer Security

傳輸層安全協議(英語:Transport Layer Security,縮寫:TLS),及其前身安全套接層(Secure Sockets Layer,縮寫:SSL)是一種安全協議,目的是爲互聯網通信,提供安全及數據完整性保障。網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景導航者時,推出HTTPS協議,以SSL進行加密,這是SSL的起源。IETF將SSL進行標準化,1999年公佈了第一版TLS標準文件。隨後又公佈了 RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。在瀏覽器、電子郵件、即時通信、VoIP、網絡傳真等應用程序中,廣泛支持這個協議。主要的網站,如Google、Facebook等也以這個協議來創建安全連接,發送數據。目前已成爲互聯網上保密通訊的工業標準。

SSL包含記錄層(Record Layer)和傳輸層,記錄層協議確定了傳輸層數據的封裝格式。傳輸層安全協議使用X.509認證,之後利用非對稱加密演算來對通信方做身份認證,之後交換對稱密鑰作爲會談密鑰(Session key)。這個會談密鑰是用來將通信兩方交換的數據做加密,保證兩個應用間通信的保密性和可靠性,使客戶與服務器應用之間的通信不被攻擊者竊聽。

1.2. 發展歷史

1.2.1. SSL 1.0、2.0和3.0

SSL(Secure Sockets Layer)是網景公司(Netscape)設計的主要用於Web的安全傳輸協議,這種協議在Web上獲得了廣泛的應用。

2014年10月,Google發佈在SSL 3.0中發現設計缺陷,建議禁用此一協議。攻擊者可以向TLS發送虛假錯誤提示,然後將安全連接強行降級到過時且不安全的SSL 3.0,然後就可以利用其中的設計漏洞竊取敏感信息。Google在自己公司相關產品中陸續禁止向後兼容,強制使用TLS協議。Mozilla也在11月25日發佈的Firefox 34中徹底禁用了SSL 3.0。微軟同樣發出了安全通告。

  • 1.0版本從未公開過,因爲存在嚴重的安全漏洞。
  • 2.0版本在1995年2月發佈,但因爲存在數個嚴重的安全漏洞而被3.0版本替代。
  • 3.0版本在1996年發佈,是由網景工程師完全重新設計的。較新版本的SSL/TLS基於SSL 3.0。SSL 3.0作爲歷史文獻IETF通過 RFC 6101 發表。

1.2.2. TLS 1.0

IETF將SSL標準化,即 RFC 2246 ,並將其稱爲TLS(Transport Layer Security)。從技術上講,TLS 1.0與SSL 3.0的差異非常微小。但正如RFC所述"the differences between this protocol and SSL 3.0 are not dramatic, but they are significant enough to preclude interoperability between TLS 1.0 and SSL 3.0"(本協議和SSL 3.0之間的差異並不是顯著,卻足以排除TLS 1.0和SSL 3.0之間的互操作性)。TLS 1.0包括可以降級到SSL 3.0的實現,這削弱了連接的安全性。

1.2.3. TLS 1.1

TLS 1.1在 RFC 4346 中定義,於2006年4月發表,它是TLS 1.0的更新。

1.2.4. TLS 1.2

TLS 1.2在 RFC 5246 中定義,於2008年8月發表。它基於更早的TLS 1.1規範。

1.2.5. TLS 1.3(草案)

截至2016年1月,TLS 1.3還是一個互聯網草案,細節尚屬臨時並且不完整。它基於更早的TLS 1.2規範。

1.3. PKCS

參考 https://en.wikipedia.org/wiki/PKCS 。

公鑰加密標準(Public Key Cryptography Standards, PKCS),此一標準的設計與發佈皆由RSA信息安全公司所制定。

RSA信息安全公司旗下的RSA實驗室爲了發揚公開密鑰技術的使用,便發展了一系列的公開密鑰密碼編譯標準。只不過,雖然該標準具有相當大的象徵性,也被信息界的產業所認同;但是,若RSA公司認爲有必要,這些標準的內容仍然可能會更動。所幸,這些變動並不大;此外,這幾年RSA公司也與其他組織(比較知名的有IETF、PKIX)將標準的制定通過standards track程序來達成。

PKCS# 7 密碼消息語法標準(Cryptographic Message Syntax Standard) 參見RFC 2315。規範了以公開密鑰基礎設施(PKI)所產生之簽名/密文之格式。其目的一樣是爲了拓展數字證書的應用。其中,包含了S/MIME與CMS。

PKCS# 12 個人消息交換標準(Personal Information Exchange Syntax Standard) 定義了包含私鑰與公鑰證書(public key certificate)的文件格式。私鑰採密碼(password)保護。常見的PFX就履行了PKCS# 12。

1.4. X.509

在密碼學中,X.509是由ITU-T爲了公開密鑰基礎建設(PKI)與授權管理基礎建設(PMI)提出的產業標準。X.509標準,規範了公開密鑰認證、證書吊銷列表、授權證書、證書路徑驗證算法等。

1.5. ASN.1

在電信和計算機網絡領域,ASN.1(Abstract Syntax Notation One) 是一套標準,是描述數據的表示、編碼、傳輸、解碼的靈活的記法。它提供了一套正式、無歧義和精確的規則以描述獨立於特定計算機硬件的對象結構。

ASN.1是ISO和ITU-T的聯合標準,最初是1984年的CCITT X.409:1984的一部分。由於其廣泛應用,1988年ASN.1移到獨立標準X.208,1995年進行全面修訂後變成X.680系列標準。

ASN.1本身只定義了表示信息的抽象句法,但是沒有限定其編碼的方法。各種ASN.1編碼規則提供了由ASN.1描述其抽象句法的數據的值的傳送語法(具體表達)。標準的ASN.1編碼規則有基本編碼規則(BER,Basic Encoding Rules)、規範編碼規則(CER,Canonical Encoding Rules)、唯一編碼規則(DER,Distinguished Encoding Rules)、壓縮編碼規則(PER,Packed Encoding Rules)和XML編碼規則(XER,XML Encoding Rules)。

描述ASN.1記法的標準:
ITU-T Rec. X.680 | ISO/IEC 8824-1
ITU-T Rec. X.681 | ISO/IEC 8824-2
ITU-T Rec. X.682 | ISO/IEC 8824-3
ITU-T Rec. X.683 | ISO/IEC 8824-4

描述ASN.1編碼規則的標準
ITU-T Rec. X.690 | ISO/IEC 8825-1 (BER, CER and DER)
ITU-T Rec. X.691 | ISO/IEC 8825-2 (PER)
ITU-T Rec. X.692 | ISO/IEC 8825-3 (ECN)
ITU-T Rec. X.693 | ISO/IEC 8825-4 (XER)

1.6. Protocols and standards supporting X.509 certificates

TLS/SSL
S/MIME (Secure Multipurpose Internet Mail Extensions)
IPsec
SSH
Smart card
HTTPS
EAP
LDAP
Trusted Computing Group (TNC TPM NGSCB)
CableLabs (North American Cable Industry Technology Forum)
WS-Security
XMPP
Microsoft Authenticode
OPC UA

以下爲上述文檔中部分與實際使用相關的重要內容的翻譯。

1.7. DER encoding(X.690)

DER是BER的一個受限制的變體,用於對ASN.1描述的數據結構產生明確的傳輸語法。像CER一樣,DER編碼是合法的BER編碼。DER除了部分發送者選項被移除外,其餘與BER相同。

DER是BER的一個子集,提供了一種精確的方式對ASN.1的值進行編碼。DER被設計爲在需要唯一編碼的場景進行使用,例如在密碼學中,以及確保一個需要數字簽名的產生獨特的序列化表示的數據結構。DER可以被認爲是BER的一種典型形式。

DER廣泛用於數字證書,如X.509。

1.8. Certificates(X.509)

在X.509體系中,當一個組織需要使用簽名證書時,需要通過證書籤名請求(certificate signing request,CSR)的方式獲取。

爲了完成上述操作,首先需要產生一個密鑰對,保證私鑰的保密性,並用私鑰對CSR進行簽名。CSR中包含了申請人的識別信息,以及用於驗證CSR簽名的申請人公鑰。除以上信息外,CSR中還包含了識別名(Distinguished Name,DN),需要使用該證書的域名全稱。CSR中可能還包含了其他的憑證,或證書授權中心(certificate authority,CA)要求的身份證明。

證書頒發機構頒發的證書綁定公鑰到一個特定的識別名。

一個組織的受信任的根證書可以分發給所有的員工,這樣他們就可以使用公司PKI系統。瀏覽器如Internet Explorer, Firefox, Opera, Safari and Chrome都預先安裝了一系列的根證書,所以大廠商的SSL證書能夠立刻生效。事實上,瀏覽器的開發人員可以決定哪些CA能夠作爲瀏覽器用戶的受信任三方機構。

1.9. Certificate filename extensions(X.509)

X.509證書的常用文件擴展名如下。

擴展名 說明
.pem Privacy-enhanced Electronic Mail,隱私增強電子郵件,Base64編碼的DER證書,被包含在"-----BEGIN CERTIFICATE-----“與”-----END CERTIFICATE-----"之間。支持存儲單個證書,不支持存儲私鑰或證書路徑。
.cer, .crt, .der 通常爲二進制DER證書,Base64編碼格式的證書也很常見。支持存儲單個證書,不支持存儲私鑰或證書路徑。
.p7b, .p7c PKCS# 7簽名數據結構,不包含數據,僅包含證書或證書吊銷列表(Certificate revocation list,CRL)。PKCS# 7格式支持存儲證書和證書路徑中的所有證書。
.p12 PKCS# 12,可以包含公鑰證書和受密碼保護的私鑰。PKCS# 12是可用於導出證書及其私鑰的文件格式。
.pfx PKCS# 12的前身(通過包含PKCS# 12格式的數據)

PKCS# 7是用於對數據進行簽名或加密的標準。由於在驗證簽名數據時需要使用證書,它可能將證書包含在簽名的數據結構中。.P7C文件是退化的簽名的數據結構,不包含需要簽名的數據。

PKCS# 12從個人信息交換(personal information exchange,PFX)進化而來, 它被用來使用單個文件交換公鑰與私鑰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章