1
fruitmonster 171 天前
第一个问题:给谁用,使用场景是啥
|
2
busier OP |
3
makaflow 171 天前
国内是不行,无法监管就会被叫停
|
4
7lQM1uTy635LOmbu 171 天前
@busier 服务器不要留存信息,转发的消息确认送达后直接删除,并且应该设置 ttl ,最大存活时间,可以由发送方自定义,并且由发送方决定超时是否由服务器代替发送超时通知,但最大不能超过 x ,超时直接删除。
即便是同一对通信用户,请定期 rotate 密钥对,确保历史消息不可被物理解除后恢复。 至于安全交换公钥,印象中有看到过相关方案,反正是个已经解决的问题。 如何防止中间人攻击?(比如劫持,代理) |
5
cassidy0134 171 天前
@busier 本人 ops 一枚,有多台海外服务器( sg ,us ),我不想暴露自己但想帮 op 测试这个页面和 app ,ops 相关的工作可以全部我来,你只要写代码即可,如果愿意,请给我一个临时联系方式。
|
6
cassidy0134 171 天前
其实我也早就想做这件事,奈何不会写代码~
|
7
shinsekai 171 天前
telegram web 算 OP 所说的吗?
|
8
ltkun 171 天前
如果不是 web 可以选择 k9mail 这种 使用普通 email 就能端到端的 app
|
9
dj721xHiAvbL11n0 171 天前 2
都通过其它渠道交换公钥了,我干嘛不直接通过那个渠道顺便把加密消息一起发了得了?
|
10
dislazy2023 171 天前
感觉可行,这个用来做临时聊天还是很有用处,我也一直在找这样的开源 web ,不太好找
|
11
jeesk 171 天前
肯定可行, 不过没什么鸟用呀
|
12
jeesk 171 天前
使用场景? 如果仅仅是分享问价? 那么直接临时启动一个 http-server 即可
|
14
wushenlun 171 天前 via Android
email pgp 加密不就好了 或者 whatsapp
|
15
ArthurSS 171 天前
webrtc 不是可以直接支持?
|
16
ArthurSS 171 天前
很早以前写了一个小 demo ,用的免费信令服务器,国内不一定能连接上: https://arthursuz.github.io/peer-link/
输入另外一边的 id ,既可建立连接,完全 p2p |
17
Nazz 171 天前
可行, 逻辑全部走 WASM
|
18
Nazz 171 天前
内置证书
|
19
superkkk 171 天前 via iPhone
|
20
Conda 171 天前
我歪个楼,我们业务里的埋点和日志这类通用的服务就是基于 protobuf 传输的,发送前加密通过正常的 http 发送加密后的字符串,服务端拿到之后再解密,这个思路和你的聊天工具也是类似的吧,只要按我的格式传过来就行。
|
21
shadowyue 171 天前
可行,但是功能单一估计用户太少怕维持运营成本都难。看你怎么在其他方面上发挥,比如约炮啥的🤣
|
22
lingo 171 天前 1
|
23
ZhiyuanLin 171 天前
传输可以走 WebRTC ,双客户端之间通过 WebSocket signalling 建立 WebRTC 直连,大文件传输不用经过服务器。
之前搞得科研项目用用到这俩技术。 |
24
ZhiyuanLin 171 天前
缺点是双方都是 symmetric NAT 的话是没法建立连接的,除非你提供 TURN server
|
25
ZhiyuanLin 171 天前 1
WebRTC 在 Signalling 期间本身就确立了端对端加密,所以你其实不用搞 openpgpjs 之类麻烦东西。
|
26
ZhiyuanLin 171 天前
|
27
ZhiyuanLin 171 天前
关于公钥的交换,可以直接提取 WebRTC 的公钥在其他渠道交换。
|
28
kkocdko 171 天前
可行而且早就有人实现过了,善用 google
|
29
luxor 171 天前
|
30
meeop 171 天前
可行,但没用,以及已经有很多人实现过了,以及 99%场景用电报之类就行,再不行分享网盘邮箱之类
|
31
busier OP @nevadax "如何防止中间人攻击?(比如劫持,代理)"
我说过了:“无法确认对方身份,需要通过其它渠道交换公钥来确认身份。” 公钥一旦确认,中间人问题就解决了! @x2420390517 “都通过其它渠道交换公钥了,我干嘛不直接通过那个渠道顺便把加密消息一起发了得了?” 已有渠道并不提供方便的端 PGP 加解密操作。你要来回复制粘贴密文来操作么!!! @jeesk “使用场景? 如果仅仅是分享问价? 那么直接临时启动一个 http-server 即可” 与 http-server 单分享是不同的。端到端的加密,要求服务器端也获取不到明文内容。 |
32
keithwhisper 171 天前
可以看下 ECash Chat
|
33
0o0O0o0O0o 171 天前
推荐这篇讨论 https://news.ycombinator.com/item?id=39436238 浏览器有往这方面发展的趋势,但并不够
E2EE 可以让用户只信任客户端,我个人对 E2EE 应用的要求是:开源的客户端、客户端会执行的代码在编译后就是确定的、客户端经过审计。而对于你的 "纯 Web 界面的端到端加密",用户还必须信任浏览器每次加载的页面,你作为网站管理员被胁迫了或者你服务器被黑了怎么办?你用的 CDN 被黑了怎么办?还是说你打算单独分发前端源码文件? |
34
raw0xff 171 天前
@Nazz 全走 wasm 的目的是?
客户端浏览器临时生成密钥对除了 webcrypto api 和在 wasm 中生成,还有哪些方式?(不算浏览器扩展的话) window.crypto.subtle.generateKey 时 extractable:ture 的话可以导出私钥,我觉得还是有一定风险的。 所以你说的全走 wasm 意思是在 wasm 沙盒中生成公私钥对吗? wasm 存私钥的变量是否会被 js 读出来? 楼主可以看看去年的 nostr 项目,应该也属于 e2ee. |
35
raw0xff 171 天前
@0o0O0o0O0o 哈哈总会碰到 oo 大佬,你这个链接也给过我。
|
36
chinni 171 天前
邮件 gpg 呗
|
38
busier OP @0o0O0o0O0o 在终端加密的目的就是解决服务器不可靠时,管理员也获取不到明文信息,包括 CDN 也是。
你所提到的页面被黑被撰改问题,这在所有 Web 网站都存在此风险。并不是我这个设计特有的,算不得此设计缺陷。 话所说回来,加解密部分的代码是静态不改变且开源的,用户只要校对这部分代码(或设计个校对功能)便不是问题。 |
40
0o0O0o0O0o 171 天前
@busier #38
我在 #33 并没有将你的应用跟“所有 Web 网站”对比,我是将你的应用与常见的 E2EE 应用做对比。它们解决了,而你的方案或者说浏览器没解决,在这个重要问题没有解决的时候说 "解决服务器不可靠"、"管理员也获取不到明文信息,包括 CDN 也是" 就是不对的。 > 加解密部分的代码是静态不改变且开源的 > 用户只要校对这部分代码(或设计个校对功能)便不是问题 首先,我认为不可能只审计一部分代码,而是你的网站前端的所有代码都要审计,而目前 Web 的运作方式让这个事情失去它应有的意义,因为作为用户根本没办法保证下一次请求的代码不会变。除非你自己分发前端 HTML 文件,或者用个外部软件来提供保障,那这也就和你原文中 "客户端浏览器纯前端"、 "浏览器加载页面时" 矛盾了。 |
41
busier OP 确实存在 raw0xff “ 你可能没有意识到在不能保证用户访问的第一个页面的完整性的前提下 e2ee 并不安全。”说的问题
此设计中,前端本就是纯静态,分发前端 HTML 方案可行。 |
42
raw0xff 171 天前
大概分三个问题:用户身份验证、私钥安全存储、页面完整性校验
目前被困在页面完整性实时校验问题上。 |
46
qfdk 170 天前 via Android
双认证 吧 试试?
|