【发布时间】:2017-12-30 16:23:06
【问题描述】:
我正在尝试了解 jwt 签名验证的工作原理。
这就是我目前的做法:
1) My app calls the attest api
2) My app sends the jwt to my server
3) My server verify the signature (third field of the jwt) using the certificate provided in the header of the jwt.
我了解签名是通过对 jwt 的标头和有效负载进行哈希处理,然后使用 Google 的私钥对其进行签名(加密)来创建的。
我在第 3 步中所做的是获取标头 + 有效负载并使用 证书的公钥并验证它是否与签名匹配。 (当我说“我”时,我的意思是 lib 会这样做)
我的问题是,如果用户设备上存在恶意软件并即时修改发送到我的服务器的 JWT,会发生什么情况?恶意软件会在标头中添加自己的证书(由受信任的 CA 颁发),根据需要修改有效负载并创建签名。
我的服务器端...好吧,我将使用证书中提供的公钥验证与它匹配的签名。
这是正确的吗?还是我在某个地方感到困惑?因为在那种情况下,它会使这一切流程变得毫无用处,不是吗?如何确保自己 100% 相信 JWT 来自谷歌?
【问题讨论】:
标签: android validation jwt digital-signature safetynet