密码学:其他常见密码学应用.

news2024/9/23 19:25:05

密码学:其他常见密码学应用.

密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学.


目录:

密码学:其他常见密码学应用.

Diffie-Hellman密钥交换:

Hash 长度扩展攻击:

Shamir 门限方案:


Diffie-Hellman密钥交换:

Diffie-Hellman (DH) 密钥交换是一种安全协议,可以在双方先前没有任何共同知识的情况下通过不安全信道协商出一个对称密钥。该算法在 1976 年由 Bailey Whitfield Diffie 和 Martin Edward Hellman 共同提出,在密码学上的安全性基于离散对数的难解性。

DH密钥交换算法的过程如下: 假设 Alice 和 Bob 进行秘密通信,需要协商出一个密钥。首先,双方选择一个素数 p 和模 p 乘法群的一个生成元g,这两个数可以在不安全的信道上发送。例如,选择 p= 37 ,g= 2 。Alice 选择一个秘密整数 a,计算A=g^a mod p,发给 Bob 。例如,选择 a=7,则 A=2^7 mod 37 = 17。Bob 选择一个秘密整数 b,计算 B=g^b mod p,发给Alice。例如,选择 b=13,则 B= 2^13 mod = 15。此时 Alice 和 Bob 可以共同得出密钥:

K=A^b mod p= B^a mod p = g^ab mod p

若有一个中间人可以截获所有的信息,但不能进行修改,那么由于中间人只知道4、B、g、P,而不能知道 a 和 b ,故不能获取双方协商出的密钥,除非计算出 logg A或 logg B,计算离散对数的方法和困难性已经讲过。

若中间人不仅可以截获信息,还可以修改信息,那么可以攻击 DH 密钥交换流程.

DH 的中间人攻击过程如下:中间人 Eve 获取到了 p 和 g,如 p=37,g=2,现在 Alice 正要把 A 发送给Bob,此时,Eve 截获 A,自己选定一个随机数 e1 ,选定e=6,则E=2^6 mod 37 = 27。


Bob 把 B 发送给 Alice 时,Eve 重复上述步,选定随机数e2,Alice。例如,选定e2=8,则E2=2^8 mod 37 = 34。


此时,Alice计算出的密钥:

 而Bob计算出的密钥为:

 

此时 Eve 可以知道A、B、e1、e2,自然可以计算出 k1 和 k2。在 Alice 向 Bob 发送加密消息时,Eve 截获消息,使用 k1 解密即可获取明文,再使用 k2 对明文进行加密,转发给 Bob。此时 Bob 可以使用 k2 对消息正常解密,也就是说,他不知道在密钥交换的过程中出现了问题。在 Bob 向 Alice 发送消息时同理这样,Eve 即可控制整个会话.


Hash 长度扩展攻击:

Hash函数(散列函数)是一种将任意位信息映射到相同位大小的消息摘要的方法。优秀的 Hash 函数具有不可逆性和强抗碰撞性,因而经常被用于消息认证。由于 Hash 函数的算法是公开的,故单独使用 Hash 函数很不安全,攻击者可以建立大量的数据 -- 散列值数据库来进行字典攻击。为了避免这种情况,一般选择形如 H(key l message)形式的Hash函数,即在消息前附上一个固定的 key 再进行散列运算。然而,如果使用的是 MD (Merkle-Damgard)型的Hash算法(如MD5、SHA1等),且 Key 的长度是已知的、消息可控的情况下,则容易受到Hash长度扩展攻击。


Hash加密和解密:散列加密 | 哈希加密 |哈希解密 | 散列解密

MD5加密和解密:MD5在线加密/解密/破解—MD5在线

SHA1加密和解密:sha1在线解密 在线加密


MD 型 Hash 算法的特点在于,所有消息在进行计算时会在后面填充上 1 个 01 和若干 00 字节,直到其进制位数等于512x+448,再加上 64bit 的消息长度。另外,MD 形式的 Hash 算法是分组计算的,而每组所得的中间值都会成为下一组的初始向量。不难看出,如果我们知道某一中间值和当前的长度,便可以在后面附上其他消息和填充字节,然后利用中间值 “ 继续算下去 ” ,获得最终的Hash值。Hash长度扩展攻击正是基于此方法。

