【问题标题】:Secure web api, my public / private key workflow. How to incorporate symmetric key?安全的 web api,我的公钥/私钥工作流程。如何合并对称密钥?
【发布时间】:2013-06-21 02:08:51
【问题描述】:

看起来保护 ASP.NET Web API 的解决方案相当分散,所以我决定推出自己的公钥/私钥加密方案。请查看我的工作流程并帮助我回答我最后遇到的问题。 (同样,它特定于 .NET 4.0 Web API 框架)

  1. 用户在我的 Web MVC 4.0 网站上注册。
  2. 注册后,我的网站会做 4 件事

    a) 为该用户生成一个 RSA 服务器公钥

    b)。为该用户生成一个 RSA 服务器私钥

    c)。为该用户生成一个 RSA 客户端公钥

    d)。为该用户生成一个 RSA 客户端私钥

  3. 我将所有 4 个密钥保存到该用户帐户的数据库中,并为用户提供称为“APIKey”的服务器公钥和称为“SecretKey”的客户端私钥。这是为了将来的握手目的。用户永远不会知道服务器私钥或客户端公钥。

  4. 一旦用户确认他们拥有密钥,出于安全目的,我会从我的数据库中删除“客户端私钥”。

  5. 用户通过提交服务器公钥(或APIKey)+":"+使用RSA服务器公钥(APIKey)的(用户名,密码)加密消息开始请求我的WebAPI认证服务

  6. 服务器收到 APIKey+":"+ 加密消息,找到私钥,解密消息,获取用户名、密码,并使用 Membership 提供者确保它们是正确的。

  7. 如果不正确,则创建拒绝响应。否则,它为用户找到记录在案的客户端公钥,创建一个唯一的时间敏感会话令牌(5分钟后过期),将其记录在数据库+创建时间,并使用客户端公钥加密令牌并将其发送回给客户。

  8. 客户端收到响应,使用它的“客户端私钥”或“密钥”解密响应,获取令牌。

  9. 用户通过使用服务器公钥加密以下内容向服务发出其他请求

    a) 会话令牌 b)时间戳(所以我可以确保不会发生重放攻击) c) 数据

并将其 APIKEy+":"+加密消息发送到服务器

我坚持的是第 9 步及以后。

在第 9 步是否有必要仍然使用公钥/私钥进行通信?我问的原因是因为浏览器通过 SSL 与服务器通信,最后,一旦发生握手,他们使用约定的密码套件对称算法来回传递消息,据说它更快?但是,如果我们这样做,从现在开始它会安全吗?

在这种情况下,在我的工作流程中,我可以在我的 Web API 和客户端之间交换此协议以使用相同的对称算法来来回加密/解密信息吗?

谢谢!!

编辑:如果您发现此工作流程中有缺陷,请告诉我!非常感谢。

【问题讨论】:

    标签: asp.net-web-api


    【解决方案1】:

    请不要推出自己的计划。即使是专家也很难做到加密。一个非常细微的错误可以完全消除该方案提供的所有安全性。以过去几年对 SSL/TLS 的攻击为例。

    您提到了“网络 api”,但不清楚您使用的是什么协议。如果您使用的是 SOAP,请使用为 SOAP 定义良好的“Web Security”(WS)。如果您通过 HTTP(例如 REST)进行通信,请使用 HTTPS。如果您通过连接的通道进行通信,请使用 TLS 或 SSH。

    编辑:根据http://msdn.microsoft.com/en-us/library/hh833994(v=vs.108).aspx

    ASP.NET Web API 是一个可以轻松构建 HTTP 的框架 覆盖广泛客户的服务,包括浏览器和 移动设备。 ASP.NET Web API 是构建的理想平台 .NET Framework 上的 RESTful 应用程序

    这意味着您可能想要使用 HTTPS。

    【讨论】:

      【解决方案2】:

      您可能希望在不需要域/用户身份验证的情况下进行安全身份验证,因此您希望服务器客户端证书交换对吗?如果您只想要加密流量(无论如何都应该将其用于交换),ATK 是正确的,但对于实际将其用作身份验证,这篇文章非常有用:http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/

      【讨论】:

        猜你喜欢
        • 2019-02-12
        • 2022-01-15
        • 1970-01-01
        • 2018-07-19
        • 2012-04-17
        • 2013-08-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        相关资源
        最近更新 更多