移动端加密聊天,服务器上密文,终于可以没羞没臊的聊天了

2015-02-24 21:50:02 +08:00
 luw2007
聊天内容公钥加密传输, 私钥只有接收者有。
即使服务器上也是密文存在。从源头上保证隐私。
jcss拿到硬盘数据肯定傻眼。

简单的说就是tox.im 的移动版。

-> 为什么tox 已经做到了,还要造轮子?
<- tox 没有移动版。
-> 这种东西会有人用吗?
<- 发到v2ex就是看看有没有想用。
17034 次点击
所在节点    奇思妙想
95 条回复
luw2007
2015-02-24 23:54:07 +08:00
@JustZht 嗯,之前只是看了wiki 里面没有提到。 下载页面被忽略了。我先研究下。
luw2007
2015-02-25 00:30:02 +08:00
Eleutherios
2015-02-25 01:39:58 +08:00
好像iMessage也是这个套路吧
号称信息公钥加密传输, 密钥只有接受者有.

问题是公钥交换和验证要怎么办?
这类架构只要不是[面对面]交换公钥, 本质上都还是基于对服务器的信任的.
只要黑了服务器, 完成Man-in-Middle攻击不是不可能的事情.

@caomu 我无意发起辩论战, 但是telegram使用的是由其作者[自主研发]的加密方式, 这令我完全不信任telegram.

一个优秀的加密方式之所以优秀
- 是因为即便所有人都能看到源码, 也无法破解它
- 而不是因为没有人能看到源码, 所以不知道怎么破解它
Eleutherios
2015-02-25 01:42:11 +08:00
@threezhiwang 我觉得还是XMPP+OTR+面对面交换公钥比较好...虽然只能传输文字...
WIN/LINUX下有jitsi, iOS下有ChatSecure, Android下应该也有类似物.
Eleutherios
2015-02-25 01:48:31 +08:00
@luw2007 唔, 抱歉没看到你后面的回复.
关于接触交换, 你不妨参考下XMPP+OTR的相关运作机制, 包括密钥指纹确认/问题回答什么的.
dndx
2015-02-25 03:05:41 +08:00
iMessage 就是端到端公钥加密,何必造轮子。
NeoAtlantis
2015-02-25 03:41:44 +08:00
@dndx 但是苹果说了要配合网信办的审查。
私钥如果不在你的机器上呆着,比如被同步到了iCloud,怎么办?
我反正从硬件上就不信任苹果。

另外我也在开发类似的程序,估计过几天能搞定。
用curve25519的js库实现密钥交换。然后我自己的库有blake2s的实现。
但是按照现有的易用设计,没法避免中间人攻击。当然要攻击可能需要先入侵我的服务器。
要么用证书,但是这样就不易用了。要么类似ZRTP的设计,用WebRTC建立语音/视频信道(以后再说,太难了),然后用语音来核对一段密钥的散列。这样很难伪造。
NeoAtlantis
2015-02-25 03:44:06 +08:00
@schezuk 千万不要自己设计算法。你的设计甚至不能算是“现代密码学”(算是古典密码学)。
dndx
2015-02-25 03:47:22 +08:00
@NeoAtlantis iMessage 的私钥是在激活时本机生成的,只有公钥被发到了服务器。

再说了我肉身不在国内,用的是美区账号,难不成苹果也会配合网信办审查?
hljjhb
2015-02-25 03:49:44 +08:00
telegram 有端到端加密的聊天模式 还禁止截屏复制 但是拍照就没办法了
dndx
2015-02-25 03:52:48 +08:00
@NeoAtlantis 理论上来说 iMessage 中苹果想窃取信息只有偷偷更换你的公钥 MITM 。只要 iMessage 服务器还在美国,苹果配合中国网监的可能性几乎没有。NSA 也不是吃素的,苹果要是干这种事很容易会被发现。

