流行安全聊天APP TextSecure存在“未知密钥共享攻击”漏洞
TextSecure是Android平台下的一款加密聊天APP,这款免费APP设计目的是为了保证通信隐私。这款APP由Open WhisperSystems开发,代码完全开源,支持端到端短信加密。看起来很安全是不?不过最近,来自德国鲁尔大学的安全研究员发现TextSecure存在“未知密钥共享攻击”漏洞。
了解TextSecure
在Edward Snowden揭发NSA(美国国安局)的监控项目,Facebook又对WhatsApp进行收购后,TextSecure开始显露头角,成为那些注重隐私,有加密聊天需求人士的首选。
安全研究人员在报告中写道:
"自从Facebook收购WhatsApp后,能够加密聊天的即时通讯软件变得流行起来。但是,TextSecure到底有多安全呢?"
TextSecure吸引了众多用户,在Google Play应用商店的下载量达到了50万。TextSecure使用了Curve25519、AES-256 和 HMAC-SHA256加密算法,这些算法历经各种测试后被证明安全可靠的。软件还使用端对端加密(end-to-end encryption),通信内容只有接收和发送方能够查看。
什么是未知密钥共享攻击?
研究团队称,TextSecure用了一个复杂的加密协议,它是CyanogenMod Android操作系统的一部分 ,CyanogenMod Android是一款拥有约10万用户的开源Android系统。研究人员在其中发现了一种能够攻击这个协议的方法,即未知密钥共享攻击(Unknown Key-Share, UKS)。
这个项目是由蒂尔曼·弗罗施(Tilman Frosch),克里斯汀·梅恩卡(Christian Mainka),克里斯托弗·巴德(Christoph Bader),弗洛里安·伯格斯马(Florian Bergsma),约尔格·施文克(Jorg Schwenk)和托尔斯滕·霍尔兹(Thorsten Holz)共同研究的。
为更好地理解“未知密钥共享攻击”,研究团队举了一个形象的例子:
Bart想耍耍他的朋友Milhouse。Bart知道Milhouse会用TextSecure邀请他来自己的生日派对,于是他用Nelson的公钥替换他自己的公钥,并让Milhouse验证他的新公钥指纹(fingerprint)。这个恶作剧可以做的合情合理,比如Bart可以编造理由说:自己买了个新手机,需要重新验证指纹……
那么,当Milhouse邀请Bart参加他的生日聚会,Bart只需转发此消息给Nelson,Nelson就会认为这条消息来自Milhouse。而Milhouse那边也被耍了:他本以为邀请了Bart参加他的生日派对,而实际上邀请的是Nelson。
FreeBuf小编:小编已经尽力编译了,如果还没看懂,请阅读原文……
研究人员提供了一个临时的解决方案,目前TextSecure开发者已经知晓了此方法,并通过它防止UKS攻击。
详细报告可参见此https://eprint.iacr.org/2014/904
[Via THN, 由Sphinx翻译整理并投稿,转载请注明来自FreeBuf.COM]
- 分析函数牛刀小试 (59天)
- 猫哥网络编程系列:详解 BAT 面试题
- SpringMVC中@RequestBody引起的400异常处理,返回校验失败具体信息
- 关于primary key和unique index的奇怪问题 (58天)
- 在centos7上安装Jenkins
- Spring resource bundle多语言,单引号format异常
- String的内存模型,为什么String被设计成不可变的
- Ubuntu安装Java8和Java9
- session跟踪失效的问题和分析(57天)
- 第1章:初识编程
- 十分钟学会 tmux
- 网络慢?看看路由器设置对不对
- 为什么房间的 Wi-Fi 信号这么差
- 照着官方文档学习react
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 算法 | 斐波那契数列
- 并发学习一、MPI初步认识
- Linux下使用wget下载FTP服务器文件
- 使用Java Api 操作HDFS
- String、StringBuffer 的使用 ,两个面试问题
- Java基础【冒泡、选择排序、二分查找】
- Java基础 【Arrays 类的使用】
- i++ 是线程安全的吗?一脸蒙逼
- Java程序员必备基础:JDK 5-15都有哪些经典新特性
- Java开发中如何自动填充SQL语句中的公共字段
- 打卡群刷题总结0918——乘积最大子数组
- 打卡群刷题总结0919——打家劫舍
- 打卡群刷题总结0920——打家劫舍 II
- 打卡群刷题总结0921——最大正方形
- 打卡群刷题总结0922——丑数 II