2013-12-17 9 views
8

データベースレコードまたは特定のフィールドの特定のユーザーの証明書またはAD資格などの現在の状態に何らかの形でデジタル署名する方法はありますか?特定のフィールドやフィールドや行の正確性と有効性がユーザー名とパスワードの組み合わせや証明書によって署名されている場合は、何らかの記録レベルの承認を実装する必要があります。データは常にレコードに表示される必要があります。必要なのは、誰がいつデータを承認したかを伝えることだけです。私は現在の状態が署名されたことを確認するためだけに、状態の変更(ロックダウン)を防ぐ必要はありません。SQL Serverデータベースレコードまたは挿入/更新操作にデジタル署名する

答えて

8

あなたが非対称キーを使用して署名を作成するためにSIGNBYASYMKEY-functionを使用することができます。

DECLARE @id = 2; -- The primary key of the row we need to sign 
DECLARE @keyid = AsymKey_Id('KeyID_for_the_User'); 
DECLARE @keypw = N'pGFD4bb925DGvbd2439587y'; 
       -- Password the user entered to sign the values 
DECLARE @clear_text_data nvarchar(max); 
set @clear_text_data = function_that_returns_a_concatenation_of_the_columns(@id) 

UPDATE table 
SET signature = SignByAsymKey(@keyid, @clear_text_data, @keypw) 
WHERE id = @id; 
6

[情報開示を:私はコサインのために働く]

あなたはどのように標準のデジタル署名をしたいですか?あなたは X.509 signature、本当のものが欲しいですか?

その場合:

  1. シリアライズが(平ら)データフィールドバッファに文書化、特異的かつ再現可能な方法です。
  2. バッファに署名するために署名ライブラリを使用します。
  3. 結果のデジタル署名は、「分離デジタル署名」である必要があります。切り離された署名の推奨標準は、データなしの.p7b file type - PKCS#7デジタル署名構造です。
  4. デタッチされたデジタル署名を追加フィールドとしてdbmsレコードに格納します。

      :あなたはまた、それが署名されたため、データが変更されなかったこと、および署名者の身元が信頼されていることを人(またはマシン)を保証するために 署名検証にサービスを提供する必要があります

  5. 上記と同じアルゴリズムを使用して、データをバッファにシリアル化します。
  6. 署名ライブラリの検証方法を呼び出します。
  7. 結果をユーザーに提示します。

システムの監査機能を向上させるには、シリアライズされたデータと外部シグネチャをダウンロードする必要があります。これにより、第三者のソフトウェアを使用して検証ソフトウェアの効果を再現する監査チェックが有効になります。

理想的には、データのシリアル化されたバージョンは、平文データと一致することを理想的にチェックする必要があります。たとえば、バイナリ形式ではなくjson、csv、またはxml utf-8形式にシリアル化します。任意のビットの束に署名することができますが、プレーンテキスト形式は監査する方がはるかに簡単です。

あなたはまた、署名ライブラリはファイルシステム上のファイルに署名者の秘密鍵を格納すると、全体的なことを意味していることを忘れないでください、適切に署名者の秘密鍵を保護するためのセキュリティ問題のすべてを扱うCoSign SAPI APIs.

をチェックアウトしたい場合アプリケーションはではなく、で署名の証明を提供しています。署名の実際の証明を提供する唯一の方法は、SSCD(Secure Signature Creation Device)を使用することです。簡単な方法は、CoSign Central signing applianceなどを使用することです。主な選択肢はスマートカードであり、クライアント/サーバ/ウェブブラウザ環境での実装は非常に困難です。

+0

細心の注意を払っていただきありがとうございます。残念ながら、私はこのケースでは第三者の資産を使用することは許されていないので、SQL Serverのみのアプローチのために@ Twinklesの回答を受け入れることになります。とにかくありがとう。 –

関連する問題