説明

データレコードセットの完全性を保証する方法

本発明は,データベースの完全性および真正性が後刻検証できるような方法で,データベースへデータを格納するための方法と,システムと,計算機プログラムとに関する。本発明では,前のチェックサムと,格納すべきデータレコードと,格納かぎと,から計算されるチェックサムによってデータレコードに署名する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,データベース又は類似な情報記憶に格納されるデータレコードセットの完全性を保証するための方法と,システムと,計算機プログラムとに関する。
【背景技術】
【0002】
多くの計算機化されたアプリケーションは,格納すべき膨大な量のデータを作り出す。典型的には,計算機化されたアプリケーションのイベントは,ログファイルに記録される。ログファイルは,システム運用者,ソフトウェア開発者,セキュリティ担当者,およびさまざまな他のグループのための最も重要な情報源の一つである。
【0003】
伝統的に,ログデータファイルは,ログファイルにシーケンシャルに書かれる。ログファイルのほとんどの種別の基本要素は,ログファイル内の行としてしばしば表されるログレコードである。ログファイルの構造および内容が真正であり続けることが,きわめて重要である。特にセキュリティ監視のために,管理者が変更に気付かないうちに行を修正したり,削除したりされては決してならないことが重要である。
【0004】
ログファイルの完全性を保証するための周知の方法は,今日,既に存在する。例えば,各ログファイルに暗号化コードを関連付けるために,メッセージ認証コード(MAC:Message Authentication Codes)またはディジタル署名を使うことができる。もしファイルの内容が変化すれば,ディジタル署名または認証コードが変化するので,後に許可なくなされた修正を検知することができる。しかし,これらの方法は,ディジタル署名または他の種類の認証コードが,保護すべきファイルに割り付けられるまで,完全性を保護しない。
【0005】
しかし,多くのアプリケーションでは,格納する必要があるデータ量は膨大である。したがって,ログデータまたは類似のデータをリレーショナルデータベースに格納する必要がある。その際,完全性保護の問題は多少異なる。リレーショナルデータベースでは,データは属性のタプル,いわゆるレコードからなるテーブルに格納される。典型的には,ログの記録は,各ログの行が特定のデータベーステーブルのレコードに対応するように,データベースに格納される。
【0006】
リレーショナルデータベースにおける完全性保護は,伝統的に,許可されていないユーザがデータベースの内容を変更できないように,データベースのユーザのアクセス権を制限することに頼っている。アクセス制御は,リレーショナルデータベース管理システム(RDBMS)によって強制される。データベースの完全性を保証する他の方法は,それをディスクファイルにセーブして,上記のように暗号化コードを付加することである。
【0007】
この方法は,多くのデータベーステーブルがその性質として動的であり,極めて頻繁に更新しなければならないため,しばしば非実用的である。例えばログデータベースでは,銀行取引のように格納すべきデータ量が膨大であるため,1日のうちに生成されたログ記録を,常に関連するデータベーステーブルに挿入しなければならない。データベーステーブルの内容を固定し,その完全性を暗号化によるチェックサムで保護するのは,したがって,テーブルの内容がもはや更新されないと確信できるときだけ役に立つ。ログデータベースではこれは,情報を格納するために日次のデータベーステーブルを使わなければならないことを意味する。このような解決策の一つの欠点は,問合せが,それは何日分かのデータにアクセスするのであるが,一つの問合せを実行するのにいくつかのテーブル参照をしなければならないことである。
【0008】
米国特許第5978475号(Schneier et al.)はログファイルの完全性を検証する方法を開示している。しかし,この特許は,データレコード内のデータを修正する完全な権限を管理者が有するデータベース上においてデータ配置するための手段を開示していない。
【発明の開示】
【発明が解決しようとする課題】
【0009】
伝統的な解決策の主な欠陥は,データベースが利用されるが,そのデータベース管理者が完全には信頼できない環境では適用できないことである。ほとんどのRDBMSシステムにおいて,データベース管理者(DBA)は,データベースとその内容を修正する無制限に近い許可を持っている。悪意の管理者によって,データベースに挿入されるどんなデータも,暗号化によってデータが許可されていない修正から保護される前にすら,修正され得る。
【0010】
先行技術の主な欠点は,データベースへのアクセス権限を制御する問題である。更なる欠点は,ファイルが常に変化するので,データをディジタル署名してファイルに格納することができないことである。第3の主な欠点は,データベース管理者を信頼しなければならないことである。今日,管理者は,典型的には,実際にはデータベースに格納される情報について知る必要すらない技術者である。このように,複数の人が,データベースにデータを格納するためにアクセス権を持ちつつ,データベースの内容の完全性を検分したり,チェックしたりできる方法が必要とされる。
【発明を実施するための最良の形態】
【0011】
本発明は,データベースシステムにおいてデータ完全性を保証する方法に関する。本発明は,完全性検証に用いることができる公に入手可能な完全性チェックサムを使って,公に検分可能なデータベースを提供する解決策を開示している。本発明では,完全性チェックサムは,格納すべきデータと,前のレコードのチェックサムと,格納かぎとから暗号化方法を用いて計算される。格納かぎは,データベース上のデータに署名することが許可されているエンティティだけに発行される。署名エンティティは,データベース管理者と違っていてもよく,また違っているべきである。一つの解決策は,公開かぎ暗号を用いることであり,そこで,署名エンティティは,自分の秘密かぎを使って完全性チェックサムを計算し,完全性を検証したいと思う人は,検証のために署名エンティティの公開かぎを使うことができる。計算された完全性チェックサムは,次にデータレコードに付加される。第1レコードは,生成された初期レコードでもよいし,それ自身のチェックサムを計算するために必要な予め合意された前のチェックサムを利用してもよい。検証においては,完全性チェックサムが類似の方法で計算され,以前に計算されてそのデータレコードに付加されているチェックサムと比較される。
【0012】
本発明の利点は,完全性チェックを用いて真正なデータベースが得られることである。本発明の方法によれば,署名権者だけがデータベースの内容を変更できるように,データベースが署名される。本発明では,データベースに格納されたデータレコードは,計算された完全性チェックサムの連鎖を壊さない限り,決して消去または変更できない。
【実施例】
【0013】
添付の図面は,本発明の更なる理解のために含まれて本仕様の一部をなすものであり,本発明の実施例を図示し,記述と共に本発明の原理を説明するのを助ける。ここで,添付の図面に例を図示した本発明の実施例を詳細に参照する。
【0014】
図1は,完全性検証の基本原理を図示するフローチャートである。図1において,入力データはどんな適当な形式でもよい。しかし,本発明は,多くの登録データが速いペースで到着する場合にもっとも役に立つ。適当な登録データとは,例えば,典型的には大きなデータベースに格納される銀行取引のログファイルのデータレコードである。これらログファイルは真正でなければならず,また必要ならば法廷で受理されるように,各イベントを含んでいなければならない。
【0015】
図1において,データは署名エンティティ10に入力される。署名エンティティ10には,データレコードに署名する許可を得たそれ自身の管理者がいる。署名の形式は,ディジタル署名でも,暗号化でも,または一方向ハッシュでもよい。本明細書では,署名とは,チェックサムを計算し,計算されたチェックサムをデータレコードに付加するプロセスを言う。後に,署名かぎは,任意の種別の署名かぎでよい格納かぎと呼ばれる。一方,各署名済みレコードに署名者の名前を含むことができるように伝統的な公開かぎ暗号法を用いることも有用かも知れない。かぎが,秘密かぎファイルと,暗号化デバイスに入力された秘密のパスワード部とからなっているセキュアメールシステムに類似の方法で,かぎをシステムに挿入してもよい。かぎはまた,スマートカードまたはその類似物,若しくはいかなる他の適当なデバイスに挿入してもよい。
【0016】
本発明の方法は,署名すべきデータレコードと,前のレコードの完全性チェックサムと,格納かぎとから計算された完全性チェックサムを用いて各データレコードに署名する。計算された完全性チェックサムは,次にデータレコードに付加される。それはデータそのものに付加してもよいし,データベース11が完全性チェックサムのために別のフィールドを持ってもよい。計算されたチェックサムは前の完全性チェックサムに依存するので,完全性を壊すことなくレコードの途中から1以上の行を削除することはできない。なぜならば,検証には完全性チェックサムの完全な連鎖が必要なためである。完全性チェックサムを伴う署名済みデータは,データベース11に格納される。データベース管理者は格納されたデータに対してさまざまな処理を行うことができるが,秘密にデータの内容を変更したり,データレコードを削除したりすることはできない。
【0017】
結果として得られるデータレコードの完全性検証は,署名と類似の方法で行われる。検証エンティティ12が,署名すべきデータレコードと,前の完全性チェックサムと,格納かぎと,に基づいて完全性チェックサムを計算する。計算された完全性チェックサムは,次にデータベース11に格納されたチェックサムと比較される。もしチェックサムが同じでなければ,データベースは変更されており,真正ではない。本方法は,データレコードの完全性を,データベース全体の完全性をチェックする必要なく,すばやくチェックできる利点がある。検証は,連続するデータレコードのストリーム中の任意の点で開始できる。前の完全性チェックサムが取り出されるレコードの真正性は保証されないことに注意すべきである。このように,検証プロセスは,検証すべきデータレコードの前のデータレコードの完全性チェックサムを取り出すことから始めなければならない。
【0018】
もし公開かぎ暗号が署名に使われるならば,署名権者が署名エンティティ10において自分の秘密かぎでレコードに署名する。かぎは特定のデータベースの署名のために生成してもよいし,署名の許可を得ている信頼できるグループ内で共有してもよい。完全性の検証においては,署名権者の公開かぎがチェックサムの復号に使われる。
【0019】
データベースを始動するにはさまざまな方法がある。データベースの第1行に関しては,前の完全性チェックサムが得られないので,前の完全性チェックサムの代わりに初期化べクタを使ってもよい。第1行は,実際のデータを含んでも,または初期化に関連したデータを含んでもよい。例えば,初期化ベクタは,日付のような初期化に関する情報と,責任者のディジタル署名とを,チェックサムとして含んでもよい。このようにして,第1の実データレコードの前のチェックサムが得られる。初期化ベクタ,すなわち行はまた,データを複数のブロックに配置するためにデータベースの中央に適用してもよい。データを複数のブロックに配置しても,検証手続きには変更を生じない。
【0020】
図2はデータレコードを格納する一実施例のフローチャートを図示する。ステップ20において,データが任意の適当な情報システムから受信される。そのデータは,図1の実施例と類似である。データの受信後,ステップ21において完全性チェックサムが計算される。完全性チェックサムは,図1に示した実施例で開示したように,所望の周知の方法で計算することができる。完全性チェックサムは,前のデータレコードに付加されたチェックサムを指す前のチェックサムと,署名すべきデータと,格納かぎと,に基づいて計算される。データレコードに署名する許可を持つ人だけが格納かぎを知っている。前のチェックサムは,署名デバイスのメモリから読み出される。もし完全性チェックサムが常にデータベースから読み出されると,悪意を持つデータベース管理者がデータベースの最終行を何の問題もなく削除することができる。なぜならば,完全性チェックサムの連鎖が壊れないからである。最終行の真正性を保証する方法は外にも,例えば連続するシーケンス番号をチェックサムパラメータの一部として持つなどの方法がある。
【0021】
データレコードは,ステップ22に図示されるように,そのデータレコードに対して計算された完全性チェックサムを付加することによって,署名される。署名済みデータはデータベースに格納される。データベースには,データと完全性チェックサムとに別々のフィールドがあってもよい。データベースにはまた,完全性チェックサムを計算するために使うことのできる,例えば署名者の名前のような付加情報フィールドがあってもよい。データベースにデータを格納した後,完全性チェックサムは,ステップ24に図示したように,署名デバイスのメモリに格納される。これは,後で使うための前の完全性チェックサムが,一度計算されたら変化しないことを保証するためである。
【0022】
図3は,本発明の一実施例のブロック図を示す。図3においては,すべてのコンポーネントが個別に示されているが,本技術の当業者には,コンポーネントはまた,計算機プログラムの形で実装されてもよいことは明らかである。システムは,図2に記載された方法により機能する。かくしてこの機能は詳細には記述しない。
【0023】
本発明によるシステムは,データ源30と,署名エンティティ31と,データベース32と,データベース管理コンソール33と,検証エンティティ34とを備える。データ源30は,データベース32に格納する必要があるデータを生成する,いかなる情報システムであってもよい。署名エンティティ31は,例えば,データベースシステム32に接続された計算機において走る計算機プログラム,またはデータベースシステム32内のプログラムモジュールである。データベース32およびデータベース管理コンソール33は,オラクルデータベースシステムのような,任意の一般目的データベースシステムであってよい。検証エンティティ34は,署名エンティティ31と類似である。もし,公開かぎ基盤が使われるなら,署名エンティティ31は秘密かぎを持ち,検証エンティティ34は対応する公開かぎを持つ。
【0024】
本技術の当業者にとって,技術の進歩に伴って,本発明の基本思想がさまざまな方法で実装され得ることは明らかである。本発明およびその実施例は,したがって,上記の例に限定されず,代わりに本願請求項の範囲内で変形し得るものである。
【図面の簡単な説明】
【0025】
【図1】本発明の完全性検証の基本原理を図示するフローチャートである。
【図2】本発明のデータレコード格納の一実施例を図示するフローチャートである。
【図3】図2に提示されたシステムの実施例を図示するブロック図である。

