1. ホーム
  2. security

[解決済み] APIキーとシークレットキーはどのように機能するのですか?APIキーやシークレットキーを他のアプリケーションに渡すのは安全ですか?

2022-05-14 05:20:08

質問

apiキーと秘密鍵の仕組みについて考え始めたところです。 ちょうど2日前、私はAmazon S3にサインアップし、インストールされた S3Foxプラグイン . アクセスキーとシークレットアクセスキーの両方を要求されましたが、どちらもアクセスするためにログインが必要です。

そこで疑問なのですが、もし彼らが私のシークレットキーを尋ねるのであれば、彼らはそれをどこかに保存しているのではないでしょうか? それは、クレジットカード番号やパスワードを尋ねて、それを自分のデータベースに保存しているのと基本的に同じことではないでしょうか?

秘密キーやAPIキーはどのように機能するのでしょうか? どの程度秘密である必要があるのでしょうか? 秘密鍵を使用するアプリケーションは、何らかの形で秘密鍵を保存しているのでしょうか?

どのように解決するのですか?

基本的に、概要を説明した内容を詳しく説明すると ここで .

ここで、0から9までの数を受け取り、3を足し、結果が10より大きければ10を引く関数があるとします。つまり、f(2)=5、f(8)=1、などです。ここで、別の関数を作り、それをf'と呼び、3の代わりに7を加えて逆行させることができます。

これが双方向関数とその逆関数の例です。理論的には、あるものを別のものに写す数学的な関数はすべて逆向きにすることができます。しかし、実際には、入力をうまくスクランブルすることで、逆転が信じられないほど難しい関数を作ることができます。

入力を取って一方向性関数を適用することは、入力をquot;ハッシュ化することと呼ばれ、Amazonがシステムに保存するのは、秘密鍵のquot;ハッシュです。SHA1はこの種のquot;one-way;quot;関数の一例で、攻撃に対して強化されています。

その HMAC関数 は、確立されたハッシュ関数を基に、既知のキーを使ってテキスト文字列を認証するものです。これは次のように動作します。

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

PKIとの違いは、この方式は RESTful であり、お客様のシステムとAmazonのサーバーとの間で最小限のやりとりを行うことができることです。

<ブロッククオート

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

そうですね、でもS3でできる被害はアカウントの流出に限られるようです。

<ブロッククオート

どの程度秘密にしておく必要があるのでしょうか?また 秘密鍵を使用するこれらのアプリケーションは キーは何らかの形で保存されているのでしょうか?

そして、ほとんどのUnixベースのシステムでは、攻撃者がrootにアクセスできれば、キーを取得することができます。鍵を暗号化する場合、それを復号化するコードが必要で、ある時点で復号化コードは実行可能なプレーンテキストでなければなりません。これは、コンピュータを所有していることを除けば、DRM が抱えるのと同じ問題です。

多くの場合、私は制限された権限を持つファイルに秘密鍵を置き、システムがルートされるのを防ぐために通常の予防措置を取ります。一時ファイルなどを避けるなど、マルチユーザー システムで適切に動作させるためのいくつかのトリックがあります。