Security+笔记——第八章:实施密码技术

课题A:确定高级密码学概念

密码学元素
密码学的学科包含几个自概念:

密码学元素描述
混淆(Confusion)使加密密钥和密文之间的关系变得尽可能复杂和隐蔽的技术。混淆可以防止攻击者选择性的生成明文消息的加密版本并寻找他们关系中的某些模式。
扩散(Diffusion)即使在明文输入中发生轻微变化也能使密文温升剧烈变化的一种技术。扩散能防止攻击者选择性的确定由相同密钥加密的部分消息。
冲突(Collision)两个不同的明文输入产生完全相同的密文输出。如果加密算法易受冲突影响,其完整性就会减弱,并且攻击者可以用另一个能产生相同密文的消息替换的这个消息。
模糊(Obfuscation)正如你所见,模糊处理使得源代码变得更加难以阅读。因此模糊处理与加密类型。但是模糊处理中不涉及密钥的使用——任何知道模糊算法的人都能将代码转换回可读形式。因此模糊代码的安全性比加密数据更低。
伪随机数生成(PRNG)这是一种由算法产生伪随机数的过程,伪随机数是指由着近似随机性的数字,但不是真正的随机。伪随机数是基于初始种子状态生成的,这是定义数字生成第一阶段的一个数字。然后种子状态通过一个数学公式输出伪随机数。加密密钥的生成倾向于使用伪随机数。
完全正向保密(Perfect forward secrecy/PFS)当某个会话期间使用的一个密钥受到损害时,这种会话加密特性能确保之前由该密钥加密的数据不会受到影响。如果攻击者恰好窃取到私钥,PFS可以防止攻击者破坏以往的会话。

散列概念
散列一个明文输入会产生一个固定长度的密文输出,被称为消息摘要,反之则不然。但是如果攻击者在彩虹表中计算大量消息摘要,则明文输入可能是可预测的。密码盐(cryptographic salt)通过为每个明文输入输入添加一个伪随机值来缓解彩虹表攻击的影响。它能对摘要造成重大改变。如果盐本身发生变化,那么使用不同盐的相同明文输入将生成两个独特的摘要。
盐值通常与散列数据存储在一起,因此盐本身不会被隐藏,但即使攻击者知道特定会话的盐值,他们也需要结合这个盐值来计算新的唯一彩虹表,这是不可行的。在任何包含密码散列的安全系统中,为散列添加盐值都是必须的。
与密码盐有关的是一个临时数(nonce)。临时数是仅指使用一次的数字。盐可以在会话之间改变,但也可以保持不变——正如其名称所暗示的,临时数永远不会重复。鉴于盐通常用于散列密码的情况下,认证协议中更常使用临时数来防止重放攻击。
盐和临时数都可以被认为是初始化向量(IV),这是一种通用术语,描述了用于初始化加密任务的任何指,以确保么米格输出都是唯一的。虽然IV通常用于双向加密方法而非单向散列的环境下,但这些术语经常被混合使用。
数据状态
有三种主要的数据状态,每种状态都有各自的密码相关性。

  • 静止数据(Data at reset)主要是指被存储在各种介质上的任何数据,不会从一种介质移动到另一种介质。可能禁止的数据类型的示例包括存储在数据库中的财务信息,归档试听媒体,操作策略和其他管理文档,系统配置数据等等。根据其敏感程度的级别,禁止数据可以由管理数据的软件或存储数据的硬件进行加密。在发生违规事件时,加密的静止数据通过防止攻击者向公众或其他未授权方传播私人数据支持了数据的机密性。
  • 传输中的数据(Data in transit)主要是指在媒介之间移动的任何数据,例如通过专用网络或互联网传输。可能正在传输的数据类型的示例包括网站流量,远程访问流量,云存储库之间的数据同步等等。在数据可以被认为是静止之前,它通常会在计算机之间传输。加密这些数据能防止中间人攻击危及传输通道和流经它的任何数据。
  • 正在使用的数据(Data in use)是指当前正在被创建,删除,读取或写入的任何数据。可能正在使用的数据类型的示例包括在文字处理应用程序中打开的文档,当前正在被修改的数据库数据,操作系统运行时生成的时间日志等等。当用户使用数据时,这些数据通常需要先进行解密,因为它从静止状态变为使用状态。数据在整个工作会话中可能会保持未加密状态,使其处于危险之中。但是有些机制能够加密存储在内存中的数据,使第三方无法解码信息。

