ここで概要を説明します。
動作方法は次のとおりです。たとえば、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と同じ問題です。
多くの場合、私は制限されたアクセス許可を持つファイルに秘密鍵を配置し、私のシステムがルート化されないように通常の予防策を講じます。一時ファイルを回避するなど、マルチユーザーシステムで適切に動作させるためのいくつかのトリックがあります。