V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MFWT
V2EX  ›  问与答

关于 TLS『Hash 认证』的安全性的疑问

  •  
  •   MFWT · 2023-05-15 08:10:00 +08:00 · 1549 次点击
    这是一个创建于 588 天前的主题,其中的信息可能已经有所发展或是发生改变。

    『 Hash 认证』这个名字是我起的,可能不太准确,具体定义是:

    1. 服务端使用自签名证书,客户端忽略『一般意义上的』证书验证
    2. 通过预共享的方式,让客户端知晓服务器证书的 Hash 或其他特征值
    3. 建立连接时,客户端校验服务端送来的证书的 Hash ,确定『是这个证书没错』

    那么,在这样的情况下(不考虑更换证书什么的导致这个预共享的 Hash 需要一起更换,这是后话了),此时建立的 TLS 连接加密是没有问题的,但是是否还能做到『验证对端』这个功能呢?

    14 条回复    2023-05-18 14:49:40 +08:00
    joesonw
        1
    joesonw  
       2023-05-15 08:21:20 +08:00 via iPhone
    浏览器都内置了几个 CA 的证书用来校验服务器证书的。你自签的也是这个思路,系统安装你这个证书,或者其 CA
    Herobs
        2
    Herobs  
       2023-05-15 08:32:43 +08:00 via iPhone
    这个叫做证书 fingerprint ,相当于忽略了 CA 体系,当然可以验证对方的真实性,理论上更安全。
    0o0O0o0O0o
        3
    0o0O0o0O0o  
       2023-05-15 08:45:01 +08:00 via iPhone
    azure2023us559
        4
    azure2023us559  
       2023-05-15 08:55:57 +08:00 via Android
    服务端反向验证客户端?
    MFWT
        5
    MFWT  
    OP
       2023-05-15 08:57:21 +08:00
    @azure2023us559 不是,就是单纯验证服务器证书
    MFWT
        6
    MFWT  
    OP
       2023-05-15 08:58:32 +08:00
    @Herobs
    @0o0O0o0O0o

    了解了
    monkeyWie
        7
    monkeyWie  
       2023-05-15 09:11:58 +08:00
    这不就是 SSL Pinning 吗,可以防止中间人攻击
    ajaxgoldfish
        8
    ajaxgoldfish  
       2023-05-15 09:16:08 +08:00
    『 Hash 认证』这个应该是 http client hello
    ajaxgoldfish
        9
    ajaxgoldfish  
       2023-05-15 09:16:38 +08:00
    @ajaxgoldfish #8 TLS 握手
    villivateur
        10
    villivateur  
       2023-05-15 09:31:30 +08:00
    感觉这样的话,不如直接在本地保存一份服务端的证书,反正都得存点东西,与其存 hash ,不如存完整的证书
    sujin190
        11
    sujin190  
       2023-05-15 09:37:55 +08:00
    @MFWT #5 CA 的体系不就是你说的这个么,只不过系统都集成好了,标准的证书校验本来就是用预制 CA 来校验证书签名,你说的这个预共享的 Hash 其实就是预先安装的 CA 证书,如果不方便安装的话而且似乎大部分语言发起 TLS 的时候都能手动指定 CA 证书吧
    churchmice
        12
    churchmice  
       2023-05-15 10:26:59 +08:00
    @villivateur #10 这两种方式是等价的,hash 存放更省空间,也更好管理
    理论上有 hash 碰撞的可能,但是实际上没有
    MFWT
        13
    MFWT  
    OP
       2023-05-15 10:37:21 +08:00
    @sujin190

    主要是用途比较特殊,比如我现在是做 SS 配合 simple-tls 插件使用,这个插件就支持 Pinning ,既然楼上大佬都说安全性上和『直接安装可信证书』没有什么区别,那么我觉得 Hash 可能会方便些
    julyclyde
        14
    julyclyde  
       2023-05-18 14:49:40 +08:00
    @MFWT 那不会的
    自己山寨一套总比使用行业标准要更麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4359 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:07 · PVG 09:07 · LAX 17:07 · JFK 20:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.