143

APIキーとシークレットキーがどのように機能するかについて考え始めたところです。ちょうど2日前にAmazonS3にサインアップし、S3Foxプラグインをインストールしました。アクセスキーとシークレットアクセスキーの両方を要求されましたが、どちらもアクセスするにはログインする必要があります。

だから私は、彼らが私の秘密鍵を私に求めているのなら、彼らはそれをどこかに保管しているに違いないのだろうか?それは基本的に、クレジットカード番号やパスワードを尋ねて自分のデータベースに保存するのと同じことではありませんか?

シークレットキーとAPIキーはどのように機能するはずですか?彼らはどれほど秘密にする必要がありますか?秘密鍵を使用するこれらのアプリケーションは、それを何らかの形で保存していますか?

4

3 に答える 3

93

基本的に、ここで概説されていることについて詳しく説明します。

仕組みは次のとおりです。たとえば、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と同じ問題です。

多くの場合、権限が制限されたファイルに秘密鍵を入れるだけで、システムがルート化されないように通常の予防策を講じています。一時ファイルなどを回避するなど、マルチユーザーシステムで正しく機能させるためのトリックがいくつかあります。

于 2010-04-20T19:31:00.483 に答える
7

公開鍵暗号は、非常に特殊な攻撃から防御するために使用されます。その一部は一般的です。要するに、これは複雑な数学であり、公開鍵を知っているだけで、個人が公開鍵と秘密鍵の両方のペアを持っていることを確認できます。これは、クレジットカードや静的パスワードとは大きく異なります。例として、OpenSSHサーバーで認証している場合、サーバーは秘密鍵を必要としません

理想的には、攻撃者が侵害されるAmazonのAPIデータベースに公開鍵のリストがあり、この情報を使用してユーザーのAPIにアクセスできない場合です。ただし、理想的なシステムが常に実行されているわけではなく、Amazonがこの攻撃ベクトルから保護しているかどうかはわかりませんが、実行する必要があります。

公開鍵認証では、統計的にブルートフォースの影響を受けません。パスワードは多くの場合、相対性理論をすばやく破ることができる辞書の単語です。ただし、秘密鍵は膨大な数であり、推測するのは簡単ではありません。攻撃者が公開鍵を持っていれば、スーパーコンピューターで「オフライン」で多くの推測を実行できますが、それでも鍵を破るには多くの時間とお金がかかります。

于 2010-04-20T18:41:01.620 に答える
1

AWSは、独自のカスタム認証アルゴリズムを設計しました。v4は2014年にリリースされました。詳細はここに概説されています:Authenticating Requests(AWS Signature Version 4)。重要な点は、リクエストがシークレット自体ではなく、シークレットを使用して生成された署名キーで署名されていることです。また、署名にHMAC-SHA256を使用します。

署名の生成

AWSは、ユーザーとAWSの両方によって保存される秘密ではなく公開鍵のみを保存するため、非対称鍵を使用する方が安全です。

于 2019-04-19T13:50:17.593 に答える