【特集】 PKI対応アプリケーションを検証する
〜JetForm「FormFlow99」
XML対応の電子帳票ソフトは、作成データへの電子署名も可能。そのPKI対応機能の数々を追いつつ、いくつかの認証局製品および認証局サービスベンダから発行される証明書プロファイルが異なる署名/証明書の相互認証や実務への応用などを検証する
吉川満広/池谷千尋
ネットマークス
2001/8/8
| 署名を行った場合の動作は? |
それでは実際に、「署名」と「署名の検証」を行ってみよう。FormFlow99で作成したフォームを開き、必要事項を申請用紙に記入する。
![]() |
| 画面6 FormFlow99で作成したフォームをIEで開いてみたところ。必要事項を記入して、各ボタンの動作を確認してみよう(画面をクリックすると拡大表示します) |
●署名
必要事項の入力後、フォーム上にある「署名」ボタンを押すと、電子署名が開始される。申請にはEntrust/Entelligenceを使用する。「エントラスト
ログイン」ダイアログボックスが表示されるので、パスワードを入力しログインする。
![]() |
| 画面7 フォームへの署名にはEntrustを使用しているため、署名の際にログイン画面が表示される(画面をクリックすると拡大表示します) |
署名が終了したらメッセージが表示される。
![]() |
| 画面8 署名が完了するとメッセージが表示される |
●署名の検証
上記で行った署名を検証してみよう。署名検証用フォームを開き、「署名データオープン」ボタンで申請者のXMLデータを読み込む。署名されたデータはFormFlow99でロックされているため、変更はできない。
![]() |
| 画面9 次に署名検証用のフォームをIEで開く。署名されたデータはFormFlow99でロックされているため、変更はできないことが分かる(画面をクリックすると拡大表示します) |
電子署名の検証を行ってみる。「署名検証」ボタンを押すと署名の検証が行われ、署名の有効性が確認されると、画面10のようなダイアログボックスが表示される。
![]() |
| 画面10 署名の有効性が確認されると、上記のダイアログボックスが表示される(画面をクリックすると拡大表示します) |
●CryptoAPIを利用した受付者による署名
次に、受付者の署名をCryptoAPIを利用して行う。受付用フォームの「受付(署名)」ボタンを押すとプロファイル選択のダイアログボックスが表示されるので、署名に使用したいプロファイル(証明書)を選択し、署名を行う。ここではVeriSignの証明書を使用する。
![]() |
| 画面11 CryptoAPIによる署名では、署名の際にどの証明書を使用するかを確認してくる。ここではVeriSignを選択する(画面をクリックすると拡大表示します) |
署名が終了するとメッセージが表示される。
![]() |
| 画面12 署名が完了するとメッセージが表示される |
受付署名を確認したいときは、新たに確認用ボタンを作り、以下のようなコードを記述すればいい。ボタンを押すことで確認ができる。
![]() |
| リスト5 受付署名確認用のコード |
確認すると、以下のようなダイアログボックスが表示され、署名の検証ができる。
![]() |
| 画面13 画面10の場合と同様に、署名の有効性が確認されるとダイアログボックスが表示される(画面をクリックすると拡大表示します) |
●署名されたXMLデータの内容を確認してみる
IEでXMLデータを見ると<Sign01>〜</Sign01>と<Sign02>〜</Sign02>のところに署名がなされている。実際の署名は
<XFASig:SignatureValue> 〜 </XFASig:SignatureValue> に囲まれた部分であり、それ以外のところは署名するタグが指定されている。ここに、署名範囲のハッシュ値と署名者の証明書の内容が記述されている。
![]() |
| 画面14 署名の施されたXMLデータを開いてみると、署名用のタグに署名範囲のハッシュ値と証明書の内容が記述されていることが確認できる(画面をクリックすると拡大表示します) |
このように、FormFlow99で作成したフォームを利用して、XMLデータの指定したタグへの署名のほか、署名の検証ができる。FormFlow99の現行バージョンでは、CryptoAPIを利用した署名検証において、「改ざんの有無のチェック」「証明書の有効期限チェック」「証明書発行機関の証明書確認」については動作確認が行えたが、「証明書の有効性確認」については動作確認ができなかったことを報告しておく。
| 改ざんされた場合の動作は? |
では、これまでに作成したフォームを利用して、データが途中で「改ざん」された場合の動作を見てみよう。XMLでのデータ交換はご存じのとおりテキストデータであり、意図すれば改ざんすることが容易なデータ形式である。従って、電子署名を行わないデータ交換は非常に危険であるということが分かっていただけると思う。ここでは、電子署名を行ったXMLデータを実際に改ざんして、本当に改ざんが検知できるかどうかを試してみる。
先ほど「署名検証」ボタンのコードを記述したとき、署名の有効性が確認できなかった場合「署名の検証に失敗しました」と表示するようにしたが、実際に動作するかどうかを確認してみる。
申請用フォームで必要事項を入力した後、署名を行いXMLファイルを作成する。
![]() |
| 画面15 申請用フォームに必要事項を記入し、署名を行った後にXMLファイルを生成する(画面をクリックすると拡大表示します) |
作成されたXMLファイルをテキストエディタなどで開き、署名された個所を書き換えてみる。ここでは、自動車の大きさを428cmから427cmに改ざんしている。
|
|
| 画面16 生成されたXMLファイルをテキストエディタで開き、自動車の大きさが記述された部分(この場合は <length>〜</length>で囲まれている)の値を変更(改ざん)する(画面をクリックすると拡大表示します) |
IEで受付用フォームを開き、「署名データオープン」ボタンで改ざんしたXMLファイルを読み込む。改ざんされていないXMLデータの場合と違い、入力済みのテキストボックスはロックされず、内容の変更ができる。
|
|
| 画面17 フォーム上に改ざんされたXMLファイルを読み込むと、署名されたフィールドにロックはかからず、内容の変更ができるようになっている(画面をクリックすると拡大表示します) |
「署名検証」ボタンを押すと、「署名の有効性が確認できない」ときのメッセージが表示されることが分かる。
![]() |
| 画面18 署名の有効性が確認できないと、画面13の場合とは異なり、上記のダイアログボックスが表示される |
このように、署名後に改ざんが行われると「その署名が有効でない」ことが分かるため、「何らかの改ざんが行われている」ことが確認できる。改ざんが行われている場合は、署名の確認のダイアログボックスの表示が出ず、FormFlow99は署名検証失敗の通知しかしないため、上記のようなメッセージとなる。
| 認証局の相互運用を検証する |
今回の検証では、インハウスの認証局(企業内部に構築される独自の認証局)同士(Entrust/PKIとBaltimore UniCERT)は、双方向で相互認証(Cross Certification)している。VeriSignに関しては広く普及している現状を考慮し、これを利用した申請を受け付ける場合もあると考えられる。PKIの立場からいえば、PKIの認証ドメインが違う場合、相互認証パスの形成が必要である。しかし現実の運用を考えた場合、組織外とのデータの交換を行うときなど、必ずしも署名の発行元が同じとは限らないし、署名データの送り手と受け手が双方向の認証パスを形成している保証はない。
ここでは、PKIのべき論は抜きにして、多様な発行元の証明書を利用した署名検証の例を紹介することにしたい。署名の検証に関してはその証明書を使用するアプリケーションによって違ってくるため、すべてのアプリケーションに当てはまるわけではないが、ここではFormFlow99でどのようにして署名の検証ができるかを紹介しよう。
●署名の検証
署名の検証では、すでに触れたように次の2つの検証を行うことを目的としている。
- 改ざんの検知
- 証明書の検証
●証明書の検証
署名に含まれる証明書に関しては、その発行元や有効期限などを検証する。証明書を使用して確認される項目は、以下の4つである。
- 署名された内容は、フォームが署名されてから変更されていません(改ざんの検知)
- 証明書は失効していません(証明書の検証)
- 証明書は期限切れではありません(証明書の検証)
- 証明機関によって認証されています(証明書の検証)
証明書の発行元に関しては、IE内に取り込まれている「信頼されたルート認証機関」「中間証明機関」を参照して検証を行う。従って、このリストに含まれていない証明機関が発行した証明書が含まれている場合は、ユーザーに「信頼できるか?」というメッセージを表示し警告する。ユーザーがその証明機関を信頼する場合は、証明機関をリストに加えて処理を続行できるが、もし信頼できないのであれば、その時点で署名は無効として扱われる。それ以外にも、「失効された証明書」「有効期限切れの証明書」も検証するため、これらに該当する署名もまた無効となる。
![]() |
| 画面19 証明機関が認証されていないときに表示されるメッセージ(画面をクリックすると拡大表示します) |
●各認証局で発行された証明書の相互署名検証結果
今回、Entrust/VeriSign/Baltimoreと、異なるPKIシステムで発行された証明書を使用してFormFlow99に署名し、相互に署名検証を行った。
- Enrust → Entrust/Entelligence、Entrust/WebConnector
- VeriSign → VeriSign Class 1の証明書
- Baltimore → UniCertで発行した証明書
実験結果を以下の表に示す。
|
●詳細
(1) (2) (3) (5) (6) (8) (9) (10) (11) (12)
各証明書で署名したのち、署名の検証を実施
→ 電子署名の有無や改ざんの有無などの確認ができる
(4) VeriSignで署名しEntelligenceで検証
→署名されたXMLデータを読み込んだとき、ロックされなければならないテキストボックスが文字入力可能になってしまう。署名の確認もできない
(7) Baltimoreで署名しEntelligenceで検証
→署名されたXMLデータを読み込んだとき、ロックされなければならないテキストボックスが文字入力可能になる。署名の検証もできない。(4)と同じ現象
●検証結果の考察
Entrust/EntelligenceはEntrust形式のインターフェイスであるために、ほかの証明書の検証は行えない。WebConnectorを利用し、証明書をWebブラウザに発行した場合は、相互に署名の確認ができることが証明された。
| FormFlow99の応用例を考える |
FormFlow99は、電子帳票を作成/運用するうえにおいて非常に有用なツールであり、XML対応の面でも優れている。そのため、実際の適用範囲は広いが、ここでは電子署名を使用した場合の応用例について考えてみたい。
●電子申請
電子申請は現在、電子政府などで推進されている「e-Japan」実現の重要な目標の1つである(【参考記事】
特集:GPKIとはなにか?)。電子政府が実現したときに、私たちが一番メリットを感じるのが、この「電子申請」だろう。電子申請とは、各政府機関や自治体に対して各種申請を行う場合において、紙ではなく電子的なやりとりで申請作業を行うことだ。現状を見ると、申請を行う場合はその原本性や本人確認が行われることがある。電子申請を行う場合であっても、2001年4月から施行された「電子署名法」に基づき、本人性や原本性が確保された申請が要求されることになる。
FormFlow99では、すでに上記の申請に対応した各種フォームを提供しているため、これらのフォームに対して電子署名を付加することで、申請として有効になると思われる。現在、FormFlow99を中心として電子申請推進コンソーシアムにて、各種技術の検討や実証実験が積極的に行われている。電子申請の実際の運用においても、電子署名の相互検証は必須の要件となっており、今回の検証結果が生かされるだろう。
●企業間でのXMLデータの交換
近年、企業間におけるXMLでのデータ交換は現実的なものとなってきている。しかし前述のとおり、XMLのデータは単純なテキスト形式のため、改ざんされやすい構造となっている。企業間取引でのデータ交換は、そのまま企業情報の公開にもつながるため、安全性を確保したXMLデータへの電子署名は必須となるだろう。その際、各社それぞれが個別で構築した認証局で発行する証明書でのやりとりが予想される。この場合、認証局同士が相互認証をしていれば、送受信にかかわる証明書は信頼された署名となり、十分に信頼されたデータの交換が可能である。
| Index | |
| 特集:PKI対応アプリケーションを検証する | |
| FormFlow99でXMLデータに署名(Page-1) ・FormFlow99とは? ・XMLタグへの電子署名 ・電子証明書にはどんな種類がある? ・FormFlow99で電子署名を行う ・Entrust/Entelligenceによる電子署名 ・CryptoAPIによる電子署名 |
|
| 署名の有効性を検証してみよう(Page-2) ・署名を行った場合の動作を確認する ・改ざんされた場合の動作はどうなる? ・認証局の相互運用を検証する ・FormFlow99の応用例を考える |
|
| Security&Trust記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- この脆弱性対策エンジンは“永遠に完成しない” (2010/3/9)
パターンファイルに頼らず防御する「要の技術」は、いまも完成にはいたっていない。その理由とは―― - Gumblarがあぶり出す 「空虚なセキュリティ対策」 (2010/3/1)
ガンブラーの脅威は、組織の構造や外部委託問題をあぶり出します。そのセキュリティ対策、建前論になっていませんか? - 決済アプリのセキュリティ基準、PA-DSSとは (2010/2/24)
“ペイメントアプリケーション”のセキュリティ基準を定めたPA-DSS。厳密に定められた14の要件を、PCI DSSと対比させつつ解説します - 「鍵は“J”の中にあるよ」CTF by ダークナイト解答編 (2010/2/22)
ダークナイトからの挑戦状、いかがだっただろうか。WiresharkにNetworkMiner、WinRARを駆使し、“J”に隠された秘密を解き明かせ!
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |





















