密码学基础总结

数字签名

手写签名:1. 签名者身份(身份可鉴定),2. 签名者认可文件内容(文件内容不可篡改)。

数字签名算法去实现上述数字签名类似的特性(实际上需要数字证书的辅助)

主要数字签名算法(属于加密算法的一种)

  • RSA
  • DSA
  • ECDSA

加密算法

  • 双向加密算法:对称加密算法和非对称加密算法
  • 单向加密算法:哈希算法

主要对称机密算法(单密钥加密算法)

  • DES
  • 3DES
  • AES

主要非对称加密算法(公开密钥加密算法)

  • RSA
  • ECC

主要哈希算法

  • MD5
  • SHA-1
  • SHA-256
  • SHA-512

消息认证码(MAC)

使用对称加密,2个密钥,一个生成消息认证码,一个生成加密数据

并将两个密钥安全的发给对端

密文 + 消息认证码密钥 + hash = 消息认证码

随机数 + 消息认证码密钥 + hash = 消息认证码2

随机数

密文和消息认证码 一起发给B,B根据密文加密hash得到一致的消息认证码确认消息的完整性以及认证一定是A发的,因为用的是A给的消息认证码密钥。

对消息进行认证并确认其完整性

HMAC算法及其应用 - 知乎

  • HMAC

hmac主要应用在身份验证中,如下是它的使用过程: 1. 客户端发出登录请求(假设是浏览器的GET请求) 2. 服务器返回一个随机值,并在会话中记录这个随机值 3. 客户端将该随机值作为密钥,用户密码进行hmac运算,然后提交给服务器 4. 服务器读取用户数据库中的用户密码和步骤2中发送的随机值做与客户端一样的hmac运算,然后与用户发送的结果比较,如果结果一致则验证用户合法。

在这个过程中,可能遭到安全攻击的是服务器发送的随机值和用户发送的hmac结果,而对于截获了这两个值的黑客而言这两个值是没有意义的,绝无获取用户密码的可能性,随机值的引入使hmac只在当前会话中有效,大大增强了安全性和实用性。

Nonce

Nonce是一個在加密通信只能使用一次的數字

RSA数字签名算法

  1. 小明用RSA生成公钥/私钥
  2. 对文件做哈希运算得到文件哈希值H
  3. 用私钥对H进行签名运算的到数字签名S
  4. 公钥/文件/S/哈希算法可以通过互联网发送网络
  5. 我们可以通过公钥解密S得到哈希值Hs (确认签名者身份)
  6. 我们可以通过对文件进行哈希得到Hd
  7. 比较Hd和Hs就可以确认签名者认可文件内容

步骤5有漏洞,可能公钥被篡改

通过数字证书保证公钥不被篡改

即确认公钥是小明的

  1. 小明将公钥发给CA(数字证书颁发机构)
  2. CA颁发数字证书给小明
  3. 数字证书内包含小明身份信息和公钥,随公钥发到网上
  4. 其他人可以通过数字证书确认公钥是小明

数字证书保证未被篡改

  1. 数字证书中包含由CA机构通过私钥加密小明信息得到的数字签名
  2. 每个人电脑或者手机系统里安装了CA根证书
  3. CA根证书里包含了可以信赖的CA机构及其公钥
  4. 通过CA机构公钥就可以验证数字证书不被伪造

X509 is an ITU standard defining the format of public key certificates

中间人攻击: Certchain可以增加中间人攻击难度

攻击的种类

  1. 窃听
  2. 假冒和篡改 <-- 消息认证码/数字签名
  3. 事后否认 <-- 数字签名
  4. 重放攻击 <-- 消息认证码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值