基本的に、ここで概説されていることについて詳しく説明します。
仕組みは次のとおりです。たとえば、0から9までの数値を取り、3を加算し、結果が10より大きい場合は、10を減算する関数があるとします。したがって、f(2)= 5、f(8)= 1などです。これで、3ではなく7を追加することで、逆方向に進む別の関数を作成できます。これをf'と呼びます。f'(5)= 2、f'(1)=8など。
これは、双方向関数とその逆関数の例です。理論的には、あるものを別のものにマッピングする数学関数はすべて逆にすることができます。ただし、実際には、入力をスクランブルする関数を作成して、元に戻すのが非常に困難になるようにすることができます。
入力を取得して一方向性関数を適用することを「ハッシュ」と呼び、Amazonがシステムに保存するのは秘密鍵の「ハッシュ」です。SHA1は、この種の「一方向性」関数の例であり、攻撃に対しても強化されています。
HMAC関数は、確立されたハッシュ関数に基づいて、既知のキーを使用してテキストの文字列を認証します。それはこのように動作します:
- リクエストのテキストと秘密鍵を受け取り、HMAC機能を適用します。
- その認証ヘッダーをリクエストに追加して、Amazonに送信します。
- Amazonは、秘密鍵のコピーと、送信したばかりのテキストを検索して、HMAC関数を適用します。
- 結果が一致する場合、彼らはあなたが同じ秘密鍵を持っていることを知っています。
これとPKIの違いは、この方法がRESTfulであり、システムとAmazonのサーバー間の交換を最小限に抑えることができることです。
それは基本的に、クレジットカード番号やパスワードを尋ねて自分のデータベースに保存するのと同じことではありませんか?
はい、S3で誰かが受ける可能性のある損害は、アカウントの枯渇に限定されているようですが。
彼らはどれほど秘密にする必要がありますか?秘密鍵を使用するこれらのアプリケーションは、それを何らかの形で保存していますか?
ある時点で、秘密鍵をロードする必要があります。ほとんどのUnixベースのシステムでは、攻撃者がrootアクセスを取得できる場合、攻撃者は鍵を取得できます。キーを暗号化する場合は、キーを復号化するためのコードが必要です。また、ある時点で、復号化コードは実行できるようにプレーンテキストである必要があります。これは、コンピュータを所有していることを除いて、DRMと同じ問題です。
多くの場合、権限が制限されたファイルに秘密鍵を入れるだけで、システムがルート化されないように通常の予防策を講じています。一時ファイルなどを回避するなど、マルチユーザーシステムで正しく機能させるためのトリックがいくつかあります。