密钥交换
密钥交换(Key exchange)是指加密密钥在实体之间传输时使用的任何方法,以便能够使用加密算法。
为了使发送者和接受者能交换加密消息,每一方都必须准备好加密被发送的消息并解密被接收的消息。他们需要准备的内容取决于所使用的加密技术。如果他们使用代码,则两者都需要相同的代码薄副本。如果他们使用密码(cipher),他们将需要适当的密钥:

  • 如果密码是对称密钥密码,则两者都需要相同密钥副本。
  • 如果密码是具有公钥/公钥属性的非对称密钥密码,则任何需要加密消息的实体都需要收件人的公钥。

密钥交换有两种基本类型:带内(in-band)和带外(out-of-band)。带内密钥交换使用与共享数据相同的路径,而带外交换则使用不同的路径,例如电话呼叫或实际会议。对称密钥加密需要带外密钥交换以避免密钥被拦截。、
数字证书
数字证书(digital signature)是以用户私钥加密的消息摘要。非对称加密算法可以与散列算法一起使用来创建数字签名。发送方创建消息文本的散列版本,然后使用发送方的私钥加密散列本身。加密的散列作为数字签名附加到消息上。
发送方向接受方提供签名消息和相应的公钥。接收方使用公钥来解密签名以显示发送方的散列版本。这种方式可以证明发送方的身份,因为如果公钥和私钥不匹配,接收方就将无法解密签名。然后接收方用公钥创建文档的新散列版本并比较这两个散列值。如果它们匹配,就证明数据没有被修改。因此数字签名能同时支持身份验证和完整性。由于特定的加密散列值对发送方来说是唯一的,因此数字签名也支持不可否认性。
数字签名是一种散列,随后才是被加密的概念。如果没有加密,对方就能轻易地:

  1. 拦截文件和散列。
  2. 修改文件。
  3. 重新创建散列。
  4. 将修改后的文件和散列发送给接收方。

密码套件
密码套件(cipher suite)是用于在主机之间建立安全连接的对称和非对称加密算法集合。通常与安全层套接字(SSL)/传输层安全性(TLS)网络协议有关,已有200多种已知密码套件可用,每种都提供不同级别的保护。使用弱密码的密码套件应当避免;这种套件对于现代使用而言密钥长度通常太短。具有强密码的密码套件使用128位或256位密钥长度,并且算法本身中没有已知的重大漏洞。
密码套件定义了密钥交换算法,批量加密算法,消息认证码算法和伪随机函数。

密码套件的组成描述
密钥交换算法确定客户端和服务器在SSL/TLS连接握手过程中是否以及如何进行身份验证。
Bulk加密算法加密实际的消息流,并包含密钥大小。
消息认证码算法创建消息摘要
伪随机函数创建主密钥,主密钥是指在两个保持连接的系统之间共享的48字节密钥。

会话密钥
会话密钥(session key)是一次性使用的对称密钥,用于加密单个相关通讯系列中的所有消息,使用会话密钥有两个主要原因。

  • 随着越来越多使用特定密钥加密的素材变得可用,使得一些密码分析攻击变得更容易或更成功。通过将密钥的使用限制在唯一的通信会话中,就能限制用该密钥加密的数据量。
  • 使用会话密钥比单独使用非对称加密更快,更搞笑。你仍可以使用非对称算法加密另一个更快对称算法的对称密钥。这确保了密钥被安全的进行分配,并且还能提高整体性能。这有时被称为混合密码术。

密钥延展
密钥延展(Key stretching)是一种可能可以加强弱密码密钥(如人们创建的密码或通行码)的技术,防止暴力破解。在密钥延展中,原始密钥通过在密钥延展算法中运行来得到增强。增强型密钥通常大于128位,这使得他们难以通过暴力攻击被破解。
密钥延展技术包括:

  • 重复循环加密散列函数。
  • 重复循环块密码。
  • 密钥用于密码的情况下,配置密码的密钥调度以增加密钥设置所需的时间。

