Api 双向共享秘密
我正在从事一个项目,在这个项目中,双方可以各自向对方发出API请求,并使用共享机密进行身份验证。另一方希望双方共享的秘密是相同的,但我不明白这是怎么回事。因此,我正在寻找如何安全地执行此操作的解释,或者找出这是否是可能的,并且共享机密应该根据请求的方向而有所不同 如果API请求只是朝一个方向进行,我将使用密钥定义的函数对密码进行加密,并存储哈希和加密,然后我可以通过在每个请求上生成并匹配哈希来验证用户。但是,如果我需要使用相同的共享机密向另一个API发出请求,那么似乎我需要以可以解密的方式存储密码,这似乎是错误的/不可能的Api 双向共享秘密,api,encryption,shared-secret,Api,Encryption,Shared Secret,我正在从事一个项目,在这个项目中,双方可以各自向对方发出API请求,并使用共享机密进行身份验证。另一方希望双方共享的秘密是相同的,但我不明白这是怎么回事。因此,我正在寻找如何安全地执行此操作的解释,或者找出这是否是可能的,并且共享机密应该根据请求的方向而有所不同 如果API请求只是朝一个方向进行,我将使用密钥定义的函数对密码进行加密,并存储哈希和加密,然后我可以通过在每个请求上生成并匹配哈希来验证用户。但是,如果我需要使用相同的共享机密向另一个API发出请求,那么似乎我需要以可以解密的方式存储密
有没有办法做到这一点,或者共享秘密是否应该根据请求的方向而有所不同?您的分析是正确的。如果双方都可以成为呼叫者,那么双方都需要知道秘密(而不仅仅是能够验证它) 拥有两个单独的键(每个调用方一个,在这个用例中您可以称它们为“密码”)似乎是一个合理的默认设置 考虑“各方”并给予各自的资格证书总是好的,特别是如果以后会有更多的各方参与进来。使以后撤销个人访问权限、实施细粒度访问控制变得更加容易,并将泄漏凭据的影响降至最低(攻击者只能模拟该方,而不能模拟系统中的任何其他方)
仅仅拥有一个可能看起来更容易管理,但是你要为不泄露其他人的钥匙(除了你自己的钥匙)负责。我会尽量避免额外的负担。你的分析是正确的。如果双方都可以成为呼叫者,那么双方都需要知道秘密(而不仅仅是能够验证它) 拥有两个单独的键(每个调用方一个,在这个用例中您可以称它们为“密码”)似乎是一个合理的默认设置 考虑“各方”并给予各自的资格证书总是好的,特别是如果以后会有更多的各方参与进来。使以后撤销个人访问权限、实施细粒度访问控制变得更加容易,并将泄漏凭据的影响降至最低(攻击者只能模拟该方,而不能模拟系统中的任何其他方) 仅仅拥有一个可能看起来更容易管理,但是你要为不泄露其他人的钥匙(除了你自己的钥匙)负责。我会尽量避免额外的负担