読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

AWS S3認証(v2, v4)

S3は認証を行う. この稿ではS3の認証についてざっくりと概要を説明する.

認証の目的は, 以下のようになっている.

  • クライアントが本当に鍵を持った人なのか確かめる: シグネチャが復元出来なければクライアントと秘密鍵を共有出来てないかも知れない
  • データが途中でぶっ壊されていないことを確かめる: シグネチャが復元出来なければ, データが壊れてるかも知れない(でも良く分からないんだけど, TCPのレイヤでチェックサムくらい持ってるんじゃないの???)
  • リプレイアタックから守る: 15分以上続くリプレイは弾くことが出来る

認証は現在, v2とv4があり, v4が推奨されている. v2は, 古いリージョンではサポートされているが, 新しいリージョンではサポートされていない.

認証に共通なのは,

  1. クライアントはアクセスキーと秘密キーの2つを持つ
  2. サーバもアクセスキーから秘密キーを引くことが出来る
  3. クライアントは秘密キーを使い, シグネチャを生成し, 付け加える.
  4. サーバは秘密鍵を使い, リクエストからシグネチャを再生成し, マッチする.

という処理であるが, v2とv4の違いは, シグネチャの生成方法にある. ざっくりいうと, v4の方が遥かに複雑になっている. (引用: This requirement creates additional computation load that is not required in Signature Version 2.) その複雑性の根本にあるのは何かというと, どれだけの情報を守りたくて, そのためにそれらをシグネチャの生成に絡めるか, である.

S3にはPre-signed URLという仕組みがある. これは, クライアントが, 自分の署名と, その署名を復元するのに十分な情報をURLのクエリパラメタとして埋め込むことによって, 別のクライアントがそのURLを使って認証することが出来るという仕組みである. これは例えばアップロードしたファイルを共有したい場合などに使われる.

もう少し詳しく知りたい場合は, まずはv2認証から学ぶと良いと思う. v4は, v2を一般化して強化したと捉えてよい.

広告を非表示にする