密码学方面的的特殊考虑
除了迄今为止所研究的密码学概念和技术之外,还有一些你需要考虑的密码学特性。这些特性仅适用于一些常见用力,不适用于其他情况。
考虑描述低延迟在许多业务场景中,处理数据时话费的每一秒都不能忽略。加密操作最终可能在某种状态下的数据上花费了相当的处理时间。因此,密码算法的一个目标是实现低延迟,这里的延迟一般被定义为将输入添加到用于处理的算法中与获得输出之间的时间。低功耗设备低延迟算法或轻量级算法的一种特定应用是针对那些耗能非常少且处理能力最低的设备。例如物联网(IOT)和智能设备在可用资源方面有一定的限制。同时有必要在这些资源与设备的安全要求之间取得平衡。因此轻量级算法指在提供足够的安全性,同时消耗最少的资源。泄露回弹加密算法和技术可能会容易受到旁路攻击(side-channel attack)的影响,这种攻击方式会手机加密实施过程中的物理信息,如系统消耗了多少能源,在执行加密技术时处理器处于何种状态等。此类信息可以帮助执行特殊的分析,使攻击者得以破解加密实施。为了防御这种攻击,一些算法针对信息泄露提供了高度的恢复能力。泄露回弹技术致力于消除全部或部分泄露来源;或者致力于切断被泄露信息与保密材料之间的联系。

课题B:选择加密算法

密码的类型
加密密码有两种主要的类型:流密码和块密码、

类型描述
流密码(Stream cipher)一种一次加密一个位元的数据加密类型。每个明文位元被转换成加密密文。这些密码的执行速度相对姜块,并且不需要太多的性能开销。密文的大小与原文相同,这种方法比其他方法产生的错误更小,并且发生错误时,它们只会影响一个位元。
块密码(Block cipher)这种密码一次性加密一个数据块,通常以64位的数据块形式进行加密。这种密码通常更强大,更安全,但它的性能也比流加密更低。块密码通过多种可能运算模式中的一种来实现,这些模式定义了块密码将如何重复地将数据转换为多个块。

常见的运算模式包括:

  • 电子代码薄(Electronic Code Book/ECB),其中每个明文块都使用相同的密钥加密。
  • 密码块链接(Cipher Block Chaining/CBC),其中使用初始向量(IV)加密第一个明文块,然后,对于每个后续操作,明文块和前一个密文块通过异或(XOR)进行运算。
  • 密码反馈(Cipher Feedback/CFB),其中先对IV进行加密,然后用它的结果与前一个明文块进行异或运算。
  • 输出反馈(Output Fedback/OFB),其中加密IV的结果会被反馈到后续运算中。
  • 计数器(Counter/CTR)或计数器模式(Counter Mode/CTM),其中使用数字计数器的值创建不断变化的IV。
  • 填充/明文密码块链接(Propagating/Plaintext Cipher Block Chaining/PCBC),其中每个明文块都与千米那的明文块和密文块进行异或运算。
  • 伽罗瓦/计数器模式(Galois/Counter Mode/GCM),在密码模式的标准加密服务中加入了认证功能。

散列算法的类型

