• 加密算法


    ## 加密算法 ##

    ### 1. 基本流程 ###

    基本的保密通信模型如下图所示,通信的参与者包括消息的发送方、消息的接收方,潜在的密码分析者是试图从整个加密服务(流程)。


    明文:未加处理的原始信息;</br>
    密文:经过加密处理的信息;</br>
    加密:明文到密文的过程,包括密钥和加密算法;
    解密:密文到明文的过程,包括密钥和解密算法;
    加/解密算法:对明文进行加密采取的一组规则称为加密算法,密文的接收方对密文解密时采取的一系列规则称为解密算法。
    密钥:加密算法/解密算法中输入的参数。

    重点理解:加/解密算法和密钥的关系

    ### 2. 密码系统的安全性 ###

    安全性因素:密码算法复杂度、密钥机密性和密钥长度。
    其中密码算法复杂度是密码系统安全性的保证。(这里强调密码整个系统的安全性,基本条件)</br>
    柯克霍夫密码设计原则:密码系统的保密性不依赖于加密体制或算法的保密,而依赖于密钥。(这里强调密码系统的保密性,如何去保密,保密的核心就是保护密钥)

    密钥空间:该算法生成密钥的所有可能有多少。
    爆破密钥和难易程度和密钥空间相关,密钥越长,密钥空间越大,耗费的时间越长。

    评估密码系统的安全性:</br>
    1. 无条件安全性:无限计算资源也无法破译出结果,目前不存在,哪种都存在爆破的方法;</br>
    2. 计算安全性:最好的方法破译所需的计算资源远超过攻击者拥有的资源,简言,计算能力不足以计算出结果;</br>
    3. 证明安全性:密码的安全性归结于某个研究的困难问题,取决于这个困难问题是否易被解决。

    密钥设计满足实际安全的要求,满足其一即可认为是安全的:</br>
    1. 破译密码消耗巨大,以至于实际中无法实现;</br>
    2. 破译密码计算时间超过密钥生命周期,例如,密码信息只要求一段时间保密,比如开战的信息,一旦开战声明周期就结束了;</br>
    3. 破译该密码的费用超过该密码本省的价值。

    ### 3. 密码算法的分类 ###
    1. 受限制的算法和基于密钥的算法</br>
       受限制的算法指加密/解密算法不可以被公开,一旦被公开该加密/解密算法就失去了安全性;基于密钥的算法指加密算发可以被公开,但是密钥不可以被公开,一旦公开就失去了安全性。
    2. 对称密码和非对称密码</br>
       根据加密密钥和解密密钥的关系,对称和非对称。密码体制区分对称密码算法和非对称密码算法。
       对称密码算法:加密密钥和解密密钥相同;非对称密码算法:加密密钥和解密密钥不相同。
    3. 分组加密和流加密(属于对称密码体制的分类)</br>
       分组加密:对数据包进行加密,如DES、AES等;流加密:对字符逐个连续加密,例如持续处理一个bit或者一个字节。
    ### 4. 对称加密算法 ###
    优点:速度快、适合大量数据加密、明文长度和密文长度相等。
    常见的加密算法有:DES、3DES、AES、IDEA、RC5、Twofish、CAST-256、MARS等。
    分组加密:</br>
    DES:分组长度64位明文,密钥长度64位(有效56位),64位密文。</br>
    3DES:执行3次DES算法,加密是,加密--解密--加密;解密是,解密--加密--解密。</br>
    AES:分组长度128比特,密钥长度128比特,输出128比特密文。(目前常用)
    流加密:</br>
    RC4:速度最快,根据字节依次加密;</br>
    BlowFish:算法是一个64位分组及可变密钥长度的对称密钥分组密码算法,可用来机密64位比特长度的字符串,非专利,
    IDEA:128位密钥和8个循环

    ### 5. 非对称加密算法 ###
    特点:速度慢、较安全。
    非对称加密的密钥由公钥和私钥组成,且成对出现。</br>
    国际常用:RSA</br>
    国内标准:SM2,基于ECC的改进。</br>
    SM2和RSA相比,安全性更高、计算量小、处理速度快、存储空间小、宽带要求低。</br>

    RSA的加密过程:


    ### 6. 其他密码服务 ###
    #### 哈希函数 ####
       用于完整性校验和数字签名。  </br>
       常见的hash函数:MD5算法、SHA-1、SHA-128、SHA-256
       
    #### 消息认证码 ####
       用于验证消息是否被篡改。</br>
       流程:将密钥生成固定长度的短数据块,附加在消息之后。例如假设A、B使用同一个密钥。A向B发送消息之前,使用hash函数获取密钥的短数据块,附加在消息之后,然后计算消息验证码MAC。消息和MAC一起发送给B,B接收到消息,对自己的密钥也使用相同的hash函数获取密钥的短数据块,也附加在消息之后,计算MAC,对比A发送过来的MAC,查看是否一致。

    #### 数字签名(使用非对称密码技术) ####
       具有不可否认性(私钥的私有性),不可伪造性(唯一私钥)、消息完整性(hash进行完整性校验)。</br>
       流程:A对需要加密的消息进行哈希计算,得到哈希值;A使用自己的私钥对哈希值进行加密得到签名,并将签名附在数据上(消息认证技术未使用私钥对哈希值加密);A随机生成一个加密密钥(默认对称密钥)对要发送的数据加密,得到密文;A使用用户B的公钥对刚才生成的随机加密密钥加密,将加密密钥和密文发送给B;B收到A的密文和加密密钥,使用自己的私钥对加密密钥加密,得到A随机生成的加密密钥;B使用A的随机密钥对数据进行解密,得到明文信息,随之将A的随机密钥抛弃;B使用A的公钥对数字签名解密,得到A原始数据的哈希值;B对A的原始数据hash计算,核对A计算的哈希值,核对是否一致。
        
    ### 7. 公钥基础设施(KPI) ###
       用于对密钥和证书的管理的解决方案。

    #### PKI架构 ####
        


       
        CA:证书签发权威,也称为数字证书管理中心,负责证书的生成、发放、更新、撤销等工作;
        RA:证书注册机构,也称数字证书注册中心;
        证书/CRL库:用于发布、存储、供用户查询所用;
        CRL:(Certificate Revoke List, CRL)证书撤销列表;
        终端实体:拥有公私密钥对和响应公钥证书的最终实体。

    #### 数字证书 ####
       数字证书是经过CA签名、包含拥有者身份信息和公开密钥的数据体。相当于互联网实体的身份证,被CA认证的的信息保证了该互联网实体的真实性。

       **数字证书格式**:X.509,基于X.509协议的还有PKIX、S/MIME、SSL、TLS、IPsec等。</br>
       SSL/TLS常用于https协议中,IPSec常用于VPN协议中。</br>
        
        X.509标准主要包含3部分:证书体、签名算法类型、CA签名数据
        证书体包含下列内容:
        版本号:表示证书的版本;
        序列号:由证书颁发者标识本证书的唯一标识符,整数;
        签名算法表示:签署证书所用的算法及相应的参数,对象标识符加上以上参数组成;
        签发者:指建立和签署证书的CA名称;
        有效期:证书的使用的有效期;
        主体名:证书拥有者名称;
        主体公钥:证书拥有者公钥;
        发行者唯一标识符:可选,标识唯一的CA;
        主体唯一识别符:可选,标识唯一的主体;
        拓展域:一个或多个拓展的数据项,第三版开始使用。

       生命周期:申请、生成、存储、发布、废止

    #### CA ####
       CA的主要功能:证书的签发和管理、证书撤销列表的签发和管理(与CRL交互)、证书注册结构(CR)的设立、审核、管理。</br>
       CA和RA的区别:RA是CA的下一等级代理,CA也可以做RA的事情,RA主要做证书注册和审核。
       
       CA的逻辑结构

       


       实际结构

       根CA(Root CA,RCA)下设CA、CA下设子CA(Subordinate CA,SCA)、SCA下设RA。或者RCA-CA-SCA-RA、RCA-CA-RA、CA-RA均可。


    ### 总结 ###

    AES:对称加密
    RSA:非对称加密
    MD5、SHA-1、SHA-128、SHA-256:hash函数,计算数据完整性
    UUID:随机生成的唯一标识
    CA:数字证书的管理机构
    RA:数字证书的注册机构







  • 相关阅读:
    python接口自动化测试十三:url编码与解码
    python接口自动化测试十二:对返回的json的简单操作
    python接口自动化测试十一:传参数:data与json
    python接口自动化测试九:重定向相关
    python接口自动化测试十:字典、字符串、json之间的简单处理
    python接口自动化测试八:更新Cookies、session保持会话
    python接口自动化测试七:获取登录的Cookies
    python接口自动化测试六:时间戳,防重复处理
    python接口自动化测试五:乱码、警告、错误处理
    python接口自动化测试四:代码发送HTTPS请求
  • 原文地址:https://www.cnblogs.com/smartmsl/p/12871600.html
Copyright © 2020-2023  润新知