『 Hash 认证』这个名字是我起的,可能不太准确,具体定义是:
那么,在这样的情况下(不考虑更换证书什么的导致这个预共享的 Hash 需要一起更换,这是后话了),此时建立的 TLS 连接加密是没有问题的,但是是否还能做到『验证对端』这个功能呢?
1
joesonw 2023-05-15 08:21:20 +08:00 via iPhone
浏览器都内置了几个 CA 的证书用来校验服务器证书的。你自签的也是这个思路,系统安装你这个证书,或者其 CA
|
2
Herobs 2023-05-15 08:32:43 +08:00 via iPhone
这个叫做证书 fingerprint ,相当于忽略了 CA 体系,当然可以验证对方的真实性,理论上更安全。
|
3
0o0O0o0O0o 2023-05-15 08:45:01 +08:00 via iPhone
|
4
azure2023us559 2023-05-15 08:55:57 +08:00 via Android
服务端反向验证客户端?
|
5
MFWT OP @azure2023us559 不是,就是单纯验证服务器证书
|
6
MFWT OP |
7
monkeyWie 2023-05-15 09:11:58 +08:00
这不就是 SSL Pinning 吗,可以防止中间人攻击
|
8
ajaxgoldfish 2023-05-15 09:16:08 +08:00
『 Hash 认证』这个应该是 http client hello
|
9
ajaxgoldfish 2023-05-15 09:16:38 +08:00
@ajaxgoldfish #8 TLS 握手
|
10
villivateur 2023-05-15 09:31:30 +08:00
感觉这样的话,不如直接在本地保存一份服务端的证书,反正都得存点东西,与其存 hash ,不如存完整的证书
|
11
sujin190 2023-05-15 09:37:55 +08:00
@MFWT #5 CA 的体系不就是你说的这个么,只不过系统都集成好了,标准的证书校验本来就是用预制 CA 来校验证书签名,你说的这个预共享的 Hash 其实就是预先安装的 CA 证书,如果不方便安装的话而且似乎大部分语言发起 TLS 的时候都能手动指定 CA 证书吧
|
12
churchmice 2023-05-15 10:26:59 +08:00
@villivateur #10 这两种方式是等价的,hash 存放更省空间,也更好管理
理论上有 hash 碰撞的可能,但是实际上没有 |