散列算法描述
消息摘要5(MD5)该算法产生一个128位的消息摘要。它由Ronald River创建,现在处于共有领域。MD5已经不再被认为是一种强大的散列函数,因此应当避免使用;但是,它在一些有限的情况下仍然有用,例如计算机取证。
安全散列算法(SHA)这种算法在MD5之后建模,被认为是两者中较强的一个。SHA的常用版本包括产生160位散列值SHA-1,而SHA-256,SHA-384和SHA-512分别产生256位,384位和512位的摘要。SHA-1因其对冲突攻击的弱点而被弃用。
RACE原始完整性校验消息摘要(RIPEMD)RIPEMD是基于现在已经过时的MD4算法中使用的设计原则进行设计的。128位,160位,256位和320位版本分别被称为RIPEMD-128,RIPEMD-160,RIPEMD-256和RIPEMD-320。256位和320位版本降低了产生重复输出散列的概率,但在高级安全性方面表现不佳。IPEMD-160由开放学术社区设计,并且它的使用频率低于SHA-1。
基于散列的消息认证码(HMAC)这是一种通过将密码散列函数与密钥组合在一起来验证消息完整性和真实性的方法。最终的计算是基于使用的底层散列函数来进行命名的。例如如果SHA-256是散列函数,那么HMAC算法就被命名为HMAC-SHA256。
对称加密算法的类型
数据加密标准(DES)一种块密码对称加密算法,它使用一个56位的密钥对64位的数据块进行加密,其中密钥中有8位用于奇偶校验。短密钥长度使DES称为一种相对较弱的算法,尽管它需要较少的性能开销。
三次DES(3DES)这种对称加密算法对每个数据块进行三次处理,每次使用不同的密钥,以此进行数据的加密。它首先使用一个密钥将明文加密成密文,然后用另一个密钥加密该密文,最后用第三种密钥加密第二次形成的密文。3DES比DES更强大,但也将性能影响提高了三倍。
高级加密标准(AES)由比利时密码学家开发的对称128位,192或256位块密码,被美国政府采纳作为加密标准以取代DES。这种AES算法以其创建者的名字被命名为Rijindael。Rijindael是NIST举办的AES竞赛中被认为可采纳的五种算法之一。AES被认为是目前最强大的加密算法之一,其性能优于3DES。
Blowfish一种免费的可用的64位块密码算法,使用可变的密钥长度。Blowfish已经不再被认为是强大的。虽然它提供比DES更好的性能。
Twofish一种对称密钥块密码,与Blowfish类似,包含一个128位的块和256位的密钥。虽然未被选作一种标准,但它在AES竞赛中挺进了前五。Twofish加密使用一个预计算的加密算法。这个加密算法是一个依赖密钥的S盒,当给定密钥时,这个相对较为复杂的密钥算法就会在其位置上提供一个置换密钥。这被称为“n”,有128,192和256位大小。“n”的一半由加密密钥组成,另一半包含了在加密算法中使用的一个修饰符。Twofish比Blowfish更加强大,并且提供了相对较高的性能。
Rivest Cipher(RC)4,5,6由Ronald Rivest开发的一系列算法。所有算法都有着可变的密钥长度。RC4是一种流密码。RC5和RC6是大小可变的块密码。RC6被认为是一种强大的密码,并提供良好的性能。

非对称加密算法的类型

非对称技术描述
Rivest Shamir Adelman(RSA)以它的设计者Ronald Rivest,Adi Shamir和Len Adelman命名,RSA是第一个用于公钥加密的成功算法。它有一个可变的密钥长度和块大小。这种算法仍在广泛使用中,并且如果它使用了足够长的密钥,就能被认为具有高度安全。
Diffie-Hellman(DH)提供安全密钥交换的密码技术。在1976的描述中,它奠定了大多数公钥加密实现的基础,包括RSA,DHE和ECDHE。DH交换中使用的密钥强度由组决定。组的数量越高,密钥的安全性越高,并且添加到计算中的处理开销也越多。
Diffie-Hellman临时(DHE)DH的一种变形,使用临时密钥来提供安全的密钥交换。
椭圆曲线加密(ECC)一种利用有限域上椭圆曲线的代数结构的公钥加密技术。ECC通常与无线和移动设备仪器使用。
椭圆曲线Diffie-Hellman临时(ECDHE)用于数字签名的公钥加密标准,为消息提供了身份验证和完整性验证。
数字签名算法(DSA)用于数字签名的公钥加密标准,为消息提供了身份验证和完整性验证。
良好隐私(PGP)和GNU隐私卫士(GPG)PGP是转悠的电子邮件安全的身份验证软件,使用公钥加密技术的一种变形来对电子邮件进行加密。GPG是PGP的开源版本,提供了等效加密和认证服务。

密钥延展算法的类型
一种流行的密钥延展方法就是使用密钥衍生函数:

  • 基于密码的密钥衍生函数2(Password-Base Key Derivation Function 2/PBKDF2)是来自RSA实验室的公开密钥密码标准中的一部分。这个密钥衍生函数使用五个输入参数来创建衍生密钥:

    • 伪随机函数,例如散列,密码或HMAC。
    • 用于生成衍生密钥的主密码。
    • 密码盐。
    • 进行循环的函数的制定迭代次数。
    • 衍生密钥的期望长度。
  • bcrypt是基于Blowfish密码的密钥衍生函数。像PBKDF2一样,它使用密码盐,但也会通过增加迭代次数随时间的推移而进行调节。有针对Ruby,Python,C,C#,Perl,PHP,Java和其他语言的bcrypt实现。

