【学习笔记】SSL密码套件之哈希

embedded/2024/9/22 23:02:48/

本篇将介绍TLS/SSL密码套件中常用的哈希算法,包括Poly1305、SHA384、SHA256、SHA、MD5

  • 以上的哈希算法将作为 MAC 使用
    • MACMessage Authentication Code
      • 为批量数据提供了完整性(Integrity)以及真实性(Authentication
      • 过程:MAC首先需要双方拥有相同的密钥;当蓝色有信息要发送给绿色时,需要将哈希后的信息(摘要)与密钥相结合,然后将信息与摘要(digest)一同发给绿色;绿色收到后,用自己的密钥重新计算该摘要(将自己的密钥与信息相结合),然后验证2个摘要是否相同(一个是收到的摘要,一个是用绿色自己的密钥计算出来的摘要)
      • HMAC - MAC的具体实施(specific implementation)
    • 通常得到更大的摘要大小 - 意味着更安全
      • 使哈希碰撞(Collision)更罕见
  • MD5 - Message Digest algorithm #5
    • 128-bit Digest(摘要)
    • 1991年由Ron Rivest所创建
      • Ron Rivest还创建了RSA、RC4、MD2、MD4、RC6
    • 已经发表了产生碰撞(collision)的实际攻击
      • 自2010年起不再安全(作为直接散列(哈希)算法)
      • 在 HMAC 中使用MD5没有被认为是不安全的
      • 过程:在常规哈希中,我们对一段信息进行哈希,然后得到摘要(因而使用MD5是不安全的);HMAC多了一层,我们将信息与padding1和密钥相结合,然后计算出3者的结果得到摘要1,然后摘要1与padding2和同样的密钥相结合,得出结果摘要2。右下图灰色框都包含在HMAC中,因而HMAC的结果就是摘要2。
      • 为什么说md5不安全,因为我们能知道信息还有生成的摘要;而在HMAC中,我们不知道密钥是什么,也永远不知道摘要1是什么(隐藏在HMAC进程中),这意味着我们不是直接从信息→摘要,我们从看不到的信息,然后结合看不到的密钥和padding,得到看不见的摘要1,再然后将看不见的摘要1和看不见的padding、密钥结合,得到最终的摘要2;能够拿到信息并得到摘要2的人是那个拥有密钥的。因此,HMAC还是足够安全的
        • 如果可能,还是要避开MD5(使用MAC进行MD5将来会不安全,只是时间问题)
  • SHASHA1 - Secure Hash Algorithm 1
    • 160-bit Digest
    • 由NSA(U.S. National Security Agency,美国国家安全局)所创建
    • 在理论攻击中发现碰撞(collision)
      • 实际攻击的前兆(理论发现了,实际就不远了)
    • 作为直接哈希算法已经不再安全
      • 与HMAC配合使用的时候还是被认为是安全的(和MD5一样)
        • 因为摘要更大,所以避MD5更好,但还是那句话,能避免SHA1就避免
    • SHA1已经不再被电子签名(Digital Signatures)所接受
      • RSA签名:哈希内容,然后用RSA私钥进行加密
      • 证书签名中,SHA1自2016年不再被接受
  • SHA256SHA384(TLS/SSL使用这两者)
    • SHA2家族成员:
      • SHA-256产生256位的摘要
      • SHA-512产生512位的摘要
      • SHA-224产生256位的摘要,截断为224位
      • SHA-384产生512位的摘要,截断为384位
    • 由NSA(U.S. National Security Agency)所创建
    • 两者都被认为是安全的(对于哈希、签名、HMAC
    • 未来某天会被SHA-3家族所取代
      • 通过公共竞赛创建(一般大家优先选择由公共竞赛创建的算法,而不是NSA)
  • Poly1305
    • 命名由来:Polynomial(多项式)MAC使用素数(2^130 - 5)
    • 用256位密钥生成128位摘要
    • 与SHA2家族比较(SHA384 / SHA256)
    • 主要优点是,Poly1305作为AEAD密码总是和CHACHA20相结合
      • 我们喜欢AEAD(Authentication Encryption with Associated Data)密码,因为它是未来

参考文献

1、网站:Practical Networking.net:Practical TLS


http://www.ppmy.cn/embedded/112839.html

相关文章

Unity3D 小案例 像素贪吃蛇 02 蛇的觅食

Unity3D 小案例 像素贪吃蛇 第二期 蛇的觅食 像素贪吃蛇 食物生成 在场景中创建一个 2D 正方形,调整颜色,添加 Tag 并修改为 Food。 然后拖拽到 Assets 文件夹中变成预制体。 创建食物管理器 FoodManager.cs,添加单例,可以设置…

LineageOS源码下载和编译(Xiaomi Mi 6X,wayne)

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 源码下载 LineageOS官网:https://lineageos.org/ LineageOS源码 github 地址:https://github.com/LineageOS/android LineageOS源码…

opencv anaconda yolov5安装流程

目录 1. opencv-4.72. anaconda的配置2.1 配置环境变量2.2 配置anaconda源2.3 常用的命令 3. Yolov5环境的安装 1. opencv-4.7 下载opencv-4.7的安装包 https://opencv.org/releases/ 安装最新的cmake sudo apt-get update sudo apt-get upgrade sudo apt install cmake安装o…

DisplayManagerService启动及主屏添加-Android13

// 以下代码是模拟DisplayManagerService在Android 13中启动并添加主屏的过程。 // 注意:这只是一个简化的代码示例,实际的系统服务可能包含复杂的逻辑和错误处理。 import android.hardware.display.DisplayManagerGlobal; import android.view.Displ…

学习笔记 韩顺平 零基础30天学会Java(2024.9.15)

P557 泛型应用实例 P558 泛型使用细节1 P560 泛型使用细节2 P560 泛型课堂练习 代码见Exceise P561 自定义泛型类 对于第二点,因为不知道类型,所以不知道开辟多少空间,因此不能初始化 第三点,静态方法与类相关的,在类…

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果,使得可以进行Fastbin Attack 一、Double Free double free,顾名思义,free两次。对于fastbin这种单链表的组织结构,会形成这样一个效果: 如果我们mallo…

ChatGPT的底层逻辑

“一些未知的东西正在做我们不知道的事情。” —— 阿瑟爱丁顿 “为何不尝试制作一个模拟儿童思维的程序呢?” —— 艾伦图灵 “只要是人脑能提出的问题,它就能够得到解决。” —— 库尔特哥德尔 开始 传说中的扫地僧,在现实中极其罕见。 有…

自动驾驶自动泊车场景应用总结

自动泊车技术是当前智能驾驶技术的一个重要分支,其目标是通过车辆自身的感知、决策和控制系统,实现车辆在有限空间内的自主泊车操作。目前自动泊车可分为半自动泊车、全自动泊车、记忆泊车、自主代客泊车四种产品形态,其中, 根据搭载传感器和使用场景的不同,全自动泊车又可…