-
Reality的文档有点太短了,Go也不是很能看得懂 REALITY 客户端应当收到由“临时认证密钥”签发的“临时可信证书” 也就是说,Reality并没有采用“预先放置服务器证书”的方式来避免DNS污染或其他原因造成的流量解密,那么Reality是如何确保服务器的身份经过验证呢?“临时身份密钥”是我在配置文件中指定的privateKey吗?配置好的public&privateKey具体是什么作用? 或者说我想知道Reality更加细节的加密过程。 阿里嘎多! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 5 replies
-
这个要从x25519算法开始说起
这样我们就可以通过交换公钥来进行验证,首先client 生成一对新的x25519的私钥跟公钥,通过client hello的keyShares传输生成的公钥,将生成的私钥跟client配置的公钥进行ECDH计算得出一个authkey,将这个authkey通过sessionid进行传输,服务端拿到client新生成的公钥和自己配置的私钥进行计算得出的authkey与sessionid内的authkey进行对比,一致的就是可信任的,服务端在启动时会随机生成一个x25519的私钥以及这个私钥生成的证书,这时候服务端将启动时的证书作为握手的证书下发下去,这样就可以完成后续的握手交换密钥了 |
Beta Was this translation helpful? Give feedback.
这个要从x25519算法开始说起
这样我们就可以通过交换公钥来进行验证,首先client 生成一对新的x25519的私钥跟公钥,通过client hello的keyShares传输生成的公钥,将生成的私钥跟client配置的公钥进行ECDH计算得出一个authkey,将这个authkey通过sessionid进行传输,服务端拿到client新生成的公钥和自己配置的私钥进行计算得出的authkey与sessionid内的authkey进行对比,一致的就是可信任的,服务端在启动时会随机生成一个x25519的私钥以及这个私钥生成的证书,这时候服务端将启动时的证书作为握手的证书下发下去,这样就可以完成后续的握手交换密钥了