A5流密码算法

0x01 A5/1流密码算法的基本用法

作用:
用于蜂窝式移动电话系统语言和数字加密
过程:
A5/1算法用于用户的手机到基站之间的通信加密,通信内容到基站后先解密变成明文,然后再进行基站到基站之间,以及基站到用户手机之间的信息加密,完成通信内容在通信过程的加密保护。
在这里插入图片描述
应用环节:
只需考察用户A到基站1之间通信内容的加解密,中间消息的传送由基站到基站之间的加密完成,而接受方B对消息的加解密与用户A到基站1之间的通信完全类似,只不过用户B先解密消息

基本密钥KA1
预置在SIM卡中,与基站1共享。
•生存期:一旦植入SIM卡将不再改变。
•用途:用来分配用户和基站之间的会话密钥。

会话密钥k
在每次会话时,基站产生一个64比特的随机数k。仅用于一次通话时间。

加密方式
一次通话使用一个会话密钥,对每帧使用不同的帧密钥。按每帧228比特分为若干帧后逐帧加密,每帧处理方式相同,其中114比特为发送,114比特用来接收数据。明文密钥流结合方式:逐位异或

0x02 密钥流产生步骤

在这里插入图片描述
A5/1算法使用3个线性反馈移位寄存器,简称为LFSR。三个寄存器的分别为19位、22位、23位。这里要使用三个共包含64位二进制的线性反馈移位寄存器,这个设计绝非偶然。绝非巧合的是,A5/1算法的密钥K也是64位。该密钥用于三个线性反馈移位寄存器的初始填充,也就是说,该密钥用于充当三个寄存器的初始值。这三个寄存器用密钥填充之后,就可以开始生成密钥流了。

每个回合步骤可以拆分为:取KEY,反馈多项式(Feedback Polynomial),位移

1、取key

取三个寄存器的最后一位,也就是19位、22位、23位,进行XOR操作,得到的结果为这一轮Key的一位。

2、反馈多项式

LFSR进行位移的前置操作,具体可以分成两步:判定是否需要进行位移,判定新的充填的值

2.1 判断是否需要移位

这里使用的是择多原则,三个寄存器中选择三个钟控信号,19位中的第8位,22位,23位中皆为第10位,两种二进制0,1,必定有0或1数量居多,居多的寄存器需要进行位移操作。就是上图的黄色部分

2.2 判定新的充填的值:

这里需要用到反馈多项式:
在这里插入图片描述
XOR后得到的值是充填到第0位的值。

3、移位

三个寄存器,由上一步的判定后进行位移,空出第0位用于充填反馈多项式得到的值。

0x03 密钥产生例子

1、假设有以下三个初始移位寄存器(先只要知道有三个移位寄存器(就是普通寄存器),分别有19位,22位,23位)
在这里插入图片描述

2、然后是如何开始生成秘钥的,假设有三个寄存器目前的状态是这样:
在这里插入图片描述
3、接下来开始进行规定的流程
取key,得到第一个密钥值为1
(1)首先找到X8=1,Y10=0,Z10=1
(2)取数量最多的作为结果M=Maj(X8,Y10 , Z10 )= Maj(1,0, 1)=1;(如果是M=Maj(0,0,1)=0)
(3)因为M=1,且X8=1,M=X8,所以X寄存器需要左移一位,那么因为左移,第一位就空出来了,则 X0=1,  所以最后X寄存器变为
在这里插入图片描述
同理:
在这里插入图片描述
在这里插入图片描述
所以最后得到的三个移位寄存器是
在这里插入图片描述
秘钥是S0=1,

就这样得到了另一位秘钥,如果需要64位秘钥,则按照上述进行循环64次操作即可。

0x04 A5/1算法弱点

移位寄存器太短容易遭受穷举攻击,A5/1算法把主密钥作为算法中三个寄存器的初始值,长度为64比特。如果利用已知明文攻击,只需要知道其中两个寄存器的初始值,就可以计算出另一个寄存器的初始值,这只需要240步就可以得出寄存器LFSR-1和LFSR-2的结构。
利用了GSM通信加密中的两个安全漏洞,可以通过离线迭代计算生成一个彩虹表,它包含有密钥和其相对应的输出密码。这个彩虹表的大小为984GB。得到了彩虹表之后,安全专家就可以在短短的九秒内确定用于加密通信数据的密钥。

参考:
https://www.cnblogs.com/gambler/p/9074356.html
https://blog.csdn.net/jerry81333/article/details/78641362
https://www.bilibili.com/video/av58596164?p=17

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

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

相关文章

远控免杀专题10--TheFatRat免杀

0x01 免杀能力一览表 几点说明: 1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。 2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全…

远控免杀专题11-Avoidz免杀

0x01 免杀能力一查表 几点说明: 1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。 2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全…

CAP与流密码

CAP 中流密码的操作 1 、Cipher 下拉菜单中选中Stream 2,设置LFSR 参数,设置好参数后点击Set Key LFSR Size:表示有几个寄存器 Initial key:寄存器的初始状态,每个寄存器初始值是0或1,放在一起转化成十六进制 Feedbac…

