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

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

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

-> 为什么tox 已经做到了,还要造轮子?
<- tox 没有移动版。
-> 这种东西会有人用吗?
<- 发到v2ex就是看看有没有想用。
17284 次点击
所在节点    奇思妙想
95 条回复
NeoAtlantis
2015-02-25 04:22:54 +08:00
@dndx 不要转移话题。这和人与人的信任是两回事,通信的双方也可以只是两台公司内部的分开的计算机。或者比如,我现在在国外,我要和国内的之前信任的小伙伴联系。我知道对方的语气、长相,但是我和他只能通过互联网联系,而且是马上。

>>> 于是你要我走之前和他交换光盘?

256比特的密钥量子计算机也无法破解。前提是对称加密算法。量子计算机只能把难度降低到128比特上。

还有你没考虑数字签名的情况。这个必须是非对称算法。比如我要签署我发布的软件。
NeoAtlantis
2015-02-25 04:27:51 +08:00
@dndx

“如果以后计算机的计算能力大幅提升,那么 salsa20 完全有可能被破解。”
——破解对称加密比破解不对称加密难得多。请参考密码学理论。良好设计的比如256比特的算法,在量子计算机下被降低到128比特的强度,但是之后还是暴力破解。目前看来,就算把整个地球上的水都拿来冷却地球上所有的计算机,恐怕也是不够的。

DHE是能破解。这是在量子计算机下不安全的东西。但是post-quantum时代的算法也在研究(就是抗量子计算机的),比如Merkle Signature Scheme(TUDarmstadt研究得很多)这个签名机制,现在稍微改进下基本都能实用了,签名结果长度和RSA差不多(不短,比如要3-4kB),但是很安全。加密方面有NTRU,但是这个我了解的不多了。

我说的这些的安全,是实用的,保证在正确使用的情况下,让你这辈子看不到有人能破出来的。下辈子,也不太可能。
dndx
2015-02-25 04:28:07 +08:00
@NeoAtlantis 256 bit 的密钥现在无法破解,不代表 50 年以后也无法破解。想达到 Information-theoretic security ,也就是你老死都不会被破解,只能使用 OTP。

https://en.wikipedia.org/wiki/Information-theoretic_security

That is, it cannot be broken even when the adversary has unlimited computing power. The adversary simply does not have enough information to break the encryption, so these cryptosystems are considered cryptanalytically unbreakable. An encryption protocol that has information-theoretic security does not depend for its effectiveness on unproven assumptions about computational hardness, and such an algorithm is not vulnerable to future developments in computer power such as quantum computing.
dndx
2015-02-25 04:30:04 +08:00
@NeoAtlantis 另外签名问题很好搞定。假设你的密钥绝对安全,那么直接加密即可,攻击者发给你伪造的信息,你解出来的也是随机数。

OTP 连重放问题都不会存在,因为密钥永远不会被重用,所以签名也没什么实际意义。
threezhiwang
2015-02-25 04:49:45 +08:00
@schezuk 一般实际应用会把签名结果和明文一起携带,然后双方约定哈希算法
threezhiwang
2015-02-25 04:52:49 +08:00
@9hills RSA系列从理论上讲,没法加密随机数
threezhiwang
2015-02-25 04:56:55 +08:00
@NeoAtlantis 要绝对安全,就要附加一个安全设备
NeoAtlantis
2015-02-25 05:11:21 +08:00
@dndx 我再重复一遍:OTP不实用!!还要我强调几遍?缺少很多有用的特性。

我相信50年之后不能破解,这就够了,50年不够加大长度到100年,我反正不见得能活到那个时候。

签名问题不是你这么搞定的。加密和签名是两回事。
签名完全可以针对明文签名。
我要求的是,我签名了,别人不能伪造。
比如我发一个公告,我需要全世界都能看到,但是我需要没人能伪造我的公告。
我不需要加密,我只需要签名。

比如你运行一个服务器,你要求别人不能假装是你的服务器。
现在的SSL是很简单的,可是如果你偏要用OTP,就只能要求线下每个用户收到你一光盘,每张还得是好几个G的流量。
而且,更糟糕的是,你还得在服务器上储存所有用户的流量!
反正我是不会这样设计。

顺便吐槽下v2ex的发快封半小时的做法。

----