【特許請求の範囲】
【請求項1】
データレコードを署名するために署名エンティティを用いるデータベースシステムにおいて,
データベースに格納すべきデータレコードを受信し,
格納すべき前記データレコードの前のデータレコードと共に格納されている第1の完全性チェックサムを取り出し,
格納すべき前記データレコードのための第2の完全性チェックサムを,格納かぎと,前記の取り出された第1の完全性チェックサムと,格納すべき前記データレコードと,に基づいて暗号化方法を用いて計算し,
前記データレコードおよび前記第2の完全性チェックサムをデータベースに格納する,
データレコードの格納方法。
【請求項2】
前記格納かぎは,公開鍵かぎ基盤の秘密かぎである請求項1記載の方法。
【請求項3】
前記データベースの第1行で取り出される完全性チェックサムは,生成された初期化ベクタである請求項1記載の方法。
【請求項4】
前記データベースの第1行で取り出される完全性チェックサムは,前記署名エンティティのディジタル署名である請求項1記載の方法。
【請求項5】
前記の第1の完全性チェックサムを,前記署名エンティティのメモリから取り出す請求項1記載の方法。
【請求項6】
前記の第2の完全性チェックサムを,前記署名エンティティのメモリに格納する請求項1記載の方法。
【請求項7】
前記完全性チェックサムは,連続するシーケンス番号からなる請求項1記載の方法。
【請求項8】
検証エンティティをデータレコードの完全性検証に用いるデータベースにおいて,
データベースから検証すべきデータレコードを取り出し,
データベースから検証すべき前記データレコードの完全性チェックサムを取り出し,
前記取り出したデータレコードの前のデータレコードの第1の完全性チェックサムを取り出し,
前記の取り出したデータレコードの第2の完全性チェックサムを,前記の取り出したデータレコードと,前記第1の完全性チェックサムと,格納かぎと,に基づいて計算し,
検証すべき前記データレコードの前記完全性チェックサムと,前記第2の完全性チェックサムとを比較し,もし前記データレコードの前記完全性チェックサムが前記第2の完全性チェックサムと同じならば,前記データレコードを真正とみなす,
データレコードの完全性検証方法。
【請求項9】
前記格納かぎは公開かぎ基盤の公開かぎである請求項8記載の方法。
【請求項10】
前記データベースの第1行で取り出される完全性チェックサムは,生成された初期化ベクタである,請求項8記載の方法。
【請求項11】
前記データベースの第1行で取り出される完全性チェックサムは,署名権者(authority)のディジタル署名である請求項8記載の方法。
【請求項12】
前記第1の完全性チェックサムを,前記検証エンティティのメモリから取り出す請求項8記載の方法。
【請求項13】
前記第2の完全性チェックサムを,前記検証エンティティのメモリに格納する請求項8記載の方法。
【請求項14】
前記完全性チェックサムは,連続するシーケンス番号からなる請求項8記載の方法。
【請求項15】
署名エンティティがデータレコードの署名に用いられ,検証エンティティがデータレコードの完全性検証に用いられるデータベースシステムにおいて,
署名されたデータを格納および提供するように構成されたデータベースと,
該データベースに格納すべきデータレコードを提供するように構成されたデータ源と,
前記データベースに格納すべきデータレコードに,該データレコードと,格納すべき前記データレコードの前のデータレコードの完全性チェックサムと,格納かぎと,に基づいて計算された完全性チェックサムで署名するように構成された署名エンティティと,
選択されたデータレコードの完全性を,該データレコードと,検証すべき前記データレコードの前のデータレコードの完全性チェックサムと,前記格納かぎと,に基づいて完全性チェックサムを計算し,前記の計算された完全性チェックサムと前記データベースに格納された完全性チェックサムとを比較することによって検証するように構成された検証エンティティと,
を備えるデータレコード格納システム。
【請求項16】
前記署名エンティティおよび検証エンティティは,前記チェックサムの計算および検証のために公開かぎ基盤を適用する請求項15記載のシステム。
【請求項17】
署名エンティティがデータレコードの署名に用いられるデータベースシステムにデータレコードを格納するための計算機プログラムであって,計算機により,
データベースに格納すべきデータレコードを受信するステップと,
格納すべき前記データレコードの前のデータレコードと共に格納される第1の完全性チェックサムを取り出すステップと,
付加すべき前記データレコードの第2の完全性チェックサムを,格納かぎと,前記の取り出された第1の完全性チェックサムと,格納すべき前記データレコードと,に基づいて暗号化方法を用いて計算するステップと,
前記データレコードおよび前記第2の完全性チェックサムを,前記データベースに格納するステップと,
を実行する計算機プログラム。
【請求項18】
前記格納かぎは,公開かぎ基盤の秘密かぎである請求項17記載の計算機プログラム。
【請求項19】
前記データベースの第1行で取り出される完全性チェックサムは,生成された初期化ベクタである請求項17記載の計算機プログラム。
【請求項20】
前記データベースの第1行で取り出される完全性チェックサムは,前記署名エンティティの前記ディジタル署名である請求項17記載の計算機プログラム。
【請求項21】
前記第1の完全性チェックサムを,前記署名エンティティのメモリから取り出す請求項17記載の計算機プログラム。
【請求項22】
前記第2の完全性チェックサムを,前記署名エンティティのメモリに格納する請求項17記載の計算機プログラム。
【請求項23】
前記完全性チェックサムは,連続するシーケンス番号からなる請求項17記載の計算機プログラム。
【請求項24】
データベース上のデータレコードの完全性を検証するための計算機プログラムであって,計算機でにより,
検証すべきデータレコードをデータベースから取り出すステップと,
検証すべき前記データレコードの完全性チェックサムを,データベースから取り出すステップと,
前記取り出されたデータレコードの前のデータレコードの第1の完全性チェックサムを取り出すステップと,
前記取り出されたデータレコードの第2の完全性チェックサムを,前記取り出されたデータレコードと,前記第1の完全性チェックサムと,格納かぎと,に基づいて計算するステップと,
前記第2の完全性チェックサムと,検証すべき前記データレコードの前記チェックサムとを比較し,もし検証すべき前記データレコードの前記完全性チェックサムと,前記第2の完全性チェックサムとが同じならば,前記データレコードを真正とみなすステップと,
を実行する計算機プログラム。
【請求項25】
前記格納かぎは,公開かぎ基盤の公開かぎである請求項24記載の計算機プログラム。
【請求項26】
前記データベースの第1行で取り出される完全性チェックサムは,生成された初期化ベクタである請求項24記載の計算機プログラム。
【請求項27】
前記データベースの第1行で取り出される完全性チェックサムは,署名権者のディジタル署名である請求項24記載の計算機プログラム。
【請求項28】
前記第1の完全性チェックサムを,前記検証エンティティのメモリから取り出す請求項24記載の計算機プログラム。
【請求項29】
前記第2の完全性チェックサムを,前記検証エンティティのメモリに格納する請求項24記載の計算機プログラム。
【請求項30】
前記完全性チェックサムは,連続するシーケンス番号からなる請求項24記載の計算機プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2007−510209(P2007−510209A)
【公表日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願番号】特願2006−537334(P2006−537334)
【出願日】平成16年12月17日(2004.12.17)
【国際出願番号】PCT/FI2004/000774
【国際公開番号】WO2005/059752
【国際公開日】平成17年6月30日(2005.6.30)
【出願人】(398012616)ノキア コーポレイション (1,359)
【Fターム(参考)】