V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
maggch97
V2EX  ›  分享创造

我做了一个极致安全的消息分享网站

  •  2
     
  •   maggch97 · 2023-03-24 01:40:53 +08:00 · 2761 次点击
    这是一个创建于 371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://supersafemessage.github.io/

    访问->分享链接->其他人通过你的分享链接向你发送加密消息

    数据目前绝对安全,2048 位的 rsa 加密,量子计算机出现之前你的信息应该暂时是安全的

    代码一切从简,不引入任何外部库,欢迎审查

    为什么要做:

    和朋友亲人分享一些"机密信息",你应该没有在 telegram 上加你的女朋友吧?

    普通人也有"机密信息",至少你不应该用微信发信用卡的 CVV

    不需要手机号,不需要邮箱,没有人知道谁在接收信息,谁在发送信息。

    没有聊天记录,关闭接收页面,没有人能再次解码你的信息。你可以不相信我的服务器,可以不相信一切,但是永远可以相信密码学。

    还能更安全吗?

    用一个足够干净的系统,最新的浏览器,不要安装任何第三方证书

    关闭掉所有浏览器插件,打开浏览器的无痕模式,看到消息,记住,然后关闭浏览器不要把信息保存到本地

    想办法确认你的收件人、发件人真的是本人,确认你分享的链接没有被篡改。当然这一步应该不太会有人需要

    未来打算

    分享图片?建立双向的加密通信?一个极致安全的信息收发设备?

    Github: https://github.com/SuperSafeMessage/SuperSafeMessage.github.io

    第 1 条附言  ·  2023-03-24 10:27:44 +08:00
    越不信任越安全,安全就是不要相信任何人,包括不要相信我提供的这个页面不会上传你的信息。

    所以如果你对安全有更极致的追求,每次打开页面后请右键查看网页源代码,确保这里面没有一行可能泄漏信息的代码。

    代码没有引入任何第三方库,加上所有的文字一共 200 行,所以审查起来应该会很轻松。
    第 2 条附言  ·  2023-03-24 23:58:25 +08:00
    非对称加密被广泛用于计算机的各个加密环节。

    安全是有成本的,但是对于普通人,使用非对称加密进行一次临时的消息传递成本太高了。即使对于程序员来说,这个成本也是非常高的。

    纵使你了解这方面的知识,你也很难教会其他人什么是私钥公钥,如何通过公钥加密,如何通过私钥解密。

    过去因为一些需要,我在 Google 搜索过类似的的产品,无一例外都是对称加密。现在我的产品彻底隐去了公钥私钥的细节,作为一个普通用户只需要打开网页,分享链接就可以实现。

    使用这个可以说简陋的产品,也能帮用户践行了一些安全的 Best Practice

    1. 没有私钥导出,避免了私钥泄露的最大途径。私钥只存在当前页面的运行环境中,关闭页面后彻底消失。

    2. 每次打开网页都会重新生成私钥。网页强迫了用户一个私钥基本只能用来接收一件事的信息。密码这个东西,使用次数越少,使用时间越短,越安全。

    3. 足够简单的代码,最少的外部依赖。每个人都有能力审查代码。



    这个世界上有 PGP ,GPG ,有各种各样的端到端加密。但我并没有能力和精力说服其他人用各种繁琐的方式向我发送信息,但有了这个工具之后,这件事请会变得简单很多。
    第 3 条附言  ·  2023-03-25 14:28:43 +08:00
    现在已经支持图片分享, 并且图片是经过压缩后分享的, 凑巧解决了最近一些截图软件爆出来的安全漏洞
    23 条回复    2023-04-01 16:07:39 +08:00
    Drumming
        1
    Drumming  
       2023-03-24 01:42:43 +08:00 via Android   ❤️ 2
    截图录屏,我相信密码学,但是我不相信人类
    yanzhiling2001
        2
    yanzhiling2001  
       2023-03-24 01:50:45 +08:00
    项目才新建,没有明确的引导,我摸索了一下才知道怎么用的。
    iBugOne
        3
    iBugOne  
       2023-03-24 02:32:09 +08:00
    我为什么要用这个服务而不是 One Time Secret 呢?
    maggch97
        4
    maggch97  
    OP
       2023-03-24 02:44:31 +08:00 via Android
    @iBugOne 当然可以用其他的,每个人对安全的要求都不一样。但就原理上来说,这个是最安全的
    benedict00
        5
    benedict00  
       2023-03-24 07:23:03 +08:00 via Android
    可以用 SHA512 校验消息完整性
    wbrobot
        6
    wbrobot  
       2023-03-24 08:50:09 +08:00
    如何保障链接分享过程中的安全呢?(链接不被别人窃取)
    pianjiao
        7
    pianjiao  
       2023-03-24 09:20:44 +08:00
    当面说不好吗
    maggch97
        8
    maggch97  
    OP
       2023-03-24 09:23:40 +08:00 via Android
    @wbrobot 窃取的话最多收到假消息,要是被篡改就麻烦了
    cmdOptionKana
        9
    cmdOptionKana  
       2023-03-24 09:24:53 +08:00
    访问->分享链接->其他人通过你的分享链接向你发送加密消息

    第二步 “分享链接”,假设通过微信分享,是否意味着微信服务器可以拿到这个链接,从而获取机密?
    cmdOptionKana
        10
    cmdOptionKana  
       2023-03-24 09:26:27 +08:00
    密钥是前端生成,还是后端生成?
    maggch97
        11
    maggch97  
    OP
       2023-03-24 09:35:12 +08:00 via Android
    @cmdOptionKana 不可以,这个链接里面的密钥是公钥,只能用来加密,不能用来解密。这是 rsa 这类非对称加密算法保证的。非对称加密广泛用于 https

    这也是为什么我说这是最安全的,其他所有的服务都提供的是对称加密,加密解密用的是同一个密钥。one time secret 等等,你需要信任服务器的"只显示一次就销毁"的逻辑,才能保证信息不泄露。并且也有可能泄露,只不过能让你在泄露之后知晓补救。

    安全里面最重要的就是不信任任何人,虽然这个网站依然依赖了你的浏览器是安全的,系统是安全的,CPU ,内存是安全的。但至少比依赖服务器是安全的靠谱多了(后者同样需要依赖浏览器系统 CPU 内存安全。
    cmdOptionKana
        12
    cmdOptionKana  
       2023-03-24 10:13:22 +08:00
    @maggch97 原来如此!明白了,看起来真的不错啊!
    vazo
        13
    vazo  
       2023-03-24 13:42:00 +08:00
    @maggch97 部分区域访问不了 workers.dev
    maggch97
        14
    maggch97  
    OP
       2023-03-24 13:58:53 +08:00 via Android
    @vazo 直接用最简单的方式上线的,后续换个服务商稍微解决一下国内访问的问题。不过肯定有被屏蔽的风险,不可能 100%可访问
    duke807
        15
    duke807  
       2023-03-24 14:24:39 +08:00
    “每次打开页面后请右键查看网页源代码,确保这里面没有一行可能泄漏信息的代码”

    每次都查代码不现实,如果不这么做,又没法确保你代码是安全的,可以参考我这个 CDEncrypt 项目,使用 PWA 方式,可以离线使用,每个版本的代码只要检查一次,因为代码修改和升级无法避免会弹窗通知用户:

    https://v2ex.com/t/832302
    duke807
        16
    duke807  
       2023-03-24 14:27:38 +08:00
    而且我这个是纯粹静态网站,不需要服务器中转数据,用户自己也很容易部署,不担心全部被屏蔽
    duke807
        17
    duke807  
       2023-03-24 14:44:35 +08:00
    “和朋友亲人分享一些"机密信息"”

    OP 这个非对称加密不合适这种场景,特别是同时分享给多个人
    而 CDEncrypt 就是为这个场景服务的,支持大段文字、文件、图片、视频
    对方打开连接就行,只有首次打开才需要输入密码,绝对不能对对方的计算机水平有任何要求
    至于密码的安全,提前帮对方输入一次密码,或者打电话告知,或者用阅后即焚分享密码,都是主动提供给对方
    而 OP 这个,要反过来让对方提供给自己,完全不现实
    neptuno
        18
    neptuno  
       2023-03-24 15:52:27 +08:00
    gpg 邮件?
    maggch97
        19
    maggch97  
    OP
       2023-03-25 14:28:31 +08:00
    现在已经支持图片分享, 并且图片是经过压缩后分享的, 凑巧解决了最近一些截图软件爆出来的安全漏洞
    enopkf
        20
    enopkf  
       363 天前
    用什么方法来保证分享链接(公钥)没被篡改呢?
    打个电话来验证吗?发微信,如果微信在中间篡改公钥呢?
    公钥本身需要依赖 CA ,需要先有个可信的渠道来保证公钥的正确
    enopkf
        21
    enopkf  
       363 天前
    如果用电话分享,那就是认为从电话听到的语音是可信的。通过某个通信软件分享,就认为这个通信软件是可信的 CA 。以这个为前提。
    enopkf
        22
    enopkf  
       363 天前
    那如果每次我要发消息给某个人,都要某个人通过一个可信的 ca 渠道给我公钥,那为何我不直接通过这个可信的 ca 通信呢?
    maggch97
        23
    maggch97  
    OP
       363 天前 via Android
    @enopkf 我水平太次,你水平太高了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5431 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:45 · PVG 16:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.