我开发了一个简单的应用程序,它不使用(至少在开始时)任何第三方授权。我想创建一个RESTful api供iOS / Android /任何客户端使用,所以我读了很多关于RESTful API实现的信息。但是,实现它们的常用方法涉及发送某种用于签署请求的安全“令牌”;这使得API容易受到中间人攻击,并且推荐的解决方法是使用HTTPS。
然而,阅读所有这些让我感到疑惑,为什么不使用私有/公钥签名(如RSA)。这样,客户端将从密码生成私钥和公钥,在注册时发送公钥并将私钥保存在客户端上,即使有人掌握了服务器和客户端之间的所有通信,他仍然不会能够冒充客户。
但是我对密码学和安全性几乎一无所知,所以必须有理由说明为什么这个方法没用到我想不到的,对吧?
答案 0 :(得分:0)
目前还没有允许从密码派生非对称密钥对的方案。
另一个问题是公钥注册。执行身份验证时出现问题,因为任何人都可以拥有非对称密钥对,因此必须提供一些其他信息。 公钥证书可以是此类信息,但是,这要求客户端是某些公钥基础结构的用户。另一个在实践中使用的选项是预先将客户端公钥/证书提供给服务器。
最后,TLS(HTTPS)已使用非对称密钥执行身份验证和交换会话密钥。客户端验证服务器的公钥证书(服务器验证),并且服务器可选地可以对客户端的公钥证书(客户端验证)执行相同的操作。