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)进化而来, 它被用来使用单个文件交换公钥与私钥。

发布了37 篇原创文章 · 获赞 0 · 访问量 2329

猜你喜欢

转载自blog.csdn.net/a82514921/article/details/104587761