Webサービスにセキュリティの実装方法を標準化する動きが出てきた。米Microsoftと米IBM,米VeriSignの3社は,「WS-Security」というセキュリティ標準を発表した。
●現状では各Webサービスごとに異なるセキュリティ技術を採用していたが,標準化することで,より便利にWebサービス間を連携できる。Webサービスの普及が期待できる。
●WS-SecurityはWebサービスを利用するのに使う通信プロトコルのSOAPを拡張したものだ。SOAPメッセージを送信したユーザーを識別し,第三者がデータを改ざんしたり盗聴するのを防御できる。

 XML Webサービス(以下,Webサービス)にセキュリティを実装するための基盤が整い始めた。

 米IBM,米Microsoft,米VeriSignの3社は2002年4月,Webサービスにセキュリティ機能を実装するための仕様「WS-Security」を策定したと発表した。今後は,Webサービスなどの標準化団体W3C(WWW Consortium)などに標準化を働きかける予定だ。

 Webサービスとは,インターネット上での分散処理に向く新しいタイプのアプリケーション。XML(Extensible Markup Language)をベースとしたSOAP(Simple Object Access Protocol)と呼ぶプロトコルを使って,Webサイト同士やクライアント-Webサイト間で通信を行える。

図1●Webサービスをセキュアにするために,セキュリティの標準仕様を策定
現状では,Webサービスごとにセキュリティ対策に使う技術が異なっており,Webサービス間を接続するには,相手先の仕様に合わせて個別に対応する必要がある。そのため,米Microsoftと米IBM,米VeriSignはWebサービスの標準的なセキュリティ仕様を策定し,セキュリティの部分を意識しないでもWebサービスを利用できるようにする。WS-Securityは,Webサービスとの通信に使うSOAPメッセージに拡張タグを追加して,改ざんや盗聴,なりすましを防ぐものである。

 Webサービスの利点として,(1)利用者側のプラットフォームを問わない,(2)複数のWebサイトをシームレスに利用できる,(3)システム開発が容易になる――などがある半面,これまでどちらかというとセキュリティに関しては不安が残っていた。

 インターネット上のセキュリティ関連の技術には,データの暗号化,ユーザー認証,デジタル署名など,個々の要素技術は既に存在する。ただし,これらをWebサービスに実装する手段が決まっていなかったために,各社が独自にセキュリティを組み込まなければならなかった(図1[拡大表示])。

 例えば,米Microsoftの.NET戦略では,.NET Passportを使ってインターネットにアクセスするユーザーの認証を行っている。.NET Passportに対応したWebサービス間であれば,シームレスな連携が可能になる。しかし,他の認証サービスを使用するWebサービスとの相互乗り入れや協調をしていくには,異なる認証システムを連携させる標準的な仕組みが必要となる。

 WS-Securityにより,セキュリティ技術の実装方法が標準化されれば,企業がWebサービスの開発をより効率化することが期待できる。

 「企業ユーザーにWebサービスを説明すると,便利さは分かってもらえても,セキュリティをどうするかで二の足を踏むところが多かった。WS-Securityが現れることで,セキュリティが充実すればWebサービスの採用に弾みがつく」(マイクロソフト,デベロッパーマーケティング本部 .NETマーケティング部プログラムグループの熊谷恒治マネジャー)と語る。

SOAPの拡張タグに3つの定義

