您的位置:首页 > 其它

Security+ 8. 实施密码技术

2020-08-10 14:21 10 查看

8. 实施密码技术

  • 8.2 加密算法
  • 8.3 公钥基础架构(Public key infrastructure/PKI)
  • 8.4 注册证书
  • 8.5 备份和恢复证书和密钥
  • 8.1 密码学概念

    • 密钥交换:加密密钥在实体之间传输时使用的任何方法;有两种类型:带内密钥交换使用与共享数据相同的路径,带外密钥交换机使用不同的路径,如电话语音等。对称密钥加密需要带外密钥交换以避免密钥被拦截。
    • 数字证书(digital signature):以用户私钥加密的消息摘要,他是一种散列。非对称加密算法可以与散列算法使用来创建数字签名,如果公钥与私钥不匹配,接收方无法解密签名,接收方用公钥解密后将数据进行散列并比较散列值,一致说明数据没有被篡改。
    • 会话密钥(session key):是一次性使用的对称密钥,用于加密单个相关通讯系列中的所有消息。用于限制用该密钥加密的数据量。相比于单独使用非对称密钥加密更快,更高效。
    • 密钥延展(key stretching):是一种加强弱密钥密钥的技术,防止暴力破解,如:重复循环加密散列函数,重复循环块密码,密钥用于密码的情况下,配置密码的密钥调度以增加密钥设置所需的时间。

    8.1.1 密码学元素

    1. 混淆(confusion):使加密密钥与密文之间的关系变得尽可能复杂和隐藏的技术。
    2. 扩散(Diffusion):输入发生轻微变化,密文发生剧烈变化。
    3. 冲突(Collision):指两个不同的明天输入产生完全相同的密文输出。若加密算法易受冲突影响,其完整性就会减弱
    4. 模糊(Obfuscation):指使代码变得更加难以阅读,但模糊处理不涉及密钥的使用,只要知道模糊算法,就能将代码转换为可读形式。
    5. 伪随机数(RPNG):基于初始种子(定义数字生成第一阶段的一个数字)状态生成的,种子状态通过一个数学公式输出伪随机数。
    6. 完全正向保密(Perfect forward secrecy/PFS):当某个会话期间使用一个密钥受到损害时,这种会话加密特性能确保之前由该加密的数据不会受到影响。

    8.1.2 散列概念

    1. 密码盐(Cryptographic salt):通过为每个明文输入添加一个随机值来缓解彩虹表攻击的影响。
    2. 临时数(nonce):指仅使用一次的数字,认证协议通常使用临时数为防止重放攻击
    3. 初始化向量(IV):指用于初始化加密任务的任何值,以确保每个输出是唯一的。通常用地双向加密方法而非单向散列的环境下。

    8.1.3 数据状态

    1. 静止数据(data at reset):指被存储在各种介质上的任何数据,不会从一种介质移动到另一种介质。
    2. 传输中的数据(data in transit):指媒介之间移动的任何数据。
    3. 正在使用的数据(data in use):指当前正被创建,删除,读取或写入的任何数据。

    8.1.4 密码套件(Cipher suite)

    • 指用于在主机之间建立安全连接的对称和非对称加密算法集合。
    1. 密钥交换算法:用于协商如何进行身份验证
    2. Bulk加密算法:加密实际的消息流,并包含密钥大小
    3. 消息认证码算法:创建消息摘要
    4. 伪随机函数:创建主密钥,主密钥指在两个保持连接的系统之间共享的48字节密钥。
    • 其他特殊考虑: 低延迟、低功耗设、泄露回弹(用于消除全部或部分江也来源,即防止被收集)

    8.2 加密算法

    8.2.1 密码的类型

    • 流密码(suream cipher):一次加密一个位元的数据加密类型
    • 块密码(Block cipher):一次性加密一个数据块,通常以64位的数据块形式进行加密。
    • 运算模式:
    1. 电子代码簿(Electronic code book/ECB):每个明文块都使用相同的密钥加密
    2. 密码块链接(Cipher block chaining/CBC):使用初始向量IV加密第一个明文块,然后每个后续操作,明文块和前一个密文块通过异或XOR进行运算。
    3. 密码反馈(Cipher feedbac/CFB):先对IV进行加密,再用它的结果与前一个明文块进行异或运算。
    4. 输出反馈(Output feedback/OFB):加密IV的结果会被反馈到后续运算中。
    5. 计数器(Counter/CTR)或计数器模式(Counter Mode/CTM):使用数字计数器的值创建不断变化的IV。
    6. 填充/明文密码块链接(Propagating/Plaintext cipher block chaining/PCBC):每个明文块都与前面的明文块和密文块进行异或运算。
    7. 伽罗瓦/计数器模式(Galois/Counter Mode/GCM):在密码模式的标准加密服务中加入了认证功能。

    8.2.2 散列算法的类型

    1. 消息摘要5(MD5):产生一个128的消息摘要
    2. 安全散列算法(SHA):SHA-1产生160位散列值,对冲突攻击的防御弱被弃用;而SHA-256产生256位,SHA-384产生320位,SHA-512产生512位的摘要。
    3. RACE原始完整性校验消息摘要(RIPEMD):基于MD4算法设计原则设计,128位,160位,256位,和320位。
    4. 基于散列的消息认证码(HMAC):将密码散列函数与密钥组合在一起来验证消息完整性和真实性的方法。最终的计算是基于使用的底层散列函数来进行命名的,如SHA-256是散列函数,那么HMAC算法就被命名为HMAC-SHA256

    8.2.3 对称加密算法的类型

    1. 数据加密标准(DES):使用一个56位的密钥对64位的数据块进行加密,其中密钥中有8位用于奇偶校验。
    2. 三次DES(3DES):对每个数据块进行三次处理,每次使用不同的密钥,以此进行数据的加密。使用一个密钥将明文加密成密文,然后用另一个密钥加密该密文,最后用第三种密钥加密第二次形成的密文。
    3. 高级加密标准(AES):对称128位,192位或256位块密码。
    4. Blowfish:免费可用的64位块密码算法,使用可变的密钥长度。
    5. Twofish:加密使用一个预计算的加密算法,这个加密算法是一个依赖密钥的S盒(S-box),当给定密钥时,这个相对较为复杂的密钥算法就会在其位置上提供一个置换密钥“n”,有128,192,256位大小,“n”的一半由加密密钥组成,另一半包含了在加密算法中使用的一个修饰符。
    6. Rivest Cipher/RC:RC4中一种流密码,RC5和RC6是大小可变的块密钥。

    8.2.3 非对称加密算法的类型

    1. Rivest Shamir Adelman/RSA:公钥加密的算法
    2. Diffie-Hellman(DH):提供安全密钥交换的密码技术,DH交换中使用的密钥强度由组决定,组的数量越高,密钥的安全性越高,且添加到计算机中的处理开销越多。
    3. Diffie-Hellman 临时(DHE):使用临时密钥来提供安全的密钥交换。
    4. 椭圆曲线Diffie-Hellman临时(ECDHE):结合了ECC和临时密钥
    5. 数字签名算法(DSA):用于数字签名的公钥加密标准,为消息使用了身份验证和完整性验证。
    6. 良好隐私PGP和GNU隐私卫士GPG:PGP是专有的电子邮件安全和身份验证软件,使用公钥加密技术的一种变形来对电子邮件进行加密。

    8.2.4 密钥延展算法的类型

    • 基于密码的密钥衍生函数2[Password-based Key Derivation Function 2/PBKDF2]
    1. 伪随机函数,如散列,密码或HMAC
    2. 用于生成衍生密钥的主密码
    3. 密码盐
    4. 进行循环的函数的指定迭代次数。
    5. 衍生密钥的期望长度
    • bcrypt是基于Blowfish密码的密钥衍生函数。

    • 替换密码(Substitution cipher):每个明文单元在转换为密文时保持相同的顺序,但单元的实际值发生了变化。如将明文中的“a”,替换为“N”等。

    • 异或(exclusive or/XOR)运算:只有当一个输入为真,另一个输入为假时,XOR运算才会输出为真。由于异或运算快速,简单且需要很少的处理开销,因此它们常常有着丰富知识的恶意软件作者用来隐藏他们的恶意软件以免被检测到。

    • 隐匿式安全(security through obscurity):试图隐藏漏洞而不是解决漏洞。

    • 加密模块(cryptographic module):指实现一个或多个加密概念的任何软硬件解决方案。一种模块类型是加密服务提供程序(Cryptographic service provider/CSP)。

    8.3 公钥基础架构(Public key infrastructure/PKI)

    是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。PIK保证了通信数据的私密性、完整性、不可否认性和 源认证性 。

    8.3.1 PKI组件

    1. 数字证书(digital certificate):它是一个经证书授权中心CA数字签名的文件,包含拥有者的公钥及相关身份信息。数字证书解决了“这个公钥的持有者到底是谁“的问题。
    2. 对象识别符[Object identifier/OID]:证书中的身份信息是通过OID提供的。如OID2.5.4.10表示了拥有证书的组织的名称。
    3. 证书颁发机构[Certificate authority/CA]:是一个用于颁发并管理数字证书(维护关联么称/公钥对的服务)的可信实体
    4. 注册机构(Regisration authority/RA):负责验证用户和设备的身份以及批准或拒绝数字证书的请求。
    5. 证书签名请求(Certificate signing request/CSR):指发送到CA的消息,其中的资源会申请证书。

    8.3.2 证书颁发机构[Certificate authority/CA]

    1. CA层次结构:CA通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为根CA和从属CA。CA的核心功能就是发放和管理数字证书,包括:证书的颁发、证书的更新、证书的撤销、证书的查询、证书的归档、证书废除列表CRL(Certificate Revocation List)的发布等;当用户,设备或其他实体获得证书时,会通过信任链路(chain of trust)也称证书链验证此证书。
    2. 证书锁定(certificate pinning):当浏览器信任位于CA层次结构顶部的根CA,当访问一个由该CA签署的一个网站时,普通CS信任方案中,浏览器将经过多个中间子CA签署,直到通向根CA;在证书锁定中,浏览器直接信任该证书,浏览器不会验证根CA,有效地绕过了CA层次结构和信任链,以便最大限度的减少中间人攻击。
    3. 根CA:层次结构中最高的CA,也是最可信的权威机构。根CA必须是安全的,如果它受到损害,所有其他证书都将失效。
    4. 公有根和私有根:公有根由第三方或商业供应商创建,供公众进行一般访问。私有根由组织创建,主要在公司内部使用。
    5. 从属CA(subordinate CA):指层次结构中根目录下的任何CA。从属CA颁发证书并提供证书的日常管理,包括续订,暂停和撤消。
    6. 离线根CA:使CA保持联机状态是非常危险的和不明智的。

    8.3.3 证书的类型

    1. 自签名(Self-signed):自签名证书要求客户端直接信任实体。
    2. 根:根证书由根CA颁发,证明信任链中其下所有其他证书的有效性,由于链中没有比根证书更高的权威机构,所以它必须是自签名的。
    3. 用户:在不使用密码的情况下,向用户颁发用户证书。
    4. 计算机:计算机需要使用证书来进行身份验证连接到另外一台机器。
    5. 电子邮件:用于对S/MIME协议中的电子邮件消息进行认证和加密。
    6. 主体备用名称(Subject alternative name/SAN):是X.509证书标准的一种扩展,为组织提供了配置证书范围以涵盖多个域能力。
    7. 通配符(Wildcard):与SAN证书相似,但并非实现了多个域的同时使用,而是使证书可以适用于多个子域。
    8. 域验证(Domain validation/DV):表明某些实体可以通过不同的方法来控制特定域名,如:向域的Whois记录中的联系人发送电子邮件并等待响应。
    9. 扩展验证(Extended validation/EV):提供了一种强大得多的证据,即一个合法实体拥有特定域的所有权。

    8.3.4 X.509格式化证书标准

    最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效期,颁发者(证书授权中心)的名称,该证书的序列号等信息,证书的结构遵循X.509 v3版本的规范。

    证书的各字段解释:
    版本:即使用X.509的版本,目前普遍使用的是v3版本(0x2)。
    序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
    签名算法:颁发者颁发证书使用的签名算法。
    颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
    有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
    主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
    公钥信息:用户对外公开的公钥以及公钥算法信息。
    扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
    签名:颁发者用私钥对证书信息的签名。

    8.3.5 证书格式:

    1. PKCS#12:以二进制格式保存证书,可以包含私钥,也可以不包含私钥。常用的后缀有:.P12和.PFX。(p7b/p12/pfx:公钥加密标准#7/12/12的前身)
    2. DER:以二进制格式保存证书,不包含私钥。常用的后缀有:.DER、.CER和.CRT。
    3. PEM:以ASCII码格式保存证书,可以包含私钥,也可以不包含私钥。常用的后缀有:.PEM、.CER和.CRT。
    对于证书后缀为.CER或.CRT,可以用记事本打开证书,查看证书内容来区分证书格式。
    如果有类似"-----BEGIN CERTIFICATE-----"和"-----END CERTIFICATE-----"的头尾标记,则证书格式为PEM。
    如果是乱码,则证书格式为DER
    1. cer:以二进制DER格式编码证书,在win系统中也可能包含以PEM编码的数据,linux上等效格式使用".crt"扩展名。

    8.3.6 CA层次结构设计选项

    1. 本地:单个根CA
    2. 分布于各地:从属CA根据地理位置进行指定,平衡各个CA中颁发的证书数量。
    3. 只需访问特定应用程序的个人:从属CA根据功能或由部门指定,使独立CA能为具有特定资源需求的人群提供服务。
    4. 严格的安全性允许个人对同一资源拥有不同的访问级别:从属CA根据获得所需的安全性进行指定。

    8.4 注册证书

    8.4.1 证书申请过程

    前提条件:正确部署CA服务器

    1. 同步时间:时间是PIK系统的重中之重,必须先确保参加PKI系统的设备和主机的时间同步。才能开始PKI的部署。当设备的时间慢于证书有效期的开始时间或者设备时间大于证书有效期的结束时间那么证书都是无效的。忌讳:设备时间比证书服务器的时间慢。

    2. 部署证书服务器。证书服务器是整个PKI系统的核心。可以选择微软的证书服务器。

    3. 客户端产生密钥对。每一个申请者在申请证书之前,需要预先产生RSA的秘钥对。

    4. **验证证书服务器的合法性。**每一个实体需要获取证书服务器的根证书,里面包含证书服务器的公钥。获取了根证书后,可以通过fingerprint离先验证证书服务器。

    5. 申请个人证书。每一个实体发送自己的个人信息和公钥到证书服务器。(在线和离线方式)

    6. RA认证申请人。管理员对每一个证书请求进行审核。

    7. CA审核并签名证书。CA对个人信息和公钥内容进行数字签名,签名后的文件即为数字证书。

    8. **CA颁发数字证书给设备。**证书服务器把签名的证书颁发给实体。

    9. 申请人安装证书

    8.4.2 证书生命周期的阶段

    1. 颁发:生命周期从根CA发布其自签名密钥开始
    2. 注册:申请者通过证书注册过程从CA获取证书。
    3. 续订、撤销(可在到期日期之前撤销,使其永久失效)、到期、暂停(永久性暂停或临时暂停)

    8.4.3 影响证书生命周期的因素

    1. 私钥长度
    2. 使用的密码技术的强度
    3. CA和私钥的物理安全性
    4. 已颁发的证书及其私钥的安全性
    5. 攻击风险
    6. 用户信任
    7. 管理参与:长生命周期管理开销小,短生命周期管理开销大。

    8.4.4 SSL/TLS 连接过程

    1. 客户端发送会话请求
    2. 服务器使用证书进行响应
    3. 协商加密方式
    4. 客户端发送经过加密的会话密钥
    5. 连接被加密

    8.5 备份和恢复证书和密钥

    8.5.1 私钥保护方式

    1. 将私钥备份到可移动媒体并安全地保存该媒体。
    2. 从不安全的媒体中删除私钥
    3. 恢复私钥时需要使用密码
    4. 永远不要共享密钥
    5. 密钥发布后,切勿通过网络或互联网传输密钥
    6. 考虑使用密钥托管将私钥存储到受信任的第三方
    M of N:
    一种数学控制,考虑了密钥在恢复代理的总数N,以及执行密钥在恢复所需的代理数量M,如果尝试恢复密钥的代理数量不满足或霸这M,那么密钥将不会被恢复。

    8.5.2 私钥恢复方式

    1. EFS(Encrypting file system):加密文件系统使用win基于NTFS公钥加密,win ser2016的AD可提供分发证书和密钥,默认将域管理员指定为EFS恢复代理(有着能恢复其他用户加密的文件所需证书的个人)
    2. 密钥存档和恢复:可以使用AD在受保护的CA数据库中归档私钥,从而使私钥得以恢复。

    8.5.3 私钥替换

    针对私钥丢失应对情况:

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

    8.6 撤销证书

    1. CRL(certificate revocation list)(证书吊销列表):周期性查询,有CRL吊销,类似于通缉布告,time-stamped(有效期),CA-signed(服务器签名),客户周期性轮询CRL存储位(http、ldap、ftp)获取当前CRL。管理员一旦吊销证书,新的CRL就会被颁布,但是新的CRL并不会立即被客户获取,必须等老的CRL超期,才能获取新的CRL

    2. OCSP(Online Cerificate Status Protocol):在线吊销,在线式证书吊销状态协议,IOS CA暂不支持。客户端承担了与CA联系的责任以便验证证书状态,OSCP stapling装订将这项责任转移给出示证书的Web服务器。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: