重要なメッセージの送受信においては、メッセージ内容の暗号化が求められることがしばしばあります。
JMS では、メッセージの暗号化について規定されていません。
このため、FioranoMQ では、
DES (Data Encryption Standards)
TripleDES
AES128
AES192
Base64Encoding
RC2_64
RC2_128
に基づく暗号化機能を提供しています。
暗号化の単位
FioranoMQ では、メッセージの暗号化を次の 2つのレベルで実行できるようにしています。
- 個々のメッセージ単位
- ディストネーション (キュー、トピック) 単位
メッセージ単位の暗号化では、送信側クライアントがメッセージの暗号化を行うか否か、個々のメッセージ毎に選択できます。
受信側クライアントは、メッセージの復号化を行います。
ディストネーション単位の暗号化では、指定されたキューもしくはトピックに置かれたメッセージはすべて暗号化されます。
受信側には復号化されてから送られるため、受信側のクライアントで復号化する必要はありません。
メッセージの暗号化は、ペイロードに対してのみ行われ、ヘッダー部分は暗号化されません。
このため、メッセージ セレクションなどの JMS 機能はそのまま使用することができます。
DES アルゴリズム
DES は、共通鍵に基づく暗号化アルゴリズムを使用しています。
これは、送信側と受信側で共通の鍵を保持し、この鍵を用いてメッセージの暗号化と復号化を行います。
共通鍵による方法の利点は、暗号化/復号化の処理速度が公開鍵に比べて速いことです。また、暗号化された結果のサイズも小さくなります。
このため、サイズの大きなメッセージや多数のメッセージの暗号化に適しています。
共通鍵の欠点は、鍵を送信側と受信側で共通して持つため、鍵の配布方法を考慮する必要がある点です。
DES と SSL の組み合わせ
上記の欠点を補う一つの方法として、共通鍵の配布に SSL 通信 (公開鍵による暗号化) を用い、容量の大きなメッセージを DES (共通鍵) によって暗号化し送受信する方法です。
|