[解決済み] APIキーとシークレットキーはどのように機能するのですか?APIキーやシークレットキーを他のアプリケーションに渡すのは安全ですか?
質問
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 が抱えるのと同じ問題です。
多くの場合、私は制限された権限を持つファイルに秘密鍵を置き、システムがルートされるのを防ぐために通常の予防措置を取ります。一時ファイルなどを避けるなど、マルチユーザー システムで適切に動作させるためのいくつかのトリックがあります。
関連
-
[解決済み] セキュリティ透過的な方法Xによるセキュリティクリティカルな方法Yへのアクセスの試みは失敗しました。
-
[解決済み] 新しいAPIキーを生成するための最適な方法は何ですか?
-
[解決済み] SSLエラー: ローカルの発行者証明書を取得できない
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み] APKファイルのリバースエンジニアリングを回避する方法
-
[解決済み] bcryptはどうして塩を内蔵しているのですか?
-
[解決済み] 認証とセッション管理に関するSPAのベストプラクティス
-
[解決済み] パスワードの長さに上限を設けるべきですか?
-
[解決済み] ベストプラクティス。パスワードのソルティングとペパリング?
-
[解決済み] JWTはlocalStorageとcookieのどちらに保存するべきか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jenkins Scriptlerプラグインの置き換え?
-
[解決済み] セキュリティ透過的な方法Xによるセキュリティクリティカルな方法Yへのアクセスの試みは失敗しました。
-
[解決済み] bcryptはどうして塩を内蔵しているのですか?
-
[解決済み] Webサイトに "remember me "を実装するのに最適な方法は何ですか?[クローズド]
-
[解決済み] ブラウザの「パスワードの保存」機能を無効にする
-
[解決済み] HTTPクッキーはポート指定ですか?
-
[解決済み] ベストプラクティス。パスワードのソルティングとペパリング?
-
[解決済み] HTTP基本認証で使用されるBase64エンコーディングの目的、理由を教えてください。
-
[解決済み] APIキーとシークレットキーはどのように機能するのですか?APIキーやシークレットキーを他のアプリケーションに渡すのは安全ですか?
-
[解決済み] コマンドの標準入力に変数の値を渡すには?