如果你还在使用基于早期信号标准的GSM手机,那么你最好在使用手机的过程中小心一点了。因为根据国外媒体的最新报道,安全研究专家通过测试发现,他们只需要使用三张NVIDIA GeForce GTX690显卡(GPU)就可以破解GSM A5加密算法。

A5加密算法是何物?

A5算法在1989年由法国人开发,它是一款主要用于GSM系统的序列密码算法。A5加密算法用于对那些从移动电话到基站的通信连接进行加密,该算法先后有三个版本,分别为A5/1、A5/2和A5/3,如果没有特别说明,通常所说的A5指的是A5/1。关于GSM加密的问题,有些人认为密码的安全问题将阻碍GSM手机的推广;另一些人则认为A5加密算法的强度太弱,无法抵抗一些情报机构的窃听。A5加密算法的特点是效率高,适合在硬件上高效实现,而且它能也通过已知的统计检验。

总之,A5加密算法的基本思路并没有什么问题,而且它的执行效率非常高。但是从密码学和安全性的角度出发,这个算法就存在很多的安全问题了。

GSM通信加密存在严重的安全问题

近期,一群来自新加坡科技研究局(A*STAR)的安全研究专家表示,在普通GPU处理器的帮助下,他们可以在几秒钟之内破解GSM移动数据所采用的加密算法。实际上,人们早在2009年就已经知道A5/1加密算法中存在严重的安全问题了。

由于当初在2G通信技术正式投入使用之前,相关部门对2G通信加密中存在的安全问题一直不予披露,而且考虑到保密性,所以这些加密算法也没有提交给同行进行安全审核,所以才导致了目前的这种状况存在。其中,A3加密算法专门用于身份验证,A5加密算法专门用于信息加密,A8加密算法专门用于密钥生成。

GSM只会对访问网络的用户身份进行验证。因此,通信的加密安全层只能够提供数据保密和身份验证功能。但需要注意的是,这是一种功能有限的身份验证,因为它并不具备不可否认性这种特征。为了实现通信的安全,GSM采用了多种加密算法。比如说,GSM使用了A5/1和A5/2这两种流密码来确保用户语音通话数据的安全。但是,这两种加密算法中却存在严重的安全问题,攻击者可以通过下面这两种方法破解这两个加密算法:

1.通过实时的唯密文攻击来破解A5/2;

2.通过彩虹表攻击破解A5/1;

GSM中主要存在的一些安全问题如下:

1.通过固定网络传输的通信数据没有受到加密保护;

2.无法抵御某些主动攻击;

3.只有连接至安全的固定网络才可以保证GSM的通信安全;

4.GSM中的合法拦截只是一种事后补救措施;

5.终端识别码不可信任;

单纯从技术的角度出发,3G通信网络弃用了不安全的A5/1流密码,转而使用KASUMI分组密码【维基百科传送门】,但是KASUMI分组密码中同样存在很多严重的安全问题。

破解GSM的A5/1加密算法

来自新加坡科技研究局(A*STAR)的信息通信安全专家JiqiangLu解释称:

“GSM使用了一种名为A5/1的流密码来保护通信数据的安全,而A5/1使用了一个64位的密钥和一种十分复杂的密钥流生成器来抵御一些基本的攻击,例如密钥穷举和基于字典的暴力破解攻击。”

首先,安全研究人员利用了GSM通信加密中的两个安全漏洞,并且在普通商用硬件的帮助下,花费了55天的时间计算出了一个彩虹表。据了解,这个彩虹表的大小为984GB。得到了彩虹表之后,安全专家就可以在短短的九秒内确定用于加密通信数据的密钥了。

我们可以看到,这种新型的攻击方式不仅极大程度地提升了传统暴力破解攻击的成功率,而且还大大降低了计算密码和攻击所需的时间。

Jiqiang Lu补充说到:

“我们在攻击过程中使用了一个彩虹表,这个彩虹表是通过离线迭代计算生成的,它包含有密钥和其相对应的输出密码。当攻击者在攻击过程中接收到了输出数据之后,他就可以通过识别彩虹表中密钥和密码的对应关系来确定输出数据的有效性。”

在测试设备方面,安全研究人员使用的是一台由三块NVIDIAGeForce GTX 690显卡GPU所组成的计算装置,这个装置的成本约为一万五千美金。

安全研究专家在其发表的白皮书中写到白皮书】:

“我们在实验过程中使用了一台由三张NVIDIAGeForce GTX690显卡所组成的通用图形处理单元(GPGPU)计算机,这台计算机的总成本约为一万五千美金。我们花费了55天的时间计算出了一个彩虹表,在这个彩虹表的帮助下,我们只需要九秒钟的时间就可以通过在线攻击来破解A5加密算法了。

在事先获取到4个密钥序列的情况下,破解成功率为34%;如果能够事先获取到8个密钥序列,那么破解成功率就可以达到56%,其中每个密钥序列长度为114位。如果能够使用两个这样的彩虹表来进行攻击,那么在事先得知8个密钥序列的情况下,我们9秒内的在线攻击成功率将高达81%。