结构和其他数据形式

0x01 结构声明 结构声明(structure declaration)描述了一个结构的组织布局。 struct book{char title[MAXTITL];char author[MAXAUTL];float value; };该声明描述了一个由两个字符数组和一个float类型变量组成的结构。该声明并未创建实际的数据对象&am…

添加LinkServer的两句代码

sp_addlinkedserver linkserver,,SQLOLEDB,linkserver.comsp_addlinkedsrvlogin linkserver,false,null,sa,asdf第一句是添加一个名字为linkserver的链接服务器 地址是linkserver.com第二句是针对第一句添加的Linkserver添加一个访问帐号两句不能同时执行 要第一句执行成功后执…

Cobaltstrike4.0系列教程(一)----简介与安装

0x01-Cobaltstrike简介 Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界人称为CS。这款神器许多大佬们都已经玩的很6,我一个菜鸡玩的略有心得,因此写一下自己的Cobaltstrike系列文章,希望给各位一点帮助。 最近这个…

qt 试用 (3)配置编译源代码及调试

qt 试用 (3)配置编译源代码及调试qt creater是一个集成ide,像vc一样容易使用,所以首先下载带qt creater的qt sdk Offline installer - 1.4 GB http://qt.nokia.com/downloads/sdk-windows-cpp-offline这里的lib没有pdb和源代码…

cobaltstrick4.0系列教程(2)---用户接口

0x01 概述 Cobalt Strike 用户接口分为两部分。接口的顶部是会话或目标的视觉化展示。接口的底部展示了每个你与之交互的 Cobalt Strike 功能或会话的标签页。你可以点击这两部分之间的区域、按你的喜好重新调整这两个区域的大小。 0x02 工具条 Cobalt Strike 顶部的工具条…

cobalt strick 4.0系列教程(3)---数据管理

0x01 概述 Cobalt Strike 的团队服务器是行动期间 Cobalt Strike 收集的所有信息的中间商。Cobalt Strike 解析来自它的 Beacon payload 的输出,提取出目标、服务和凭据。 如果你想导出 Cobalt Strike 的数据,通过 Reporting → Export Data 。Cobalt S…

calayer 与uiview

研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍。苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人,其实是假 设读的人…

代换-置换网络(SP网络)

0x01 概述 代换-置换网络是一系列被应用于分组密码中相关的数学运算,高级加密标准(英语:AES)、3-Way、Kuznyechik、PRESENT、SAFER、SHARK、Square都有涉用。这种加密网络使用明文块和密钥块作为输入,并通过交错的若干…

【贪心】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法时间复杂性Python实现 个人主页:丷从心 系列专栏:贪心算法 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图, E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] …

HTML5 学习笔记

HTML5 学习笔记 前言 该学习笔记的相关学习视频:【狂神说Java】HTML5完整教学通俗易懂 目前笔记只有简单的例子和框架,将来在实践中会进一步学习和补充内容 目录HTML5 学习笔记前言网页基本信息网页基本标签标题标签段落标签换行标签水平线标签字体样式…

保护机制

0x01 概述 操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP、ASLR等。在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX)、ASLR(Linux下对应PIE&#xf…

机器学习降维算法一:PCA(主成分分析算法)

引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式。 y是数据点映射后的低维向…

VS 2005模板丢失找回的办法

安装其他插件的时候,常常模板丢失,比较郁闷,以前就用土办法,重装VS来解决这个问题,这次终于弄清楚怎么回事了,可以采取下面两个步骤解决1。复制ProjectTemplates和ItemTemplates,保证VS能找到相…

一个简单的pwn例子---read函数

内容&#xff1a; #include<stdio.h> void exploit() {system("/bin/sh"); } void func() {char str[0x20];read(0, str, 0x50); } int main() {func();return 0; }我们要做的是利用溢出执行exploit函数 分析&#xff1a; 先执行func函数&#xff0c;func函数…

万网与阿里巴巴业务关系图解

阿里巴巴在港上市公司今天发布公告称&#xff0c;计划分拆旗下中国万网赴美上市。那么万网与阿里巴巴其它业务是怎样个关系&#xff1f;且看我们分析。 随着传统企业大面积地转向互联网经营&#xff0c;用电子商务来服务客户&#xff0c;它们面临的第一个问题就是建站。针对这一…

cobalt strick 4.0 系列教程(4)---监听器和基础设施管理

0x01 概述 任何行动的第一步都是建立基础设施。就 Cobalt Strike 而言&#xff0c;基础设施由一个或多个团队服务器、重定向器以及指向你的团队服务器和重定向器的 DNS 记录组成。一旦团队服务器启动并运行&#xff0c;你将需要连接到它并将其配置为接收来自受害系统的连接。监…

【竞赛题解】Codeforces Round #710 (Div. 3)

B. Partial Replacement 题意&#xff1a;有字符串由.和*组成&#xff0c;可标记其中*&#xff0c;首尾的*必须被标记&#xff0c;使被标记的*之间距离不超过k&#xff0c;求最少的标记量 思路&#xff1a;首先从首尾出发确定首尾*的位置&#xff0c;再由首beg出发向后的k个元…