(57)【要約】  本発明は，データベースの完全性および真正性が後刻検証できるような方法で，データベースへデータを格納するための方法と，システムと，計算機プログラムとに関する。本発明では，前のチェックサムと，格納すべきデータレコードと，格納かぎと，から計算されるチェックサムによってデータレコードに署名する。
2007510209.tif 000002
【特許請求の範囲】
【請求項１】
データレコードを署名するために署名エンティティを用いるデータベースシステムにおいて，
データベースに格納すべきデータレコードを受信し，
格納すべき前記データレコードの前のデータレコードと共に格納されている第１の完全性チェックサムを取り出し，
格納すべき前記データレコードのための第２の完全性チェックサムを，格納かぎと，前記の取り出された第１の完全性チェックサムと，格納すべき前記データレコードと，に基づいて暗号化方法を用いて計算し，
前記データレコードおよび前記第２の完全性チェックサムをデータベースに格納する，
データレコードの格納方法。
【請求項２】
前記格納かぎは，公開鍵かぎ基盤の秘密かぎである請求項１記載の方法。
【請求項３】
前記データベースの第１行で取り出される完全性チェックサムは，生成された初期化ベクタである請求項１記載の方法。
【請求項４】
前記データベースの第１行で取り出される完全性チェックサムは，前記署名エンティティのディジタル署名である請求項１記載の方法。
【請求項５】
前記の第１の完全性チェックサムを，前記署名エンティティのメモリから取り出す請求項１記載の方法。
【請求項６】
前記の第２の完全性チェックサムを，前記署名エンティティのメモリに格納する請求項１記載の方法。
【請求項７】
前記完全性チェックサムは，連続するシーケンス番号からなる請求項１記載の方法。
【請求項８】
検証エンティティをデータレコードの完全性検証に用いるデータベースにおいて，
データベースから検証すべきデータレコードを取り出し，
データベースから検証すべき前記データレコードの完全性チェックサムを取り出し，
前記取り出したデータレコードの前のデータレコードの第１の完全性チェックサムを取り出し，
前記の取り出したデータレコードの第２の完全性チェックサムを，前記の取り出したデータレコードと，前記第１の完全性チェックサムと，格納かぎと，に基づいて計算し，
検証すべき前記データレコードの前記完全性チェックサムと，前記第２の完全性チェックサムとを比較し，もし前記データレコードの前記完全性チェックサムが前記第２の完全性チェックサムと同じならば，前記データレコードを真正とみなす，
データレコードの完全性検証方法。
【請求項９】
前記格納かぎは公開かぎ基盤の公開かぎである請求項８記載の方法。
【請求項１０】
前記データベースの第１行で取り出される完全性チェックサムは，生成された初期化ベクタである，請求項８記載の方法。
【請求項１１】
前記データベースの第１行で取り出される完全性チェックサムは，署名権者（ａｕｔｈｏｒｉｔｙ）のディジタル署名である請求項８記載の方法。
【請求項１２】
前記第１の完全性チェックサムを，前記検証エンティティのメモリから取り出す請求項８記載の方法。
【請求項１３】
前記第２の完全性チェックサムを，前記検証エンティティのメモリに格納する請求項８記載の方法。
【請求項１４】
前記完全性チェックサムは，連続するシーケンス番号からなる請求項８記載の方法。
【請求項１５】
署名エンティティがデータレコードの署名に用いられ，検証エンティティがデータレコードの完全性検証に用いられるデータベースシステムにおいて，
署名されたデータを格納および提供するように構成されたデータベースと，
該データベースに格納すべきデータレコードを提供するように構成されたデータ源と，
前記データベースに格納すべきデータレコードに，該データレコードと，格納すべき前記データレコードの前のデータレコードの完全性チェックサムと，格納かぎと，に基づいて計算された完全性チェックサムで署名するように構成された署名エンティティと，
選択されたデータレコードの完全性を，該データレコードと，検証すべき前記データレコードの前のデータレコードの完全性チェックサムと，前記格納かぎと，に基づいて完全性チェックサムを計算し，前記の計算された完全性チェックサムと前記データベースに格納された完全性チェックサムとを比較することによって検証するように構成された検証エンティティと，
を備えるデータレコード格納システム。
【請求項１６】
前記署名エンティティおよび検証エンティティは，前記チェックサムの計算および検証のために公開かぎ基盤を適用する請求項１５記載のシステム。
【請求項１７】
署名エンティティがデータレコードの署名に用いられるデータベースシステムにデータレコードを格納するための計算機プログラムであって，計算機により，
データベースに格納すべきデータレコードを受信するステップと，
格納すべき前記データレコードの前のデータレコードと共に格納される第１の完全性チェックサムを取り出すステップと，
付加すべき前記データレコードの第２の完全性チェックサムを，格納かぎと，前記の取り出された第１の完全性チェックサムと，格納すべき前記データレコードと，に基づいて暗号化方法を用いて計算するステップと，
前記データレコードおよび前記第２の完全性チェックサムを，前記データベースに格納するステップと，
を実行する計算機プログラム。
【請求項１８】
前記格納かぎは，公開かぎ基盤の秘密かぎである請求項１７記載の計算機プログラム。
【請求項１９】
前記データベースの第１行で取り出される完全性チェックサムは，生成された初期化ベクタである請求項１７記載の計算機プログラム。
【請求項２０】
前記データベースの第１行で取り出される完全性チェックサムは，前記署名エンティティの前記ディジタル署名である請求項１７記載の計算機プログラム。
【請求項２１】
前記第１の完全性チェックサムを，前記署名エンティティのメモリから取り出す請求項１７記載の計算機プログラム。
【請求項２２】
前記第２の完全性チェックサムを，前記署名エンティティのメモリに格納する請求項１７記載の計算機プログラム。
【請求項２３】
前記完全性チェックサムは，連続するシーケンス番号からなる請求項１７記載の計算機プログラム。
【請求項２４】
データベース上のデータレコードの完全性を検証するための計算機プログラムであって，計算機でにより，
検証すべきデータレコードをデータベースから取り出すステップと，
検証すべき前記データレコードの完全性チェックサムを，データベースから取り出すステップと，
前記取り出されたデータレコードの前のデータレコードの第１の完全性チェックサムを取り出すステップと，
前記取り出されたデータレコードの第２の完全性チェックサムを，前記取り出されたデータレコードと，前記第１の完全性チェックサムと，格納かぎと，に基づいて計算するステップと，
前記第２の完全性チェックサムと，検証すべき前記データレコードの前記チェックサムとを比較し，もし検証すべき前記データレコードの前記完全性チェックサムと，前記第２の完全性チェックサムとが同じならば，前記データレコードを真正とみなすステップと，
を実行する計算機プログラム。
【請求項２５】
前記格納かぎは，公開かぎ基盤の公開かぎである請求項２４記載の計算機プログラム。
【請求項２６】
前記データベースの第１行で取り出される完全性チェックサムは，生成された初期化ベクタである請求項２４記載の計算機プログラム。
【請求項２７】
前記データベースの第１行で取り出される完全性チェックサムは，署名権者のディジタル署名である請求項２４記載の計算機プログラム。
【請求項２８】
前記第１の完全性チェックサムを，前記検証エンティティのメモリから取り出す請求項２４記載の計算機プログラム。
【請求項２９】
前記第２の完全性チェックサムを，前記検証エンティティのメモリに格納する請求項２４記載の計算機プログラム。
【請求項３０】
前記完全性チェックサムは，連続するシーケンス番号からなる請求項２４記載の計算機プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，データベース又は類似な情報記憶に格納されるデータレコードセットの完全性を保証するための方法と，システムと，計算機プログラムとに関する。
【背景技術】
【０００２】
多くの計算機化されたアプリケーションは，格納すべき膨大な量のデータを作り出す。典型的には，計算機化されたアプリケーションのイベントは，ログファイルに記録される。ログファイルは，システム運用者，ソフトウェア開発者，セキュリティ担当者，およびさまざまな他のグループのための最も重要な情報源の一つである。
【０００３】
伝統的に，ログデータファイルは，ログファイルにシーケンシャルに書かれる。ログファイルのほとんどの種別の基本要素は，ログファイル内の行としてしばしば表されるログレコードである。ログファイルの構造および内容が真正であり続けることが，きわめて重要である。特にセキュリティ監視のために，管理者が変更に気付かないうちに行を修正したり，削除したりされては決してならないことが重要である。
【０００４】
ログファイルの完全性を保証するための周知の方法は，今日，既に存在する。例えば，各ログファイルに暗号化コードを関連付けるために，メッセージ認証コード（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅｓ）またはディジタル署名を使うことができる。もしファイルの内容が変化すれば，ディジタル署名または認証コードが変化するので，後に許可なくなされた修正を検知することができる。しかし，これらの方法は，ディジタル署名または他の種類の認証コードが，保護すべきファイルに割り付けられるまで，完全性を保護しない。
【０００５】
しかし，多くのアプリケーションでは，格納する必要があるデータ量は膨大である。したがって，ログデータまたは類似のデータをリレーショナルデータベースに格納する必要がある。その際，完全性保護の問題は多少異なる。リレーショナルデータベースでは，データは属性のタプル，いわゆるレコードからなるテーブルに格納される。典型的には，ログの記録は，各ログの行が特定のデータベーステーブルのレコードに対応するように，データベースに格納される。
【０００６】
リレーショナルデータベースにおける完全性保護は，伝統的に，許可されていないユーザがデータベースの内容を変更できないように，データベースのユーザのアクセス権を制限することに頼っている。アクセス制御は，リレーショナルデータベース管理システム（ＲＤＢＭＳ）によって強制される。データベースの完全性を保証する他の方法は，それをディスクファイルにセーブして，上記のように暗号化コードを付加することである。
【０００７】
この方法は，多くのデータベーステーブルがその性質として動的であり，極めて頻繁に更新しなければならないため，しばしば非実用的である。例えばログデータベースでは，銀行取引のように格納すべきデータ量が膨大であるため，１日のうちに生成されたログ記録を，常に関連するデータベーステーブルに挿入しなければならない。データベーステーブルの内容を固定し，その完全性を暗号化によるチェックサムで保護するのは，したがって，テーブルの内容がもはや更新されないと確信できるときだけ役に立つ。ログデータベースではこれは，情報を格納するために日次のデータベーステーブルを使わなければならないことを意味する。このような解決策の一つの欠点は，問合せが，それは何日分かのデータにアクセスするのであるが，一つの問合せを実行するのにいくつかのテーブル参照をしなければならないことである。
【０００８】
米国特許第５９７８４７５号（Ｓｃｈｎｅｉｅｒ  ｅｔ  ａｌ．）はログファイルの完全性を検証する方法を開示している。しかし，この特許は，データレコード内のデータを修正する完全な権限を管理者が有するデータベース上においてデータ配置するための手段を開示していない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
伝統的な解決策の主な欠陥は，データベースが利用されるが，そのデータベース管理者が完全には信頼できない環境では適用できないことである。ほとんどのＲＤＢＭＳシステムにおいて，データベース管理者（ＤＢＡ）は，データベースとその内容を修正する無制限に近い許可を持っている。悪意の管理者によって，データベースに挿入されるどんなデータも，暗号化によってデータが許可されていない修正から保護される前にすら，修正され得る。
【００１０】
先行技術の主な欠点は，データベースへのアクセス権限を制御する問題である。更なる欠点は，ファイルが常に変化するので，データをディジタル署名してファイルに格納することができないことである。第３の主な欠点は，データベース管理者を信頼しなければならないことである。今日，管理者は，典型的には，実際にはデータベースに格納される情報について知る必要すらない技術者である。このように，複数の人が，データベースにデータを格納するためにアクセス権を持ちつつ，データベースの内容の完全性を検分したり，チェックしたりできる方法が必要とされる。
【発明を実施するための最良の形態】
【００１１】
本発明は，データベースシステムにおいてデータ完全性を保証する方法に関する。本発明は，完全性検証に用いることができる公に入手可能な完全性チェックサムを使って，公に検分可能なデータベースを提供する解決策を開示している。本発明では，完全性チェックサムは，格納すべきデータと，前のレコードのチェックサムと，格納かぎとから暗号化方法を用いて計算される。格納かぎは，データベース上のデータに署名することが許可されているエンティティだけに発行される。署名エンティティは，データベース管理者と違っていてもよく，また違っているべきである。一つの解決策は，公開かぎ暗号を用いることであり，そこで，署名エンティティは，自分の秘密かぎを使って完全性チェックサムを計算し，完全性を検証したいと思う人は，検証のために署名エンティティの公開かぎを使うことができる。計算された完全性チェックサムは，次にデータレコードに付加される。第１レコードは，生成された初期レコードでもよいし，それ自身のチェックサムを計算するために必要な予め合意された前のチェックサムを利用してもよい。検証においては，完全性チェックサムが類似の方法で計算され，以前に計算されてそのデータレコードに付加されているチェックサムと比較される。
【００１２】
本発明の利点は，完全性チェックを用いて真正なデータベースが得られることである。本発明の方法によれば，署名権者だけがデータベースの内容を変更できるように，データベースが署名される。本発明では，データベースに格納されたデータレコードは，計算された完全性チェックサムの連鎖を壊さない限り，決して消去または変更できない。
【実施例】
【００１３】
添付の図面は，本発明の更なる理解のために含まれて本仕様の一部をなすものであり，本発明の実施例を図示し，記述と共に本発明の原理を説明するのを助ける。ここで，添付の図面に例を図示した本発明の実施例を詳細に参照する。
【００１４】
図１は，完全性検証の基本原理を図示するフローチャートである。図１において，入力データはどんな適当な形式でもよい。しかし，本発明は，多くの登録データが速いペースで到着する場合にもっとも役に立つ。適当な登録データとは，例えば，典型的には大きなデータベースに格納される銀行取引のログファイルのデータレコードである。これらログファイルは真正でなければならず，また必要ならば法廷で受理されるように，各イベントを含んでいなければならない。
【００１５】
図１において，データは署名エンティティ１０に入力される。署名エンティティ１０には，データレコードに署名する許可を得たそれ自身の管理者がいる。署名の形式は，ディジタル署名でも，暗号化でも，または一方向ハッシュでもよい。本明細書では，署名とは，チェックサムを計算し，計算されたチェックサムをデータレコードに付加するプロセスを言う。後に，署名かぎは，任意の種別の署名かぎでよい格納かぎと呼ばれる。一方，各署名済みレコードに署名者の名前を含むことができるように伝統的な公開かぎ暗号法を用いることも有用かも知れない。かぎが，秘密かぎファイルと，暗号化デバイスに入力された秘密のパスワード部とからなっているセキュアメールシステムに類似の方法で，かぎをシステムに挿入してもよい。かぎはまた，スマートカードまたはその類似物，若しくはいかなる他の適当なデバイスに挿入してもよい。
【００１６】
本発明の方法は，署名すべきデータレコードと，前のレコードの完全性チェックサムと，格納かぎとから計算された完全性チェックサムを用いて各データレコードに署名する。計算された完全性チェックサムは，次にデータレコードに付加される。それはデータそのものに付加してもよいし，データベース１１が完全性チェックサムのために別のフィールドを持ってもよい。計算されたチェックサムは前の完全性チェックサムに依存するので，完全性を壊すことなくレコードの途中から１以上の行を削除することはできない。なぜならば，検証には完全性チェックサムの完全な連鎖が必要なためである。完全性チェックサムを伴う署名済みデータは，データベース１１に格納される。データベース管理者は格納されたデータに対してさまざまな処理を行うことができるが，秘密にデータの内容を変更したり，データレコードを削除したりすることはできない。
【００１７】
結果として得られるデータレコードの完全性検証は，署名と類似の方法で行われる。検証エンティティ１２が，署名すべきデータレコードと，前の完全性チェックサムと，格納かぎと，に基づいて完全性チェックサムを計算する。計算された完全性チェックサムは，次にデータベース１１に格納されたチェックサムと比較される。もしチェックサムが同じでなければ，データベースは変更されており，真正ではない。本方法は，データレコードの完全性を，データベース全体の完全性をチェックする必要なく，すばやくチェックできる利点がある。検証は，連続するデータレコードのストリーム中の任意の点で開始できる。前の完全性チェックサムが取り出されるレコードの真正性は保証されないことに注意すべきである。このように，検証プロセスは，検証すべきデータレコードの前のデータレコードの完全性チェックサムを取り出すことから始めなければならない。
【００１８】
もし公開かぎ暗号が署名に使われるならば，署名権者が署名エンティティ１０において自分の秘密かぎでレコードに署名する。かぎは特定のデータベースの署名のために生成してもよいし，署名の許可を得ている信頼できるグループ内で共有してもよい。完全性の検証においては，署名権者の公開かぎがチェックサムの復号に使われる。
【００１９】
データベースを始動するにはさまざまな方法がある。データベースの第１行に関しては，前の完全性チェックサムが得られないので，前の完全性チェックサムの代わりに初期化べクタを使ってもよい。第１行は，実際のデータを含んでも，または初期化に関連したデータを含んでもよい。例えば，初期化ベクタは，日付のような初期化に関する情報と，責任者のディジタル署名とを，チェックサムとして含んでもよい。このようにして，第１の実データレコードの前のチェックサムが得られる。初期化ベクタ，すなわち行はまた，データを複数のブロックに配置するためにデータベースの中央に適用してもよい。データを複数のブロックに配置しても，検証手続きには変更を生じない。
【００２０】
図２はデータレコードを格納する一実施例のフローチャートを図示する。ステップ２０において，データが任意の適当な情報システムから受信される。そのデータは，図１の実施例と類似である。データの受信後，ステップ２１において完全性チェックサムが計算される。完全性チェックサムは，図１に示した実施例で開示したように，所望の周知の方法で計算することができる。完全性チェックサムは，前のデータレコードに付加されたチェックサムを指す前のチェックサムと，署名すべきデータと，格納かぎと，に基づいて計算される。データレコードに署名する許可を持つ人だけが格納かぎを知っている。前のチェックサムは，署名デバイスのメモリから読み出される。もし完全性チェックサムが常にデータベースから読み出されると，悪意を持つデータベース管理者がデータベースの最終行を何の問題もなく削除することができる。なぜならば，完全性チェックサムの連鎖が壊れないからである。最終行の真正性を保証する方法は外にも，例えば連続するシーケンス番号をチェックサムパラメータの一部として持つなどの方法がある。
【００２１】
データレコードは，ステップ２２に図示されるように，そのデータレコードに対して計算された完全性チェックサムを付加することによって，署名される。署名済みデータはデータベースに格納される。データベースには，データと完全性チェックサムとに別々のフィールドがあってもよい。データベースにはまた，完全性チェックサムを計算するために使うことのできる，例えば署名者の名前のような付加情報フィールドがあってもよい。データベースにデータを格納した後，完全性チェックサムは，ステップ２４に図示したように，署名デバイスのメモリに格納される。これは，後で使うための前の完全性チェックサムが，一度計算されたら変化しないことを保証するためである。
【００２２】
図３は，本発明の一実施例のブロック図を示す。図３においては，すべてのコンポーネントが個別に示されているが，本技術の当業者には，コンポーネントはまた，計算機プログラムの形で実装されてもよいことは明らかである。システムは，図２に記載された方法により機能する。かくしてこの機能は詳細には記述しない。
【００２３】
本発明によるシステムは，データ源３０と，署名エンティティ３１と，データベース３２と，データベース管理コンソール３３と，検証エンティティ３４とを備える。データ源３０は，データベース３２に格納する必要があるデータを生成する，いかなる情報システムであってもよい。署名エンティティ３１は，例えば，データベースシステム３２に接続された計算機において走る計算機プログラム，またはデータベースシステム３２内のプログラムモジュールである。データベース３２およびデータベース管理コンソール３３は，オラクルデータベースシステムのような，任意の一般目的データベースシステムであってよい。検証エンティティ３４は，署名エンティティ３１と類似である。もし，公開かぎ基盤が使われるなら，署名エンティティ３１は秘密かぎを持ち，検証エンティティ３４は対応する公開かぎを持つ。
【００２４】
本技術の当業者にとって，技術の進歩に伴って，本発明の基本思想がさまざまな方法で実装され得ることは明らかである。本発明およびその実施例は，したがって，上記の例に限定されず，代わりに本願請求項の範囲内で変形し得るものである。
【図面の簡単な説明】
【００２５】
【図１】本発明の完全性検証の基本原理を図示するフローチャートである。
【図２】本発明のデータレコード格納の一実施例を図示するフローチャートである。
【図３】図２に提示されたシステムの実施例を図示するブロック図である。
【図１】
2007510209.tif 000003
【図２】
2007510209.tif 000004
【図３】
2007510209.tif 000005
【国際調査報告】
2007510209.tif 000006
2007510209.tif 000007