アプリの認証サービスを作成しています。クライアントは HTTP 経由でこの認証サービスに接続し、登録または接続します。接続後、セカンダリ サーバーに送信される暗号化 TCP / UDP パケットを使用できるセッション キーを受け取ります。これはまだ WIP であるため、大まかな概要を説明します。
サーバー側では、BCrypt を使用して着信パスワードをハッシュします。そしてそれをデータベースに保存します。サーバー側では、BCrypts Verify メソッドも使用して、保存されたハッシュで着信パスワードをチェックします。これは基本的に機能します。
ただし、当然、ハッシュ化されていないパスワードをネットワーク経由で転送したくありません。Windows ストア アプリ用の BCrypt はありませんが、次のように、Windows ストア アプリ用の新しい暗号化 API を使用して文字列をハッシュする方法を示す MSDN サンプル コードをいくつか見つけました。
public static string Hash(string password)
{
HashAlgorithmProvider provider =
HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha512);
CryptographicHash hash = provider.CreateHash();
IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf16BE);
hash.Append(buffer);
IBuffer hashedBuffer = hash.GetValueAndReset();
return CryptographicBuffer.EncodeToBase64String(hashedBuffer);
}
Windows ストア アプリ (従来の Windows デスクトップ アプリも) だけでなく、さまざまなクライアントをサービスに接続する予定です。したがって、当然、クライアント側でパスワードをハッシュする「1つの」方法が必要です。
実装する必要がある追加のセキュリティメカニズムについてアドバイスが必要です.SHA512を使用してクライアント側でパスワードをハッシュする場合は、上記のコードで示されているように、サーバーに送信するときに「十分」です(保存する前に再度ハッシュしてソルトします)。