2

アプリケーションにアクセス キーを提供したいオープン API があります。受信情報は、ユーザー ID、リソース ID、および更新する値になります。リソースごとに 1 つの API キーが必要です。

できれば、提供されたデータのみを使用して、いかなる種類のデータベースに対してもチェックせずに、着信要求の信頼性を検証できるようにしたいと考えています (非常にシンプルで非常に高速です!)

md5 を使用してリソース ID、ユーザー ID、およびソルトから API キーを生成すると、次のようになります...

authentic_request = md5(user_id + resource_id + salt) == api_key

私の質問は、私がどれほど妄想的であるべきかということです。上記のような単純な古い md5 で十分でしょうか? 別のオプションは、openssl を使用して pem に対してキーを生成し、結果を md5 して簡潔に保つことです。

アイデアや代替手段でさえ、感謝して受け取りました!

ありがとう

4

2 に答える 2

4

これは事実上、ハッシュベースのメッセージ認証コードの単純な実装です。

ペアに基づいてこれらのキーを配布し、(user_id, resource_id)呼び出している値をsalt秘密にして、攻撃の深刻な試みを予期していないと仮定すると、これは機能するはずです。ただし、ベストプラクティスでは、キーとデータを結合するための単なる連結よりも安全なアルゴリズムと、SHA-1などのより強力なダイジェストアルゴリズムを使用する必要があります。これにうまく機能する標準のHMAC-SHA1組み合わせアルゴリズムがあります。

3番目の値は実際にはキーであり、ソルトではありません。このキーを所有することで、認証コードの生成と検証の両方が可能になります。

于 2010-10-28T00:45:07.960 に答える
0

何を保護しようとしているかによって異なります。これだけで、API の不用意な誤用を防ぐことができますが、リプレイ攻撃を防ぐことはできません。誰かがあなたのトラフィックを傍受している場合、彼らはキーを見て、それを再利用することでリソースにアクセスできます。ソリューションに SSL を追加すると、この種の攻撃を防ぐことができます。

その際、MD5 を SHA-256 に変更することもできます。

于 2010-10-28T00:48:05.133 に答える