实验结果表明,A5/1加密算法确实非常的脆弱,因此GSM应该立即停止使用这种加密算法。”

*参考来源:securityaffairs

普通硬件就能破解GSM A5加密算法的更多相关文章

  1. 剖析 GSM 加密机制以及位置更新的过程

    你有没有想过打开手机时会发生什么?它是如何以安全的方式与网络进行通信?几乎所有人都知道TCP / IP,并且可能许多人还是专家,但是谈到电信方面,很少有人知道它的内部原理. gsm中的消息结构是什么? ...

  2. GSM Hacking Part② :使用SDR捕获GSM网络数据并解密

    0×00 在文章第一部分 GSM Hacking Part① :使用SDR扫描嗅探GSM网络 搭建了嗅探GSM流量的环境,在第二部中,我们来讨论如何捕获发短信以及通话过程中的流量,从捕获到的数据中解密 ...

  3. GSM嗅探

    GSM初探 大家应该都听说过HTTP协议,又听说WEB服务,每一个服务的背后都有一个协议在工作着.所谓的没有规矩不成方圆,说的就是这个道理,每一个细小的部分,都已经规定好,只要按照协议执行,就不会出现 ...

  4. 常见加密算法C#实现(一)

    前言:最近项目中需要用到字符串加解密,遂研究了一波,发现密码学真的是博大精深,好多算法的设计都相当巧妙,学到了不少东西,在这里做个小小的总结,方便后续查阅. 文中关键词: 明文(P,Plaintext ...

  5. Office密码破解工具最好用的是哪款

    很多的用户朋友设置密码的office文档一般都含有比较重要的信息.因此,忘记密码在破解的过程中非常重视安全保密性.现在有很多款office密码破解工具,很多的用户朋友不知道用哪一款比较好,其中Adva ...

  6. 使用RSA非对称密钥算法实现硬件设备授权

    一.硬件设备授权 即用户在硬件设备输入一个序列号(或一个包含授权信息的文件),然后硬件设备便可正常使用.    二.授权方案 构思授权方案时,参考了下面网址的思路: http://bbs.csdn.n ...

  7. 蛙蛙推荐:WEB安全入门

    信息安全基础 信息安全目标 真实性:对信息的来源进行判断,能对伪造来源的信息予以鉴别, 就是身份认证. 保密性:保证机密信息不被窃听,盗取,或窃听者不能了解信息的真实含义. 完整性:保证数据的一致性, ...

  8. 【腾讯Bugly干货分享】iOS黑客技术大揭秘

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5791da152168f2690e72daa4 “8小时内拼工作,8小时外拼成长 ...

  9. iOS黑客技术相关

    在黑客的世界里,没有坚不可破的防护系统,也没有无往不胜.所向披靡的入侵利器,有时候看似简单的问题,破解起来也许花上好几天.好几个月,有时候看似很 low 的工具往往能解决大问题:我们以实现微信自动抢红 ...

随机推荐

  1. 搭建Kafka集群(3-broker)

    Apache Kafka是一个分布式消息发布订阅系统,而Kafka环境往往是在集群中配置的.本篇就对配置3个broker的Kafka集群进行介绍. Zookeeper集群 Kafka本身提供了启动了z ...

  2. 50道 Sql语句题

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表   ...

  3. WSB功能分解(在线考试系统)

    对在线考试系统进行WSB功能分解至三级子功能,并且预估每个子功能所需时间. 一级功能 二级功能 三级功能 预估花费时间(小时) 考试管理员功能模块 培训计划 查询 1.5 重置 1 新增计划 1.5 ...

  4. volatile关键字及编译器指令乱序总结

    本文简单介绍volatile关键字的使用,进而引出编译期间内存乱序的问题,并介绍了有效防止编译器内存乱序所带来的问题的解决方法,文中简单提了下CPU指令乱序的现象,但并没有深入讨论. 以下是我搭建的博 ...

  5. Ajax_showHint() 函数

    showHint() 函数实现的功能是:当用户在输入框中键入字符时,网页如何与 web 服务器进行通信,完整的代码如下: <html><head><script type ...

  6. php案列分享

    <?php function GetfourStr($len) { $chars_array = array( "0", "1", "2&quo ...

  7. WinForm 公共控件

    一.窗体属性: 1.AcceptButton - 窗体的“接受”按钮.如果设置该属性,每次用户按“Enter”键都相当于“单击”了该按钮. 需要设置哪个键,就在后面选择. 2.CancelButton ...

  8. 通过php下载文件并重命名

    $filename = dirname(__FILE__) . '/oldfilename.jpg'; $out_filename = 'newfilename.jpg'; if( ! file_ex ...

  9. Windows Store App JavaScript 开发:选取文件和文件夹

    前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSing ...

  10. PHP 捕捉错误,记录到日志

    register_shutdown_function("shutdown"); define('ERR_LOG_FILE', '/dev/shm/php_log.txt'); if ...