所以想象一下,有一个服务器充当JSON存储设备。可以从键读取数据,也可以将数据写入键。唯一的限制是您无法看到所有键。
是否可以仅使用此 JSON 存储作为通信方式来验证某人的身份?我说的是rsa密钥对,散列,密码。什么。我有一些想法,比如通过散列密码来存储每个用户的私钥,并使用该哈希作为私钥的密钥(可能也加密私钥(。现在显然,公钥必须被任何人读取,但是我如何阻止某人替换该公钥并冒充它们呢?
因此,重申一下,在可公开访问的数据库中,您必须已经知道密钥才能访问存储在密钥中的数据,如何验证用户的身份?
身份"在这里有点模糊。例如,如果你想确定这个人是住在大街123号的爱丽丝,那么你系统中的信息太少了。但是私钥、密码等也不会这样做。身份可以意味着很多事情。
你在这里可能的意思只是身份验证;这个人就是他们所说的那个人,对于"谁"的一个相当宽松的定义(一个可能是匿名的,甚至可能不是唯一的(。如果您想知道访问密钥的人是编写密钥的人,那么只要他们不与其他任何人共享密钥,您的系统就会自动执行此操作。密钥就是秘密,拥有秘密的人纯粹是通过知道它来认证的。
您可能还有其他要求和目标,但如果您唯一想做的是验证用户,那么他们对共享密钥的拥有正是您执行此操作的方式,并且您的密钥似乎是共享密钥。
我有点担心你的评论"显然公钥必须可以被任何人阅读。这根本不明显。仅仅因为公钥通常是非机密的,所以这不是必需的。完全有可能让私钥和公钥都是秘密的。例如,我可能只将我的公钥提供给某些人。如果我随后收到一条消息,我可以使用我的私钥解密,该消息验证发件人是该公钥的持有者。
您能否进一步解释一下您尝试使用此身份验证启用哪些类型的用例?