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バイト?
ありがとう