替换密码
用于支持混淆的最基本技术之一是替换密码(substitution cipher)。在替换密码中,每个明文单元在转换为密文时保持相同的顺序,但单元的实际值发生了变化。为了解除密文的混淆,则只要应用反向替代。例如ROT13就是一个简单的替换密码,用字母表上位于该字母后面的第十三个字母替换它。换句话说字母“A”编程字母“N”,例如词语“substitution cipher”变成“fhofgvghgvba pvcure”。这种替代密码提供了一种非常基本的混淆形式,且相比严肃的技术更像是一种教学工具。与此同时,替代概念还被用于某些安全环境中(如S盒的替换密钥)。
异或
用于混淆的另一种技术是异或(exclusive/XOR)运算。从最基本的意义上看,只有当一个输入威震,另一个输入为假时,XOR运算才会输出为真。该运算本身被称为“XORing”,在运行计算时称两个输入为“取其中不相同部分(XORed)”。XORing是逐位进行的,这意味着该操作对每一位都有效。在密码学领域,异或运算通常用于混淆恶意代码。
由于异或运算快速,简单且只需要很少的处理开销,因此他们常常被有着丰富知识的恶意软件作者用来隐藏他们的恶意软件以免被检测到。到吗通过混淆器进行,混淆器会对代码进行异或运算,使代码的基本分析变得困难。
混淆与隐匿式安全(security through obscurity)理念密切相关,这是一种师徒向他人掩盖脆弱存在的做法。虽然隐匿式安全可以有效的为你的安全操作添砖加瓦,但不应仅仅依靠它来实现安全性。大多数情况下,攻击者是否会发现你试图隐藏的漏洞并不是一个问题,问题是何时发现。
加密模块
加密模块(cryptographic module)是指实现一个或多个加密概念的任何软硬件解决方案,如前面提到的不同加解密算法。一旦你选择了一个足够强大的算法在你的环境中使用,就需要通过一些方法将该算法应用到需要保护的资产中;加密模块促进了实施过程。一种模块类型是加密服务提供程序(Cryptographic Service Provider/CSP)。

课题C:配置公钥基础架构

公钥基础架构
公钥基础架构(public key infrastructure/PKI)是一个由证书颁发机构,证书,软件,服务和其他密码组件组成的系统,用于实现数据和实体的真实性和有效性。PKI可以以各种分层结构实施,可以面向公众开放也可以由组织进行私有维护。PKI实施了非对称加密过程,实现了网络数据的加解密,包括通过互联网进行的交易。
PKI组件

PKI组件描述
数字证书(digital certificate)数字证书是PKI最基本的组成部分,PKI的首要任务是以各种方式管理数字证书。数字证书是一种将证书与公钥关联起来的电子文档。用户和设备都可以持有证书。证书通过数字签名验证证书持有者的身份,证书也是分发持有者公钥的一种方式。此外证书还包含与持有人身份有关的信息。
对象识别符(Object identifier/OID)包含在证书中的身份信息是通过OID提供的。有许多OID与常用证书类型相关联,每种OID都定义了证书所有者身份的某个维度。OID被格式化为一系列由句点分割的数字。
证书颁发机构(certificate authority/CA)CA是指发布数字证书并维护关联私钥/公钥对的服务器。
注册机构(registration authority/RA)RA服务器负责验证用户和设备的身份以及批准或拒绝数字证书的请求。
证书签名请求(Certificate signing request/CSR)CSR是指发送到CA的消息,其中的资源会申请证书。通常包含被纳入到资源证书中的信息,如公钥,数字签名和其他识别信息。

CA层次结构
CA层次结构(CA hierarchy)或信任模型是指一个或一组共同协作用于发布数字证书的CA。层次结构中的每个CA与它正上方的CA具有父子关系。CA层次结构提供了一种在多个CA之间分配证书工作的方式,并提高了证书服务供应的效率。如果一个CA受损,只有由这个特定CA发布的证书及其子证书无效。层次结构中的其余CA仍将保持有效。
当用户,设备或其他实体获得证书时,会通过信任链(chain of trust)验证此证书。信任链从底部开始并沿着CA层次结构向上进行。直接呈现给实体的证书可能由另一个CA签署,而这个CA又是由其上方的CA依次签署,以此类推。如果要信任某个证书,实体就必须信任链中的每一个链接,因为它的工作方式正式如此。
相比典型CA层次结构,证书锁定(Certificate pinning)是一种更直接的信任证书的方式。
根CA
根CA(root CA)是层次结构中最高的CA,因此也是最可信的权威机构。根CA发布并自签署链中的第一个证书。根CA必须是安全的,因为如果它受到损害,所有其他证书都将失效。
根CA可以被指定为共有或私有:

  • 私有根CA(private root CA)由公司创建,主要在公司内部使用。这种根CA可以由内部进行设置和配置,也可以外包给第三方供应商。
  • 共有根CA(public root CA)由第三方或商业供应商创建,供公众进行一般访问。