使用此种攻击方法时,我们不关心原来被 Hash 的消息具体内容,而只关心原来消息的长度,即实际应用中keylmessage 的长度。由于 message 往往是用户可控的值,只要知道服务端 key 的长度,即可成功实施攻击。由于 key 一般不会太长,通过暴力尝试也是可行的。

目前,对于 Hash 长度扩展攻击已经有了完备的工具 Hashpump,这是一个开源软件:GitHub - bwall/HashPump: A tool to exploit the hash length extension attack in various hashing algorithms


Shamir 门限方案:

Shamir 门限方案 是一种秘密共享方案,由 Shamir 和 Blackly 在1970年提出。该方案基于拉格朗日插值法,利用 k 次多项式只需要有 k 个方程就可以将系数全部解出的特性,开发了将秘密分成 n 份,只要有其中的 k 份 (k ≤ n)即可将秘密解出的算法。

设需要 k 份才能解出秘密消息 m,选择 K-1 个随机数a1,.....,an ,和大素数 p (p > m),列出如下模 p 多项式:

随机选择n个整数x,代入上式后得到n个数 (x1,f(x1)), (x2,f(x2) ),..... ,(xn ,f(xn)),这就是共享的 n 份秘密信息.

在恢复秘密消息时只需要 k 个 (xi,f(xi))对,联立上述方程组,利用拉格朗日插值法或矩阵乘法,即可求得秘密消息 m.

CTF和工程上常用的 Shamir 门限实现是 SecretSharing 库:Shamir39 - Mnemonic Code Splitter

     

      

     

学习书籍:从0到1:CTFer成长之路...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/498806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树基础概念详解

文章目录 前言1. 树的基本概念2. 二叉树的基本概念3. 特殊二叉树🍑 满二叉树🍑 完全二叉树🍑 斜树 4. 二叉树的性质🍑 性质一🍑 性质二🍑 性质三🍑 性质四🍑 性质五🍑 性…

华为EC6108V9E/EC6108V9I_rk3228_安卓4.4.4_通刷_卡刷固件包

华为EC6108V9E/EC6108V9I_rk3228_安卓4.4.4_通刷_卡刷固件包-内有教程 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的…

【Java】线程池--ThreadPoolExecutor底层原理源码的理解

文章目录 一、根据代码查看jdk提供的3种线程池创建:二、3种方式源码分析1、Executors.newCachedThreadPool()2、Executors.newFixedThreadPool(10)3、Executors.newSingleThreadExecutor() 三、自定义方式执行提交优先级执行优先级 一、根据代码查看jdk提供的3种线程…

第2章Elasticsearch入门

1.正排索引和倒排索引 正排索引: 正排索引(Forward Index)是一种用于搜索引擎和文本检索系统的索引结构,它将文档中的每个单词都映射到该单词在文档中出现的位置。正排索引可以帮助快速定位、检索和渲染文档内容,但它需要消耗大…

AI 工具合辑盘点(十一)持续更新 之 AI 学术研究工具

许多学生和研究人员已经在利用人工智能进行研究。它可以让你更容易地了解最新研究成果,并帮助你组织和正确引用你最喜爱的研究论文。 从生成长篇研究论文摘要到通知你领域内的新趋势,研究中的AI工具节省了大量时间和精力。如果你在学术界,那…

数据库系统

目录 第三章、数据库系统1、数据库模式1.1、三级模式--两级映射1.2、数据库设计过程 2、ER模型3、关系代数与元组演算4、规范化理论4.1、函数依赖4.2、价值与用途4.3、键4.4、范式4.5、模式分解 5、并发控制6、数据库完整性约束7、数据备份8、数控故障与恢复9、数据仓库与数据挖…

网络安全合规-数据安全风险评估

一、法律依据: 依据《数据安全法》第三十条的规定,重要数据的处理者应当按照规定对其数据处理活动定期开展风险评估,并向有关主管部门报送风险评估报告。 依据《网络数据安全管理条例》(征求意见稿) 第三十二条规定&am…

