私は、WCFでのRESTfulなWebサービスに関するいくつかの記事、より具体的にはこれらの方法についての認証方法について説明してきました。私が参照している主な記事は、Aaron SkonnardのRESTful Web Services with WCF 3.5です。 HMAC認証を特に扱う別のものは、Skonnardsの論文に基づくItai Goldstiens articleです。WCFでのHMAC認証の明確化
両方の記事で参照されている「ユーザーキー」について混乱します。ユーザー名とパスワードの両方をユーザーに要求するクライアントアプリケーションがあります。これは、私は System.Security.Cryptography.HMACMD5クラスを初期化するために使用する鍵は、単にユーザー パスワードであることを
- を意味するのでしょうか?板井の記事 (下図)でのMacを作成するために使用される方法は、私は右の
key
は、ユーザー パスワードとtext
であると考えているのですが与えられ は、私たちが使用している文字列が 詳細が実際に正しいことを確認しています?私の例で
public static string EncodeText(byte[] key, string text, Encoding encoding) { HMACMD5 hmacMD5 = new HMACMD5(key); byte[] textBytes = encoding.GetBytes(text); byte[] encodedTextBytes = hmacMD5.ComputeHash(textBytes); string encodedText = Convert.ToBase64String(encodedTextBytes); return encodedText; }
、text
パラメータは、(リクエストヘッダとして利用できるようにし、リプレイ攻撃を防ぐために使用される)、要求URIの組み合わせ、共有秘密およびタイムスタンプであろう。
この形式の認証はまともですか?私はanother threadここに来て、上記の記事で定義されているメソッドが "..a(sic)醜いハック"であることを示唆しています。著者は理由を示唆していませんが、私がこれについて読んでそれを働かせるのに数時間を費やしたことを考えると、それは落胆しています。しかし、この質問に対する受け入れられた答えは、カスタムHMAC認可スキームについて語っているので、HMACアルゴリズム自体の使用ではなく、醜いハック参照が単にHMAC認可スキームの実装である可能性があります。
以下の図は、the wikipedia article on Message Authentication Codeの場合です。私はこれが安全な方法でなければならないと感じていますが、私はそれが正しく使用されていることを理解していることを確認したいだけです。
あなたの答えに感謝します。私は他にもいくつかのことを明確にしたいと思う。十分に大きな鍵を生成するためにPBKDF2を使用した場合、クライアントとサーバの両方でPBKDF2アルゴリズムが同じ結果を生み出すと考えていますか?私はWCFサービスの作成を手伝っていますが、iPhoneクライアントアプリケーションには関与しません。ポイント1と2をカバーすることを願っています。ポイント3では、共有秘密はiPhoneアプリとWCFの設定の一部になり、ブロードキャストされません。ナンバー4については、http://www.codinghorror.com/blog/2009/05/the-bathroom-wall-of-code.html –
こんにちは - 私はPBKDF2アルゴリズムが実際に同じ結果を生成すると非難する.NET実装のRFC2898DeriveBytes(http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx)は1つのハッシュ関数のみに固定されていますが、正式にはあなた自身を選ぶことができるはずです - あなたがGoogleの場合、他の実装があります。 3)秘密をアプリケーションにコンパイルすることはお勧めできません - デコンパイラは存在します:) - その1つのセッションにのみ有効なランダムノンスを使用する方が良い –
PBKDF2関数を使用するのが一般的です(または推奨)。モバイルデバイス(つまり、iPhone/Android)。単純なブラウザベースのjavascriptテストクライアントを書くとき、私はそれがいくつかのブラウザではかなり遅くなることがあることに気付きました。私はこれがモバイルデバイス上で悪化すると思う。別の[スレッド](http://security.stackexchange.com/q/13590/8956)では、PBKDF2 "...はかなりのCPU使用量を追加するので非常に貧しい選択です"と示唆されました。私はそれがあなたの意見であることに感謝します。 –