从属CA
从属CA(Subordinate CA)是指层次结构中根目录下的任何CA。从属CA颁发证书并提供证书的日常管理,包括续订,暂停和撤销。
离线根CA
为了为根CA提供尽可能最安全的环境,组织通常会设置根CA并使其离线,从而允许从属CA颁发所有其余的证书,从这种意义上看,使根CA离线以为着将其与网络断开连接,并将其置于断电状态。这种策略确保网络中的任何人都无法访问根CA,因此受攻击的可能性大大降低。需要记住的是如果根CA受到危害,则层次结构中的所有证书都会受到影响。因此使根CA保持联机状态是非常危险和不明智的。
证书的类型
证书可以颁发给许多不同类型的实体,也可以为组织中各种不同目的而颁发证书。

证书类型描述
自签名(Self-signed)自签名证书是指由签署该证书的同一个实体拥有的证书。换句话说这种证书不承认信任链上的任何更高层权威机构——实体本质上是在证明自己。自签名证书要求客户端直接信任实体。
根证书由根CA颁发,证明信任链中其下所有其他证书的有效性。由于链中没有比根证书更高的权威机构,所以它必须是自签名的。
用户在不鼓励记住和管理密码的情况下,会向用户颁发用户证书。例如在SSH的许多实现中,当用户想在系统上打开一个远程shell时,就会向SSH服务器出示他们的证书。
计算机也可以向LAM系统中具有个人或组身份的计算机颁发证书。如果计算机需要安全地连接到网络中的另一台机器,就可能需要使用证书来进行身份验证,而不是使用更人性化的密码。
电子邮件这种证书用于对安全/多用途Internet邮件扩展(S/MIME)协议中的电子邮件消息进行认证和加密。S/MIME的用途与PGP类似,但需要依赖PKI的集中管理。
代码签名在开发者将应用程序发布给他们的客户之前,他们通常会对源代码进行数字签名,以便客户可以验证该应用是否合法。在许多情况下,代码是使用开发人员自己的自签名证书签署的,但开发人员也可以利用CA颁发的证书。
主体备用名称(Subject Alternative Name/SAN)在某些情况下,拥有多个域的组织可能想要将这些域组合到一个SSL/TLS证书中。SAN是X.509证书标准的一种扩展,为组织提供了配置证书范围以涵盖多个域的能力。
通配符(Wildcard)通配符证书与SAN证书相似,但并非实现了多个域的同时使用,而是使证书可以适用于多个子域。
域验证(Domain validation/DV)域验证证书表明某些实体可以通过不同的方法来控制特定域名,例如向域的Whois记录中的联系人发送电子邮件并等待响应。这些证书提供的验证相对较弱,因为实际上它们无法证明这个域是由生成拥有该域控制器的实体合法拥有。
扩展验证(Extended validation/EV)为了应对域验证证书的弱点,扩展验证证书提供了一种强大的多的证据,即一个合法实体拥有特定域的所有权。对大多数公共CA而言,颁发EV需要执行彻底的检查以验证实体,例如通过公共目录中列出的电话号码验证联系人,并要求通过验证的联系人有一位为其提供担保的监督员。

X.509
PKI和CA层次结构遵循一种用于格式化证书的标准,称为X.509。X.509使用CSR中提供的信息定义了证书的结构。除公钥之外,X.509证书通常还包含以下信息:

  • X.509版本。
  • 证书的序列号。
  • 用于签署证书的算法。
  • 发行实体的名称。
  • 证书有效的时间段。
  • 由证书验证的主体的名称。
  • 可选属性,如组织名称,组织单位,地区,城市,州,联系电子邮件地址等。

证书文件格式
X.509证书可以以不同的文件格式存在,每种格式都以不同方式配置X.509信息。

X.509文件格式描述
.der这种格式以二进制可辨别编码规则(DER)格式对证书进行编码。
.pem隐私增强型电子邮件(PEM)格式使用Base64编码DER证书。使用这种格式的文件始终以“——BEGIN CERTIFICATS——”并以“——END CERTIFICATS——”行结束。
.cer这种格式以二进制DER格式编码证书,但在Windows系统中也可能包含以PEM编码的数据。类Unix系统上的等效格式使用.crt扩展名。
.p7b这种格式使用公钥加密标准#7(PKCS#7)以Base64格式编码证书数。PKCS#7编码证书不能包含私钥数据。
.p12这种格式使用公钥假面标准#12(PKCS#12)以Base64格式编码证书数据。PKCS#12编码的证书可以包含私钥数据并且可能受密码保护。
.pfx这种格式由Microsoft开发,是PKCS#12的前身。这两种格式经互换使用。