図2●SOAPメッセージにセキュリティ関連の情報を組み込む方法を提示
SOAPメッセージを送信するユーザーを示す「セキュリティ・トークン」と,デジタル証明書やメッセージを暗号化した公開鍵の情報などを含む「デジタル署名」をどのように記述するのかを規定している。独自の署名方法や証明書ではなく,標準で使われる技術をSOAPメッセージに組み込む方法を示している。

 WS-Securityでは,SOAPの基本仕様を拡張して,SOAPメッセージを安全に送受信するためのデータ構造を規定している。データ構造などを詳細に解説したWS-Securityの仕様書は,Microsoft(http://msdn.microsoft.com/ws-security/)やIBM(http://www-106.ibm.com/developerworks/library/ws-secure/),VeriSign(http://www.verisign.com/wss/)のWebサイトからダウンロードできる。具体的に,どのようにセキュリティ技術を実装するのか,中身を紹介しよう。

 SOAPメッセージはSOAPヘッダとSOAPボディに分かれており,このうちSOAPヘッダの中に,<wsse:Security>と</wsse:Security>というタグで囲まれた部分を定義する。そこには,(1)セキュリティ・トークン,(2)デジタル署名,(3)データの暗号化方法,と主に3つの領域がある(図2[拡大表示])。

 (1)のセキュリティ・トークンは,SOAPメッセージを送信したユーザーを識別するものだ。基本認証で使うユーザーIDとパスワードの組であれば,<wsse:UsernameToken>というタグで表記する。他にもX.509証明書Kerberosチケットを<wsse:BinarySecurityToken>というタグで表記している。タグの中は,どんな技術を使うかを宣言するとともに,暗号化された証明書そのもののデータなどが含まれている。

 (2)のデジタル署名は,SOAPメッセージが途中の通信経路で改ざんされるのを防ぐためにある。ここにはSOAPメッセージのどの部分にデジタル署名を付加したのかを示している。デジタル署名は,SOAPメッセージを元にダイジェスト値を作成し,さらに秘密鍵により暗号化したものだ。これら署名方法は,W3Cで規定されているXML署名(XML Signature)の記述方法をそのまま使っている。SOAPメッセージを受信したWebサービスは,署名付きのデータから作成したダイジェスト値とデジタル署名で記述されているダイジェスト値を比較して,一致すれば改ざんされていないことが分かる。

 (3)の暗号化方法は,SOAPボディの中身を第三者に盗み読みされないように暗号化する方法が記述されている。その基本的な書式は,これもW3Cで規定されているXML暗号(XML Encryption)に則ったものだ。暗号化の技術には,秘密鍵暗号方式の3DESや公開鍵暗号方式のRSAなど標準的な技術が使える。

 このように一つひとつのセキュリティ技術は既に完成しているものである。WS-Securityでは,それをSOAPのタグの中でどのように使うのかを規定し,暗号化された証明書やデジタル署名などをSOAPメッセージのヘッダ部分に収めることでWebサービスのセキュリティを実装している。

.NET Frameworkのクラス・ライブラリとして提供されるWS-Security

図3●WS-Securityは.NET Frameworkのクラス・ライブラリの1つとして実装される予定
アプリケーションからユーザー認証などのセキュリティに関する処理を分離できる。アプリケーション側では,ユーザーの認証方法を指定したり,SOAPメッセージが改ざんされてないかどうか意識する必要はない。

 WS-Securityは,Windows環境であれば,Webサービスの実行環境である.NET Frameworkのクラス・ライブラリとして提供されることになる予定である(図3[拡大表示])。

 WS-Securityがないときの.NET Frameworkでは,Kerberosによるユーザー認証やSSL(Secure Sockets Layer)による暗号化通信とユーザー認証の処理を個別に開発していた。例えば,ユーザー認証が必要なWebサービスで,ユーザーの証明書が付加されたSOAPメッセージを受信した場合,Webサービス側で証明書の種類を識別し,証明書の有効性をチェックする必要がある。開発者はそれらを実行するプログラムを開発しなければならず,開発の負荷が大きくなる。

 ところが,WS-Securityの実行モジュールは,そのような処理を代わりに実行する。WS-Securityに対応したWebサービスが,SOAPメッセージを受信すると,そのままWS-Securityの実行モジュールを経由して,Kerberosなどの個々のユーザー認証システムを呼び出すことになる。

 開発者にとっては,セキュリティの部分を一から開発する必要はなく,実際に提供するサービスのロジック開発に注力できるようになる。

WS-Securityをベースにした別のセキュリティ仕様も策定中

表1●WS-Securityを基にした様々な共通化されたセキュリティの運用法がこれから策定される
表で挙げた仕様を組み合わせることで,Webサービス全体をセキュアにできる。

 WS-Securityによって規定されているのは,Webサービス間で送受信されるSOAPメッセージのデータ形式だけである。Webサイト間でどのように信頼関係を築くのかといった,Webサービス間の運用に関する規定やデータの管理方針などは未定義のままだ。

 そのため,Microsoft,IBM,VeriSignは,今後,WS-Security以外に新しいセキュリティ仕様を策定していく予定である。全体としてWebサービスにおけるセキュリティのアーキテクチャをなす。

 今後出てくる仕様には,Webサービスがユーザーのセキュリティ・ポリシーを調査するための「WS-Policy」,Webサービス同士が信頼関係を確立するための「WS-Trust」,プライバシー情報の提示方法を規定する「WS-Privacy」などがある(表1[拡大表示])。

 これらのセキュリティの通信は,すべてWS-Securityで規定しているデータ形式を使いながら行われる。

(伊藤 康生=yaitou@nikkeibp.co.jp)