2016-04-05 38 views
1

データベースでSQL Serverの暗号化と復号化を使用したいと考えています。私はそれに関連する多くの記事を読んで、私は同様に私のSQLサーバーでそのことを試みた。 私はSymmetric KeyTransparent Data Encryptionを私の両手で試しました。対称キーは、キーがsys.symmetric_keysテーブルに保存され、管理者権限を持つユーザーがそのキーを表示して使用することができるフィールド/セルベースのセキュリティとしても知られています。TDScertificate + private key + Encription By Passwordで動作し、基本的には誰かが私のデータベースバックアップを持っている場合、彼らはcertificate + private keyファイルとEncription By Passwordを知らなくてもそこでそれを復元することはできません。これらはすべてSymmetric key and TDSで働いている間に私が知るようになったポイントです。私の研究によると、TDSは非常に安全ですが、Symmetric keyはキーをデータベースに保存するため安全ではないことがわかります。SQL Serverの暗号化と復号化

私は下に述べたステップがSymmetric Keyトポロジで可能であることを知りたいと思います。 「はい」の場合は、「いいえ」の場合は、同じことを達成するための他の方法は何ですか。データベースにキーを保存しない方法

  1. は、私は、フィールドを暗号化したい たびは、フロントエンドからの私のキーを渡すことを意味します。
  2. UPDATE dbo.tablename SET CARDnumber_encrypted= EncryptByKey(Key_GUID('CreditCards_Key'), FirstName);私はKey_GUID('CreditCards_Key')でいくつかの余分な変数を使用することができます。そのため、キーがあれば、フィールドはdecryptになりません。私ものようなフロントエンドで値を暗号化して、バックエンドにそれを保存し、再び私は、フロントエンドにその事を行いますそのフィールド解読のための私のフロントエンドから暗号化を使用することができますが、私はそれをやりたい

すべてのものをフロントエンド用ではなくバックエンドに入れる。

私が指摘したポイントをどのように達成できるか教えてください。あなたが私のポイントを得ていないなら、もう一度私に尋ねてください。

助けが必要です。

答えて

1

ENCRYPTBYKEY()関数は、the documentationで指定されたオプションの認証ツールを使用します。前述の目的は、平文の本質的な性質がわかっている場合(引用された例は暗号化された給与計算列であり、CFOがコピールームの従業員よりも多く支払われることを知っている場合)暗号化された値を別のものに交換することを避けることです。

ただし、データベースに格納されていない静的認証子をパスワードの一種として使用するのと同じメカニズムを使用することはできません。復号化時にそのオーセンティケータを提供できなければ、復号化に失敗する。

+0

ありがとうございます。できます。 – Rahul