实时通信的服务器推送机制 EventSource(SSE) 简介,附 go 实现示例

简介 不知道大家有没有见过 Content-Type:text/event-stream 的请求头,这是 HTML5 中的 EventSource 是一项强大的 API,通过服务器推送实现实时通信。 与 WebSocket 相比,EventSource 提供了一种简单而可靠的单向通信机制(服务器…

《Linux 内核设计与实现》03. 进程管理

文章目录 进程描述符及任务结构分配进程描述符进程描述符的存放进程状态设置当前进程状态进程上下文进程家族树 进程创建线程在 Linux 中的实现创建线程内核线程 进程终结删除进程描述符孤儿进程 进程描述符及任务结构 内核把进程存放在任务队列(task list&#xf…

MySQL高级--锁

一、锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题…

新手必看:腾讯云轻量服务器使用限制

腾讯云轻量应用服务器和云服务器CVM相比具有一些限制,比如轻量服务器不支持更换内网IP地址,轻量服务器只能套餐整体升级且不支持降配,轻量不支持用户自定义配置私有网络VPC,还有如实例配额、云硬盘配额、备案限制和内网连通性等限…

整理一下最近了解到的AIGC工具

AIGC工具的一点整理 前言AIGC类型图像生成类Stable diffusionMidjourneyDALLE 2三种工具比较DeepFloyd IF 文本生成语音生成So-vits-svc 4.0 结尾 前言 好久没有写csdn博客了,突然不知道写点什么,最近AIGC真的很火,有一种三天不看就跟不上发…

计算机系统-异常控制流

例行前言: 本篇不是学习课程时的笔记,是重看这本书时的简记。对于学习本课程的同学,未涉及的内容不代表考试不涉及。核心内容是信号部分。本章内容介绍了较多的信号处理函数,需要在实验中巩固本章所学内容及相关问题的处理(并发&…

五彩斑斓的黑:Fun with PyQt5+CMake+C++

Fun Pain Fun with PyQt5CMakeC 本文相关代码GitCode地址 这个项目与PyQt5只有半毛钱关系。事情是这样发生的。当时,我在一个新电脑上干活,装了miniconda,装了PyQt5,干着干着突然要整一个Qt5。我想也挺好,据说C 17里…

Node.js和在浏览器之中的不同

在Node.js中编写JavaScript应用程序与在浏览器中为Web编程有何不同 1、在浏览器中,大多数时候您所做的是与DOM或其他Web平台API(如Cookie)进行交互。当然,Node.js中并不存在这些。您没有浏览器提供的文档、窗口和所有其他对象。 …

让测试更轻松:学习Selenium进行Web应用程序自动化测试

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 摘要: 什么是Selenium 安装Selenium 编写自动化测试脚本 第一步:导入Selenium库 …

前端006_头部快捷导航_标签导航栏

效果如下,红色方框里面有快捷导航 1、添加标签栏导航组件 拷贝vue-element-admin 的 @/layout/components/TagsView 目录及文件到 mengxuegu-blog-admin 对应目录下 [root@pgdb vue-element-admin]# cp -r src/layout/components/TagsView ../db-manager-system/src/layou…

UE蓝图基础学习笔记(未完待续2023/05/06)

文章目录 一、项目创建1)准备流程(选择模板、开发语言、平台、质量等)2)界面介绍 二、Actor三、操作关卡对象(旋转、移动、缩放和坐标轴)四、常用快捷键五、运行游戏六、蓝图介绍七、蓝图节点八、操作事件图…

Vben Admin 自学记录 —— Drawer组件的基本使用及练习(持续更新中...)

Drawer 抽屉组件 对 antv 的 drawer 组件进行封装,扩展拖拽,全屏,自适应高度等功能。 Drawer相关使用及概念 练习 —— 在之前table基础上,添加查看功能,点击查看按钮,弹出抽屉显示单条表格数据&#xf…

基于80C51单片机的电子钟设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87761539?spm1001.2014.3001.5503 源码获取 主要内容: 电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比&#xf…