CA层次结构的设计选型
你的CA层次结构的设计将取决于组织的业务和安全要求。

公司配置CA层次结构的实施
几十名本地员工使用没有从属的单个根CA,这个CA为办公地点上的所有员工提供服务。
分布全世界的数千名员工从属CA根据地理位置进行制定,以平衡各个CA中颁发的证书数量
只需要访问特定应用程序的个人从属CA根据功能或由部门制定,使独立CA能为具有特定资源需求的人群提供服务
严格的安全性允许个人对同一资源拥有不同的访问级别从属CA根据获得证书所需的安全性进行制定。有些CA可能会被设置为颁发使用网络ID的密码的证书;其他一些CA可能会要求个人出示有效的驾驶执照。

课题D:注册证书

证书注册过程
用户和其他实体通过证书过程从CA中获取证书。

注册步骤说明
1.实体请求证书实体安全程序获得证书。
2.RA认证实体认证根据证书策略的要求进行确定。
3.将策略应用到请求中RA应用与颁发证书的特定CA相关的证书策略。
4.请求被发送到CA如果实体的身份成功通过认证并且满足策略要求,则RA将证书请求发送到CA。
5.CA颁发证书CA创建证书并将其放入存储库。
6.通知实体CA通知实体证书可用于交付证书。
7.证书安装获得证书后,可以使用何时的工具进行安装。

证书生命周期
证书生命周期中有几个主要阶段:

证书生命周期的阶段描述
1.颁发生命周期从根CA发布其自签名密钥对开始。然后根CA开始向其他CA和最终用户颁发证书。
2.注册用户和其他实体通过证书注册过程从CA获取证书。
3a.续订根据证书策略参数,证书可以多次续订。
3b.撤销证书可在其到期日期之前撤销,从而使其永久失效。证书可能会因为各种原因被撤销,包括误用,遗失或破坏。
3c.到期证书在一定的时间长度后会带起,这种特征被建立在证书策略中并在颁发CA的过程中进行配置。到期参数是证书数据的一部分。如果根CA的证书过期,那么整个CA链就会变得无效。
3d.暂停除永久性撤销外,一些CA还支持证书的临时暂停。

证书生命周期的管理
从一般规律上看,生命周期越长,设计的管理开销越小。然后这也可能会带来更高的安全风险,因为更长的生命周期也会给攻击者更多的时间来破坏密钥对的密码或以其他方式危害系统。而且随着生命周期的缩短,密码学领域中的新发展使你能够为你的实体颁发和续签更安全的证书。证书的实际生命周期取决于业务要求和安全需求。
证书生命周期的因素:

因素变量意义
私钥长度什么样的密钥长度比较合适?128位,256位,1024位,2048位?密钥越长,需要处理的数据位越多。长密钥需要更多的资源才能被破解。攻击者可能会认为不值得一试。
使用的密码技术的强度算法有多复杂?算法中使用的数学函数越复杂,攻击者解密的难度就越大。但这也意味着生成密钥所需的时间也会更长。
CA和私钥的物理安全性CA保存在哪里?它在一个锁定区域内还是仅由密码保护?谁有权限访问它?更高的物理安全性在较长的生命周期中至关重要。如果CA及其私钥在物理上的安全性得不到保障,那么世界上所有的虚拟控制方法都无法保护他们。需要记住的是物理安全的实现成本可能很高昂。
已颁发的证书及其私钥的安全性私钥被存储在什么地方?在智能卡上?在桌面上?是否需要解码?用户私钥越安全,他们对整体系统的安全性就越好。相反,用户可能会忘记密码或丢失智能卡,这意味着管理员工作的增加。
攻击风险你的CA是脱机还是联机?你的根CA是在公司内部还是由第三方公司处理?你处理的是什么类型的业务?你的CA可能是安全的,但攻击者可能会使用你网络上的另一个不那么安全的访问点获得CA的访问权限。
用户信任谁正在使用已颁发的证书?外部用户还是内部用户?相比外部用户,你一般可以信任内部用户。
管理参与长生命周期需要较少的管理工作。短生命周期需要更多的管理工作。虽然长生命周期需要较少的管理工作,但也给了攻击者更多时间来获得访问权限。这使得管理员跟踪证书问题成为一项重要任务。

