英国人可能知道,政府正在推出一项大胆的新战略,以降低 Covid-19 的感染率。
最新推出的是在销售点显示二维码。要获得一个,您需要创建一个帐户,详细说明运营商名称、机构名称、电话号码和电子邮件地址,然后您会收到一个二维码。
出于对数据安全的担忧,我试图找出为什么我必须为使用我的咖啡馆“登录”的人显示的 QR 码长度为 343 个字节。
二维码内容如下:
UKC19TRACING:1:eyJhbGciOiJFUzI1NiIsImtpZCI6IllycWVMVHE4ei1vZkg1bnpsYVNHbllSZkI5YnU5eVBsV1lVXzJiNnFYT1EifQ.eyJpZCI6IlY1VldYMzlSIiwib3BuIjoiUGlwbGV5IEJhcm4gQ2Fmw6kiLCJhZHIiOiJQaXBsZXkgQmFyblxuQnJvY2toYW0gRW5kXG5MYW5zZG93biIsInBjIjoiQkExOUJaIiwidnQiOiIwMDgifQ.xG3rlgLIpQjHuZa7kQ4I4TC2u3xhmHpyhLjqGTS1aaFzueUt8TqqsW4-1eKL-RSOP9o0av9XPivtK-BfPuUV-g
Run Code Online (Sandbox Code Playgroud)
代码中有许多重复序列,例如“eyJ”和“pZCI6Il”,(我认为)排除了这是正确加密的可能性。
我担心的是,我公开展示了大量信息,而在我看来,简单的签名(如 UKC19TRACING)加上数据库中的密钥就足以实现任何合理的联系追踪方式。
因此,我已向相关政府部门(英国卫生和社会保健部)发出信息自由请求,但与此同时,我认为比我更伟大的专家可能想尝试解密。
您完全正确,重复eyJ强烈表明这不仅仅是原始加密数据,并且具有某种结构。eyJ来自 Base64 编码,{"并且几乎总是表明您正在查看 Base64 编码的 JSON。在这种情况下,它实际上是 b64 编码的,但eyJ模式是相同的。b64 是 Base64 的略微修改版本。
正如 Topaco 所指出的,后面的部分UKC19TRACING:1:是 JWT。您可以在jwt.io 上将其解码如下:
{
"alg": "ES256",
"kid": "YrqeLTq8z-ofH5nzlaSGnYRfB9bu9yPlWYU_2b6qXOQ"
}
Run Code Online (Sandbox Code Playgroud)
这会告诉您它是如何签名的,以及签名它的密钥的标识符。
{
"id": "V5VWX39R",
"opn": "Pipley Barn Café",
"adr": "Pipley Barn\nBrockham End\nLansdown",
"pc": "BA19BZ",
"vt": "008"
}
Run Code Online (Sandbox Code Playgroud)
这是签名的有效载荷。这不是加密的(也不打算加密)。它只是 b64 编码和签名,以及标题。
您是正确的,这可以通过大型数据库和稀疏标识符来实现。JWT 的重点是您不需要数据库(更重要的是,不需要执行数据库查找的机制)。由于数据已签名,因此您可以相信此有效负载是由有权访问签名密钥的实体生成的。要验证此签名,您需要给定kid.
| 归档时间: |
|
| 查看次数: |
5458 次 |
| 最近记录: |