HTTPs相关密码学基础

随机数

  1. 真正的随机数生成器(TRNG),由硬件生成,具有效率高、随机性、不可预测性、不可重现性的特点,需要从物理设备获取;
  2. 伪随机数生成器(PRNG),由软件生成,具有效率高、随机性的特点,可以通过算法获取;
  3. 密码学伪随机数生成器(CPRNG),由软件生成,具有效率高、随机性、不可预测性的特点,主要用于密码学。

效率、随机性、不可预测性、不可重现性

随机数的工作原理

随机数生成器内部会维护一个状态,对于TRNG来讲,内部状态的值来自于外部设备,称为熵;对于PRNG来讲,内部状态的数值来自于模拟的数值,称为种子。随机数生成器每次生成随机数的时候,内部状态的值都会发生变化,这样才能产生不一样的随机数。

Hash算法

加密基元:
加密基元就是一些基础的密码学算法,通过它们才能够构建更多的密码学算法、协议、应用程序。
随机数生成器算法和密码学Hash算法是加密基元。、

算法名称说明
MAC消息验证码HMAC就是一个基于Hash算法实现的MAC算法
伪随机数生成器利用Hash算法的单一性特点,可以构造出一个随机数
基于口令的加密算法可以根据口令和Hash算法生成一个密钥
数字签名数字签名算法对Hash算法生成的摘要值进行签名
块密码加密算法基于Hash算法也能生成块密码加密算法,同时块密码加密算法也能生成一个Hash算法

密码学Hash算法有Hash算法的所有特性,但是还具备其他特性

密码学Hash算法的特性

密码学Hash算法的公式描述:
摘要/散列值/指纹=hash(消息)
其中,消息是输入值,摘要等被称为输出值。Hash算法也被称为摘要算法、单向散列函数。

密码学Hash算法的主要特征:

  1. 相同的消息总能得到同样的摘要值,特定的Hash算法,不管消息的长度是多少,最终的摘要值长度是相同的;
  2. 不管多长的消息,Hash运算速度非常快;
  3. 通过摘要值很难逆向计算出原始消息,Hash算法具备单向性,摘要值不可逆;
  4. 原始消息一旦被修改,即使是很轻微的修改,最终的摘要值也会产生变化;
  5. 很难找出两个不同的消息,并且它们的摘要值是相同的。

Hash算法的用途

  1. 文件比较。不管多大的文件,摘要值的计算非常迅速;对于不同的文件,即便内容相似度接近100%,对应的摘要值也是不同的;
  2. 身份校验。系统可以计算出口令的摘要值,然后存放到数据库中。摘要值是很逆向的,即使数据库泄漏,攻击者也无法通过口令的摘要值计算出原始口令,攻击者很难伪造用户进行攻击。
    用户输入用户名和口令登录系统;
    系统使用Hash算法计算出口令的摘要值;
    系统使用用户名和摘要值在数据库表中进行检索,一旦匹配到就说明该用户输入的口令是正确的。。

密码学Hash算法的特性

  1. 强抗碰撞性
  2. 弱抗碰撞性
  3. 单向性

对称加密算法

明文——密钥加密——密文——密钥解密——明文

对称加密算法公式:
密文 = E(明文,算法,密钥)
明文 = D(密文,算法,密钥)

其中,密钥是关键,密钥是是一串数字,加密和解密使用同样的一个密钥,如果没有密钥,基于密文是无法获取明文的;加密、解密操作是一个互逆过程。

对称加密算法有两种类型:块密码算法、流密码算法

一次性密钥本

原理

  1. 明文与同样长度的序列进行异或运算得到密文
  2. 密文与加密使用的序列再进行异或运算就会得到原始明文。

一次性密钥本的关键:

  1. 密钥每次必须不一样,否则同一个明文和密钥就会获得相同的内容
  2. 一次性密钥本是无法破解的,原因就在于破解者无法确认破解的明文就是原始明文。

流密码算法

工作原理

  1. 密钥流的长度和密钥长度是一样的;
  2. 密钥流是一个伪随机数,是不可预测的;
  3. 生产伪随机数都需要一个种子,基于同样一个密钥(或者称为种子),加密者和解密者可以获得相同的密钥流。

流密码之所以称为流密码算法,就在于每次异或运算的时候,是连续对数据流进行运算的一种算法,每次处理的数据流大小一般是一字节。流密码算法可以并行处理,运算速度非常快。

块密码算法

块密码算法在运算(加密或者解密)的时候,不是一次性完成的,每次对固定长度的数据块进行处理,也就是说完成一次加密或者解密可能要经过多次运算,最终得到的密文长度和明文长度是一样的。
数据块的长度就称为分组长度,由于大部分明文的长度远大于分组长度,所以需要经过多次迭代运算才能得到最终的密文或明文,块密码算法有多种迭代模式(分组模式)。

  1. 块密码算法不是一次运算完成的,块密码算法有多种迭代模式,每次迭代固定长度的数据块。
  2. 分组长度和密钥长度没有必然的联系,对称加密算法的安全性取决于密钥长度。
  3. 如果明文(或者密文)的长度除以分组长度不是整数倍,需要对明文进行填充,保证最终处理的数据长度是分组长度的整数块。

消息验证码

Hash算法能够完成密码学目标之一的完整性校验,但不能避免消息被篡改,为避免消息被篡改,需要用到消息验证码。

公开密钥算法

  1. 公开密钥算法(非对称加密算法)可以用于加密解密、密钥协商、数字签名。
  2. 对称加密算法中,密钥是一串数字,加密者和解密者使用同样的一个密钥。公开密钥算法的密钥是一对,分别是公钥和私钥,一般私钥由密钥对的生成方持有,避免泄漏,而公钥任何人都可以持有,不怕被泄漏。
  3. 公开密钥的运算性能比较差,一般进行密钥协商或者数字签名,因为这两者运算的数据量较小。

公开密钥算法中最重要和最广泛使用的算法就是RSA算法。

RSA算法的内部结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值