如果苹果往服务器发送私钥,这么多人盯着 iMessage ,被发现更是分分钟的事。
dndx
2015-02-25 03:53:53 +08:00
@schezuk 不用这么复杂,直接用 one time pad ,数学证明无法破解。
NeoAtlantis
2015-02-25 04:01:28 +08:00
@dndx

1. 苹果干啥了我不信。不要相信政策安全“我们能看到你的数据,但是我们保证不外泄”。斯诺登什么的该说的都说了吧。
2. “理论上说理论和实际是一致的。”
3. 苹果是会配合中国网监的。因为苹果的大部分市场在国内。你不能指望公司的良心,几亿的资产和你的隐私比你要哪个?苹果平时不发送,不代表受控情况下不发送。也不代表私钥在本地就加密存放了,也不代表加密私钥的口令到对称密钥的步骤就是安全的(比如PBKDF2的迭代次数不够什么的)。
4. One Time Pad是不能破解,但是它存在的更多是理论价值。是说,如果你能用伪随机序列在一定长度上模拟OTP,那么就是安全的。比如salsa20这样的流密码。(27楼我为啥要提到blake2s,真是迷糊了,我要说的是salsa20)。
NeoAtlantis
2015-02-25 04:04:32 +08:00
@dndx 即使你在美国,也有几种情况:
1. 苹果配合网信办的要求,但是没有透漏你的数据,因为网信办不需要。
2. 苹果配合NSA,将你的数据给了NSA。
3. NSA不一定不把你的隐私透漏给天朝。如果你确实是很有价值的目标,可以拿来交换的话。理论上是能的。
4. 和你联系的人怎么办?
dndx
2015-02-25 04:07:41 +08:00
@NeoAtlantis 如果使用 OTP ,当然不会使用伪随机序列。直接大气噪声生成随机数据,面对面物理交换。一张光盘的 OTP 发消息够用一辈子了。
NeoAtlantis
2015-02-25 04:10:13 +08:00
@dndx 问题是,OTP不实用。OTP要求密钥和明文长度一样长,但是我希望的是,密钥只要安全,不管密文多长都好保存。而且OTP的密钥不便于管理。比如我要聊天,我怎么和对方事先约定那么长的密码本?如果我新认识了一个朋友呢?而且对称加密和认证好像也没法解决数字签名的问题。
NeoAtlantis
2015-02-25 04:12:58 +08:00
@dndx 另外关于随机数发生器的问题:物理产生的真随机数是不可复现的,但是未必是满足良好的随机规律的。我的建议是至少用物理噪声配合数学的算法来让结果的0-1比例是一样的。
dndx
2015-02-25 04:15:32 +08:00
@NeoAtlantis 没有线下的信任,什么加密算法都没用。

就像你不信任苹果的 iMessage 服务器,别人凭什么信任你的服务器不会替换证书?说到底还是得预先交换密钥,任何非去中心化的,需要服务器的服务都看起来很可疑。

聊天产生的数据太少了,100M 的 OTP 够你聊几个月了吧。用一点销毁一点密钥,量子计算机都无法破解。
NeoAtlantis
2015-02-25 04:17:45 +08:00
@dndx 我的回复好像没到你的点子上。伪随机序列,比如我们假设用salsa20获得一个这样的序列,如果能在2^70的长度内无法(在一定的代价——比如计算能力——上)和真随机序列区分,那么我的算法就是安全的。这是论证的一个步骤。这种情况下我就只需要保存128~256个比特的密钥。这样的密钥分发就简单多了,销毁也简单多了(假设我把加密数据存在磁带这样的读起来快写起来慢的设备上了,我为了粉碎文件,也只是需要抹消几遍密钥,而不是把整个介质从头到尾抹消几遍)。
dndx
2015-02-25 04:22:31 +08:00
@NeoAtlantis 如果以后计算机的计算能力大幅提升,那么 salsa20 完全有可能被破解。即使目前广泛使用的 DHE 在计算能力足够的情况下也是可以被破解的。

OTP 如果使用 True Random Number + 可靠的密钥交换 + 用后即焚,可以保证未来无论计算机的计算能力有多强,都无法被破解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/172547

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX