暗号化ソフトウェアとは、暗号技術を用いてデジタル情報への不正アクセスを防止するソフトウェアです。 [ 1 ] [ 2 ]暗号技術は、コンピュータに保存されているデジタル情報や、インターネットなどのコンピュータネットワークを介して送信される情報を保護するために用いられます。[ 3 ]
多くのソフトウェア製品が暗号化機能を提供しています。暗号化ソフトウェアは、暗号を使用して平文を暗号文に変換します。この種のソフトウェアを分類する方法の1つは、使用される暗号の種類です。暗号は、公開鍵暗号(非対称暗号とも呼ばれる)と対称鍵暗号の2つのカテゴリに分類できます。[ 4 ]暗号化ソフトウェアは、公開鍵暗号化または対称鍵暗号化のいずれかに基づいて構築できます。
ソフトウェア暗号化を分類するもう一つの方法は、その目的によって分類することです。この方法を用いると、ソフトウェア暗号化は「転送中のデータを暗号化するソフトウェア」と「保存中のデータを暗号化するソフトウェア」に分類できます。転送中のデータには一般的に公開鍵暗号が使用され、保存中のデータには一般的に共通鍵暗号が使用されます。
対称鍵暗号は、さらにストリーム暗号とブロック暗号に分類できます。ストリーム暗号は通常、平文を1ビットまたは1バイトずつ暗号化し、音声や動画情報などのリアルタイム通信の暗号化に最もよく使用されます。鍵はキーストリーム生成器の初期状態を確立するために使用され、その生成器の出力は平文の暗号化に使用されます。ブロック暗号アルゴリズムは、平文を固定サイズのブロックに分割し、1ブロックずつ暗号化します。たとえば、AESは16バイトのブロックを処理しますが、その前身であるDESは8バイトのブロックを暗号化していました。
転送中のデータとは、コンピュータネットワークを介して送信されているデータのことです。データが2つのエンドポイント間にある場合、機密情報が危険にさらされる可能性があります。ペイロード(機密情報)は、機密性、完全性、および有効性を確保するために暗号化することができます。[ 5 ]
多くの場合、転送中のデータは、Web サイトへのアクセスなど、互いに知らない 2 つのエンティティ間で行われます。当事者間で信頼を確立し、暗号化キーを安全に共有するために、公開鍵基盤(PKI) として知られる役割、ポリシー、手順のフレームワークが開発されました。PKI が安全な接続を確立すると、エンドポイント間で対称鍵を共有できます。対称暗号は非対称暗号よりもはるかに効率的 (CPU サイクルの使用が少ない) であるため、大量のデータ転送には公開鍵暗号化よりも対称鍵が好まれます。[ 6 ] [ 7 ]転送中のデータを暗号化する方法は、 IPsec、SCP、SFTP、SSH、OpenPGP、HTTPSなど、いくつかあります。
静止データとは、永続ストレージに保存されているデータのことです。静止データは通常、共通鍵暗号方式で暗号化されています。
暗号化は、ストレージスタックのさまざまなレイヤーで適用できます。たとえば、ディスクレイヤー、パーティションと呼ばれるディスクのサブセット、ディスクまたはパーティションの組み合わせであるボリューム、ファイルシステムのレイヤー、またはホストオペレーティングシステム上で実行されるデータベースやその他のアプリケーションなどのユーザー空間アプリケーション内で暗号化を設定できます。
フルディスク暗号化では、ディスク全体が暗号化されます(暗号化されていないブート/プリブートパーティションを使用しない場合、起動またはディスクへのアクセスに必要なビットを除く)。[ 8 ]ディスクは複数のパーティションに分割できるため、パーティション暗号化を使用して個々のディスクパーティションを暗号化できます。[ 9 ] 2つ以上のパーティションを組み合わせて作成されたボリュームは、ボリューム暗号化を使用して暗号化できます。[ 10 ] 1つ以上のパーティションで構成されるファイルシステムも、ファイルシステムレベルの暗号化を使用して暗号化できます。ディレクトリは、含まれるファイルが暗号化されている場合に暗号化されているとみなされます。[ 11 ] [ 12 ]ファイル暗号化は、単一のファイルを暗号化します。データベース暗号化は、保存するデータに対して動作し、暗号化されていない情報を受け入れ、データを暗号化した後にのみその情報を永続ストレージに書き込みます。デバイスレベルの暗号化は、暗号化機能付きテープドライブを含むやや曖昧な用語ですが、CPUから暗号化タスクをオフロードするために使用できます。
安全な接続を確立できない状況で、静止データを安全に送信する必要がある場合、このニーズに対応するユーザー空間ツールが開発されています。これらのツールは、受信者が公開鍵を公開し、送信者がその公開鍵を取得できることを前提としています。送信者は、情報暗号化用の共通鍵を作成し、受信者の公開鍵を使用して情報と共通鍵の送信を安全に保護します。これにより、一方の当事者から他方の当事者へ情報を安全に送信することが可能になります。
暗号化ソフトウェアのパフォーマンスは、CPU の速度を基準に測定されます。そのため、1 バイトあたりのサイクル数( cpbと略されることもあります)が一般的な測定単位です。これは、マイクロプロセッサが処理する 1バイトのデータに対して必要とするクロック サイクル数を示す単位です。 [ 13 ] 1 バイトあたりのサイクル数は、暗号化機能の実際のパフォーマンスを部分的に示す指標となります。[ 14 ]アプリケーションは、Microsoft SQL、Oracle、MongoDB などのデータベース アプリケーションを含め、独自の暗号化 (ネイティブ暗号化と呼ばれることが多い) を提供することができ、パフォーマンスのために CPU サイクルを直接使用することが一般的です。これは、組織内のデータがパートナーに渡る速度と規模に影響を与えるため、セキュリティの向上とコンプライアンスの容易な遵守を求める企業にとって、暗号化の望ましさに影響を与えることがよくあります。[ 15 ]