(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-20
(54)【発明の名称】構造化形式ドキュメントの一意のコンテンツ決定
(51)【国際特許分類】
G06F 21/64 20130101AFI20231113BHJP
【FI】
G06F21/64
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023527982
(86)(22)【出願日】2021-11-09
(85)【翻訳文提出日】2023-06-15
(86)【国際出願番号】 US2021058514
(87)【国際公開番号】W WO2022099163
(87)【国際公開日】2022-05-12
(32)【優先日】2020-11-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523165547
【氏名又は名称】コネクティング ソフトウェア, インコーポレイテッド
(74)【代理人】
【識別番号】100078282
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】ベルンドルファー, トーマス
(72)【発明者】
【氏名】ぺルネツキー, スタニスラブ
(57)【要約】
構造化ドキュメントに関するダイジェストを生成するコンピュータ実装方法が、提供され、OOXMLドキュメントの複数のコンポーネントパーツのサブセットを選択することであって、コンポーネントパーツの選択されたサブセットのうちの少なくとも1つは、XMLファイルであり、サブセットを選択することは、「docProps\app.xml」、「docProps\core.xml」、および「docProps\custom.xml」という名前のファイルを除外する、ことと、コンポーネントパーツの選択されたサブセットを順序付けすることと、選択されたサブセット内に含まれないコンポーネントパーツを参照する少なくとも1つの関係性エントリを除去し、識別子値によって関係性をソートすることによって、関係性ファイルを処理することと、コンポーネントパーツの選択されたサブセット毎にコンポーネントハッシュ値を生成することとを含む。
【特許請求の範囲】
【請求項1】
構造化ドキュメントに関するダイジェストを生成するコンピュータ実装方法であって、
OOXMLドキュメントの複数のコンポーネントパーツのサブセットを選択することであって、コンポーネントパーツの前記選択されたサブセットのうちの少なくとも1つは、XMLファイルであり、前記サブセットを選択することは、「docProps\app.xml」、「docProps\core.xml」、および「docProps\custom.xml」という名前のファイルを除外する、ことと、
コンポーネントパーツの前記選択されたサブセットを順序付けすることと、
コンポーネントパーツの前記選択されたサブセットからの関係性ファイルを処理することであって、以下、すなわち、
前記選択されたサブセット内に含まれないコンポーネントパーツを参照する少なくとも1つの関係性エントリを除去することと、
識別子値によって前記関係性をソートすることと
であることと、
コンポーネントパーツの前記選択されたサブセット毎にコンポーネントハッシュ値を生成することと、
各コンポーネントハッシュ値をバイト配列に変換し、前記バイト配列を正準バイトストリームに付加することと
を含むコンピュータ実装方法。
【請求項2】
構造化ドキュメントに関するダイジェストを生成するコンピュータ実装方法であって、
構造化ドキュメントの複数のコンポーネントパーツのサブセットを選択することと、
コンポーネントパーツの前記サブセットを順序付けすることと、
コンポーネントパーツの前記サブセット毎にコンポーネントハッシュ値を生成することと、
各コンポーネントハッシュ値をバイト配列に変換し、前記バイト配列を正準バイトストリームに付加することと
を含むコンピュータ実装方法。
【請求項3】
前記構造化ドキュメントは、ZIPアーカイブであるOOXMLファイルであり、前記複数のコンポーネントパーツの各々は、ファイルである、請求項1に記載の方法。
【請求項4】
前記正準バイトストリームに関する全体ハッシュ値を計算することをさらに含む、請求項1に記載の方法。
【請求項5】
コンポーネントパーツの前記選択されたサブセットは、以下の日付、すなわち、
前記構造化ドキュメントが作成された日付、
前記構造化ドキュメントが最後に印刷された日付、
前記構造化ドキュメントが最後に編集された日付、および
前記構造化ドキュメントが最後に開かれた日付
のうちのいずれも含まない、請求項1に記載の方法。
【請求項6】
コンポーネントパーツの前記選択されたサブセットは、「_rels\.rels」という名前の関係性ファイルを含み、前記関係性ファイルは、タイプ「officeDocument」の関係性を含む、請求項2に記載の方法。
【請求項7】
コンポーネントパーツの前記選択されたサブセットは、「custom.xml」という名前のドキュメントを含まない、請求項1に記載の方法。
【請求項8】
前記正準バイトストリームに関する前記全体ハッシュ値をレコード内に記憶させることと、
前記第2の複数のコンポーネントパーツの第2のサブセットを選択することと、
第2の構造化ドキュメントの第2の複数のコンポーネントパーツを順序付けすることと、
コンポーネントパーツの前記第2のサブセット毎に第2のコンポーネントハッシュ値を生成することと、
各第2のハッシュ値を第2のバイト配列に変換し、前記第2のバイト配列を第2の正準バイトストリームに付加することと、
前記第2の正準バイトストリームに関する第2の全体ハッシュ値を計算することと、
前記第2の正準バイトストリームに関する前記第2のハッシュ値が前記レコード内の前記全体ハッシュ値と一致する場合、前記構造化ドキュメントが前記第2の構造化ドキュメントと実質的に同じであることを決定することと
をさらに含む、請求項1に記載の方法。
【請求項9】
実行可能なソフトウェア命令を含む非一時的なコンピュータ読取可能媒体であって、前記実行可能なソフトウェア命令は、実行されたとき、
構造化ドキュメントの複数のコンポーネントパーツのサブセットを選択することと、
コンポーネントパーツの前記サブセットを順序付けすることと、
コンポーネントパーツの前記サブセット毎にコンポーネントハッシュ値を生成することと、
各コンポーネントハッシュ値をバイト配列に変換し、前記バイト配列を正準バイトストリームに付加することと
を行う、媒体。
【請求項10】
前記構造化ドキュメントは、ZIPアーカイブであるOOXMLファイルであり、前記複数のコンポーネントパーツの各々は、ファイルである、請求項9に記載の媒体。
【請求項11】
実行されたとき、前記正準バイトストリームに関する全体ハッシュ値を計算する命令をさらに含む、請求項9に記載の媒体。
【請求項12】
コンポーネントパーツの前記選択されたサブセットは、以下の日付、すなわち、
前記構造化ドキュメントが作成された日付、
前記構造化ドキュメントが最後に印刷された日付、
前記構造化ドキュメントが最後に編集された日付、および
前記構造化ドキュメントが最後に開かれた日付
のうちのいずれも含まない、請求項9に記載の媒体。
【請求項13】
コンポーネントパーツの前記選択されたサブセットは、「_rels\.rels」という名前の関係性ファイルを含み、前記関係性ファイルは、タイプ「officeDocument」の関係性を含む、請求項10に記載の媒体。
【請求項14】
コンポーネントパーツの前記選択されたサブセットは、「custom.xml」という名前のドキュメントを含まない、請求項9に記載の媒体。
【請求項15】
前記媒体は、命令をさらに備え、前記命令は、実行されたとき、
前記正準バイトストリームに関する前記全体ハッシュ値をレコード内に記憶させることと、
前記第2の複数のコンポーネントパーツの第2のサブセットを選択することと、
第2の構造化ドキュメントの第2の複数のコンポーネントパーツを順序付けることと、
コンポーネントパーツの前記第2のサブセット毎に第2のコンポーネントハッシュ値を生成することと、
各第2のハッシュ値を第2のバイト配列に変換し、前記第2のバイト配列を第2の正準バイトストリームに付加することと、
前記第2の正準バイトストリームに関する第2の全体ハッシュ値を計算することと、
前記第2の正準バイトストリームに関する前記第2のハッシュ値が前記レコード内の前記全体ハッシュ値と一致する場合、前記構造化ドキュメントが前記第2の構造化ドキュメントと実質的に同じであることを決定することと
を行う、請求項9に記載の媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(発明の分野)
本開示は、構造化形式ドキュメントのコンテンツを分析することに関する。
【背景技術】
【0002】
(背景)
この背景の節は、概して、本開示の文脈を説明する目的のために提供される。現在名前を挙げられている発明者(一人または複数人)の著作物は、その著作物がこの背景の節ならびに出願時に別様に従来技術として適格とされ得ない説明の局面において説明される範囲において、本開示に対する従来技術として明示的にも黙示的にも認められない。
【0003】
デジタルファイルは、多くの産業を横断して、異なる目的のために使用される。HIPAA、SOX、GDPR、ISO 9000等のいくつかの産業規制は、セキュリティ保護、認証、または監査されなければならないデジタルファイルに制限を与える。
【0004】
一般的に、ファイルのコンテンツを査定するために、ハッシュ化が、使用される。ハッシュアルゴリズムは、一方向関数を使用してファイルのコンテンツを(ダイジェスト値とも呼ばれる)ハッシュ値にマップする。ファイル内の任意のデータに対する変更は、異なるハッシュ値を引き起こす。関連するハッシュアルゴリズムは、限定ではないが、メッセージダイジェスト5(MD5)と、リベストシャミアエーデルマン(RSA)と、セキュアハッシュアルゴリズム(SHA)と、スクリプトと、イーサハッシュと、巡回冗長検査(CRC)とを含む。
【0005】
ハッシュ化は、ファイルの現在のハッシュ値を計算し、それをそのファイルに関する前回のハッシュ値と比較することによって、ファイルが変更または更新されたかどうかを決定するために使用されることができる。ハッシュ値が異なる場合、最後のハッシュ値が計算されて以降、デジタルファイルのコンテンツが、変更されている。一致するハッシュ値は、デジタルファイルのコンテンツが変更されていないという高度な確実性を確認する。
【0006】
ハッシュ化を使用することによって、デジタルシールが、デジタルファイルのために作成されることができる。デジタルシールは、ブロックチェーンレジャ、例えば、ビットコインまたはイーサリアムレジャ内に記憶されるハッシュ値を含み得る。ハッシュ値は、デジタルシールから読み取られ、ファイルのコンテンツがデジタルシールが作成された時間におけるファイルのものと一致することを照合することができる。デジタルシールは、デジタルシールの真正性を確実にするために、ブロックチェーン技術を用いて管理され得る。データエラーおよびファイルへの意図的な修正は、異なるハッシュ値を結果としてもたらすため、ユーザまたはシステムは、本アプローチを用いてデジタルファイルのデータの完全性および真正性を証明し得る。
【0007】
Microsoft OfficeTMファイル(例えば、WordTM、ExcelTM、PowerPointTM等)等の構造化デジタルファイルは、例えば、コンテンツ、書式設定、メタデータ情報を含む種々の情報を含む。これらのファイルは、Open Office XML(OOXML)形式で記憶され得る。ファイルの最後のアクセス日または印刷日のようなメタデータ情報は、ファイル内の実質的な情報が変更されていないにもかかわらずファイルがアクセスされたときに更新または変更され得る。
【0008】
本出願の発明者が決定しているように、データの完全性または真正性と関連しない情報を含む構造化ドキュメントのコンテンツ全体を使用することは、ハッシュ化およびデジタルシールの有効性を限定し得る。加えて、デジタルファイル内に記憶された順序データは、実際、ファイル内の下層データが同一であるときにも、ハッシュ化結果の変動を引き起こし得る。より具体的には、ドキュメント間の差異が、ドキュメントのコンテンツまたは提示における差異を示さない場合がある。これらの非実質的な差異は、ユーザがドキュメントに対して変更を行っていない場合でも、ドキュメントがOfficeドキュメントエディタによって開かれた後、従来的なシーリングおよび認証プロセスを失敗させ得る。
【発明の概要】
【課題を解決するための手段】
【0009】
(概要)
本発明の目的は、特定のドキュメントのコピー間の変更の誤ったインジケーションを回避するために、構造化ドキュメントのコンテンツのみをハッシュ化することによって、構造化ドキュメント、例えば、OOXMLのハッシュ化およびデジタルシーリングの有用性を向上させることである。本目的は、下記に記載される特許請求の範囲による主題によって解決される。
【0010】
本発明の実施例は、特許請求の範囲、以下の説明、および図面において説明される。
【0011】
構造化ドキュメントに関するダイジェストを生成するためのコンピュータ実装方法が、提供される。方法は、OOXMLドキュメントの複数のコンポーネントパーツのサブセットを選択することであって、コンポーネントパーツの選択されたサブセットのうちの少なくとも1つは、XMLファイルであり、サブセットを選択することは、「docProps\app.xml」、「docProps\core.xml」、および「docProps\custom.xml」という名前のファイルを除外することと、コンポーネントパーツの選択されたサブセットを順序付けすることと、コンポーネントパーツの選択されたサブセットからの関係性ファイルを処理することとを含む。関係性ファイルを処理することは、選択されたサブセット内に含まれないコンポーネントパーツを参照する少なくとも1つの関係性エントリを除去することと、識別子値によって関係性をソートすることとを含む。コンピュータ実装方法はコンポーネントパーツの選択されたサブセット毎にコンポーネントハッシュ値を生成することと、各コンポーネントハッシュ値をバイト配列に変換し、そのバイト配列を正準バイトストリームに付加することとをさらに含む。
【0012】
構造化ドキュメントに関するダイジェストを生成するコンピュータ実装方法は、構造化ドキュメントの複数のコンポーネントパーツのサブセットを選択することと、コンポーネントパーツのサブセットを順序付けすることと、コンポーネントパーツのサブセット毎にコンポーネントハッシュ値を生成することと、各コンポーネントハッシュ値をバイト配列に変換し、そのバイト配列を正準バイトストリームに付加することとを含むように提供される。いくつかの実施例では、構造化ドキュメントは、OOXMLファイルであり、これは、ZIPアーカイブであり、複数のコンポーネントパーツの各々は、ファイルである。いくつかの実施例では、方法は、正準バイトストリームに関する全体ハッシュ値を計算することを含む。いくつかの実施例では、コンポーネントパーツの選択されたサブセットは、以下の日付、すなわち、構造化ドキュメントが作成された日付、構造化ドキュメントが最後に印刷された日付、構造化ドキュメントが最後に編集された日付、および構造化ドキュメントが最後に開かれた日付のうちのいずれも含まない。いくつかの実施例では、コンポーネントパーツの選択されたサブセットは、「_rels\.rels」という名前の関係性ファイルを含み、関係性ファイルは、タイプ「officeDocument」の関係性を含む。いくつかの実施例では、コンポーネントパーツの選択されたサブセットは、「custom.xml」という名前のドキュメントを含まない。いくつかの実施例では、コンピュータ実装方法は、正準バイトストリームに関する全体ハッシュ値をレコード内に記憶させることと、第2の複数のコンポーネントパーツの第2のサブセットを選択することと、第2の構造化ドキュメントの第2の複数のコンポーネントパーツを順序付けすることと、コンポーネントパーツの第2のサブセット毎に第2のコンポーネントハッシュ値を生成することと、各第2のハッシュ値を第2のバイト配列に変換し、その第2のバイト配列を第2の正準バイトストリームに付加することと、第2の正準バイトストリームに関する第2の全体ハッシュ値を計算することと、第2の正準バイトストリームに関する第2のハッシュ値がレコード内の全体ハッシュ値と一致する場合、構造化ドキュメントが第2の構造化ドキュメントと実質的に同じであることを決定することとを含む。
【0013】
実行可能なソフトウェア命令を含む非一時的なコンピュータ読取可能媒体が、提供され、実行可能なソフトウェア命令は、実行されたとき、構造化ドキュメントの複数のコンポーネントパーツのサブセットを選択することと、コンポーネントパーツのサブセットを順序付けすることと、コンポーネントパーツのサブセット毎にコンポーネントハッシュ値を生成することと、各コンポーネントハッシュ値をバイト配列に変換し、そのバイト配列を正準バイトストリームに付加することとを行う。いくつかの実施例では、構造化ドキュメントは、OOXMLファイルであり、これは、ZIPアーカイブであり、複数のコンポーネントパーツの各々は、ファイルである。いくつかの実施例では、媒体は、実行されたとき、正準バイトストリームに関する全体ハッシュ値を計算する命令をさらに含む。いくつかの実施例では、コンポーネントパーツの選択されたサブセットは、以下の日付、すなわち、構造化ドキュメントが、作成された日付、構造化ドキュメントが、最後に印刷された日付、構造化ドキュメントが、最後に編集された日付、または構造化ドキュメントが、最後に開かれた日付のうちのいずれも含まない。いくつかの実施例では、コンポーネントパーツの選択されたサブセットは、「_rels\.rels」という名前の関係性ファイルを含み、関係性ファイルは、タイプ「officeDocument」の関係性を含む。いくつかの実施例では、コンポーネントパーツの選択されたサブセットは、「custom.xml」という名前のドキュメントを含まない。いくつかの実施例では、媒体は、命令を含み、命令は、実行されたとき、正準バイトストリームに関する全体ハッシュ値をレコード内に記憶させることと、第2の複数のコンポーネントパーツの第2のサブセットを選択することと、第2の構造化ドキュメントの第2の複数のコンポーネントパーツを順序付けすることと、コンポーネントパーツの第2のサブセット毎に第2のコンポーネントハッシュ値を生成することと、各第2のハッシュ値を第2のバイト配列に変換し、その第2のバイト配列を第2の正準バイトストリームに付加することと、第2の正準バイトストリームに関する第2の全体ハッシュ値を計算することと、第2の正準バイトストリームに関する第2のハッシュ値がレコード内の全体ハッシュ値と一致する場合、構造化ドキュメントが第2の構造化ドキュメントと実質的に同じであることを決定することとを行う。
【図面の簡単な説明】
【0014】
【
図1】
図1は、本開示の実施形態による、ドキュメントを処理するためのシステムである。
【0015】
【
図2】
図2は、本開示の実施形態によるWord処理ドキュメントである。
【0016】
【
図3A】
図3a~3cは、本開示の実施形態による構造化ドキュメントの内部構造を図示している。
【
図3B】
図3a~3cは、本開示の実施形態による構造化ドキュメントの内部構造を図示している。
【
図3C】
図3a~3cは、本開示の実施形態による構造化ドキュメントの内部構造を図示している。
【0017】
【
図4】
図4は、本開示の実施形態によるOOXMLドキュメントのコンテンツファイルである。
【0018】
【
図5】
図5は、本開示のある実施形態による、構造化ドキュメントに関するダイジェストを生成するためのコンピュータ実装方法である。
【0019】
【
図6】
図6は、本開示のある実施形態による、構造化ドキュメントに関するダイジェストを決定するためのコンピュータ実装方法である。
【発明を実施するための形態】
【0020】
(説明)
前述において議論されたように、本明細書における教示は、構造化デジタルファイルをハッシュ化およびシーリングするための向上した方法に関する。デジタルファイルは、異なるファイル形式で表されることができる。いくつかのファイル形式では、ドキュメントは、そのドキュメントのコンテンツ、書式設定、および他の局面を表すファイルのセットを含むパッケージファイルである。例えば、Microsoft OfficeTMドキュメントは、Office Open XML(OOXML)ファイル形式で記憶される。OOXMLファイル形式は、Microsoft OfficeTMドキュメントのコンテンツを含む多数のXMLファイルをパッケージ化する。これらのファイルは、ZIPアーカイブファイル内にともにパッケージ化される、Microsoft Officeドキュメントのコンテンツ、形式、およびメタデータのXMLおよびデータファイルを含むオープンパッケージングコンベンション(OPC)パッケージ内に記憶され得る。本開示を用いて処理され得る例示的Microsoft OfficeTMドキュメントは、OOXML形式で記憶されるDOCX、XLSX、およびPPTXファイル拡張子を伴うファイルを含む。別の標準的なオープンドキュメント形式は、オープンドキュメントフォーマット(ODF)である。ODFドキュメントは、下記により詳細に解説されるように、XMLファイルのZIPアーカイブパッケージである。他のタイプの構造化デジタルファイルも、同様に好適であり得る。
【0021】
多くの構造化ドキュメントは、内部ファイルの特定の順序を要求せず、Officeドキュメントの外観またはコンテンツを改変することなくコンテンツが内部ファイル内で異なる順序で現れることを可能にし得る。例えば、Officeドキュメントは、見出し、本文テキスト、見出し1、見出し2等のスタイルのリストを定義し得る。これらのスタイルの定義は、ドキュメントの外観またはコンテンツを何ら変更することなく再配列され得る。いくつかの実施例では、スタイルの定義は、より大きな構造化ファイル(例えば、XMLファイル)の一部であり得、ドキュメントの外観またはコンテンツを変更することなく、そのファイルの先頭、中間、または末尾において存在し得る。1つのアプリケーション(例えば、Microsoft Office WordTM)によって作成されるドキュメントは、ある順序で、およびWord処理ドキュメントのある場所内にスタイル情報を保存し得る。構造化ドキュメントは、ドキュメントメタデータを改変し得るコンテンツ管理システム(CMS)内に記憶され得る。1つのそのようなCMSシステムは、SharePointTMである。ユーザがCMS内でドキュメントを開いたとき、CMSは、メタデータを修正し、ドキュメントを改変することなく、例えば、リスト項目の修正日を更新することによって、ドキュメントが開かれた日付を記録し得る。より具体的には、ドキュメントは、ドキュメントを閲覧または印刷するユーザにとっては同じ状態のままであるが、ドキュメント全体のハッシュは、元々のドキュメントのハッシュと一致しない。
【0022】
本開示のいくつかの実施例によると、1つまたはそれより多くのコンポーネントが、ハッシュ化およびデジタルシーリングのためのデジタルファイルを準備または処理するために使用され得る。例えば、いくつかの実施形態では、正準フォーマッタが、ハッシュ化のために正準形式でデジタルファイルを表すファイルのパッケージを配列するために使用され得る。正準フォーマッタは、ハッシュ化のためのデジタルファイルの正準ストリームを生成する。パッケージパーツセレクタが、ハッシュ化のためのデジタルファイルのうちの1つまたはそれより多くのパーツを選択するために使用される。関係性情報プロセッサが、デジタルファイル内に含まれる情報またはファイル内のユニバーサルリソース識別子によって識別される情報に従って関係性情報を処理する。
【0023】
図1は、本開示の実施形態による、ドキュメントを処理するためのシステムである。システム100は、中央処理ユニット(CPU)102と、ランダムアクセスメモリ(RAM)104と、ディスク106とを含む。ディスク106は、ドキュメント108と、プログラム110とを記憶する非一時的なコンピュータ読取可能媒体である。ドキュメント108は、デジタル的にシーリングされる、例えば、XMLベースのオープンドキュメント規格に従ってフォーマットされることになるドキュメントである。プログラム110は、本開示に説明される方法を実施するためのソフトウェアプログラムである。動作時、CPU102は、プログラム110をRAM104内に読み込み、プログラム110を実行する。プログラム110は、ドキュメント108をRAM内に読み込み、本開示に説明される方法を実施し、ドキュメント108のコンテンツの一部の正準ストリーム112を生成する。ドキュメント108’上でのプログラム110の後の実行は、正準ストリーム112’を生成する。正準ストリーム112と112’との比較(例えば、それぞれをハッシュ化し、それらのハッシュ値を比較することによる比較)は、ドキュメント108の関連するコンテンツがドキュメント108’のものと一致するかどうかを決定する。
【0024】
プログラム110は、正準変換113を含む。正準変換113は、デジタルファイルを表すファイルのパッケージを正準順序で配列し、ドキュメントの最終的なダイジェストの中に組み合わせられることになるハッシュ値のシーケンスを制御する。いくつかの実施例では、正準変換113は、ファイルがパッケージ内に記憶された順序から独立した順序でドキュメント内のファイルを配列するためのルールを適用し得る。正準フォーマッタは、デジタルファイルまたはそれを表すパッケージのコンテンツを修正しないが、代わりに、パッケージのコンテンツの順序から独立した様式でファイルのコンテンツをハッシュ化および照合するためにRAM104内で正準形態のデータを生成する。
【0025】
Microsoft OPCデジタル署名フレームワークは、OPCパッケージに関する例示的正準フォーマッタを図示している。デジタル署名フレームワークは、OPCパッケージに関するハッシュ値の作成および検証を標準化する。本フレームワークは、OPCパッケージ内のユニバーサルリソース識別子によって正準形態を規定する。例えば、OPCデジタル署名フレームワークは、OPCパッケージ内の「manifest」タグによって識別されるマニフェストファイルを識別する。例示的マニフェストタグは、<Manifest xmlns:opc=“http://schemas.openxmlformats.org/package/2006/digital-signature”>である。マニフェストファイルは、全てのパッケージパーツおよびパッケージ関係性のコレクションである。マニフェストファイルのコンテンツは、OPCパッケージをハッシュ化のための正準形態で配列するために、OPCデジタル署名フレームワークによって使用されることができる。いくつかの実施例では、マニフェストファイルは、SignedXml APIを使用して署名され、署名は、マニフェストファイルとともにOPCパッケージ内に保存される。OPCデジタル署名フレームワークは、(https://www.w3.org/TR/xmldsig-core1/において見つけられ得る)W3C XMLデジタル署名規格およびOPCパッケージのコンテンツの処理をサポートする。
【0026】
いくつかの実施例では、プログラム110は、パッケージパーツセレクタ114を含む。パッケージパーツセレクタ114は、ハッシュ生成内に含められることになるパッケージのパーツ(例えば、ハッシュ化されることになるドキュメント)を選択する。いくつかの実施例では、パッケージパーツセレクタ114は、ドキュメントの外部にあるファイルを読み取り、そのファイルは、ハッシュプロセスに含められる、および/または、ハッシュプロセスから除外されるドキュメントのパーツを規定する。いくつかの実施例では、パッケージパーツセレクタ114は、ドキュメント内で定義される属性または関係性を含む基準の所定のセットに基づいて、ハッシュ化のために使用または除外するべき情報を決定する。
【0027】
いくつかの実施例では、選択基準は、ダイジェスト化されることになるデジタルファイル内に明示的に含められる。1つのアプローチは、ダイジェストプロセスに含められる(またはダイジェストプロセスから除外される)べきであるファイルを示すマニフェストファイル内にフラグを含めることである。いくつかの実施例では、選択基準は、標準化された正準形態等の外部ソースへの参照によって規定される。1つのアプローチは、ドキュメント内のファイル内に埋め込まれたユニバーサルリソース識別子において選択基準を規定することである。いくつかの実施例では、選択基準は、ダイジェスト化されることになるファイルの外部で規定される。契約書をダイジェスト化するための例示的規格は、書式設定情報が法的契約書の要旨と関連していないため、コンテンツファイル(「document.xml」および「image1.svg」)のみを含む。公開された著作物をダイジェスト化するための例示的規格は、書式設定が、多くの場合、公開された著作物を拡張させ、時として、定義するため、メタデータのみを除外する。コンピュータ支援設計(CAD)ファイルをダイジェスト化するための例示的規格は、シミュレーション入力および結果を除外するが、構造的設計要素を含む。CAD設計をダイジェスト化するための別の例示的規格は、企業ロゴ、著作権表示、および他の非エンジニアリング情報を除外する。正準形態の例示的仕様は、Word処理ドキュメント、スプレッドシート、およびプレゼンテーションを含む異なるタイプのドキュメントに関する形態を含む。
【0028】
いくつかの実施例では、パッケージパーツセレクタ114は、パッケージ内の情報に関する参照タイプに基づいて、Microsoft OfficeTMドキュメントに関するOPCパッケージコンテンツのパーツを選択する。1つのアプローチでは、パッケージパーツセレクタ114は、OPCパッケージ内に表されるようなドキュメントのコンテンツ、スタイル、およびレイアウトを識別する全てのパッケージパーツを選択する。したがって、パッケージパーツセレクタ114は、ファイルの完全性または真正性と関連しないと見なされたデジタルファイルの最後にアクセスされた日付等のあるメタデータを除外する。ある実施例として、パッケージパーツセレクタ114は、カスタムパーツおよびOPCパッケージ内のカスタムXMLプロパティへの参照等のOPCパッケージ内のある情報を除外する。いくつかの実施例では、パッケージパーツセレクタ114は、マニフェストファイル内に説明される情報に基づいて、OPCパッケージのパーツを選択する。パッケージパーツセレクタ114は、情報を選択し、ここで、ContentType==“application/vnd.openxmlformats-package.relationships+xml”または“application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml”である。
【0029】
いくつかの実施例では、本開示の目的をさらに前進させるために、関係性情報プロセッサ116が、正準形態で情報のブロックを並べ替え得る。いくつかの実施例では、関係性情報プロセッサ116は、並び替えられたとき、同等であるドキュメント内の構造化データを識別する。関係性情報プロセッサ116は、ハッシュ関数の中にフィードされることになる情報の一貫した順序を維持するために、正準形態でそのデータを並べ替える。いくつかの実施例では、関係性情報プロセッサ116は、そのファイル内のユニフォームリソースロケータ値に従ってマニフェストファイルのコンテンツをソートする。いくつかの実施例では、関係性情報プロセッサ116は、スタイルの名前に従って「styles.xml」のコンテンツをソートする。いくつかの実施例では、関係性情報プロセッサ116は、順序付けされていないXMLファイル内の各要素のコンテンツのハッシュ値を生成し、生成されたハッシュ値に基づいて要素をソートする。
【0030】
いくつかの実施例では、構造化ドキュメントは、ドキュメントを表すパッケージ内のファイルとデータとの間の関係性の詳細を規定する関係性情報を含む。関係性情報は、ドキュメントの閲覧者/編集者がドキュメント内のファイルをナビゲートするためのロードマップを提供し、それらの間の関係性を規定する。いくつかの実施例では、パッケージの関係性情報は、XML等のマークアップ言語において規定される。例えば、OPCパッケージは、パッケージの種々のパーツ間の関係性を規定する関係性情報を含む。OPCパッケージ内の関係性情報は、<Relationships>タグを使用してマニフェストファイル内に記憶または識別される。例示的なタグは、<Relations xmlns=“http://schemas.openxmlformats.org/package/2006/relationships”>である。
【0031】
いくつかの実施例では、関係性情報は、パッケージ内に記憶された順序ファイルに基づいて生成される。ドキュメントAおよびドキュメントBが同一のファイルを含むが異なる順序にある場合、両方のドキュメントが閲覧されたときに同じように現れる場合でも、ドキュメントAのコンテンツ上のハッシュは、ドキュメントBのものとは異なる。関係性情報プロセッサ116は、したがって、そのファイルがハッシュ関数の中にフィードされる前に、マニフェストファイルのコンテンツをソートし、パッケージ内に記憶された順序ファイルから独立した関係性情報の一貫したハッシュ化を提供する。
【0032】
図2は、本開示の実施形態によるWord処理ドキュメントである。ドキュメント200は、印刷プレビューモードでMicrosoft Word
TM等のWord処理プログラム内に示される。ドキュメント200は、タイトル202、箇条書きテキスト要素204、画像206、および表208等のコンテンツを含み得る。ドキュメント200は、複数ページのドキュメントの最初のページであり得る。ドキュメント200は、ドキュメントを閲覧または編集するときに非可視である、他のデータ(例えば、メタデータ)も含み得る。例えば、メタデータは、ドキュメントが作成された時間、最後に編集された時間、および最後に開かれた時間を記録し得る。
【0033】
図3aは、本開示の実施形態による、ドキュメントの内部構造を図示している。ドキュメント300は、Microsoft Word
TMによって作成されるもの等のOpen Office拡張可能マークアップ言語(OOXML)形式としてディスク106内にある。ドキュメント300は、サブディレクトリ内に整理されたファイルを含むZIPアーカイブファイルコンテナとして記憶される。ドキュメント300は、サブディレクトリ302~312およびファイル319を含む。ファイルのこのコレクションは、
図2に図示されるように、Word処理プログラムによってRAM104内に読み込まれ、閲覧され得る。
【0034】
「[Content_Types].xml」という名前のファイル319は、ドキュメント300内で使用されるコンテンツのタイプを定義し、ドキュメント300内の他のファイル319を参照する。フォルダ302は、「docProps」と名付けられ、ドキュメント300についてのメタデータを含む。例えば、「app.xml」という名前のファイル319は、ドキュメントを作成するために使用されるアプリケーションを「Microsoft Office Word」バージョン16.0000として識別する。「core.xml」という名前のファイル319は、ドキュメント300に関するドキュメントの件名、作成者、作成日、および最後に修正された日付を含むドキュメントプロパティを列挙する。いくつかの実施例では、フォルダ302は、「custom.xml」という名前のファイルも含み得、これは、標準メタデータフィールド以外に、付加的なメタデータを含む。パッケージパーツセレクタは、「app.xml」、「core.xml」、および「custom.xml」を含むフォルダ302内のファイルを除外する。フォルダ304は、「word」と名付けられ、ドキュメント300を構成するテキストコンテンツおよび書式設定の6つのファイルを含む。「document.xml」という名前のファイル319は、タイトルと、箇条書きリストのテキストと、表のテキストとを含むドキュメント300に関するテキストを含む。「fontTable.xml」という名前のファイル319は、ドキュメント300内で使用されるフォントを列挙し、「numbering.xml」という名前のファイル319は、箇条書きリスト内で使用される箇条書き記号のスタイルを説明する。「settings.xml」という名前のファイル319は、ドキュメント200に示されるような、ハイパーリンクの書式設定等のWord処理アプリケーションに関するいくつかの設定を規定する。「styles.xml」という名前のファイル319は、ドキュメント内で使用される定義済みの書式設定スタイルを列挙する。「webSettings.xml」という名前のファイル319は、ドキュメントをウェブ閲覧のためのHTMLに変換するための種々のXMLスキーマを参照する。
【0035】
フォルダ306は、2つの画像ファイルを含む。画像ファイル319は、「image1.png」および「image2.svg」と名付けられ、同一の飛行機アイコン206のための2つの異なる画像ファイルである。フォルダ308は、「theme1.xml」という名前の単一のファイル319を含み、これは、カラーおよびスタイルを協調させるためにMicrosoft Wordによって使用されるドキュメントテーマを定義する。
【0036】
「[Content_Types].xml」および「document.xml.rels」という名前のファイル319は、ドキュメント300内の他のファイルを列挙および分類するマニフェストである。
【0037】
図3bは、本開示の実施形態による、ドキュメントの内部構造を図示している。ドキュメント350は、オープンドキュメントフォーマット(ODF)ファイルとしてディスク106内にある。ドキュメント350は、ファイルおよびサブフォルダを含むZIPアーカイブファイルコンテナとして記憶される。ドキュメント350は、ファイル352~360およびサブフォルダ351を含む。ファイルのこのコレクションは、
図2に図示されるように、Word処理プログラムによってRAM104内に読み込まれ、閲覧され得る。ファイル352は、「meta.xml」と名付けられ、ドキュメントの作成者の名前、最後に印刷された日付、ファイルを作成するために使用されるソフトウェアの名前等のドキュメント350に関するメタデータを含む。ファイル354は、「style.xml」と名付けられ、ドキュメント内で使用される定義済みの書式設定スタイルを列挙する。ファイル356は、「setting.xml」と名付けられ、Word処理プログラムに関する設定を含む。ファイル358は、「content.xml」と名付けられ、
図2に示されるテキストおよび書式設定等のドキュメント350のコンテンツを含む。ファイル360は、「manifest.xml」と名付けられ、ドキュメント350内で使用される他の定義済みのタイプのコンテンツを列挙し、ドキュメント350内の他のファイル352~360を参照する。パッケージパーツセレクタは、ファイル352を除外する。
【0038】
図3cは、本開示の実施形態による、ドキュメントの内部構造を図示している。ドキュメント370は、メタデータ372およびコンテンツ374を含む構造化ドキュメントとしてディスク106内に記憶される。メタデータ372は、最後に印刷された日付等のドキュメント370に関するメタデータを含む。パッケージパーツセレクタは、メタデータ372を除外する。
【0039】
図4は、本開示の実施形態によるOOXMLドキュメントコンテンツファイルである。コンテンツファイル400は、要素402~428を含むXML形式のドキュメントである。要素402は、ドキュメント300内に見つけられるコンテンツタイプのコンテナである。要素404~412は、ファイル拡張子に基づいてデフォルトコンテンツを定義する。例えば、要素404は、「png」という名前のファイル拡張子404aを伴うドキュメント内のファイルに関して「image/png」という名前のコンテンツタイプ404bを定義し、これは、ポータブルネットワークグラフィック画像ファイルである。要素412~428は、デフォルトコンテンツタイプに対するオーバーライドを定義する。例えば、要素412は、「/word/document.xml」という名前のパーツ412aとして識別される具体的なファイルに関して、「document.main+xml」(図において、明瞭性のために短縮されている)のコンテンツタイプ412bを定義する(省略されていないコンテンツタイプ412aは、「application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml」である)。このコンテンツタイプは、パーツ412aがWord処理ドキュメントの主要コンテンツであることを意味する。パッケージパーツセレクタは、426および428によって参照されるファイルを除外する。
【0040】
図5は、本開示のある実施形態による、構造化ドキュメントに関するダイジェストを生成するためのコンピュータ実装方法である。方法500は、ドキュメント108等のドキュメントに対して実施するための機能性の6つのブロックを含む。ブロック502において、CPU102は、ファイルのZIPアーカイブである構造化ドキュメントを読み込み、ダイジェストプロセスにおいて除外されるファイルを識別する。上記に議論されたように、「docProps」フォルダ内のファイル、すなわち、app.xml、core.xml、および(存在する場合)custom.xmlは、除外される。
【0041】
ブロック504において、CPU102は、除外されないファイルのセットを正準順序で順序付けする。一実施例では、CPU102は、ZIPアーカイブ内に含まれるマニフェストファイルを読み取ることによってファイルのセットを決定する。別の実施例では、CPU102は、ZIPアーカイブ内のファイルをリスト化することによってファイルのセットを決定する。CPU102は、ファイル参照をアルファベット順にソートし、ソートされたリストを生成する。いくつかの実施例では、ドキュメント内のファイルのリストは、
図3aに示される。いくつかの実施例では、CPU102は、以下のように、パス(またはURL)によってファイル参照をアルファベット順にソートする。
・ _rels/
*/.rels
・ word\_rels\document.xml.rels
・ word\document.xml
・ word\fontTable.xml
・ word\media\image1.png
・ word\media\image2.svg
・ word\numbering.xml
・ word\settings.xml
・ word\styles.xml
・ word\theme\theme1.xml
・ word\webSettings.xml
【0042】
関係性ファイル(例えば、「.RELS」拡張子を伴うもの)は、(https://www.ecma-international.org/publications-and-standards/standards/ecma-376/において入手可能である)Office Open XML, Part 2: Open Packaging Conventions(2006年12月)の第12.2.4.26章において規定されるもの等の関係性変換アルゴリズムを用いて事前処理されてもい。この処理は、無視可能コンテンツを除去するためのステップ、バージョニング命令、欠損パーツへの参照等を含む。この処理は、それらのId値によって関係性をソートすることも含む。この処理は、パッケージパーツセレクタによって省略されるパーツを参照する任意の関係性も関係性ファイルから省略する。関係性ファイル内の関係性エントリは、以下の実施例のように、関係性識別子および標的ファイル名を含む。
<Relationship Id=“rId2”
Type=“http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles”Target=“styles.xml”/>
【0043】
ブロック506では、CPU102は、ファイルのリスト内のファイルがハッシュ化するためのダイジェスト値を生成する。CPU102は、現在のファイルのコンテンツをバイトのストリームとして読み取り、そのデータを規定されたハッシュ関数の中にフィードする。ハッシュ関数の出力は、ダイジェストである。
【0044】
ブロック508では、CPU102は、ブロック506からのダイジェストを、RAM104内に記憶されたバイト配列に変換する。このバイト配列は、ハッシュ関数にとって好適な入力である。ブロック506および508は、ファイル毎に繰り返される。
【0045】
ブロック510では、CPU102は、ブロック508からのバイト配列を単一の正準ストリームと結び付ける。付加的なファイルがダイジェスト化されなかった場合、CPU102は、ブロック506に戻る。
【0046】
ブロック512では、CPU102は、最終的なハッシュを計算するために、正準ストリームを返す。CPU102は、正準ストリームからデータのバイトを読み取り、そのデータをハッシュ関数の中にフィードする。結果として生じるダイジェストは、RAM104内に記憶され、前から存在するダイジェスト値との比較のために、または新たなデジタルシールへの組み込みのために使用可能である。
【0047】
いくつかの実施例では、ブロック502、504、および506は、方法500の結果に影響を与えることなく再配列される。
【0048】
図6は、本開示のある実施形態による、構造化ドキュメントに関するダイジェストを決定するためのコンピュータ実装方法である。方法600は、ドキュメント370等のドキュメントに対して実施するための機能性の6つのブロックを含む。XMLコンテナは、ソートするために一意の識別子または他の有用なキーを含む必要はない。2つのコンテナは、同一の名前を有し、異なるコンテンツを伴い、例えば、コンテナは、ドキュメント内のコンテンツおよび位置によってのみ異なる箇条書きリストのコンテナと区別可能である箇条書きリストを識別し得る。
【0049】
ブロック602において、CPU102は、要素のコンテナを備える構造化ドキュメントを読み込む。CPU102は、コンテナ毎にダイジェスト値を生成し、そのそれぞれのコンテナと関連付けられるバイト配列としてそのダイジェストをRAM104内に記憶させる。
【0050】
ブロック604において、CPU102は、構造化ドキュメントのセクションを正準順序で並べ替える。CPU102は、対応するダイジェスト値によってコンテナをソートする。
【0051】
ブロック606において、CPU102は、最終的なダイジェストから除外されることになるコンテナを識別する。一実施例では、CPU102は、ドキュメントプロパティを含むメタデータコンテナを除外する。
【0052】
ブロック608において、CPU102は、ブロック602からのバイト配列を単一の正準ストリームと結び付ける。
【0053】
ブロック610において、CPU102は、関係性情報に関する最終的なハッシュを計算するために、正準ストリームを返す。CPU102は、正準ストリームからデータのバイトを読み取り、そのデータを規定のハッシュ関数(ブロック506内のものと同一である必要はない)の中にフィードする。結果として生じるダイジェストは、RAM104内に記憶され、前から存在するダイジェスト値との比較のために、または新たなデジタルシールへの組み込みのために使用可能である。
【0054】
当業者は、開示される実施形態において、本発明の精神および範囲から全く逸脱することなく、いくつかの変形が行われ得ることを理解するであろう。例えば、開示される実施形態は、Open XML Microsoft Officeファイル形式に関するが、上記に説明された方法は、他の形式およびタイプのデジタルファイルをシーリングおよび照合するために使用され得る。上記に説明された方法は、デジタル回路網、プロセッサによる実行のための命令、またはその任意の好適な組み合わせにおいて実装され得る。
【0055】
コンポーネント、プロセスステップ、および他の要素への具体的な言及は、限定的であることを意図されていない。さらに、同様のパーツは、図を交互に参照したとき、同一または同様の参照番号を有することを理解されたい。さらに、図は概略的であり、当業者に対する指針のために提供され、必ずしも縮尺通りに描かれてはいないことに留意されたい。むしろ、図に示される、種々の図面縮尺、アスペクト比、およびコンポーネントの数は、ある特徴または関係性をより理解し易くするために、意図的に歪曲され得る。
【国際調査報告】