SSL/TLS连接过程

SSL/TLS连接步骤说明
1.请求客户端请求与服务器的会话。
2.响应服务器通过向客户端发送数字证书和公钥进行响应。
3.协商然后服务器和客户端协定一个加密级别。
4.加密一旦加密级别上达成一致,客户端就会生成一个会话密钥,使用服务器的公钥对其进行加密,并将它发送给服务器。
5.通讯随后会话密码要就称为了通讯过程中用于加解密的密钥。

课题E:备份和恢复证书与私钥

私钥保护方式
私钥对于CA层次结构的安全性至关重要,并且加以保护,以纺织丢失,被盗或破坏。为了保护私钥需要:

  • 将私钥备份到可移动媒体并安全的保存该媒体。
  • 从不安全的媒体中删除私钥。
  • 恢复私钥时需要使用密码。
  • 永远不要共享密钥。
  • 密钥发布后,切勿通过网络或互联网传输密钥。
  • 考虑使用密钥托管将私钥存储到受信任的第三方。

密钥托管
作为密钥备份的替代方案,密钥托管(Key escrow)可以被用来安全的存储私钥,同时允许一个或多个受信任的第三方在预定义条件下访问密钥。这个第三方被称为密钥托管代理(key escrow agent),例如政府机构可能会要求私钥被放置在代理机构中进行托管。商业CA还可以为不想备份和管理自己的私钥的组织提供基于合同的托管服务。
M of N控制:在密钥托管方案中,只有特定数量的代理或受托人有权恢复密钥。为了防止单个授权代理恢复密钥,通常使用M of N方案。M of N方案是一种数学控制,考虑了密钥恢复代理的总数(N)以及执行密钥恢复所需的代理数量(M)。如果尝试恢复密钥的代理的数量不满足或超过M,那么密钥将不会被恢复。M和N的确切值在不同实施方案中各不相同。
私钥恢复方式
如果私钥丢失或损坏,你就必须从备份或托管中恢复密钥,然后才能恢复任何加密数据。

  • 如果你使用密钥管理,这个密钥就会被分割给多个托管代理。代理可以使用这些部分来重建丢失的密钥或直接解密信息。
  • 如果密钥已备份到可移动截止,就可以从备份位置进行恢复。

私钥替换
如果私钥丢失,你可能会想在恢复任何加密数据后将密钥全部替换掉:

  1. 首先恢复密钥。
  2. 解密任何被加密的数据。
  3. 销毁原始密钥。
  4. 获取一个新的密钥对。
  5. 最后使用新的私钥重新加密数据。

课题F:撤销证书

证书撤销
证书可以在到期之前被撤销,其原因如下:

  • 证书所有者的私钥已被泄露或丢失。
  • 证书是通过欺诈手段获得的。
  • 证书已被另一个证书取代。
  • 证书持有者不再受信任。这种情况可能是正常的,如员工离开公司,也能是由于系统入侵,如从属CA受到攻击。

证书撤销列表
证书撤销列表(certificate revocation list/CRL)是在到期日期之前被撤销的证书李彪。每个CA都有自己的CRL,可以通过网络操作系统或网站的目录服务进行访问。CRL通常包含请求者的名称,请求ID号码,证书被撤销的原因已经其他相关信息。
许多软件程序会在接受证书之前检查CRL以查看证书的状态,并拒绝被撤销或被暂停的证书。但是CRL的使用补水强制性的,因此在检查时可能无法使用。
在线证书状态协议
在线证书状态协议(Online Certificate Status Protocol/OCSP)是一个基于HTTP的CRL替代方案,用于动态检查被撤销证书的状态。OCSP服务器(也称为响应者)接受检查特定证书状态的请求。响应者使用证书的序列号在CA数据库中进行搜索。然后服务器将证书的状态发送给请求者。
相比CRL使用OCSP的主要优点是可以降低开销。针对特定证书请求的OCSP响应包含的数据少于整个撤销列表,这使客户端和网络都能从中受益。但是由于OCSP默认不会对这些标准HTTP传输进行加密,因此攻击者可能可以在OCSP处理过程中搜集到在特定时间使用特定证书的网络资源。

添加新评论