@threezhiwang 说的对。我正在搞这个(http://neoatlantis.github.io/topics/commsys.html):



我打算用一个独立的计算机来负责完成类似GPG的工作。
然后外面的聊天软件,用一个插件向我的独立设备发送offer(“我可以给你递交数据,你要说啥?”)
然后独立设备上可以编辑offer。用户如果觉得在设备上打字麻烦,可以在外面编辑。但是只有设备是被信任的。
对方的聊天软件收到密文之后,送进设备解密或者验证签名。
之后根据设备上可以完成的手动或者自动配置,可以将解密后的东西送出设备(这样的设想是为了让设备可以自动化,比如作为门禁系统的一部分)。
另外我考虑把签名和证书分开。就是证书只是自签名的密钥。
别人的对证书的签名“文档”(类似授权书),和证书附加在一起就算是了。但是不设计单独的一种格式。
NeoAtlantis
2015-02-25 05:38:15 +08:00
顺便补充个在别的哪个网站上的估计思路。

我假设用256比特的对称加密。要暴力破解的话,

假设地球上有100亿人口(=10^10)
每人有100台计算机
每台计算机每个操作的完成时间我按照光速除以一个飞米(10^-15次方米,是一个纳米的的一百万分之一,原子直径相比之下有几百皮米,亦即是原子直径的十万分之一)
每台计算机的这样的操作有100个单元。
每个操作就能进行一次破解的尝试。

于是2^256 / (10^10 * 100 * (3*10^8 / 10^-15) * 100) = 2^131.5
这样的话才能刚刚在1/16秒之内破解一个128比特的加密。
但是破解256比特的加密的话(实际上破解256比特的加密平均下来尝试128比特就应该有一半的概率能碰到了),需要的量可不是线性增长的:

2^256 / 2^131.5 / (86400 * 365) 年,即9.5×10^29年。

我们即使到了这一天,顶多把256比特的加密升级到512比特。
SharkIng
2015-02-25 05:41:51 +08:00
我是来了解一下这个Tox和那个Telegram有什么区别的?有哪些Tox有的给力功能Telegram没有的么?
threezhiwang
2015-02-25 06:44:31 +08:00
@NeoAtlantis 足够安全的设备树莓派搞不定的 硬件上要防旁路攻击 光照分析 固件层还得考虑权限控制和重放等等等
NeoAtlantis
2015-02-25 06:57:21 +08:00
@threezhiwang 那就得看要求足够到什么程度的安全了,或者说防的是什么人了。我只是要求比一般的好一点。有些东西也是和设计有关的,比如Salsa20就比AES在抵抗测量时间的那种攻击要好一点(Bernstein好像是这么说过)。
Halry
2015-02-25 07:05:35 +08:00
@Eleutherios telegram已经被爆出来明文在db保存(android),幸好注册了也没用过
schezuk
2015-02-25 07:12:19 +08:00
@NeoAtlantis 不是算法,是说把加密的文字用汉语隐藏,要不然借着QQ/MSN传输太显眼
Halry
2015-02-25 07:14:10 +08:00
看到大家这样说,通过计算机聊天还是太危险了,有必要的还是见面面对面聊,不带手机的那种吧,你看那么多美剧里面的犯罪都是见面聊的
schezuk
2015-02-25 07:19:05 +08:00
@NeoAtlantis 原文比如是“千万不要自己设计算法。”,
(用RSA)加密之后是“9ECD9EE6CA15AB4AA777F53C532E2623”,这谁都知道是密文。
然后封装成汉语“我们喜欢黑色的苹果他们喜欢绿色的鸭梨天上行走沉重的馅饼地上掉下坚硬的香蕉”。
这样人固然知道是加密了的,QQ/MSN的服务器想识别这是密语就得提高自己智能了。
schezuk
2015-02-25 07:34:16 +08:00
@dndx
我说的不是加密,是说把密文修饰得看着像明文……
另外one-time pad你打算怎么传递密钥?
NeoAtlantis
2015-02-25 07:40:10 +08:00
@schezuk soga,这不是加密,是用汉字来编码。不过这样效率没有Base64高(但这未必是缺点)。
要注意避免敏感词出现。不过Base64有时候也更容易,比如 \xf3\xde\xb8 出现某个年份组合就难免了。

一个字符可以代表64比特(在B64编码时),但是两个字符构成一个汉字(至少得这样),就得找4096个汉字(幸好汉语博大精深)。
NeoAtlantis
2015-02-25 07:46:45 +08:00
@Halry 见面了也不能聊,只能用肢体语言(比如眨眼睛或者用手指点对方,摩尔斯电码)。
geeklian
2015-02-25 07:51:49 +08:00
楼上这哥俩干啥的...需要天天防着网信办。

苹果能在中国做生意的大前提,当然是配合审查。

不过估计五块钱的扳手就能解决的问题,用不着去苹果取证。

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

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

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

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

© 2021 V2EX