gpt4 book ai didi

algorithm - 不可能的身份验证情况?需要算法的提示

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:48:20 25 4
gpt4 key购买 nike

是这样的情况:

服务器客户端都是可信的(都在用户的电脑上运行)。受信任的用户在他们的计算机上和客户端上都有一个 secret key 。该算法的目标是在不将 key 暴露给服务器的情况下,将可信用户验证为服务器上的可信用户。

技术难点:

我们使用的语言 (Game Maker) 既不快速也不精确。我们已经准备好实现 MD5 哈希,但我和团队都没有能力/有时间实现非常困难的加密算法。

最佳答案

您可以仅使用 MD5 为每个服务器生成一个 secret 。我不确定这是否正确,所以不要相信我的话。

每个服务器都有一个唯一的 ID,可以是公开的,还有一个等于 MD5(trusted secret + unique ID) 或类似的本地 secret 。您必须通过一些外部安全通道将本地 secret 获取到服务器上,但是例如,如果它是通过 HTTPS 从单个公司站点与服务器代码一起下载的,并且如果您确保您永远不会发送本地 secret 给定的唯一 ID 不止一次,那么我认为没问题。

然后服务器可以将其 ID 连同服务器 ID 一起发送给客户端。受信任的客户端可以为自己生成MD5(trusted secret + unique ID),但不受信任的客户端不能生成它。这为服务器和受信任的客户端提供了一个共享 secret ,可用于使用(例如)HMAC-MD5 进行身份验证。

如果本地 secret 泄露,那么它只会让不受信任的客户端能够欺骗该泄漏的服务器,而不是其他服务器。

显然这有弱点——例如,服务器和可信客户端之间的 MITM 可以在不知道任何 secret 的情况下对服务器提出的任何挑战提供正确的响应。但它不会将客户端的 secret 暴露给服务器,也不会将服务器的 secret 暴露给客户端,所以总比没有好。

它也有加密弱点——MD5 有点破损。如果我是服务器并且我可以找到 x 使得 MD5(x + my_id) == my_secret,那么 x 很可能是 key 。我不知道在给定一个或多个本地 secret 的情况下找到 x 在计算上有多可行:这取决于 MD5 当前的破损程度。

我认为鉴于您的限制,MITM 是绝对不可避免的,尽管我可能是错的。受信任的客户端无法区分一个服务器与另一个服务器,特别是服务器是否正在使用其正确的唯一 ID,因此将始终对 MITM 传递的任何挑战给出正确的响应。但是,如果消息包含一些攻击者无法控制的值,例如服务器生成的随机数或日期,那么简单的窃听不会导致重放攻击。我不知道有什么方法可以在不使用非对称加密和 PKI 的情况下防止 MITM,也就是说,您没有时间/能力用您的语言实现不同的基本加密构建 block 。

可以让系统提供某种类型的 key 撤销。如果你设置你的公司权限来根据需要分发成对的(random server ID, local secret),那么服务器可以不时地更新他们的本地 secret (同时改变他们的ID ).然后,您可以更改受信任的 key ,服务器将停止对使用旧 key 的客户端进行身份验证,并开始对使用新 key 的客户端进行身份验证,只要他们下一次获得 ID。如前所述,这是一个相当痛苦的移交,如果您在这样的方案中构建,您可能希望稍微软化它。

关于algorithm - 不可能的身份验证情况?需要算法的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7793338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com