4

Masheryでは、次のようにデジタル署名による認証が可能です。

  • まず、次のコンポーネントを連結します。
    • APIキー
    • 共有秘密
    • UNIXタイムスタンプ
  • 次に、連結された文字列のMD5ハッシュを作成します。

ドキュメントには、UNIXタイムスタンプに必要な精度は+/-5分のみであると記載されています。詳細:http ://support.mashery.com/docs/read/mashery_api/20/Authentication 。

これが企業秘密ではないと仮定すると、このような認証を実行するためのアルゴリズムは何ですか?

具体的には、UNIXタイムスタンプが5分変動する可能性がある場合、どうすればよいでしょうか。「ブルートフォース」手法は、一致する(または一致しない)ものが見つかるまで、考えられるすべてのタイムスタンプ値の署名を計算することですが、頻繁なAPI呼び出しを認証するには実用的ではないようです。

4

4 に答える 4

3

はい、それはそれがしていることのようです。あなたが提供したドキュメントのリンクには、「Masheryサーバーの現在のタイムスタンプの両側で5分間の小刻みに動くことが許可されており、妥当なクロックドリフトが可能です」と記載されています。つまり、送信されたハッシュが有効かどうかを確認するために、最大600個のハッシュをチェックする必要があります。5分は300秒です。プラスマイナスは600チェックになります。

それは私には実用的なようです。600 MD5は、実行する処理がそれほど多くありません。実際、最新のパスワードバリデーター(bcryptを使用するものなど)は、パスワードを検証するためにはるかに多くの作業を実行します。

于 2011-11-10T03:15:02.817 に答える
2

アマゾンは、リクエストの署名の良い例を示しており、メカニズムを明らかにするために非常に詳細に説明しています(私はそれがマッシャーではないことを認識していますが、それはあなたの後のものであるか、少なくともAPIセキュリティの幸福への旅に役立つと思います)

http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html

于 2011-11-15T10:43:10.607 に答える
0

Masheryは、有効な署名のリストを事前に生成したり、オンデマンドで各署名をキャッシュしたりすることもできます。署名は、MasheryがそのAPIキー/共有シークレットに対して保護しているすべてのAPIに対してグローバルであるため、リクエストごとにAPI呼び出しを一意に検証する必要はありません。

于 2016-04-28T19:07:59.420 に答える
0

sha256はかなり高速です。PHPでも、1秒あたり830Kのsha256を計算できるため、ブルートフォース攻撃を行う可能性が非常に高くなります。

<?php

$COUNT = 6000000;
$start = microtime(true);
for($i = 0; $i < $COUNT; $i++) {
  $out = hash('sha256', 'wefjklwfekjlewfjklwefjklfwejkwefjklwfekjl' . $i);
  //print("$out\n");
}
$total = microtime(true) - $start;
print("Time: $total\n");
print("sha256's per second: " . ($COUNT / $total) . "\n");

?>
于 2016-05-03T19:29:32.543 に答える