0

メッセージ認証コード (MAC) を使用して REST API への呼び出しに署名したいのですが、Java、php、Ruby、および C# で簡単かつ快適に使用できるアルゴリズムはどれですか?

より長いストーリー: 私のアプリケーション (Play Framework 2.0) は非常に単純な REST API を提供します。限られた既知の* クライアント グループがアクセスできるいくつかのサービスです。ここではセキュリティが重要であり、クライアントの使いやすさも重要です。

(* 既知とは、最初にアプリケーションに登録する必要があることを意味します。ここで MAC の秘密を取得します。彼らが誰で、どのような技術を使用しているかはわかりません。)

次のアプローチを実装したいと思います。

  • SSL を使用する
  • MAC で REST メッセージに署名する

署名に PBKDF2WithHmacSHA1を使用してパスワード エンクリプタ (ここのサンプル コードと同様)を使用したテスト ケースを実装しました。特に、署名を URL パラメーターとして送信する必要があり、正しい形式で取得するために 2 回エンコードする必要があったため、署名が機能するまでに時間がかかりました。

生成された署名は byte[] であり、org.apache.commons.codec.binary.StringUtils で UTF-8 エンコードされた文字列に変換し、java.net.URLEncoder で再度エンコードして正しい URL パラメーターを取得します。解決策は機能しますが、愚かで過度に複雑に感じます。

この経験から、この質問にたどり着きました。クライアントがサービスを簡単かつ快適に使用できるようにしたいだけでなく、非常に安全にしたいのです。では、署名にはどの暗号アルゴリズムを選択すればよいでしょうか? Java、php、Ruby、C# などの最も一般的な Web プラットフォームで簡単に実装でき、一般的ではない言語でも何らかの形で使用できます。

4

1 に答える 1

1

byte[]hexString に変換されたものは、おそらく署名に使用する最も簡単な形式です。16 進文字 [0-9a-f] は特別なエンコードを必要としません。HexApache Commons コーデックは、クラスの下に変換メソッドを提供します。

HMAC-SHA256 は HMAC アルゴリズムのゴールド スタンダードであり、使用する価値のあるすべてのプラットフォームに存在する必要があります。

于 2013-01-15T15:38:42.150 に答える