0

Amazon s3 とほとんど同じように機能する Web サービス認証を実装しました。

認証はセッションレスです。それはこのように動作します:

  • Date各リクエストで HTTP ヘッダーを送信する
  • secretKey の HMAC_SHA1 + date-header の内容 + some-parts-of-the-body (疑似コード: hmac_sha1(secretKey+dateHeader+substr(body,0,100)))を送信する
  • バックエンドは secretKey (20 文字のランダム キー) も知っています。
  • バックエンドは、同じ HMAC_SHA1 も実行してリクエストをチェックし、値が等しい場合、リクエストは「証明」されて実行されます。

そう。それはほとんどアマゾンが行っていたことだと思います。

しかし、「リクエストの一部」の非対称暗号化 (RSA) を行う代わりに、対称 (HMAC_SHA1) を行わないという考えはどうでしょうか?

バックエンドに secretKey を持たないようにしたいと思います。公開鍵はバックエンド側にのみ配置することをお勧めします。

  • これは良い考えだと思いますか?
  • それはシステムを「より強く」しますか?
  • RSA での暗号化に適した最大サイズはどれくらいですか? 1000バイト?

ありがとう

4

1 に答える 1

1

これを RSA で行うと、クライアント側に公開鍵があり、サーバー側 (別名バックエンド) に秘密鍵があります。あなたはいつもどこかで秘密鍵を持ってしまうでしょう...

セキュリティが心配な場合:

  • すべての潜在的なリスク シナリオのリスト (技術的およびその他)
  • 各シナリオの可能性を確認する
  • その特定のシナリオが現実になった場合の「コスト」を確認する
  • 現在のセキュリティ インフラストラクチャを監査する

次に、最も問題のあるポイント (つまり、最高の「コスト」および/または「最高の」確率) に対処します。

于 2012-04-08T12:17:49.227 に答える