トランザクションセキュリティはクラサバアプリケーションまたはWebサービスにおいて最も重要だ。その目的は監査性、 完全性、機密性、責任追跡性をサポートすることである。これら4つのセキュリティ技術を組み合わせることは前述の認証と認可を採用するのと似ている。
監査システムは認証および行動追跡を必要とする。これらはシステムに対して様々な方法にて利用できる活動の正確な記録生成を可能にする。不審なふるまいを発見する活動証明を利用する金融アプリケーションを考えてみる。例えば、速度チェックは同じソースから来る予想を上回るトランザクション量(詐欺の兆候がある)を発見する。監査データは信頼できる第三者機関により管理されたオフサイト場所にコピーされることが多く、トランザクションの証拠を削除する改ざん行為はできない。
監査可能なシステムを構築するには3つの動機が必要となる。反応性の動機としては、政府や業界規制、ガイドラインに応じる必要がある。積極性の動機としては、監査可能なデータに基づいた1つ以上のユニークな機能を生成する能力がある。h発見の動機としては、興味深い傾向を発見することを期待して時間をかけてデータを分析したい欲求がある。これらはそれぞれ相互に関連している。マーケテクトは重要な政府規制を満たすためにシステムの特定部分が監査可能であることを要求するが、そうすることで競合他社に対して重要な優位性や長期的な傾向分析のための興味深いデータを得られる。
(一方向ハッシュとして知られる)ダイジェスト関数はデータのブロックを得てそれを表す小さなバイト列を返す。良いダイジェスト関数はとてもランダムなので、元データに何らかの変更をすると異なるダイジェスト値が返るので、同じ値を持つ異なるデータブロックを見つけるのはとても難しい。SHA1やMD5のようなアルゴリズムはよく知られたダイジェスト関数であり、これらは上記の要件を満たしていることを確認するため世間の目にさらされてきた。
ダイジェストは通常、デジタル署名を作るために秘密鍵を使って暗号化される。公開鍵を持っていれば誰でも復号化したり、データブロック上でダイジェストアルゴリズムを実行して新しいダイジェストを生成したりできる。データ自体を秘密鍵で暗号化しない理由は、秘密鍵での暗号化はコストが高く大きなデータブロックにあまりにも長い時間がかかるからだ。ダイジェストアルゴリズムは非常に高速で暗号化しやすい小さい結果を生成する。データブロックの署名はデータに添付や格納されていたりする必要はない。
一般的に、完全性は提供しやすい - 使われるアルゴリズムを実装するコードは容易に入手可能で多くはオープンソースである - ので、必要となる機会があった時にそれを使わない理由はない。完全性は多くの場合、システム動作の記録が変更されていないことを証明する方法として監査性と相関がある。
暗号化は、誰もメッセージやシステムに格納されたデータを傍受できないことを確認する際にも役立つ。課金のシステム活動を追跡するログファイルや2システム間で送信されるメッセージ、クレジットカード情報を含むレコードとの違いを考えてみよう。ログファイルの場合、変更されていないことを証明するために完全性を実装する必要がある。クレジットカード情報の場合、悪質な人がメッセージや番号を含むレコードを変更することを防ぐ必要はない。そもそも閲覧やアクセスをさせなければよい。
データを暗号化する最も一般的なアプローチは、SSL(Secure Socket Layer)のようなシステムを使うことであり、2段階のプロセスがある。最初のステップは共通鍵暗号化に依存しており、非常に高速である。メッセージの送信者は共通鍵を生成し、データを暗号化するためにRC4のようなアルゴリズムを利用する。第2ステップでは、送信者は受信者の公開鍵を使って最初のステップで使われた共通鍵を暗号化する。公開鍵暗号は共通暗号よりもはるかに遅いが、暗号化されたデータはとても小さいので非常に速く処理される。送信者は暗号化されたデータと鍵の両方を受信者に送信する。受信者は自分の秘密鍵を使って鍵を復号化しデータを復号する。
このプロセスはスピードと暗号強度のバランスが良い。SSLは非常に普及しているので、可能な限り利用をおすすめする。また、SSL実装者がRC4の代わりにRijndaelのようなさらに強力な暗号化アルゴリズムを採用することを期待している。標準を利用することは、それが改善されるとその恩恵を受けることを意味する(クラックされると被害も被り、それは起きうることだが標準をおすすめする)。
トランザクションセキュリティの目的の一つは否認不可の機構を提供することだ。あなたが私にメッセージを送信する場合、私は後であなたがそれを送ったことを証明できることを意味する。公開/秘密鍵の操作のみで否認不可を可能だが、公開/秘密鍵の操作に依存する操作は全て、その機能を提供する。もう一度ゆっくり今の文を読んでみよう。例えば、(スマートカードとパスワードを使った)二要素認証スキームを使ってマルチユーザシステムにログインする、とする。あなたがこのユーザを認証していたとしても(システムが強力な認証を必要としない限り)彼女の行動に対して責任追跡性を持つことはできない。
強力な責任追跡性は、強力な認証を必要とする。もしあなたがメッセージを送信するのにデジタル証明書が入ったスマートカードが必要であれば、誰かがあなたのカードを盗めば使えるかもしれない。一方、パスワードを入力する必要があるならば、誰かが代わりにメッセージを送信する可能性は低くなる。
強力な責任追跡性を提供するために、デジタル署名が強力な認証とともに使われる。あなたの公開鍵を持っていても秘密鍵無しには誰も署名されたメッセージを送信できない。これはデジタル署名されたメッセージを保存することで、サービスがあなたが送信したことを後で証明できることを意味する。