インタビュー: Emmanuel Bernard氏にBean Validation仕様について聞く
Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。
- Java,

作者 日立ソフトウェアエンジニアリング 熊谷 仁志 投稿日 2008年6月22日 午後8時19分
ウィルス対策ソフトや情報漏えい防止用のソフトは、ユーザが利用するために積極的に起動して利用するブラウザやメールソフトなどとは対極にある、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。日立ソフトウェアエンジニアリング(株)が開発した秘文Advanced Edition(以下、秘文AE)もその1つで、Windowsプラットホームでの暗号化と情報漏えい防止という目標を達成するために開発していますが、もう1つ、エンドユーザの運用を極力妨害しないように、いかに目立たない存在となるかにも力を注いでいます。
秘文AEの機能の1つに暗号化があります。一般に、データの暗号化は暗号アルゴリズムと鍵さえあれば任意のデータ・ファイルを暗号化することが可能です。多くのアプリケーションでは、ファイルを金庫に入れるようにエンドユーザが意識してアプリケーションを通じて安全に保存する必要があります。逆に、ユーザに意識させずに暗号化し、人為的なミスによる暗号化漏れを防ぐためには、ファイルシステムに書き込む前に自動的に暗号化する必要があります。秘文AEが採ったアプローチは、フィルタドライバにより全てのアプリケーションのI/Oを捕捉することでファイルという論理的な単位での透過的な暗号化・復号をすることでした。基本的な機能をフィルタドライバに持たせることで、エンドユーザがMS-Wordで文章を保存しようと、メーラにより受信したデータが自動的に保存されようと、監視している秘文AEによって自動的に適切な暗号化・復号処理を実現できます。
フィルタドライバによりI/Oを捕捉することで、論理的にはアプリケーションに依存しない全ファイルの暗号化を実現することができます。しかし、自動的なファイル暗号化を実現しつつ、アプリケーションの動作に影響を与えないようにするためには、大きく以下の2つの課題があります。
アプリケーションのファイルI/Oは、ファイルの先頭から順番にアクセスされないケースがあります。性能等を考慮して秘文AEではブロック暗号を採用しましたが、このときに問題となるのが、暗号化処理のオーバーヘッドです。暗号アルゴリズムをCBC(Cipher Block Chaining)モードや、CFB(Cipher FeedBack)モード、OFB(Output FeedBack)モードなどの暗号ブロックのフィードバックが必要なモードで動作させると、ファイルのある場所の暗号化にはその直前の暗号化処理の結果が必要となります。つまり、ファイル途中に書き込みが発生すると、書き込み部分が変わってしまうため、その位置からファイルの最後までを再暗号する必要が出てきます。それも、書き込みが発生する都度です。これではアプリケーションから見えないどころか、性能劣化により余計に目立つ存在となってしまいます(読み込み時は、復号のみで再暗号化はありませんのでこのような問題はありません)。
この問題を解決するために、ファイルをある一定のサイズ(レコード)ごとに区切り、そのレコードを単位にして暗号化処理を行うようにします。こうすることで、書き込む際に復号と再暗号化する範囲が変更対象のデータを含むレコードの終端までに限定されるため、I/Oごとにファイル全体を処理する必要がなくなります。
アクセスのたびに暗号化・復号処理のオーバーヘッドとランダムアクセスを可能にするための前記処理のオーバーヘッドが発生しますが、レコードサイズの最適化により体感する処理の重さはある程度軽減することが可能です。
CBCモードのようなブロック単位で暗号化する方式の場合には、暗号化するデータをブロック長に合わせるためにパディングが必要となります。このパディングの影響でファイルサイズが増加してしまい、アプリケーションから見えない処理とはいえない状態となります。ここで問題となるのは、アプリケーションがファイルサイズを保持して整合性をチェックしているケースや、ファイルサイズ増加がウィルス対策ソフト等に検知され誤認識してしまうリスクがあるということです。このため、ファイルサイズの増加は回避する必要があります(これを回避できる暗号モードもありますが、性能等を考えるとCBCモードという結論になります)。
そこで、秘文AEでは、ファイル末尾のブロック長に満たない数バイトをCFBモードで1バイトづつ暗号化し、それ以外をCBCモードで暗号化することでファイルサイズ増加の問題を回避しています。CFBモードがCBCモードに比べて処理が遅いといっても最後の数バイトだけが対象となるのでオーバーヘッドは誤差レベルとなり全体の処理速度には影響を与えるほどではありません。
この方式を採用することで、ファイルの伸張や切り詰めでファイル末尾の暗号化・復号処理が複雑になりますが、アプリケーションから隠すには必要な処理なのです。
秘文AEは、これらの暗号化・復号処理を駆使して、アプリケーションやユーザが意識することなくファイル暗号化を実現しています。フィルタドライバによる秘文AEの暗号化技術には以下のメリットがあります。
秘文AEでは、こうしたフィルタドライバでの暗号化技術で情報セキュリティの一翼を担う一方、持ち出し制御機能、ログ取得機能と組み合わせてトータルなセキュリティソリューションを提供しています。
秘文開発の初期から現在までトップテクニカルエンジニアとして活躍。現在も開発の第一線で秘文の発展に尽力している。
Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。
ポーカーは他のトピックにも広く適用できるような数少ない教えを私にもたらしてくれたと信じています。実際私はソフトウェアを開発すればするほど、これら二つの仕事は非常に似ていると言う確信の度合いを深めています。
恒例の「バーチャルパネルセッション」で、InfoQは新しいOASIS BPEL4People技術委員会の代表と対談をし、この作業が何故必要であるかについて彼らのフィードバックを得る機会を得ました。
ドメイン特化言語は最近非常に人気が高まっている話題です。これは恐らく、Rails現象に起因していると考えられます。Railsの人気と、Railsにおけるドメイン特化言語(以降、DSL)の大規模な使用は、DSLに対する広範な関心を呼び起こしました。
Rubyには、Rubyコミュニティの内外で広く知られている誤解が一つある。Rubyにはデバッガがないという誤解だ。しかし、Rubyにデバッガが無いということは誤解なのだ。実際のところ、Rubyにはデバッガ用のツールがある。
InfoQ Chinaは中国でスクラム(Scrum)がどのように導入されているかに関する調査を行いました。私たちはこの記事のために5つの事例をピックアップしました。これらの事例は、異なるさまざまな会社によるもので、異なるプロセスが利用され、異なる結果が生じたものです。
Udi Dahan氏のチームが、サービス契約を利用した2度の失敗を避け、複数の側面でのスケーラビリティに対処しています。
Agileを始めるときは、とても分かりにくいです。一体どこから手をつければいいのでしょう?この物語はそんな皆様の一助になれば幸いです。本書は、スウェーデンにある、とある40人ほどの会社で、どのようにAgileとXPを実行したか、プロセス改善を行ったかを記しています。
No comments
返信