APIキーとシークレットキーはどのように機能しますか? APIとシークレットキーを別のアプリケーションに渡す必要がある場合、安全ですか?

StackOverflow https://stackoverflow.com/questions/2674445

質問

APIキーとシークレットキーがどのように機能するかを考え始めたばかりです。わずか2日前、私はAmazon S3にサインアップしてインストールしました S3FOXプラグイン. 。彼らは私のアクセスキーとシークレットアクセスキーの両方を私に尋ねました。どちらも私にアクセスするためにログインする必要があります。

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

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

役に立ちましたか?

解決

基本的に概説されているものについて詳しく説明します ここ.

それがどのように機能するかは次のとおりです。ゼロから9までの数を取得し、3を追加し、結果が10を超える場合は10を減算する関数があるとします。したがって、f(2)= 5、f(8)= 1など。これで、別の関数を作成し、f 'と呼ぶことができます。 f '(5)= 2、f'(1)= 8など

それは双方向関数とその逆の例です。理論的には、あるものを別のものにマッピングする数学的関数を逆にすることができます。ただし、実際には、入力を非常によくスクランブルする関数を作成することができ、逆転が非常に困難です。

入力を取得して一方向関数を適用することは、入力の「ハッシュ」と呼ばれ、システム上のAmazonが保存するものは、秘密の鍵の「ハッシュ」です。 SHA1は、この種の「一方向」関数の例であり、攻撃に対しても強化されています。

HMAC関数 確立されたハッシュ関数に基づいて、既知のキーを使用して一連のテキストを認証します。それはこのように動作します:

  • リクエストのテキストとシークレットキーを取り、HMAC関数を適用します。
  • その認証ヘッダーをリクエストに追加し、Amazonに送信します。
  • Amazonは、Secret Keyのコピーと、送信したばかりのテキストを調べてHMAC関数を適用します。
  • 結果が一致する場合、彼らはあなたが同じ秘密の鍵を持っていることを知っています。

これとPKIの違いは、この方法が 安らかです, 、システムとAmazonのサーバー間の最低数の交換を許可します。

それは基本的に、私のクレジットカード番号やパスワードを求めて自分のデータベースに保存することと同じことではありませんか?

はい、S3で誰かができる損害は、アカウントの消耗に限定されているようです。

彼らはどれほど秘密になる必要がありますか?これらのアプリケーションは、秘密のキーを何とか保存するものですか?

ある時点で、シークレットキーをロードする必要があり、ほとんどのUNIXベースのシステムを使用すると、攻撃者がルートアクセスを取得できる場合、キーを取得できます。キーを暗号化する場合は、それを復号化するためにコードを使用する必要があり、ある時点で復号化コードを実行して実行できるようにする必要があります。これは、コンピューターを所有していることを除いて、DRMが抱えている問題と同じです。

多くの場合、私は限られた権限を持つファイルにシークレットキーを配置し、システムがルート化されないように通常の予防策を講じます。一時的なファイルなどを回避するなど、マルチユーザーシステムで適切に動作させるためのいくつかのトリックがあります。

他のヒント

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

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

公開キーでは、認証は統計的にブルートフォースに対して免疫があります。パスワードは、多くの場合、相対性を速く壊す可能性のある辞書の単語です。ただし、秘密鍵は、推測するのが簡単ではない膨大な数字です。攻撃者が公開キーを持っていた場合、彼らはスーパーコンピューターで多くの推測を「オフライン」することができましたが、それでもキーを破るには多くの時間とお金がかかります。

AWSは独自のカスタム認証アルゴリズムを設計しました。 V4は2014年にリリースされました。詳細については、ここで説明します。 認証リクエスト(AWS署名バージョン4) . 。主要なポイントは、リクエストが秘密自体ではなく、秘密を使用して生成される署名キーで署名されることです。また、署名にHMAC-SHA256を使用します。

Signature Generation

AWSは、ユーザーとAWSの両方が保存する秘密の代わりに公開キーのみを保存するため、非対称キーを使用する方が安全です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top