JP3707821B2 - ファイル編集システム及び共有ファイル編集システム - Google Patents

ファイル編集システム及び共有ファイル編集システム Download PDF

Info

Publication number
JP3707821B2
JP3707821B2 JP05921095A JP5921095A JP3707821B2 JP 3707821 B2 JP3707821 B2 JP 3707821B2 JP 05921095 A JP05921095 A JP 05921095A JP 5921095 A JP5921095 A JP 5921095A JP 3707821 B2 JP3707821 B2 JP 3707821B2
Authority
JP
Japan
Prior art keywords
file
editing
data
block
version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP05921095A
Other languages
English (en)
Other versions
JPH08106412A (ja
Inventor
淳 新保
俊成 高橋
真男 室田
一郎 友田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP05921095A priority Critical patent/JP3707821B2/ja
Publication of JPH08106412A publication Critical patent/JPH08106412A/ja
Application granted granted Critical
Publication of JP3707821B2 publication Critical patent/JP3707821B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【産業上の利用分野】
本発明はファイル編集システムに係わり、特に、計算機の共有ファイル・システムやデータベース・システムにおいて、複数ユーザからの共有ファイルの非同期編集や、ファイルの内容の読み出し保護を実現したものに関する。
【0002】
【従来の技術】
計算機システムにおいて、システム内の資源に対する複数ユーザからのアクセスを管理するためには、アクセス要求を出したユーザが当該資源に対するアクセス権を有する正規のユーザであるか否かを確認するための認証機構が必要であることが指摘されてきた。特に、システムが巨大化し遠隔ユーザからのアクセスを認める環境では、認証機構の重要性が増してくる。このような機構を実現する代表的な認証システムとしては、Kerberosなどがある。
【0003】
こうした認証機構の必要となる典型的なシステムとしては、CSCW(Comuputer Supported Cooperative Work)システムが挙げられる。CSCWは複数ユーザの協調作業を支援する計算機システムの総称であり、その典型的・根本的なものに共有ファイル・システムがある。共有ファイル・システムでは、複数ユーザが同一のファイルに対して“read”“write”などのアクセス権を有し、同時に同一のファイルに対してそれらアクセスを許しながら、矛盾を生じることなく編集作業を実行できる。
【0004】
従来、このような共有ファイル・システムを実現する一般的な形態は、ファイルにアクセスする主体としてのクライアントと、ファイルを管理するサーバとに分離したクライアント・サーバ型を採り、クライアントからのアクセスの認証を行う認証システムを実装するものである。すなわち、サーバはクライアントが正規のアクセス権を保持しているか否かを認証し、さらに必要であればクライアントとサーバ間で送受されるデータを暗号化したり、クライアント側が接続相手が所望のサーバであるか否かの認証などを実現するものである。
【0005】
こうした共有ファイル・システムが広域化していくにつれ、例えば、あるサイトにファイル・サーバだけを実現するといったサービス形態が要求されるものと考えられる。すなわち、ファイルの保管とアクセス管理は提供するが、ファイルの内容自体はサーバ内では一切読み取れないような形態である。しかしながら、このようなサービスは、従来のセキュリティ・システムでは実現できない。なぜなら、通信データは保護しているが、ファイルの内容はサーバ内では平文の形式で管理されているからである。
【0006】
また、共有ファイルにおいて同時編集を実現する従来のメカニズムでは、同一のファイルに対してあるユーザが書き込みを伴う編集を行っている間は、他のユーザは高々“read”しかできないように制限される。これは厳密な意味での同時編集ではなく、ロック機構を利用して複数ユーザのアクセス間で矛盾の生じないように同期を取る“同期編集”を実現しているのみであった。すなわち、最初のアクセス要求者がファイルにアクセスする間、ロック機構が作動して他の要求者からの“write”のためのファイル・アクセス要求は許可されなくなり、他の要求者はファイル・アクセスを一時見合わせてロックの解除を待ち、ロックが解除された後に再度ファイルにアクセスするようにしていた。
【0007】
これに対し、あるユーザが書き込みを伴う編集を行っている場合であっても他のユーザが同一ファイルに対して書き込みを伴う編集が可能であるようにできれば、より柔軟なシステムとなる。以下、このような操作を、複数ユーザがランダムに発生するアクセス間の同期をとる必要がないという意味で、“非同期編集”と呼ぶ。
【0008】
一方、共有ファイル・システムに関連したもう一つの技術として、バージョン管理技術がある。従来のバージョン管理法には、SCCC(Source Code Control System)やRCS(Revision Control System)がある。これらの管理法は、プログラム開発を複数の人員で行うような場合に、ある時点におけるファイル全体を全て保存しておく変わりに差分だけを保管していくことにより、ファイル・サイズの圧縮を図るものである。しかしながら、ファイル・サイス面では大きな改善が達成できているものの、共有ファイル・システムでの実現ではロック機構を用いた同期編集しか考慮されていなかった。
【0009】
【発明が解決しようとする課題】
以上説明したように、従来の共有ファイルの編集を行うためにクライアント・サーバ型の共有ファイル編集システムでは、ファイルの内容をファイル・サーバに対して秘密にできないこと、同時編集はロックを掛けることにより実現されるため同時に複数のアクセス要求者による書き込みを伴う編集すなわち非同期編集ができないことなどの問題点があった。
【0010】
本発明は、上記問題点を考慮してなされたものであり、ファイルの内容をファイル・サーバからは読み取ることのできない秘匿性の高いファイル編集システムを提供することを目的とする。
【0011】
また、本発明は、ファイルのバージョン管理をサポートする共有ファイル編集システムであって、非同期編集処理を行うことが可能な共有ファイル編集システムを提供することを目的とする。
【0012】
また、本発明は、ファイルのバージョン管理をサポートする共有ファイル編集システムであって、ファイルの内容をファイル・サーバに対して秘密にしながら、非同期編集処理を行うことが可能となる共有ファイル編集システムを提供することを目的とする。
【0013】
【課題を解決するための手段】
本発明(請求項1)では、各ファイルが、履歴管理に必要なバージョン間の差分に対応する複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、前記クライアント装置は、前記ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータをブロック単位で取得し、所定の復号鍵を用いてブロック単位で復号化する復号化手段と、前記復号化手段で復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得る編集手段と、前記編集手段で得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化手段と、前記暗号化手段で得られた暗号化編集データを前記ファイル管理サーバ装置に送る通信手段とを備え、前記ファイル管理サーバ装置は前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記差分に対応するブロック単位で前記所望のファイルを管理することを特徴とする。
また、本発明(請求項2)では、履歴管理に必要な複数のブロックデータと、対応するブロックデータの生成時と消去時のバージョン情報を有するブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、前記クライアント装置は、前記ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータをブロック単位で取得し、所定の復号鍵を用いてブロック単位で復号化する復号化手段と、前記復号化手段で復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得る編集手段と、前記編集手段で得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化手段と、前記暗号化手段で得られた暗号化編集データを前記ファイル管理サーバ装置に送る通信手段とを備え、前記ファイル管理サーバ装置は前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理することを特徴とする。
【0014】
また、本発明(請求項)では、各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、前記クライアント装置は、前記ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータをブロック単位で取得し、所定の復号鍵を用いてブロック単位で復号化する復号化手段と、前記復号化手段復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集する編集手段と、前記編集手段で前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示す編集手続データを生成する編集手続生成手段と、前記編集手続生成手段で生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換する編集手続変換手段と、前記編集手段でなされた編集の結果を示す履歴管理情報を、前記編集手続変換手段で得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成する履歴管理情報生成手段と、前記履歴管理情報生成手段で生成された履歴管理情報を、所定の暗号鍵を用いてブロック単位で暗号化して、暗号化履歴管理情報を得る暗号化手段と、前記暗号化手段で得られた暗号化履歴管理情報を前記ファイル管理サーバ装置に送る通信手段とを備え、前記ファイル管理サーバ装置は前記クライアント装置から受取った暗号化履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理する履歴管理手段を含むことを特徴とする。
【0015】
また、本発明(請求項)では、各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、前記クライアント装置は、前記ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータをブロック単位で取得し、所定の復号鍵を用いて復号化する復号化手段と、前記復号化手段で復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集する編集手段と、前記編集手段で前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示し、該所望のファイルに挿入される挿入データを含んだ編集手続データを生成する編集手続生成手段と、前記編集手続生成手段で生成された編集手続データに含まれる挿入データを所定の暗号鍵を用いて暗号化して、暗号化編集手続データを得る暗号化手段と、前記暗号化手段で得られた暗号化編集手続データを前記ファイル管理サーバ装置に送る通信手段とを備え、前記ファイル管理サーバ装置は、前記クライアント装置から受取った前記所望のファイルの所望のバージョンに対する暗号化編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する暗号化編集手続データに変換する編集手続変換手段と、前記編集手段でなされた編集の結果を示す履歴管理情報を、前記編集手続変換手段で得られた前記所望のファイルの最新バージョンに対する暗号化編集手続データに基づいて生成する履歴管理情報生成手段と、前記履歴管理情報生成手段で生成された履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理する履歴管理手段とを含むことを特徴とする。
【0016】
また、本発明(請求項)では、各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得し、該ファイル管理サーバ装置から得たブロックデータで構成される前記所望のファイルを編集する、複数のクライアント装置と、前記複数のクライアント装置による非同期編集をサポートする非同期編集サポート手段とから構成され、前記非同期編集サポート手段は、各クライアント装置により前記所望のファイルに対してなされた編集内容を得る手続を示す編集手続データを生成する編集手続生成手段と、前記編集手続生成手段で生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換する編集手続変換手段と、各クライアント装置により前記所望のファイルになされた編集の結果を示す履歴管理情報を、前記編集手続変換手段で得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成する履歴管理情報生成手段とを含み、前記ファイル管理サーバ装置は前記履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理することを特徴とする。
【0017】
また、本発明(請求項)では、上記(請求項1又は2)において、前記クライアント装置は前記所望のファイルの所望のバージョンに対応するブロックデータを前記ファイル管理サーバ装置から取得し、該ファイル管理サーバ装置は該クライアント装置から受取った前記所望のファイルの所望のバージョンに対する暗号化編集データに基づいて前記所望のファイルの履歴管理を行なう履歴管理手段を含むものであることを特徴とする。
【0018】
また、本発明(請求項)では上記(請求項1又は2)において、前記クライアント装置は前記所望のファイルの所望のバージョンに対応するブロックデータを前記ファイル管理サーバ装置から取得し、該ファイル管理サーバ装置は該クライアント装置から受取った前記所望のファイルの最新のバージョンに対する暗号化編集データに基づいて前記所望のファイルの履歴管理を行なう履歴管理手段を含むものであることを特徴とする。
【0019】
また、本発明(請求項)では、上記(請求項1又は2)において、前記ファイル管理サーバ装置は、二つ以上のクライアント装置からの同一ファイルに対するアクセス要求を非同期に受け付けて、該二つ以上のクライアント装置が該同一ファイルに対する非同期編集を行なうようにするものであることを特徴とする。
【0020】
また、本発明(請求項)では、上記(請求項1からのいずれか)において、前記ファイル管理サーバ装置は、各ブロックデータをストリーム暗号方式で暗号化された状態で管理し、前記暗号化手段は前記編集データ又は前記履歴管理情報又は前記挿入データをストリーム暗号方式で暗号化することを特徴とする。
【0021】
また、本発明(請求項10)では、上記(請求項1、2又は5)において、前記クライアント装置は、前記ファイル管理サーバ装置から取得した複数のブロックデータを新たなブロックデータに再構成するブロックデータ再構成手段と、該ブロックデータ再構成手段で得られた新しいブロックデータを該ファイル管理サーバ装置に送る手段とを含み、該ファイル管理サーバ装置は該クライアント装置から受取った新たなブロックデータに基づいて前記所望のファイルを管理することを特徴とする。
【0022】
また、本発明(請求項1)では、上記(請求項1、2又は5)において、前記クライアント装置は、前記所望のファイルの以前アクセスされたバージョンを格納するファイル記憶手段と、前記ファイル記憶手段に格納されている以前アクセスされたバージョンと前記ファイル管理サーバ装置から取得した前記所望のファイルに属するブロックデータとに基づいて、前記所望のファイルの所望のバージョンを構築するファイルデータ構築手段と、を含み、前記ファイル管理サーバ装置は、前記クライアント装置に与えるブロックデータを、前記以前アクセスされたバージョンと前記所望のバージョンとの差分を求めることで構築する差分構築手段を含むことを特徴とする。
【0023】
また、本発明(請求項1)では、上記(請求項1、2又は5)において、前記クライアント装置は、前記ファイル管理サーバ装置が管理する暗号化されたファイル又は共有ファイルに対するアクセス要求をオペレーティングシステムが提供するシステムコールにより発行するアクセス要求手段と、前記システムコールに対応するアドレスポインタを登録するシステムコールテーブル手段と、前記クライアント装置から前記ファイル管理サーバ装置に送るファイルアクセス要求を、前記アクセス要求手段が発行したアクセス要求で指定されるシステムコールに対応する前記アドレスポインタに基づいて求めるファイルアクセス処理手段と、を含むものであることを特徴とする。
【0024】
また、本発明(請求項1)では、上記(請求項又は)において、前記履歴管理手段はそれにより前記所望のファイルの履歴管理を行なうものである履歴データを前記編集手続変換手段に送り、該編集手続変換手段は前記所望のファイルの最新のバージョンに対する編集手続データを前記履歴データによって示される前記所望のバージョンと前記最新バージョンとの関係に基づいて求めるものであることを特徴とする。
【0025】
また、本発明(請求項1)では、上記(請求項又は)において、前記ファイル管理サーバ装置は各ファイルを、最初に生成されたファイル内容が暗号化された最初のブロックデータと、各編集の前のファイル内容と各編集の後のファイル内容の各差分が暗号化された以降のブロックデータと、各ブロックデータに付与されて各ブロックデータを同定する前記ブロックデータ識別情報とからなる形式で管理することを特徴とする。
【0026】
また、本発明(請求項1)では、上記(請求項又は)において、前記ファイル管理サーバ装置は各ファイルを、最新の編集されたファイル内容が暗号化された最新のブロックデータと、各編集の前のファイル内容と各編集の後のファイル内容の各差分が暗号化された以前のブロックデータと、各ブロックデータに付与されて各ブロックデータを同定する前記ブロックデータ識別情報とからなる形式で管理することを特徴とする。
【0027】
また、本発明(請求項1)では、上記(請求項又は)において、前記ファイル管理サーバ装置は各ファイルを、各ファイルに挿入された各内容が暗号化された挿入ブロックデータと、各ファイルから削除された各内容が暗号化された削除ブロックデータと、各ブロックデータに付与されて各ブロックデータの生成時点と消去時点を同定する前記ブロックデータ識別情報とからなる形式で管理することを特徴とする。
【0028】
また、本発明(請求項1)では、上記(請求項1)において、前記ファイル管理サーバ装置は、各ブロックデータを8ビットCFBモード型暗号方式で暗号化された状態で管理し、前記暗号化手段は前記履歴管理情報又は前記挿入データを8ビットCFBモード型暗号方式で暗号化することを特徴とする。
【0029】
また、本発明(請求項1)では、上記(請求項)において、前記履歴管理情報生成手段は前記編集手段でなされた編集の結果得られるブロックデータに対するブロック識別情報を前記履歴管理情報に対し付加し、前記通信手段は前記暗号化履歴管理情報を前記履歴管理情報に付加されたブロック識別情報と共に送ることを特徴とする。
【0030】
また、本発明(請求項1)では、上記(請求項又は)において、前記履歴管理手段は前記編集手段でなされた編集の結果得られるブロックデータに対するブロック識別情報を前記暗号化履歴管理情報又は前記履歴管理情報に対し付加することを特徴とする。
【0031】
また、本発明(請求項20)では、上記(請求項)において、前記ファイル管理サーバ装置は、該ファイル管理サーバ装置が管理する各ファイルの各バージョンに対応させて、各ファイルの各バージョンを現在編集中であるクライアント装置の数を計数するクライアント計数手段と、特定ファイルの特定バージョンを消去する要求に対し、該特定ファイルの該特定バージョンの消去の実行を、前記クライアント計数手段により計数されたクライアントの数が0になるまで遅延させる消去遅延手段と、を含むものであることを特徴とする。
【0032】
また、本発明(請求項2)では、上記(請求項)において、前記ファイル管理サーバ装置は、あるクライアント装置によりなされた編集手続データを前記編集手続変換手段により変換して得られた前記最新バージョンに対する編集手続データと、他のクライアント装置によりなされた編集手続データを前記編集手続変換手段により変換して得られた前記最新バージョンに対する編集手続データとを比較して競合するか否かを検出し、競合した場合に、その競合の検出を該あるクライアント装置に通知する編集競合検出手段を含むものであることを特徴とする。
【0033】
また、本発明(請求項2)では、上記(請求項2)において、前記ファイル管理サーバ装置は更に、前記編集競合検出手段が該あるクライアント装置についての競合の発生を検出しない時のみ、前記非同期編集サポート手段で前記あるクライアント装置に対して得られた履歴管理情報に基づいて前記所望のファイルの履歴管理を行なう履歴管理手段を含むものであることを特徴とする。
【0034】
また、本発明(請求項2)では、各ファイルが、履歴管理に必要なバージョン間の差分に対応する複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータを取得するステップと、前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いてブロック単位で復号化するステップと、前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得るステップと、前記クライアント装置において、前記編集するステップで得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化するステップと、前記暗号化するステップで得られた暗号化編集データを前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、前記ファイル管理サーバ装置が前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記差分積み上げ方式又は前記RCSにより前記所望のファイルを管理するステップと、から成ることを特徴とする。
また、本発明(請求項24)では、各ファイルが、履歴管理に必要な複数のブロックデータと、対応するブロックデータの生成時と消去時のバージョン情報を有するブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータを取得するステップと、前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いてブロック単位で復号化するステップと、前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得るステップと、前記クライアント装置において、前記編集するステップで得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化するステップと、前記暗号化するステップで得られた暗号化編集データを前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、前記ファイル管理サーバ装置が前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、から成ることを特徴とする。
【0035】
また、本発明(請求項2)では、各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得するステップと、前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いてブロック単位で復号化するステップと、前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集するステップと、前記クライアント装置において、前記編集するステップで前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示す編集手続データを生成するステップと、前記クライアント装置において、前記編集手続データを生成するステップで生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換するステップと、前記クライアント装置において、前記編集するステップでなされた編集の結果を示す履歴管理情報を、前記変換するステップで得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成するステップと、前記クライアント装置において、前記履歴管理情報を生成するステップで生成された履歴管理情報を所定の暗号鍵を用いてブロック単位で暗号化して暗号化履歴管理情報を得る暗号化するステップと、前記暗号化するステップで得られた暗号化履歴管理情報を前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、前記ファイル管理サーバ装置において、前記クライアント装置から受取った暗号化履歴管理情報と前記各ブロックのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、から成ることを特徴とする。
【0036】
また、本発明(請求項2)では、各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得するステップと、前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いて復号化するステップと、前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集するステップと、前記クライアント装置において、前記編集するステップで前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示し、該所望のファイルに挿入される挿入データを含んだ編集手続データを生成するステップと、前記クライアント装置において、前記編集手続データを生成するステップで生成された編集手続データに含まれる挿入データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集手続データを得る暗号化するステップと、前記暗号化するステップで得られた暗号化編集手続データを前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、前記ファイル管理サーバ装置において、前記クライアント装置から受取った前記所望のファイルの所望のバージョンに対する暗号化編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する暗号化編集手続データに変換するステップと、前記ファイル管理サーバ装置において、前記編集するステップでなされた編集の結果を示す履歴管理情報を、前記変換するステップで得られた前記所望のファイルの最新バージョンに対する暗号化編集手続データに基づいて生成するステップと、前記ファイル管理サーバ装置において、前記履歴管理情報を生成するステップで生成された履歴管理情報と前記各ブロックのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、から成ることを特徴とする。
【0037】
また、本発明(請求項2)では、各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう複数のクライアント装置からなる共有ファイル管理システムにおいてファイルを編集する方法であって、各クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得するステップと、各クライアント装置において、前記取得するステップで前記ファイル管理サーバ装置から取得したブロックデータによって構成される前記所望のファイルの所望のバージョンを編集するステップと、各クライアント装置により前記所望のファイルになされた編集内容を得る手続を示す編集手続データを生成するステップと、前記編集手続データを生成するステップで生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換するステップと、各クライアント装置により前記所望のファイルになされた編集の結果を示す履歴管理情報を、前記変更するステップで得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成するステップと、前記ファイル管理サーバ装置が前記履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、から成ることを特徴とする。
【0038】
【作用】
本発明(請求項1,2,6〜1,23、24)では、ファイル管理サーバ装置に格納管理されるファイルは、データ部分と付加情報部分からなり、データ部分は複数のブロック・データからなり、付加情報部分は各ブロック・データに付加されたブロック識別情報を含み、さらに、各ブロック・データはブロック・データ単位で暗号化されているとともに、データ構造の管理に必要なブロック識別情報は暗号化されていない情報である。そして、クライアント装置は、ファイル管理サーバ装置に対して所望のファイルをブロック・データ単位でアクセスでき、保有している暗号鍵/復号鍵を用いて、該ブロック・データを暗号化/復号化する。また、ファイル管理サーバ装置にはファイルの内容が秘匿されているが、データ構造の管理は実行させることができる。このとき、各ブロックデータは、履歴管理に必要な各差分バージョンに対応する。また、ブロック識別情報にはブロックデータの生成時と消去時のバージョン情報が含まれている。
【0039】
従って、ファイルの内容をファイル管理サーバ装置からは読み取ることのできない秘匿性の高いファイル編集システムを提供することができる。
【0040】
また、クライアント装置は、ファイルのうちの必要なデータ・ブロックだけを通信により取得できるので、通信量の削減を図ることができるとともに、必要なブロックだけを復号化/暗号化すれば良いので、クライアント装置での処理量の削減、クライアント装置で必要なバッファ(メモリ)の削減ができる利点もある。
【0041】
また、本発明(請求項,1〜1,2)では、ファイル管理サーバ装置に格納管理されるファイルは、データ部分と付加情報部分からなり、データ部分は複数のブロック・データからなり、付加情報部分は各ブロック・データに付加されたブロック識別情報を含み、さらに、各ブロック・データはブロック・データ単位で暗号化されているとともに、データ構造の管理に必要なブロック識別情報は暗号化されていない情報である。このブロック識別情報は、履歴を管理するために用いられる。
【0042】
これによって、ファイルの内容は復号鍵を持っている正規のクライアント装置からのみ読み取れ、ファイルの内容をファイル管理サーバ装置からは読み取ることのできないようにした秘匿性の高いファイル編集システムを提供することができる。
【0043】
また、クライアント装置は、ファイル管理サーバ装置に対して所望のバージョンのファイルをアクセスし、該ファイルを編集した後、この編集の内容をファイル管理サーバ装置に送り、ファイル管理サーバ装置は、前記クライアント装置から渡された編集の内容を示すデータを、前記クライアント装置がアクセスして得たバージョンがいずれであるかに従い、前記ファイル管理サーバ装置内での最新のバージョンに対する編集内容に変換する処理(マージ処理)を行う。
【0044】
従って、ファイル管理サーバ装置は、常に各クライアント装置による編集終了時における最新バージョンのファイルの内容に対する更新を行うので、ロックを掛けずに複数のクライアント装置による非同期編集を行うことが可能となる。
【0045】
また、時間的に古いバージョンを編集し、最新バージョンとする使い方が可能となる。すなわち、非同期編集可能な共有ファイルにおいて、編集対象を現行版に限定しない使い方が可能となる。
【0046】
また、ファイルのデータ構造として、単純に一つ前(あるいは後)のバージョンとの差分を残していくRCSのような構造ではなく、変形SCCSで利用されているようなファイルの先頭から順番に挿入されたデータが挿入された位置にブロックとして管理され、部分的に消去された場合にはブロックの分割を繰り返していく方式に変形を加えて採用すると、ファイル管理サーバ装置が行うマージ処理に必要となる挿入/削除の位置の決定が極めて単純化され、非同期編集が容易となる。
【0047】
特に、ファイルのデータ構造として変形SCCS方式を用い、暗号方式としてストリーム暗号のうちの8ビットCFBモードによる方式を用いると、ブロックの分割においても再暗号化が不要になる利点がある。
【0048】
また、本発明(請求項,1〜1,1,2)では、ファイル管理サーバ装置に格納管理されるファイルは、データ部分と付加情報部分からなり、データ部分は複数のブロック・データからなり、付加情報部分は各ブロック・データに付加されたブロック識別情報を含み、さらに、各ブロック・データはブロック・データ単位で暗号化されているとともに、データ構造の管理に必要なブロック識別情報は暗号化されていない情報である。このブロック識別情報は、履歴を管理するために用いられる。
【0049】
これによって、ファイルの内容は復号鍵を持っている正規のクライアント装置からのみ読み取れ、ファイルの内容をファイル管理サーバ装置からは読み取ることのできないようにした秘匿性の高いファイル編集システムを提供することができる。
【0050】
また、クライアント装置は、ファイル管理サーバ装置に対して所望のバージョンのファイルをアクセスし、該ファイルを編集した後、前記ファイル管理サーバ装置に格納されている該ファイルの最新のバージョンの内容と、この編集後の内容との差分を求め、この差分に対応するブロック・データを作成してファイル管理サーバ装置に送り、ファイル管理サーバ装置ではクライアント装置から渡された前記差分に対応するブロック・データを用いて、格納している前記ファイルのバージョンを更新する。
【0051】
従って、ファイル管理サーバ装置では、常に各クライアント装置による編集終了時における最新バージョンのファイルの内容に対する更新が行われるので、ロックを掛けずに複数のクライアント装置による非同期編集を行うことが可能となる。
【0052】
また、時間的に古いバージョンを編集し、最新バージョンとする使い方が可能となる。すなわち、非同期編集可能な共有ファイルにおいて、編集対象を現行版に限定しない使い方が可能となる。
【0053】
また、非同期編集により編集結果のマージ処理を実行する場合に、サーバからはクライアントでの処理に必要となるデータのみを送り、クライアントで必要な処理を実行してサーバに返す形式を実現でき、不必要な履歴に関する部分まで通信されるなどの無駄がなくなり、効率が著しく向上する。
【0054】
また、ファイルのデータ構造として、単純に一つ前(あるいは後)のバージョンとの差分を残していくRCSのような構造ではなく、変形SCCSで利用されているようなファイルの先頭から順番に挿入されたデータが挿入された位置にブロックとして管理され、部分的に消去された場合にはブロックの分割を繰り返していく方式に変形を加えて採用すると、マージ処理に必要となる挿入/削除の位置の決定が極めて単純化され、非同期編集が容易となる。
【0055】
さらに、先に説明したマージ処理に適した変形SCCSのようなデータ構造を採用した場合のデータ内容の暗号化方式として、ビット単位(あるいはバイト単位)のストリーム暗号を利用することができる。このストリーム暗号は平文の特定ビット(あるいはバイト)が暗号文の特定ビット(あるいはバイト)に対応する性質がある。このため、先のような暗号化されたブロックの分割が繰り返される場合に、分割されるポイントより後ろを切りとり、その部分だけ暗号化しなおせばよく、再暗号化のオーバヘッドが軽減される。さらに、サーバ側で分割ポイントより前の部分が変更されていないことを確認することもできる。
【0056】
また、本発明(請求項10〜120〜2,2)では、クライアント装置は、ファイル管理サーバ装置に対して所望のバージョンのファイルをアクセスし、該ファイルを編集した後、この編集の内容をファイル管理サーバ装置に送り、ファイル管理サーバ装置は、前記クライアント装置から渡された編集の内容を示すデータを、前記クライアント装置がアクセスして得たバージョンがいずれであるかに従い、前記ファイル管理サーバ装置内での最新のバージョンに対する編集内容に変換する処理(マージ処理)を行う。
【0057】
従って、ファイル管理サーバ装置は、常に各クライアント装置による編集終了時における最新バージョンのファイルの内容に対する更新を行なうので、ロックを掛けずに複数のクライアント装置による非同期編集を行なうことが可能となる。
【0058】
また、本発明(請求項及び)では、ファイル管理サーバ装置に格納管理されるファイルは、データ部分と付加情報部分からなり、データ部分は複数のブロック・データからなり、付加情報部分は各ブロック・データに付加されたブロック識別情報を含み、さらに、各ブロック・データはブロック・データ単位で暗号化されているとともに、データ構造の管理に必要なブロック識別情報は暗号化されていない情報である。
【0059】
従って、ファイル管理サーバ装置にはファイルの内容が秘匿されているとともに、ブロック識別情報は暗号化されていないので、ファイル管理サーバ装置ではデータ構造の管理を実行することができる。
【0060】
また、クライアント装置は、ファイル管理サーバ装置に対して所望のファイルをアクセスし保有している復号鍵を用いてブロック単位で復号化する。そして、編集手段を用いてこのファイルを編集し、この編集の内容を示すデータをブロック・データごとに所定の暗号鍵を用いて暗号化する。一方、ファイル管理サーバ装置は、クライアント装置から渡されたブロック・データとブロック識別情報とに基づいて、該ファイルの履歴管理を行う。
【0061】
このように、ファイルの履歴管理とファイル管理サーバ装置に対するデータの秘匿性を同時に実現できる。
【0062】
また、クライアント装置からファイル管理サーバ装置には、ファイルのうちの必要なデータ・ブロックだけを通信すれば良いので、通信量の削減を図ることができる。
【0063】
また、請求項のように構成した場合、ブロックの分割暗号化に際し、ブロックの先頭から分割ポイントまでの部分は暗号化されたままで再利用でき、分割ポイント以降のみを再暗号化する。なお、全く再暗号化を必要としない方法もある。バージョン管理法として、SCCSを変形した方式を用いた場合、ブロックの分割が繰り返されるが、このような場合に有利である。
【0064】
また、本発明(請求項10)では、ファイル管理サーバ装置に格納されるファイルは、データ部分と付加情報部分からなり、データ部分は複数のブロック・データからなり、付加情報部分は各ブロック・データに付加されたブロック識別情報を含み、さらに、各ブロック・データはブロック・データ単位で暗号化されているとともに、データ構造の管理に必要なブロック識別情報は暗号化されていない情報である。そして、クライアント装置は、ファイル管理サーバ装置からファイルを得ることができ、保有している復号鍵を用いて該ブロック・データを復号化し、得られた復号化データをブロックとして新たなブロック・データに再構成し、暗号鍵を用いて新たなブロック・データごとに暗号化し、ファイル管理サーバ装置に出力することができる。
【0065】
これにより、クライアント装置により、履歴情報の消去を行ったり、ファイルのブロック・データ数が多くなった時などにブロックを再構成し、ブロック識別情報によるオーバヘッドを削減することができる。また、これを暗号鍵/復号鍵を有するクライアント装置が行うことにより、サーバに対するファイルの内容の秘匿性は守られる。
【0066】
また、本発明(請求項1)では、ファイル管理サーバ装置に格納されるファイルは、データ部分と付加情報部分からなり、データ部分は複数のブロック・データからなり、付加情報部分は各ブロック・データに付加されたブロック識別情報を含む。そして、クライアント装置は、あるバージョンのファイルを保存する手段を有し、ファイル管理サーバ装置から、現在クライアント装置が保有しているバージョンのファイルと、所望のバージョンのファイルの差分情報を受け取り、クライアントが保有している当該ファイルのデータとファイル管理サーバ装置からの差分情報により、所望のバージョンのファイルを構築し編集することができる。
【0067】
従って、クライアント装置は、ファイル全体ではなく、現在保有するバージョンと所望するバージョンとの差分情報のみをファイル管理サーバ装置から取得すればよく、通信量の削減を図ることができるとともに、ブロック・データが暗号化されている場合はクライアント装置での復号化処理量を削減できる利点がある。
【0068】
また、本発明(請求項1)では、オペレーティング・システムによって提供されるシステムコールテーブル中のアドレス・ポインタの値を書き換えるだけで、既存のアプリケーションソフトウェア等のプログラム自体は全く変更せずに、アクセス要求者として利用して非同期編集を行うことが可能になる。
【0069】
また、請求項1のように構成した場合、請求項又はのファイルのバージョン管理において、履歴の完全性をファイル管理サーバ装置側だけで保証できる。
【0070】
また、請求項15のように構成した場合、請求項又はのファイルのバージョン管理において、現行バージョンのファイルの取り出しおよび古い履歴の消去が容易となる。
【0071】
また、請求項1,1のように構成した場合、請求項又はのファイルのバージョン管理において、古い履歴の消去が容易となる。
【0072】
また、本発明(請求項20)では、ファイル管理サーバ装置内に、その管理する各々のファイルの各々のバージョン毎に対応付けて、当該ファイルの当該バージョンを編集中であるクライアント装置の数を計数する手段を設けた。これにより、ファイル管理サーバ装置は、各々のファイルの各々のバージョンについて、それを編集途中であるクライアント装置が存在するかどうかを判断することができる。すなわち、指定されたファイルの指定されたバージョンに対応する計数値が0であるならば、それを編集途中であるクライアントは存在せず、また、計数値が0でないならば、それを編集途中であるクライアントが存在すると判断できる。
【0073】
そして、ファイル管理サーバ装置は、ファイルのバージョンを消去する要求が発行された際、対応する計数値が0でない場合には、0に等しくなるまで消去の実行を遅延させることができる。
【0074】
これにより、ファイル管理サーバ装置は、消去の対象となったファイルのバージョンを編集途中のクライアントが存在する間は、該ファイルの該バージョンを消去することがなくなるので、マージ処理の実行に支障をきたすおそれがなくなる。
【0075】
また、本発明(請求項2,2)では、クライアント装置は、ファイル管理サーバ装置に対して所望のバージョンのファイルをアクセスし、該ファイルを編集した後、この編集の内容をファイル管理サーバ装置に送り、ファイル管理サーバ装置は、前記クライアント装置から渡された編集の内容を示すデータを、前記クライアント装置がアクセスして得たバージョンがいずれであるかに従い、前記ファイル管理サーバ装置内での最新のバージョンに対する編集内容に変換し、他のクライアントによって既に行われている編集内容と競合するかどうかの検出を行い、前記クライアント装置に競合検出の結果を通知する。そして、この検出の結果にかかわらず、ファイルの更新(マージ処理)を行う。
【0076】
従って、各クライアント装置による編集結果は、ファイル管理サーバ装置における最新バージョンのファイルに対する更新に変換され、他のクライアントによる編集と競合するか否かによらず、ファイル管理サーバ装置に最新バージョンとして更新されるため、ロックを掛けずに複数のクライアント装置による非同期編集を行うことが可能となる。
【0077】
また、ファイル更新を行ったクライアント装置は、ファイル管理サーバ装置により、編集内容の競合検出の結果を通知されるので、その結果に基づいて、ファイルを編集し直すことができる。その際、ファイル管理サーバ装置ではファイルは履歴管理されているので、過去のバージョンを取り出すなどして柔軟に編集を行うことができる。
【0078】
また、請求項2のように構成した場合、ファイル管理サーバ装置は、他のクライアントによる編集との競合検出の結果に基づいて、ファイルの更新を行うかどうかを判断することができるので、ファイル管理サーバ装置の最新バージョンのファイルにおいて意味的矛盾が起こりにくい、あるいは起こらないようにすることができる。
【0079】
【実施例】
以下、図面を参照しながら本発明の実施例について説明する。
【0080】
まず、本発明の第1実施例に係る共有ファイル編集システムでは、2つの独立して実施可能な発明を適用している。第1の発明は、ファイルをブロック化して管理する共有ファイル編集システムにおいて、ファイルの内容をファイル・サーバからは読み取ることができないようにするものであり、第2の発明は、ファイルのバージョン管理をサポートする共有ファイル編集システムにおいて、非同期編集処理を行うことを可能とするものである。
【0081】
図1は、本実施例の概念図である。この共有ファイル編集システムは、共有ファイルに対するファイル・アクセス要求を発する1つまたは複数のアクセス要求者(以下、クライアントと呼ぶ)101と、ファイルの保管とアクセス要求者101に対する所定データの通信などを行うファイル管理サーバ(以下、サーバと呼ぶ)110からなる。さらに、各クライアント101とサーバ110の間には、要求文や応答文を受け渡しするための通信路111が設けられている。
【0082】
クライアント101は、実際のアクセス要求を出したユーザやそのユーザの使用している計算機のプロセスなどを抽象化したものである。また、各クライアント101には、それぞれ暗号化および復号化を実行する暗号器112が備わっている。すなわち、この暗号器112は、暗号アルゴリズムを実行する暗号化/復号化処理部(図15の1121,図24の8121)と、暗号鍵および復号鍵を記憶する鍵記憶部(図15の1122,図24の8122)からなる。この暗号化/復号化処理部と鍵記憶部の働きについては後述する。
【0083】
一方、サーバ110は、ファイル管理を行う計算機のプロセスでも良いし、ファイル管理機能を有する独立した装置でも良い。
【0084】
通信路111は、公衆網、LANなどのイーサネット、あるいは計算機内のソケットによる通信など、電子的にメッセージを交換できる媒体であれば何を用いても良い。
【0085】
サーバ110は、複数のファイル113を保管している。このファイル113は、ファイルの内容であるデータだけでなく、後で説明する履歴管理の情報やアクセスが許されたユーザ名のリストや暗号化・復号化に利用される情報などを含む。これらのファイル113は、それぞれ正規のクライアント101だけが復号できる形式で暗号化されている。
【0086】
例えば慣用暗号(暗号化の鍵と復号化の鍵が同一の暗号方式)を利用する場合には、正規のクライアント101は同一の鍵を所持しており、ファイル113はその鍵を利用して暗号化・復号化されている。
【0087】
ファイル113は、そのファイル名自体は同一に保たれても、各アクセス時点で書き込みや消去などが繰り返され、経時的にその内容が変化していく性質のものである。そこで、いくつかの特定の時点でのファイルの内容を保存しておき、後に保存を行った任意の時点における状態を再現したいなどの要求が生じる場合がある。特に、プログラム開発を行っている場合などでは上記要求は一般的である。このような履歴管理(バージョン管理)を実現する最も原始的な方法は、ある時点でのファイルの内容をまるごと保存しておくものである。一般的には、複数のバージョン間での違い(差分)はわずかなことが多いため、このような管理法はサイズの面で無駄があり、SCCS(Source Code Control System)やRCS(Revision Control System)といった差分の情報だけを保存していく方法が通常用いられている。
【0088】
以下、各履歴管理法でのデータ構造の概要を説明する。
【0089】
まず、RCSの原型と考えられる方式を説明する。ここで説明する方式は、差分積み上げ方式と呼ぶこととする。図2に、この差分積み上げ方式でのファイルのデータ構造を示す。この方式では、最初に作成されたバージョンのファイルを全文そのままの形で保存しておき、これをバージョンV.1(ブロック201)とする。次に、このバージョンV.1の一部を消去したり、何か挿入したりして新たなバージョンV.2が生成された場合、これを保存する際にV.2とV.1との間の差分を求め、その差分V.2−V.1(ブロック202)だけを保存する。ここで、バージョン間の差分は、例えばUNIXのdiffコマンドが提供するような、“どの位置に何が挿入された”とか“どの位置からどの位置までが消去された”といったことを表すデータの集合である。ファイルの全体に渡る変更が行われることはほとんどないので、一般的には差分のサイズの方がファイル全体のサイズよりも小さい。このような保存状態にあるデータすなわちV.1のデータと差分V.2−V.1のデータが、バージョンV.2の復元に十分な情報を提供する。以降は同様に、バージョンV.3とV.2との差分V.3−V.2(ブロック203)、V.4とV.3との差分V.4−V.3(ブロック204)、…というように、常に編集後の新バージョンと保存されている最新のバージョンとの間で差分をとり、その差分だけを追加して保存していく。
【0090】
従って、この差分積み上げ方式は、最新のバージョン(現行バージョン)を復元するためにそれまでの全ての履歴を利用することとなるが、ファイルのサイズ面では大きな改善がある。
【0091】
次に、RCS方式について説明する。図3に、RCSによって履歴管理されたファイルのデータ構造を示す。このRCS方式では、次のように履歴を管理する。まず、現行版(ブロック304)は常にファイル全文そのままの形で保管する。ここでは、現行版をV.4とする。そして、それの一つ前のバージョンV.3はV.4との差分V.3−V.4(ブロック303)という形式で保存する。ここで、差分をとるときに時間的に新しいバージョンを基準にした差分とするのがこの方式の特徴である。V.3以前のバージョンも同様で、差分V.2−V.3(ブロック302)、差分V.1−V.2(ブロック301)が保存される。この状態で新しいバージョンV.5が保存される場合には、差分V.4−V.5を求める処理と、求めた差分と最新版V.5を保存する処理が実行される。
【0092】
このようなデータ構造を利用した場合には、現行版の取り出しが容易になる利点がある。一方、昔のバージョンを復元する場合ほど復元に時間を要することになるが、通常は新しいバージョンほどアクセスする機会が多くなるので、本方式は一般的な利用形態に適したものである。
【0093】
次に、もう1つの代表的な履歴管理法であるSCCS方式に変形を加えた方式について説明する。これは、各ブロック・データに対応させて、どのバージョンでそのブロック・データが挿入されたかを示す情報と、どのバージョンでそのブロック・データが削除されたかを示す情報を記憶するバージョン管理方式である。
【0094】
図4に、変形SCCSにより履歴管理されたファイルのデータ構造の一例を示す。SCCS方式では、ある時点のファイル・データを全文の形で保存しておくことはせず、ファイルをブロック化して管理し、挿入があった場合は挿入された位置から挿入されたサイズだけのブロックが生成される。全てのブロックには、図中フィールド406に示す生成時点もしくは該当ブロックが生成された時点でのバージョン番号(こけはブロックの作成時を特定するための情報の一例である)と、フィールド407に示す消去時点もしくは該当ブロックが消去された時点でのバージョン番号(これはブロックの削除時を特定するための情報の一例である)の2つのデータ・フィールドが対応づけられている。この406,407の2つのフィールドは、ブロック識別情報の一例である。ブロック識別情報とは、個々のブロックがどういう位置付けのブロックであるかを把握できるように付加する情報である。先の差分積み上げ方式やRCSの場合にも、個々のブロックには“差分V.X−V.Y”などのタグを付加するが、これらのタグがブロック識別情報である。言い換えれば、ブロック識別情報とは、ブロック同士の関連を示す情報である。
【0095】
以下、さらにこの変形SCCS履歴管理法について、図4を用いて具体的に説明する。図4のファイルは、V.1からV.4までの4種類のバージョンからなるものである。このファイルのブロックは現在5つで、上から順にb1(ブロック401)、b2(ブロック402)、b3(ブロック403),b4(ブロック404),b5(ブロック405)である。
【0096】
ここで、前述した2つのデータ・フィールド406,407の内容を参照することによって、以下のような履歴でこのファイルが編集されたことが分かる。
【0097】
まず、バージョンV.1(最初の版)では、このファイルはb2,b3からなる。次に、バージョンV.2で一番最初と最後の位置に追加が行われ、V.2はb1,b2,b3,b4からなる。次に、バージョンV.3でブロックb4の部分が変更され、ブロックb5に書き換えられた。なお、このときブロックb4にはバージョンV.3で消去された旨のフラグが付けられ、新たにブロックb4の直下にブロックb5が挿入された旨の履歴管理が行われる。従って、V.3はb1,b2,b3,b5からなっている。次に、バージョンV.4(現行版)では、ブロックb2が消去され、b2にはバージョンV.4が消去された旨のフラグが付けられる。従って、V.4はb1,b3,b5からなっている。なお、バージョンV.4以前では、ブロックb2とb3は一固まりのブロックであったのだが、V.4でその固まりのブロックの前半のb2に対応する部分が消去されたのである。
【0098】
この例で分かるように、変形SCCSの履歴管理では、現行版のファイルが一固まりとして存在するわけではないが、任意のバージョンの取り出しに対してそのバージョンを含んで以前の時点で生成され、そのバージョンの時点で消去されていないブロックを上から順に連結すればよいので、任意のバージョンの取り出しが大きな負荷になることなく実現できる特徴がある。また、バージョンが進むにつれ、ブロックの分割が繰り返されていく傾向があることも理解できよう。この履歴管理法では、挿入されるブロックの位置や連続して消去される範囲さえ指定できれば容易に履歴管理できるのである。
【0099】
ここで、本実施例の共有ファイル編集システムでは、内容の読み出し保護を行うためには、暗号技術を利用する。このとき、ファイルを格納しているサーバ自体にもファイルの内容の読み出しを許さないことが第1の発明の特徴である。また、ファイルに対する編集処理を行う主体が複数であり、しかも共同編集をできるだけロックなどの排除行為なく行えるようにしたことが第2の発明の特徴である。そして、上記のようなファイルのデータ構造と暗号化を結び付けることによってサーバに対する内容の秘匿性を確保した共有ファイル編集システムを実現するとともに、上記のようなファイルのデータ構造を利用して複数主体による非同期編集を実現している。
【0100】
以下、本実施例の特徴の1つであるロックを掛けない非同期編集について説明する。非同期編集として問題になるのは、あるクライアントAがファイルの現行バージョンV.4を読み出し、それに対する部分的な消去や挿入を実行して新バージョンV.Aを作成したものとする。また、ほぼ同時に他のクライアントBがその時点でのファイルの現行バージョンV.4を読み出し、それに対して部分的な消去や挿入を実行して新バージョンV.Bを作成したものとする。仮に書き戻しの実行に関し、ライセンスAの方が早かったものととする。このとき、バージョンV.Aが新バージョンV.5として保存され、必要な履歴管理が実行されることになるが、バージョンV.Bが書き戻されようとすると矛盾が生じる。すなわち、バージョンV.Bをさらに新しいバージョンV.6として保存すると、バージョンV.6にはバージョンV.5で加えられた変更は何ら残らなくなる。このようなことが起こらないように新バージョンは常にそれまでに行われた変更をマージしたものである必要が必要である。
【0101】
こうした非同期編集を実現するために、本実施例の共有ファイル編集システムでは履歴管理を次のように利用する。すなわち、全ての編集行為は削除と挿入の組み合わせで記述できるが、これは編集対象バージョンとの差分として固有に決定される。この点に着目すると、例えばある編集行為E1がバージョンV.4に対して、どこに何を挿入し、どこからどこまでを消去したという手続きの集合Δ1として定義でき、他の編集行為E2が同じバージョンV.4に対する編集手続きの集合Δ2として定義できる。
【0102】
まず、編集行為E1が最初に書き戻された場合、編集手続きΔ1として元のバージョンV.4との差分を履歴管理方式に適した形式に変更して格納すれば新バージョンV.5ができる。次に、編集行為E2が書き戻される場合、編集手続きΔ2はバージョンV.4との差分を与えるものであるから、これを現行のバージョンV.5に対する差分に変更する必要がある。このように変更された編集手続きΔ2′を基にバージョンV.5との差分を履歴管理方式に適した形式に変更して格納することにより新バージョンV.6とする。以上の行為を繰り返せば、矛盾無く非同期編集を実現可能である。
【0103】
このとき、現行バージョンとの差分としては定義されていない編集手続きを、現行バージョンとの差分に矛盾無く変換することが重要である。この機構の応用として、かなり古いバージョンに対して編集を行い、その結果を現行版とマージするような使い方ができる。
【0104】
このような手続きを実行するための非同期編集システムの構成を図5に示す。図のように、この非同期編集システムは、編集部500、編集手続き生成部501、編集手続き変換部502、履歴管理情報生成部503、履歴管理部510、データ記憶部511からなる。なお、この非同期編集システムは、サーバ110とクライアント101に分散配置されるものであり、分散配置の仕方はファイルを暗号化するか否かに応じて適宜設定される。ただし、編集部500はクライアント101に、データ記憶部511はサーバ110に実装されることになる。
【0105】
編集部500は、履歴管理部510から得られる編集対象のバージョンでのファイルの内容に対して編集を行うためのものである。
【0106】
編集手続き生成部501は、編集対象のバージョンでのファイルの内容と、編集部500にてそのファイルに対して行われた編集結果のファイルの内容を入力し、「どの部分に何が挿入された」、あるいは「どこからどこまでの部分が削除された」などといった挿入データと挿入位置、削除開始位置と削除終了位置などからなる編集手続きデータを出力する。
【0107】
編集手続き変換部502は、この編集手続きデータと後述の履歴データとを入力し、この編集手続きデータを現行バージョンに対する編集手続きに変換して出力する。例えば、与えられた編集手続きデータに対し、挿入データは不変とし、その挿入位置を現行バージョンに対する挿入位置に変換し、また、削除開始位置や削除終了位置も同様に現行バージョンに対する削除開始位置と削除終了位置に変換する。この変換作業に必要な補助入力として利用されるのが、履歴管理部510からの履歴データである。
【0108】
履歴管理部510は、編集対象のファイルの更新履歴を保存したデータの管理を行っている。編集手続き変換部502の出力である編集手続きデータは履歴管理情報生成部503に入力され、この履歴管理情報生成部503で利用している履歴管理法に適した形式の履歴情報に変換され、この履歴情報が履歴管理部510に送られ、最新バージョンの更新が行われる。
【0109】
なお、データ記憶部511は、複数のファイルを格納するためのものである。
【0110】
次に、具体的な履歴管理法に対して、図5に示した非同期編集システムの構成の各部の働きを説明する。
【0111】
いずれの履歴管理方式を用いる場合でも、編集手続き生成部501はUNIXのdiffコマンドに相当する処理を行う。すなわち、編集対象バージョンのファイル・データと編集後のファイル・データとを比較し、「どこに何が挿入されたか」、あるいは「どこからどこまでが消去されたか」などの編集手続きデータを出力する。
【0112】
最初に、履歴管理法として差分積み上げ方式(図2)を用いる場合について、図6に示す例を用いて説明する。
【0113】
ここでは、編集対象バージョンがバージョンV.2であり、現行版がバージョンV.4である場合を想定する。このとき、編集手続き生成部501の出力Δ1が、仮に以下のものであったとする。
【0114】
・i4
ここから新たに挿入しました。
うまくマージできるでしょうか?
・d8,9
すなわち、バージョンV.2に対して4行目に2行(ここから…でしょうか?)を挿入し、V.2に対して8行目から9行目までの2行を消去したとことを表している。
【0115】
編集手続き変換部502の機能は、上記の編集手続きΔ1を現行版V.4に対する編集手続きΔ1′に変換することである。このときに必要となるものが、履歴管理部510から得られるV.2から現行版V.4までに加えられた編集履歴の情報である。
【0116】
ここで、一例として、バージョンV.3ではバージョンV.2の2行目と3行目を消去し、さらに5行目に1行(例えば、“ここはV.2の5行目です”などのデータ)が挿入されたものとする。また、バージョンV.4ではバージョンV.3の5行目から7行目までを消去し、8行目に2行(例えば、“この部分気に入らないので//このように変えました”など。但し,//が改行を表す)が挿入されたものとする。このとき、編集手続きΔ1における挿入位置はバージョンV.2における4行目が現行版V.4の何行目に対応するかを求めなければならない。これに対し、バージョンV.3とV.2の差分、バージョンV.4とV.3の分の2つは必要となる全ての情報を含んでおり、図6に示したようにV.4の2行目がV.2の4行目に対応していることが分かるので、実際は、“V.2の4行に2行挿入”は“V.4の2行目に2行挿入”に変換される。同様に、V.2の8行目と9行目がV.4のそれぞれ何行目になるかを履歴を追って調べると、V.2の9行目はV.4の7行目に対応するが、V.2の8行目は既にV.4で消去されていることが分かる。既に、消去されている部分をさらに消去することは通常意味をなさないので、この場合には、“V.2の8行目から9行目を消去”は“V.4の7行目を消去”に変換される。ここに説明した編集手続きの変換(主に変更位置の検索)を行うのが編集手続き変換部502である。このように編集手続き変換部502では変換のために履歴情報が必要不可欠である。
【0117】
こうして作成された編集手続きデータΔ1′を入力として、履歴管理情報生成部503は、現行版V.4と新バージョンとの差分を求める。ここでは履歴管理法として差分積み上げ方式を用いているので、先の“(V.4の)2行目に2行挿入”と“(V.4の)7行目を消去”がそのまま履歴管理情報となり履歴管理部510へ送られ、履歴として追加される。
【0118】
次に、図4の変形SCCSのような履歴管理法を利用すると、編集手続き変換部502で変更位置の検索処理が単純になる。以下、この点について先の例を用いて説明する。
【0119】
ここでは、図7のように、バージョンV.2で10行あったものとする。
【0120】
まず、V.3においてV.2の2行目と3行目が消去されたので、2行目と3行目の部分は新たに1つのブロックになり、消去時点フラグに“V.3”が書かれている。また、V.2の4行目と5行目の間に1行挿入されたので、V.2の4行目が1つのブロックになり、またV.3で挿入された1行が1つのブロックを構成し、このブロックの生成時間フラグに“V.3”が書かれている。
【0121】
次に、V.4においてV.3の5行目から7行目までが消去されたので、V.3の時点で消去されていない行を先頭から数えて5行目から7行目までが1つのブロックになり、消去時点フラグ“V.4”が書かれる。さらに、V.3の7行目と8行目の間に2行挿入されたので、この挿入された2行が1つのブロックを構成し、その生成時点にフラグに“V.4”と書かれている。
【0122】
編集手続き生成部501からの出力である編集手続きΔ1は先に説明したものと同じであるが、履歴管理部510から編集手続き変換部502に渡される履歴データは図7のバージョンV.4に示した形式になっている。編集手続き変換部502では、履歴データのうち、V.2の時点での4行目(挿入位置)と8行目(削除開始位置)、9行目(削除終了位置)を求めるために、V.2での先頭から4行目,8行目,9行目を数える。数えるときの注意は、V.2以降で挿入された部分は飛ばすことである。
【0123】
こうして求めた位置に新規に挿入された2行(“ここから新たに挿入しました//うまくマージできるでしょうか?”)を1つのブロックとして挿入する。さらに、削除に関しては、V.2の8行目は既に削除時点フラグが立っているので何もせず、9行目を1ブロックとして分割し、削除時点フラグに“V.5”と書けば良い。こうして作成されたバージョンV.5を履歴管理部510に送り、これを更新する。
【0124】
この一連の手続きは履歴管理情報生成部503の機能も含んでおり、履歴管理部510を更新するところまでが達成される。
【0125】
ここで見たように履歴管理法として変形SCCSのような方式を利用すると、変更位置の検索が単純に先頭からのカウントだけで達成されるため、極めて処理が単純化される。
【0126】
このように、本実施例によれば、履歴管理法として変形SCCSのようなデータ構造を利用し、しかも図5に示した諸機能を用いて非同期編集を実現することが可能である。
【0127】
次に、本発明の特徴の1つであるファイルデータの暗号化手法について説明する。
【0128】
本実施例では、前述のようなファイルの履歴管理で生じるいくつかのデータ・ブロックごとに独立に暗号化し、サーバにはどのデータ・ブロックがどの部分であるかを把握可能な形にする独自の構成を採用する点に特徴がある。
【0129】
そのようなファイル構成の具体例は、図2のように差分積み上げ方式を履歴管理法として利用する場合には、ブロック201,202,203,204をそれぞれ独立に暗号化し、サーバには「ブロック201が最初のバージョンV.1のデータを暗号化したものである」「ブロック202がバージョンV.2とバージョンV.1の差分V.2−V.1を暗号化したものである」といった対応関係を認識可能な形態にすることである。各暗号化ブロックとそのブロックの意味の対応付けの具体的な一例として、サーバの管理用のフラグ・フィールドを用意し、そこにV.1やV.2−V.1などの情報を書き込んでおけばよい。
【0130】
このようにサーバが各データブロックの識別に利用する情報を“ブロック識別情報”と呼ぶことにする。ここに述べた管理用のフラグ・フィールドや図4の生成時点(406)、消去時点(407)の各フィールドはその一例である。
【0131】
他の具体例としては、図3のRCS方式のような履歴管理法を利用する場合に、ブロック「301,302,303,304を独立に暗号化し、サーバには「ブロック301が差分V.1−V.2を暗号化したものである」「ブロック302が差分V.2−V.3を暗号化したものである」といった対応関係を認識可能な形態にすることである。
【0132】
さらに他の具体例としては、図4の変形SCCS方式のような履歴管理法を利用する場合に、ブロック401,402,403,404,405を独立に暗号化し、サーバには「ブロック401が先頭ブロックであり、ブロック402がそれに続くブロックであり、…」といった情報を認識可能な形態にすることである。例えば、ブロックの区切りが分かる形で単純に連結するだけでも良い。図4の各ブロックには、生成時点406と消去時点407の2つのデータ・フィールドが対応づけられていることは先に説明した通りであるが、これらのフィールドは暗号化しない。
【0133】
この方式のように暗号化する部分を独立化することの利点は、クライアントの処理量とクライアント・サーバ間の通信量の削減にある。すなわち、クライアントが図3のような履歴管理システムにて現行版をサーバに対して要求した場合、サーバは暗号化されたブロック304だけを送信すればよいが、例えば図3のデータ・ファイル全体が一固まりとして暗号化されている場合、サーバは全てのデータを送信しなければならない。さらに、このデータを受信したクライアントは一固まりとして暗号化されている全てのブロック301〜304を復号しなければならず、不要な処理が多く含まれてしまうことが理解できよう。
【0134】
また、例えば図2の履歴管理方式において、クライアント側が新たな編集行為の結果として変更できるのは、差分V.5−V.4の暗号化ブロックを追加することだけである。しかし、ファイルが一固まりとして暗号化されているような場合には、特に差分V.4−V.3との区切りに近い部分が変更されていないことの検査が困難になる。すなわち、暗号化は通常ファイルの先頭から連鎖的にある長さごとに区切って行われるため、ファイルの終わりに近い部分以外が変更されていた場合には、何らかの改変行為が行われたことが、サーバによって暗号文から推定可能となるが、ファイルの終わりに近い部分(新たに追加された差分に近い部分)は改変の検出ができない。ところが、図2のデータ構造にてブロックごとに独立に暗号化する場合には、新たな差分の暗号化データを追加していくだけであるから履歴に関して改変が行われないようにサーバが容易に管理できる。
【0135】
ここで、先に見てきたようにロックを掛けない非同期編集を実現する上では、特に図4のデータ構造を利用した履歴管理法が、マージ処理の簡単化の面でも適している。しかし、このような履歴管理法の特徴として、ある時点で一固まりであったブロックがそれ以降の時点で次々に分割されていくことがある。一般にはブロックの分割に伴い、ブロックデータの再暗号化の必要が生じるが、本実施例では暗号化の処理を軽減可能な暗号方式を用いる。以下、そのような暗号方式について説明する。
【0136】
ブロック内のデータはビットあるいはバイトが最小の単位となっていることを想定できるが、本実施例の第1の暗号方式では1つのブロックがいくつかの位置(ブロックの先頭から順にポイント1,ポイント2,…とする)で分割される場合に、ブロックの先頭からポイント1までの暗号データは再暗号化の必要がなく、既に暗号化されているデータをそのまま利用可能である。ポイント1以降のデータのみ再暗号化する。
【0137】
さらに、本実施例の第2の暗号方式では、一切再暗号化を必要とせず、一度暗号化されたデータはそのまま利用される。
【0138】
最初にこのような利用が可能となるための暗号方式の条件を述べる。まず、任意のポイントで暗号ブロックを分割した場合に、その分割された暗号ブロックの断片から対応する平文が得られなければならない。従って、平文の特定ビット(あるいはバイト)が暗号文の特定ビット(あるいはバイト)に対応しているこが条件となる。このためには当然のことながら、暗号化によるサイズの拡大があってはならい。このようなな性質を持つ暗号方式にストリーム暗号と呼ばれる方式がある。代表例にブロック暗号DES(Data Encryption Standard)をOFB(Output FeedBack)モードあるいはCFB(Cipher FeedBack)モードで利用する方式がある。OFBモードによる暗号化手順は図8に、CFBモードによる暗号化手順は図9に示した。
【0139】
まず、図8を参照しながらOFBモードの動作原理を説明する。送信側と受信側はブロック暗号の鍵Kとシフトレジスタ602,612の初期値であるIV(601,611)を共有しているものとする。送信側は暗号化に当たりシフトレジスタ602の内容を暗号化し、得られた結果604の内Lビットをシフトレジスタ602に帰還させるとともに、平文のLビットとビット単位で排他的論理和演算(605)を行う。この処理を繰り返すことにより、平文をLビットずつ暗号化する。但し、1回の処理で暗号化される量はLビットであるが、実はビット単位で暗号化されているものである。
【0140】
また、受信側の復号処理も送信側とまったく同様に行われるが、その詳細は自明であるので説明を省略する。
【0141】
次に、図9を参照しながらCFBモードの動作原理を説明する。OFBモードの場合と前提は同じで、ハードウェアの構成もほとんど同様であるが、違いは暗号化時にシフトレジスタ622に帰還させるデータがブロック暗号器の出力ではなく、暗号文を用いる点にある。このために、復号側の処理もシフトレジスタ632への入力にLビットの暗号文を用いることになる。原理は図9から明らかなのでここでの説明は省略する。
【0142】
これらのモードは1回の暗号化に利用されるビット数(すなわち、シフトレジスタへの帰還ビット数と一致する)を用いて、LビットOFBモードもしくはLビットCFBモードと呼ばれる。1ビットOFBモードもしくは1ビットCFBモードは、代表的なビット単位のストリーム暗号である。また、8ビットOFBモードもしくは8ビットCFBモードは代表的なバイト単位のストリーム暗号である。なお、この両モードにおいて、平文8ビットと暗号器出力の8ビットをビット毎に排他的論理和をとって暗号化/復号化するのではなく、例えば8ビットの加算/減算により暗号化/復号化するように変形することも可能である。
【0143】
以下では、ブロック内データの最小単位をバイト単位と仮定して説明を行う。このような、ストリーム暗号による暗号文の強度を保証するためには、鍵Kが固定である場合、シフトレジスタの初期値IVを平文ごとに変えた方が好ましい。そのようにしないと、2つの暗号文の同一位置の排他的論理和を取るだけで平文同士の排他的論理和が求められたり、2つの暗号文の先頭がまったく同じ時には、対応する平文もその部分はまったく同じであることが分かるなどの弱点が発生する。この点は、本実施例においては、暗号化のブロックごとに初期値IVを変えることで対応する。
【0144】
さて、本実施例の暗号方式によるブロック・データ分割時の暗号手順を図10を参照しながら説明する。(a)が分割前のブロックデータのデータ構造であり、(b)が分割後のブロックデータのデータ構造である。ここでは、ある暗号ブロック(ブロック0)の中間部分が削除されることを例とし、ブロックを前半部(ブロック1)、削除部(ブロック2)、後半部(ブロック3)の3つに再暗号化することを想定する。各ブロックごとに初期値IVを格納する領域642が設けられている。但し、この初期値IVは暗号化されない。
【0145】
本実施例の第1の暗号方式では、LビットOFBモードもしくはLビットCFBモードを用いる。ただし、Lは8の倍数とする。各ブロックの初期値IVは新規にブロックが生成される時点で乱数発生などにより生成される。ブロック・データは先の暗号方式で先頭から順番にLビットずつ暗号化される。ブロックの最後はちょうどLビットにならない場合があるが、その場合にも平文の長さで暗号を打ち切る。このようにしても最後の部分を復号できる。
【0146】
ブロック・データ分割時(図10)の暗号化手順を図11のフローチャートを参照しながら説明する。
【0147】
まず削除開始位置より前の部分(ブロック1)がそのまま切り放され1つのブロックとなる(ステップS1)。次に、乱数発生などにより初期値IV1が決定され(ステップS2)、この初期値IV1を初期値としたOFB(もしくはCFB)モードにより削除部のデータ(ブロック2に対応する平文データ)が暗号化され、新たに1つのブロックになる(ステップS3)。さらに、別の初期値IV2が決定され(ステップS4)、後半部のデータが暗号化され新たな1つのブロックになる(ステップS5)。
【0148】
この手順では、先頭部分のブロックは初期値IV0がそのまま利用され、再暗号化の必要がない点に特徴がある。
【0149】
次に、本実施例の第2の暗号方式を説明する。第2の暗号方式の特徴は一切の再暗号化を必要としない点にある。この場合には8ビットCFBモードを用いる。
【0150】
新規挿入ブロックについては、初期値IVを乱数発生などにより発生し、ブロック・データは先頭から順番に1バイトずつ暗号化する。
【0151】
ブロック・データ分割時(図10)の暗号化手順を図12のフローチャートを参照しながら説明する。最初に個々の分割位置にて3つのブロックに切断する(ステップS11)。次に、ブロック1の最後の8バイトをブロック2の初期値IVとして保存する(ステップS12)。さらに、ブロック2の最後の8バイトをブロック3の初期値IVとして保存する(ステップS13)。ステップ12とステップ13での初期値IVの保存時の注意として、前のブロックが短くて8バイト未満の場合の対処が必要である。その場合には、前のブロックはそのブロックの初期値IV+ブロック・データと考え、足りない分は初期値IVから補えば良い。
【0152】
この手順は8ビットCFBモードでは任意の位置から復号可能な性質を利用したものであり、ブロックの分割に伴う再暗号化がまったく不要になる利点がある。この利点はさらに、暗号化共有ファイルシステムをクライアント・サーバ・システムにて実現する場合にブロックの分割処理を暗号/復号機能を有しないサーバが実行可能となることを意味し、同システムの効率的な実現を可能にする。本手順を一般のLビットCFBモード(ただし、Lは8の倍数)に拡張することもできるが、そのためには補助的なデータが必要となる。これは、例えば図10のブロック2が元のブロック0の先頭からLビットずつの区切り目から始まらない場合があるためである。ブロック2のデータはブロック0の先頭からLビットずつ暗号化されたデータとなっているため、元のLビットずつの区切りが再現できるようにしなければならない。そこで、補助的なデータとしてブロックの先頭からu(u≦Lの整数)ビット分が半端なブロックであることを表すものを用い、復号するときにはブロックデータの最初にダミーの(L−u)ビットの暗号文を追加して復号を行い、復号結果の先頭の(L−u)ビットを無視する。それにつながるデータは、Lビットずつ復号化すれは良い。また、ブロックの分割時の初期値IVの保存は、前のブロックの最後の半端ビット(L−uビット)の直前の8バイトの内容とする。前のブロックが短い場合の処理は、8ビットCFBモードの場合として説明したものと同様に、足りない部分を初期値IVから補えば良い。
【0153】
以上、削除に伴うブロック分割を例として説明したが、挿入においては次のようになる。すなわち、既存ブロックの途中にあるブロックを挿入する場合には、先の図11もしくは図12の手順に相当する既存のブロックの分割と、新規挿入ブロック・データの暗号化が必要である。新規挿入部の暗号化は、まず乱数発生などにより初期値IVを決定し、この初期値IVを利用してOFB(もしくはCFB)モードにより暗号化する。また、既存ブロック同士の間にあるブロックを挿入する場合には、既存ブロックには何ら変更はなく、新規挿入ブロックだけを暗号化すれば良い。
【0154】
次に、本実施例のいくつかの履歴管理方式の特徴を整理する。ここで比較するのは図2に示した暗号化差分積み上げ方式による共有ファイル編集システムと図3に示した暗号化RCS方式による共有ファイル編集システムと図4に示した暗号化SCCS方式による共有ファイル編集システムである。
【0155】
まず、ロックをかけない非同期編集機能に関しては、先に説明したように暗号化SCCS方式がマージ手続きが単純化できて有利である。
【0156】
次に、現行版の取り出しであるが、これは暗号化RSC方式では現行版をそのままの形て暗号化データとして保管するためこれが最も有利である。暗号化SCCS方式はその次に有利であり、任意の版が同程度の処理で復元できる特徴がある。
【0157】
ファイル・サイズを圧縮するために古い履歴を消去したいことがあるが、この点に関しては、暗号化RSC方式と暗号化SCCS方式が優れている。なぜなら、これらの方式ではそうした要求を受けたサーバが単独で履歴消去可能であるからである。暗号化差分積み上げ方式では、クライアントが関与することによって、古い履歴を消去できる。
【0158】
なお、注意すべき点として、暗号化SCCS方式の場合、古い履歴を消去してもブロックの融合を行う訳ではなく、不要なブロックの切り離し処理を行うだけであることがあげられる。ブロックの融合まで行う場合にはクライアントの関与が必要である。また、暗号化RCS方式の場合には、サーバ単独で実行できるのは古い側の履歴から順番に消去することであることにも注意しなければならない。
【0159】
履歴内容は後になって変更したりできないように管理されることが好ましいが、この履歴内容の完全性に対しては、暗号化差分積み上げ方式が優れている。先にも説明したが、この方式では差分を追加していくことしかクライアントには許されていないため、履歴の完全性が保証できる。
【0160】
以上説明してきたように、上記2つの発明の一方または両方をファイル編集システムに適用することにより、(a)ファイルのバージョン管理をサポートする共有ファイル編集システムであって、ファイルの内容をファイル・サーバに対して秘密にしながら、非同期編集処理を行うことが可能となる共有ファイル編集システム、(b)ファイルのバージョン管理をサポートする共有ファイル編集システムであって、非同期編集処理を行うことが可能な共有ファイル編集システム、(c)ファイルの内容をファイル・サーバからは読み取ることのできない秘匿性の高いファイル編集システムを提供することができる。
【0161】
なお、以上では構造化されたファイルの暗号化において、クライアントだけが暗号化/復号化できるようにデータの内容は暗号化するが、データ構造に関してはサーバにも認識できる形式を示し、特にバージョン管理や非同期編集への応用を説明した。本発明は、他にも様々なシステムに応用可能であり、例えばプログラムを、サブルーチンごとに暗号化する方法や、ハイパーテキストなど複数のデータファイルがリンクで結び付けられている場合に個々のデータファイル単位で暗号化し、リンク部分は暗号化しない方法などに応用できる。このようにすれば、サーバに対してはモジュール内容の秘密性を保ちながら、クライアントが必要な部分だけ読み出して利用する効率的な利用ができる。
【0162】
次に、上述したサーバへのファイル内容秘匿機能(第1の発明)と非同期編集機能(第2の発明)をクライアント・サーバ型システムに実装してた本発明の第2実施例について説明する。
【0163】
まず、ファイルの構造、履歴管理方式、暗号化・復号化方式、非同期編集システムについては前述した第1実施例と同様のものを用いることを前提とする。これらについては、すでに詳細に説明したので、ここでは主に本実施例に特有の構成・動作について説明する。
【0164】
図13には、本実施例の共有ファイル編集システムの第1構成例を示す。図13のように、この共有ファイル編集システムは、複数のクライアント91と、サーバ90からなる。
【0165】
サーバ90は、各クライアント91と通信路111を介して通信を行うための通信部131、共有ファイル用履歴管理部510、複数のファイルを格納するためのデータ記憶部511を備えている。
【0166】
また、各クライアント91は、サーバ90と通信路111を介して通信を行うための通信部130、サーバ90から得たファイルを格納するためのメモリ121、共有ファイル編集部122、暗号器112を備えている。
【0167】
図14のように共有ファイル編集部122は、図5で説明した編集部500、編集手続き生成部501、編集手続き変換部502、履歴管理情報生成部503を備えている。なお、サーバ90の共有ファイル用履歴管理部510とデータ記憶部511は、図5における履歴管理部510とデータ記憶部511に相当する。
【0168】
図15のように暗号器112は、共有ファイル編集部122と接続される通信部132、暗号化/復号化処理部1121、鍵記憶部1122を備えている。
【0169】
ここで、本実施例では、クライアント91は複数であるために、
(a)特定バージョンのファイルデータの読み出し(図5での510から500への矢印)、
(b)編集結果である履歴管理情報の書き込み(図5での503から510への矢印)、
(c)編集手続きの変換に必要な履歴データの読み出し(図5での510から502への矢印)
の各要求が様々なタイミングで発生する。
【0170】
以下これらの要求を処理する一般的な手順を説明する。
前述したように、1つの履歴管理情報に対応する編集手続きは複数に挿入と削除の組み合わせからなるが、これらを一纏めとして取り扱うことが望ましい。すなわち、あるクライアント91があるバージョンのファイルに対し、複数箇所の変更を行った場合に、それらの変更がすべてサーバ90側のデータに反映された時点で新規バージョンとする。履歴管理情報の書き込み要求は1つ1つが待ち行列(キュー)に入れられ、先入れ先出し方式(First−in−First−out)で順次履歴管理部510が取り出してファイル・データに反映していく。履歴管理部510はクライアント91からの読み出し要求(先の(a),(c))には随時応答するが、履歴管理部510があるファイルデータを更新中に同一ファイルの現行版の読み出し要求が来た場合には、更新前のバージョンを送信する必要がある。
【0171】
クライアント91は最初のサーバ90からあるバージョン(バージョンxとする)のデータを要求し、メモリ121に格納した後、編集部500にて編集を行い、編集手続き生成部501にて編集手続きデータを生成する。バージョンxが、読み出し時点における最新版であった場合には、編集手続きは変換せずに履歴管理情報を生成し、暗号化してサーバ90に送信する。受け取ったサーバ90側ではその時点での最新版にマージ可能な履歴管理情報であるか否かを判定し、マージ不可能な場合には共有ファイル用履歴管理部510から履歴データをクライアント91に送信し、編集手続き変換部502による編集手続きの変換を要求する。
【0172】
ここで、マージ可能か不可能かの判断は例えば、クライアント91側で送信する履歴管理情報のヘッダに対象としたデータのバージョン番号をつけるようにし、サーバ90側では保存している最新版の番号とヘッダの番号を比較して一致していればマージ可能、一致していなければマージ不可能と判断すれば良い。さらに、マージ不可能な場合にクライアント91に送信する履歴データは、例えば履歴管理情報のヘッダに含まれるバージョン番号と最新のバージョンとの間の履歴データである。クライアント91では、所定の編集手続きの変換を実施し、新たに履歴管理情報を生成する。これを再びサーバ90に送り、サーバ90側では再度マージ可能性を判定する。
【0173】
ここで、再びマージ不可能である可能性がある。すなわち、クライアント91での編集手続きの変換処理の間に、他のクライアントによりファイルのバージョンが更新された場合ある。従って、図5の510→502→503のループを何度も回る可能性がある。
【0174】
このような処理の繰り返しを防ぐためにロック機能を利用することも考えられる。すなわち、履歴データをクライアントに送出した時点でサーバ側がファイルデータの更新にロックを掛け、そのクライアントからの履歴管理情報を受信してファイルデータの更新が終わった時点でロックを解除するようにする。ロックがかかっている間は編集対象ファイルデータの読み出しは許可するが、それ以外の処理はサーバ90側でリジェクトする。リジェクトされたクライアント91は適当な時間を置いてリトライする。なお、このロック機構による待ち時間は極めて短いものと考えられる。このロック機構は、必ずしも必要ではない。
【0175】
一方、最初にサーバ90から読み出したバージョンxが読み出し時点での最新版でない場合には、編集手続き変換部502での処理のために、サーバ90に対してバージョンxから最新版までの履歴データを要求する。後の処理は先に説明したものと同じである。
【0176】
以上の手順において、クライアント91が受信する編集対象ファイルと履歴データ、およびサーバ90に送る履歴管理情報はすべて構造ごとに暗号化されたデータであり、その暗号化/復号化に暗号器112を利用する。
【0177】
このように、本実施例では、ファイルの内容は復号鍵を持っている正規のクライアントからのみ読み取れ、ファイルの内容をサーバからは読み取ることのできないようにした秘匿性の高いファイル編集システムを提供することができる。
【0178】
また、サーバでは、常に各クライアントによる編集終了時における最新バージョンのファイル内容にに対する更新が行われるので、ロックを掛けずに複数のクライアントによる非同期編集行うことが可能となる。
【0179】
また、時間的に古いバージョンを編集し、最新バージョンとする使い方が可能となる。すなわち、非同期編集可能な共有ファイルにおいて、編集対象を現行版に限定しない使い方が可能となる。
【0180】
また、非同期編集による編集結果のマージ処理を実行する場合に、サーバからはクライアントでの処理に必要となるデータのみを送り、クライアントで必要な処理を実行してサーバに返す形式を実現でき、不必要な履歴に関する部分まで通信されるなどの無駄がなくなり、効率が著しく向上する。
【0181】
また、ファイルのデータ構造として、単純に一つ前(あるいは後)のバージョンとの差分を残していくRCSのような構造ではなく、SCCSで利用されているようなファイルの先頭から順番に挿入されたデータが挿入された位置にブロックとして管理され、部分的に消去された場合にはブロックの分割を繰り返していく方式を採用すると、マージ処理に必要となる挿入/削除の位置の決定が極めて単純化され、非同期編集が容易となる。
【0182】
さらに、先に説明したマージ処理に適したSCCSのようなデータ構造を採用した場合のデータ内容の暗号化方式として、ビット単位(あるいはバイト単位)のストリーム暗号を利用することができる。このストリーム暗号は平文の特定ビット(あるいはバイト)が暗号文の特徴ビット(あるいはバイト)に対応する性質がある。このため、先のような暗号化されたブロックの分割が繰り返される場合に、分割されるポイントより後ろを切りとり、その部分だけ暗号化しなおせばよく、再暗号化のオーバヘッドが軽減される。さらに、サーバ側で分割ポイントより前の部分が変更されていないことを確認することもできる。
【0183】
以上に説明した共有ファイル編集システム(第1の発明と第2の発明の両方を適用したもの)では、先に示したように図5での510→502→503のループが存在した。以下では、そのループを解消する一実施例を説明する。
【0184】
本実施例では、ファイルのデータ構造としては、図4の変形SCCS方式を用い、暗号方式としては、ストリーム暗号のうち8ビットのCFBモードによる方式を用いる。この暗号方式には先に説明したようにブロックの分割においても再暗号化が不要な特徴がある。
【0185】
図16には、本実施例の共有ファイル編集システムの第2構成例を示す。図16のように、この共有ファイル編集システムは、複数のクライアント211と、サーバ210からなる。
【0186】
サーバ210は、各クライアント211と通信路111を介して通信を行うための通信部231と、図5で説明した編集手続き変換部502、履歴管理部510および複数のファイルを格納するためのデータ記憶部511を備えている。なお、この編集手続き変換部502は、図5の履歴管理情報生成部503の機能も含んだものとする。
【0187】
各クライアント211は、サーバ210と通信路111を介して通信を行うための通信部230、サーバ210から得たファイルを格納するためのメモリ221、共有ファイル編集部222、暗号器212を備えている。図17のように、クライアント211の共有ファイル編集部222は、図5で説明した編集部500および編集手続き生成部501を備えている。
【0188】
ここで、本実施例では、クライアント211は複数であるために、
(a)特定バージョンのファイルデータの読み出し(図5での510から500への矢印)、
(b)編集結果を変換した編集手続きデータの書き込み(図5での501から502への矢印)、
の各要求が様々なタイミングで発生する。
【0189】
以下これらの要求を処理する手順の一例を説明する。
クライアント211は、最初にサーバ210からあるバージョンのデータを要求する。そのバージョンのデータを復号し、メモリ221に格納した後、編集部500にて編集を行い、編集手続き生成部501にて編集手続きデータを生成する。ここでの編集手続きデータは、挿入データと削除データの2つである。挿入データは、挿入位置(例えば先頭位置からのバイト数)と挿入ブロック内容の組からなり、削除データは削除開始位置と削除終了位置の組からなる。
【0190】
クライアント211は、挿入ブロック内容に関しては、初期値IVを生成し、8ビットCFBモードで暗号化する。他のデータ(挿入位置や削除範囲など)は暗号化せずに、暗号化挿入ブロック内容とまとめてサーバ210に送る。
【0191】
これを受け取ったサーバ210では、まず編集手続き変換部502にて、挿入位置と削除範囲をその時点での最新版に対する位置データに変換(位置変換)する。次に、履歴管理部510にて、挿入位置にはクライアントから送信された暗号化挿入ブロックを配置し、削除範囲ではブロックの分割と消去時点フィールドの記入を行う。以上の結果を最新版とする。
【0192】
この手順の中で、暗号化した状態で編集手続きの変換が可能なことがポイントであり、そのために先の一般方式における編集手続き変換のための(前述したような)ループが解消される。暗号化した状態で編集手続きの変換を可能にするファイルのデータ構造と暗号方式として、変形SCCS方式と8ビットCFBモードの組み合わせが挙げられる。他の暗号方式、特にブロック分割の場合に最初のブロックだけは再暗号化を不要にするLビットOFBモードやLビットCFBモードのような方式でも同様の効果を得ることができるが、クライアントからサーバに送る編集手続きデータは、ここに示したデータよりも余分なものが必要となる。
【0193】
このように、本実施例では、ファイルの内容は復号鍵を持っている正規のクライアントからのみ読み取れ、ファイルの内容をサーバからは読み取ることのできないようにした秘匿性の高いファイル編集システムを提供することができる。
【0194】
また、サーバでは、常に各クライアントによる編集終了時における最新バージョンのファイルの内容に対する更新か行われるので、ロックを掛けずに複数のクライアントによる非同期編集を行うことが可能となる。
【0195】
尚、上述した図13と図16の構成例を要部についてまとめると各々図18,図19に示すような構成であると考えられる。
【0196】
図18の構成では、ブロック識別情報はクライアント91側の履歴管理情報生成手段503によりクライアント91からサーバ90に送る履歴管理情報に付加されても良い。この場合、ブロック識別情報は暗号化されず履歴管理情報が暗号器112で暗号化されるので、サーバ90は暗号化されておらず従ってサーバ90側で認識可能なブロック識別情報に基づいて履歴管理情報が示す新しいブロックデータを管理できるが、暗号化されている履歴管理情報のデータ内容はサーバ90側では認識不可能である。
【0197】
これに代えて、ブロック識別情報をクライアント91からサーバ90に送る履歴管理情報に付加しないようにしても良い。この場合、履歴管理情報が示す新しいブロックデータに適当なブロック識別情報はサーバ90側の履歴管理部510で付加できる。
【0198】
図19の構成では、編集手続きデータのみがクライアント211からサーバ210へ送られ、この編集手続きデータに基づいて得られる新しいブロックデータを同定するブロック識別情報はサーバ210側の履歴管理情報生成部503か履歴管理部510により付加される。ここでは、挿入データ内容のみが暗号器212で暗号化され、編集手続きデータの他の部分は暗号化されないので、サーバ210側の編集手続き変換部502はこれらの暗号化されておらず従ってサーバ210側で認識可能な編集手続きデータの他の部分と履歴管理部510から与えられる履歴データとに基づいて編集手続きデータの変換を行える。
【0199】
この図19の構成を変形して、編集手続き変換部502をクライアント211側に、編集手続き生成部501と暗号器212の間に設けるようにして、図18と図19の折衷形とすることも可能である。この場合、変換後の編集手続きデータのみがクライアント211からサーバ210へ送られ、この変換後の編集手続きデータに基づいて得られる新しいブロックデータを同定するブロック識別情報はサーバ210側の履歴管理情報生成部503か履歴管理部510により付加される。ここでは、変換後の挿入データ内容のみが暗号器212で暗号化され、変換後の編集手続きデータの他の部分は暗号化されないので、サーバ210側の履歴管理情報生成部503はこれらの暗号化されておらず従ってサーバ210側で認識可能な変換後の編集手続きデータの他の部分に基づいて履歴管理情報の生成を行える。
【0200】
さて、上述した2つの発明は独立実施可能である。以下で、一方の発明だけを適用した実施例を夫々説明する。
【0201】
最初に、上述した非同期編集機能(第2の発明)をクライアント・サーバ型システムに実装した本発明の第3実施例について説明する。
【0202】
まず、ファイルの構造、履歴管理方式、非同期編集システムについては前述した第1実施例と同様のものを用いることを前提とする。これらについては、すでに詳細に説明したので、ここでは、主に本実施例に特有の構成・動作について説明する。
【0203】
図20は、本実施例の共有ファイル編集システムの構成を示す。図20のように、この共有ファイル編集システムは、複数のクライアント701と、サーバ710からなる。
【0204】
サーバ710は、各クライアント701と通信路111を介して通信を行うための通信部731、マージ処理部740、複数のファイルを格納するためのデータ記憶部711を備えている。
【0205】
また、各クライアント701は、サーバ710と通信路111を介して通信を行うための通信部730、サーバ710から得たファイルを格納するためのメモリ721、共有ファイル編集部722を備えている。
【0206】
図21のように、クライアント701の共有ファイル編集部722は、図5で説明した編集部500、編集手続き生成部501を備えている。
【0207】
また、図22のように、サーバ710のマージ処理部740は、図5で説明した編集手続き変換部502、履歴管理情報生成部503、共有ファイル用履歴管理部510を備えている。なお、サーバ710のデータ記憶部511は、図5におけるデータ記憶部511に相当する。
【0208】
ここで、本実施例では、クライアント701は複数であるために、
(a)特定バージョンのファイルデータの読み出し(図5での510から500への矢印)、
(b)編集結果を変換した編集手続きデータの書き込み(図5での501から502への矢印)、
の各要求が様々なタイミングで発生する。
【0209】
以下、これらの要求を処理する手順の一例を説明する。
【0210】
この場合、クライアント701はサーバ710から特定のバージョンのファイルデータを要求し、ファイルをメモリ721に格納した後、編集部500にて編集を行い、編集手続き生成部501にて編集手続きデータに変換し、それをサーバ710に送る。
【0211】
サーバ710側では、1つ1つの編集手続きデータをキューに入れ、マージ処理部740が順次取り出して履歴に変換して保存していく。先の暗号機能付きの装置の実施例の場合との違いは、サーバ710単独で最新版に対する編集手続きデータに変換可能であることにある。すなわち、クライアント701の編集手続きデータと履歴データから編集手続きの変換を実施した後に履歴として保存する。従って、図5での510→502→503のループは存在しないため、ループの繰り返しを防ぐ目的でのロック機能は必要としない。
【0212】
また、クライアント701側に設ける共有ファイル編集部722の機能も少なくて済む。
【0213】
ただし、前述したサーバへのファイル内容秘匿機能を有する実施例の場合のように、編集手続き変換部502および履歴管理情報生成部503をクライアント701側に設ける構成を採用することは可能である。この場合の各部の動作は自明であるので、詳細な説明は省略する。また、クライアント701に設ける共有ファイル編集部722の機能のうち、さらに編集手続き生成部501をサーバ710側へ移すことも可能である。
【0214】
このように、本実施例によれば、サーバでは、常に各クライアントによる編集終了時における最新バージョンのファイル内容に対する更新が行われるので、ロックを掛けずに複数のクライアントによる非同期編集を行うことが可能となる。
【0215】
また、時間的に古いバージョンを編集し、最新バージョンとする使い方が可能となる。すなわち、非同期編集可能な共有ファイルにおいて、編集対象を現行版に限定しない使い方が可能となる。
【0216】
また、非同期編集による編集結果のマージ処理を実行する場合に、サーバからはクライアントでの処理に必要となるデータのみを送り、クライアントで必要な処理を実行してサーバに返す形式を実現でき、不必要な履歴に関する部分まで通信されるなどの無駄がなくなり、効率が著しく向上する。
【0217】
また、ファイルのデータ構造として、単純に一つ前(あるいは後)のバージョンとの差分を残していくRCSのような構造ではなく、SCCSで利用されているようなファイルの先頭から順番に挿入されたデータが挿入された位置にブロックとして管理され、部分的に消去された場合にはブロックの分割を繰り返していく方式を採用すると、マージ処理に必要となる挿入/削除の位置の決定が極めて単純化され、非同期編集が容易となる。
【0218】
次に、上述したサーバへのファイル内容秘匿機能(第1の発明)をクライアント・サーバ型システムに実装した本発明の第4実施例について説明する。
【0219】
まず、本実施例で扱うファイルは、複数のブロック・データおよびブロック識別情報を含み、かつ、各ブロック・データはブロック・データ単位で暗号化されている。例えば、図2、図3、図4にそれぞれ示したような構造であるが、これらに限らず、例えばプログラムを、サブルーチンごとに暗号化する方法や、ハイパーテキストなど複数のデータファイルがリンクで結び付けられている場合に個々のデータファイル単位で暗号化し、リンク部分は暗号化しない方法などに応用できる。このようにすれば、サーバに対してはモジュール内容の秘密性を保ちながら、クライアントが必要な部分だけ読み出して利用する効率的な利用ができる。
【0220】
また、本実施例では、上記構造を有するファイルに対して、前述したような暗号化・復号化方式を用いることを前提とする。
【0221】
図23は、本実施例のファイル編集システムの構成を示す。このように、本実施例のファイル編集システムは、クライアント801と、サーバ810からなる。
【0222】
サーバ810は、クライアント801と通信路111を介して通信を行うための通信部831、データ管理部840、複数のファイル113を格納するためのデータ記憶部511を備えている。
【0223】
また、クライアント801は、サーバ810と通信路111を介して通信を行うための通信部830、サーバ810から得たファイル113を格納するためのメモリ821、ファイル編集部822、暗号器812を備えている。暗号器812は、図24のように共有ファイル編集部822と接続される通信部832、暗号化/復号化処理部8121、鍵記憶部8122を備えている。
【0224】
上記構成において、クライアント801はサーバ810からあるバージョンのデータを要求し、メモリ821に格納した後、ファイル編集部822にて編集を行う。その際、前述のようにファイルはブロック・データごとに暗号化されているので、鍵記憶部8122に登録してある復号鍵を用いて、暗号化/復号化処理部8121にて復号化しておく。ファイルの編集が終了したら、鍵記憶部8122に登録してある暗号鍵を用いて、暗号化/復号化処理部8121にて暗号化した後、サーバ810に送り、データ管理部840にてデータ記憶部511のファイルが更新される。
【0225】
このように、本実施例では、ファイルの内容をサーバからは読み取ることのできない秘匿性の高いファイル編集システムを提供することができる。
【0226】
また、クライアントは、ファイルのうちの必要なデータ・ブロックだけを通信により取得できるので、通信量の削減を図ることができるとともに、必要なブロックだけを復号化/暗号化すれば良いので、クライアント装置での処理量の削減、クライアント装置で必要なバッファ(メモリ)の削減ができる利点もある。
【0227】
ここで、本実施例に、上述したような履歴管理方式を適用することができる。以下、そのような例について説明する。
【0228】
この場合に扱うファイルの構造は、図2、図3、図4にそれぞれ示したようなものを採用する。また、上記構成を有するファイルに対して、前述したような暗号化・復号化方式を用いる。
【0229】
ここでは、非同期編集は行わないことから、図5の非同期編集システムの編集手続き変換部502を削除して編集手続き生成部501と履歴管理情報生成部503を直結し、履歴管理部510をデータ記憶部511を管理する機能だけを有するデータ管理部840とする修正を施したものを履歴管理システムとして、これをファイル編集部822とデータ管理部840とに分散配置する。
【0230】
分散配置は、クライアント801のファイル編集部822に編集部500を実装し、サーバ810にデータ管理部840およびデータ記憶部511を実装すれば、他はどのような形で分散配置することも可能である。
【0231】
ここでは好ましい態様として、図23のようにサーバ810にデータ管理部840およびデータ記憶部511を実装し、他をクライアント801に実装したものを示してある。
【0232】
上記構成において、クライアント801はサーバ810からあるバージョンのデータを要求し、メモリ821に格納した後、編集部500にて編集を行う。その際、前述のようにファイルはブロック・データごとに暗号化されているので、鍵記憶部8122に登録してある復号鍵を用いて、暗号化/復号化処理部8121にて復号化しておく。ファイルの編集が終了したら、編集手続き生成部501にて編集手続きデータを生成する。そして、その編集手続きデータを履歴管理情報生成部503にて、利用している履歴管理法に適した形式の履歴情報に変換する。ここで、この履歴情報を鍵記憶部8122に登録してある暗号鍵を用いて、暗号化/復号化処理部8121にて暗号化した後、サーバ810に送り、データ管理部840にてデータ記憶部811のファイルが更新される。
【0233】
このように、ファイルのバージョン管理とファイル管理装置に対するデータの秘匿性を同時に実現できる。
【0234】
また、ファイルの構造として図2の差分積み上げ方式による構造を採用した場合、履歴の完全性をファイル管理装置側だけで保証できる。
【0235】
また、ファイルの構造として図3のRCS方式による構造を採用した場合、ファイルのバージョン管理において、現行バージョンのファイルの取り出しおよび古い履歴の消去が容易となる。
【0236】
また、ファイルの構造として図4のSCCS方式による構造を採用した場合、ファイルのバージョン管理において、古い履歴の消去が容易となる。
【0237】
また、暗号として、前述したストリーム暗号を用いる場合、ブロックの分割時の暗号化に際し、ブロックの先頭から分割ポイントまでの部分は暗号化されたままで再利用でき、分割ポイント以降のみを再暗号化する。なお、全く再暗号化を必要としない方法もある。これは、SCCSに代表されるブロックの分割が繰り返される場合に有利である。
【0238】
次に、図13、図16、あるいは図20を用いて説明した非同期編集機能を有する共有ファイル編集システムにおいて、あるファイルのあるバージョンの消去要求が発行されても、当該ファイルの当該バージョンを編集中であるクライアントが存在しなくなるまで消去実行を遅延させる機能を設けた本発明の第5実施例の共有ファイル編集システムについて説明する。
【0239】
履歴管理を行うシステムにおいては、履歴中の一部のバージョンを消去する機能を提供することが考えられる。バージョンの消去は、例えばクライアントが消去コマンドを実行するとこによって行われる場合や、作成から一定時間以上経過したバージョンをシステムが自動的に消去する場合などが考えられる。
【0240】
本発明に係る非同期編集機能を有する共有ファイル編集システムにおいては、バージョンを消去する場合には、消去対象となっているバージョンを編集しているクライアント装置が存在していてはならない。なぜならば、このシステムでは、ファイル管理サーバはマージ処理(クライアントがアクセスしたバージョンがいずれであるかに従い、ファイル管理サーバ内での最新のバージョンに変換する処理)を行うからである。もし、いずれかのクライアントが当該バージョンを編集途中に、そのバージョンを消去してしまったとすると、マージ処理が不可能になってしまう。
【0241】
本実施例では上記機能を実現するために、ファイル管理サーバ内に、その管理する各々のファイルの各々のバージョン毎に対応付けて、当該ファイルの当該バージョンを編集中であるクライアントの数を計数する手段を設ける。これによりファイル管理サーバは、各々のファイルの各々のバージョンについて、それを編集途中であるクライアントが存在するかどうかを判断することができる。すなわち、指定されたファイルの指定されたバージョンに対応する計数値が0であるならば、それを編集途中であるクライアントは存在せず、また、計数値が0でないならば、それを編集途中であるクライアントが存在すると判断できる。
【0242】
そして、本実施例のファイル管理サーバは、ファイルのバージョンを消去する要求が発行された際、該計数値が0でない場合には、0に等しくなるまで消去の実行を遅延する手段を有する。これによりファイル管理サーバは、消去の対象となったファイルのバージョンを編集途中のクライアントが存在する間は、該ファイルの該バージョンを消去することがなくなるので、マージ処理の実行に支障をきたすおそれがなくなる。
【0243】
以下、前述の図13の実施例を基にして、上記機能を設けた共有ファイル編集システムについて説明する。
【0244】
図25は、図13の実施例に、上記のようなクライアント数を計数する手段を設けた実施例である。図中のアクセス要求者91、通信路111は、図13の実施例と同様の構成である。ファイル管理サーバ95は、クライアント計数部900が加わっている点が図13と異なる。
【0245】
図26に示すように、クライアント計数部900は、分岐部901、編集開始処理部902、消去要求処理部903、編集終了処理部904、計数記憶部905、消去命令発行部906を用いて構成される。
【0246】
このクライアント計数部900の機能の概略は、ファイル管理サーバ95が管理する各々のファイルの各々のバージョン毎に対応付けて、何個のクライアントがそのファイルのそのバージョンを編集中であるかを数えることと、あるクライアントによりあるファイルのあるバージョンを消去する要求が発行された際、その計数値が0でない場合には、0に等しくなるまで消去の実行を遅延することである。
【0247】
クライアント計数部900内部の計数記憶部905の基本的な役割は、各々のファイルの各々のバージョンそれぞれに対して、計数値(整数)と消去遅延フラグ(1ビットの真偽値)を対応付けて記憶することである。計数値は、何個のクライアントが対応するファイルの対応するバージョンを編集中であるかを数えるカウンタであり、消去遅延フラグは、計数値が0でなかったために消去の実行が遅延されていることを示すフラグである。
【0248】
計数記憶部905に記憶されているデータのデータ構造の一例を、図27に示す。データ構造は、二段階に構成された配列になっている。第一段階目の配列は、ファイル識別子に対して第二段回目の配列を対応付けるものであり、ファイル識別子とアドレスの対を一要素として、それらの配列になっている。第二段階目の配列は、ファイルの各々のバージョンに関する計数値と消去遅延フラグを保持するもので、計数値と消去遅延フラグの対を一要素とする配列となっている。この配列においては、バージョン番号を配列のインデクスとして参照する。したがって例えば、図27のC11,C12,C13は、ファイルID1のファイルのそれぞれバージョン番号1,2,3のバージョンの計数値、また、F11,F12,F13は、ファイルID1のファイルのそれぞれバージョン番号1,2,3のバージョンの消去遅延フラグの値を表している。なお、計数値の初期値は0、消去遅延フラグの初期値はfalse(を示す値;例えば0)である。
【0249】
本実施例においては、クライアント91は、ファイルの編集を開始する直前に、ファイル管理サーバ95に対して、編集開始宣言を行う。この編集開始宣言は、例えば通信路111を通してクライアント91からファイル管理サーバ95に対して、編集開始宣言であることを示すコマンドワードに続けて編集しようとするファイルの識別子および編集しようとするバージョンのバージョン番号を送信することにより行われる。
【0250】
ファイル管理サーバ95によって受け取られた通信データは、分岐部901に入力される。
【0251】
分岐部901では、例えば通信データの初めの1ワードを読み、それが編集開始宣言を示すコマンドワードであることを判定すると、通信データ中の続くファイルIDおよびバージョン番号を編集開始処理部902に入力する。
【0252】
編集開始処理部902では、分岐部901からの入力を受けると、計数記憶部905にアクセスして、指定されたファイルIDの指定されたバージョンに対応する計数値を1つ増加させる。
【0253】
一方、上記通信データは、そのままあるいはファイルの識別子およびバージョン番号などが加工しなおされて、分岐部901から共有ファイル用履歴管理部510に与えられる。そして、上記のように編集開始宣言が処理された後、クライアント91によるファイルの編集が行われる。このときのファイル編集の機構は、前述の図13の実施例のときと同様にして行われる。
【0254】
次に、ファイルのバージョンを消去する際の処理機能について説明する。本実施例においては、バージョンの消去要求もまた、通信路111を通してクライアント91からファイル管理サーバ95に対して、バージョン消去要求であることを示すコマンドワードに続けて消去しようとするファイルの識別子および消去しようとするバージョンのバージョン番号を送信することにより行われる。
【0255】
ファイル管理サーバ95によって受け取られた通信データは、分岐部901に入力される。分岐部901では、通信データの初めの1ワードを読み、それがバージョン消去要求を示すコマンドワードであることを判定すると、通信データ中の続くファイルIDおよびバージョン番号を消去要求処理部0903に入力する。
【0256】
消去要求処理部903では、分岐部901からの入力を受けると、図28のフローチャートに示す手順により処理を行う。
【0257】
消去要求処理部903はまず、計数記憶部905にアクセスして、指定されたファイルIDの指定されたバージョン番号に対応する計数値を得る(ステップS21)。次に、その計数値の値か0であるかどうかにより条件分岐を行う(ステップS22)。計数値が0である場合には、履歴管理部510に対して指定されたファイルIDの指定されたバージョンを消去する命令を消去命令発行部906から発行する(ステップS23)。また、計数値が0でない場合には、計数記憶部905にアクセスして、指定されたファイルのIDの指定されたバージョン番号に対応する消去遅延フラグをtrue(を示す値;例えば1)にする(ステップS24)。
【0258】
次に、編集終了時の処理について説明する。本実施例においては、クライアント91は、ファイルの編集を終了した直後に、ファイル管理サーバ95に対して、編集終了宣言を行う。この編集終了宣言は、通信路111を通してクライアント91からファイル管理サーバ95に対して、編集終了宣言であることを示すコマンドワードに続けて編集を終了しようとするファイルの識別子および編集を終了しようとするバージョンのバージョン番号を送信することにより行われる。
【0259】
ファイル管理サーバ95によって受け取られた通信データは、分岐部901に入力される。分岐部901では、通信データの初めの1ワードを読み、それが編集終了宣言を示すコマンドワードであることを判定すると、通信データ中の続くファイルIDおよびバージョン番号を編集終了処理部904に入力する。なお、必要に応じて、上記通信データは、そのままあるいはファイルの識別子およびバージョン番号などが加工しなおされて、分岐部901から共有ファイル用履歴管理部510に与えられる。
【0260】
編集終了処理部904では、図29のフローチャートに示す手順により処理を行う。
【0261】
編集終了処理部904の処理手順ではまず、計数記憶部905にアクセスして、指定されたファイルIDのファイルの指定されたバージョン番号に対応する計数値Cと消去遅延フラグFの値を得る(ステップS31)。次に、計数値Cの値を1減らす(ステップS32)。次に、計数値Cを計数記憶部905に保存する(ステップS33)。次に、計数値Cの値が0であるかどうかにより条件分岐を行う(ステップS34)。計数値が0でない場合には、編集終了処理部904の処理を終了する。計数値が0である場合には、次に消去遅延フラグFの値より条件分岐を行う(ステップS35)。消去遅延フラグFの値がfalseである場合には、編集終了処理部904の処理を終了する。消去遅延フラグFの値がtrueである場合には、履歴管理部510に対して指定されたファイルIDの指定されたバージョンを消去する命令を消去命令発行部906から発行する(ステップ36)。
【0262】
なお、分岐部901では通信データの初めの1ワードを読み、それが上記した編集開始宣言、バージョン消去要求、編集終了宣言を示すコマンドワード以外のものであることを判定すると、通信データをそのまま共有ファイル用履歴管理部510に入力する。
【0263】
次に、履歴管理部510における消去命令の実行処理の例について述べる。消去命令の処理手順は、履歴管理部510が差分積み上げ、RCS、変形SCCSのいずれの管理方法をとっているかによって異なるものであり、以下ではそれら3方式について夫々一例を説明する。
以下の説明においては、次に示す記号を用いる。
r:消去対象のバージョン番号
f:対象となっているファイルの履歴のうちで、履歴管理部510が保持している最も古いバージョンのバージョン番号(多くの場合,f=1であるが、過去にバージョンの消去命令によってバージョン1が消去されている場合には、fは1でない値になる。)
n:対象となっているファイルの履歴のうちで、履歴管理部510が保持している最も新しいバージョン(すなわち現行版)のバージョン番号
p(x):履歴管理部510が保持しているバージョンのうちで、バージョンxの1つ前のバージョンのバージョン番号(多くの場合,p=x−1であるが、過去にバージョンx−1が消去された場合には、p=x−2に、さらにバージョンx−2が消去された場合には、p=x−3に等々、順次前のバージョンになる。)
s(x):履歴管理部510が保持しているバージョンのうちで、バージョンxの1つ後のバージョンのバージョン番号(多くの場合,s=x+1であるが、過去にバージョンx+1が消去された場合には、s=x+2に、さらにバージョンx+2が消去された場合には、s=x+3に等々、順次後のバージョンになる。)
V[x]:バージョンx(の内容)
V[x]−V[y]:バージョンxとバージョンyとの差分
【0264】
まず、履歴管理部510が差分積み上げ方式により履歴管理を行っている場合について説明する。図30には、この消去命令の実行処理手順を示す。
i)消去対象が履歴の最初のバージョンや現行版でない場合(ステップS41,S45にてr≠fかつr≠nの場合)
・消去対象バージョンの前のバージョン(V[p(r)])および後のバージョン(V[s(r)])を復元し(ステップS47)、それらの2つのバージョンの差分(V[s(r)]−V[p(r)])を生成し(ステップS48)、消去対象バージョンの前後の差分(V[s(r)]−V[r])および(V[r]−V[p(r)])をV[s(r)]−V[p(r)]と置換する(ステップS49)。
【0265】
ii)消去対象が履歴の最初のバージョンである場合(ステップS41にてr=fの場合)
・消去対象の次のバージョン(V[s(r)])を復元し(ステップS42)、履歴の最初のバージョン(V[r])およびそれと次のバージョンの差分(V[s(r)]−V[r])を消去し(ステップS43)、V[s(r)]を新たに履歴の最初バージョンとする(ステップS44)。
【0266】
iii)消去対象が履歴の最後のバージョン(現行版)である場合(ステップS45にてr=nである場合)
・そのバージョンと前のバージョンとの差分(V[r]−V[p(r)])を消去する(ステップS46)。
【0267】
次に、履歴管理部510がRCS方式により履歴管理を行っている場合について説明する。図31には、この消去命令の実行処理手順を示す。
i)消去対象が履歴の最初のバージョンや現行版でない場合(ステップS61,S65にてr≠fかつr≠nの場合)
・消去対象バージョンの前のバージョン(V[p(r)])および後のバージョン(V[s(r)])を復元し(ステップS67)、それらの2つのバージョンの差分(V[p(r)]−V[s(r)])を生成し(ステップS68)、消去対象バージョンの前後の差分(V[p(r)]−V[r])および(V[r]−V[s(r)])をV[p(r)]−V[s(r)]と置換する(ステップS69)。
【0268】
ii)消去対象が履歴の最初のバージョンである場合(ステップS61にてr=fの場合)
・そのバージョンと前のバージョンとの差分(V[r]−V[s(r)])を消去する(ステップS62)。
【0269】
iii)消去対象が履歴の最後のバージョン(現行版)である場合(ステップS63にてr=nである場合)
・現行版の1つ前のバージョン(V[p(r)])を復元し(ステップS64)、現行版と1つ前のバージョンとの差分(V[p(r)]−V[r])を消去し(ステップS65)、V[p(r)]を新たに現行版とする(ステップS66)。
【0270】
次に、履歴管理部510が変形SCCS方式で履歴管理を行っている場合の消去処理の実施例について説明する。図32には、この消去命令の実行処理手順を示す。尚、図32のフローチャートは、履歴を構成するブロックの1つに対する消去処理手順を示している。履歴管理部510における消去処理は、本フローチャートに示す手順を、消去対象となっているバージョンを含む全てのブロック各々に対して施すことによって行われる。
【0271】
以下の説明においては、次に示す記号を用いる。
i:処理対象となっているブロックの生成時点
d:処理対象となっているブロックの消去時点
現行版においてもまだ消去されていないブロックは、d=∞で表すものとする。
【0272】
i)対象バージョンが現行版でない場合(ステップS81にてr≠nの場合)・消去対象バージョンにおいてしか存在しなかったブロックについて(ステップS85,S86にて、i=rかつd=s(r)の場合)は、該ブロックを履歴情報の中から消去する(ステップS90)。
・消去対象バージョンにおいて生成されたブロックについて(ステップS85,S86について、i=rかつd≠s(r)の場合)は、消去対象の次のバージョン(V[s(r)])において生成されたものとする(ステップS87)。
・消去対象バージョンにおいて消去されたブロックについて(ステップS85,S88にて、i≠rかつd=rの場合)は、消去対象の次のバージョン(V[s(r)])において消去されたものとする(ステップS89)。
【0273】
ii)対象バージョンが現行版である場合(ステップS81にてr=nの場合)
・現行版において生成されたブロックについて(ステップS82にてi=nの場合)は、該ブロックを履歴情報中から消去する(ステップS90)。
【0274】
・現行版において消去されたブロックについて(ステップS82,S83にて、i≠nかつd=nの場合)は、未消去のブロック(d=∞)とする(ステップS84)。
【0275】
ここで、上記の処理を全てのブロックに対して実行した後、履歴中の任意の隣接する2つのブロックについて、両者の生成時点が等しく、かつ、両者の消去時点が等しい場合には、この2つのブロックを結合することもできる。
【0276】
なお、以上の消去処理の実施例においては、1つの消去命令で1つのバージョンを消去する場合を説明したが、一般のバージョン管理システムにおいても、複数バージョンの消去要求を、その対象となる1つ1つのバージョンに対する消去命令に分解して処理することにより、一消去命令で複数のバージョンを消去する機能を提供するのと同様の効果を得ることは容易である。
【0277】
以上のように本実施例によれば、各々のファイルの各々のバージョンについて、それを編集しているクライアントの数を記憶し、ユーザからの消去の要求あっても、消去対象となるファイルのバージョンを編集するクライアントがなくなるまで消去の実行を遅延させるので、いずれかのクライアントが編集途中のバージョンを消去することがなくなり、マージ処理の実行に支承をきたさない非同期編集システムを実現することができる。
【0278】
ここで、上記した実施例における履歴の消去は、クライアントからファイル管理装置に対して消去要求を発行するものであったが、クライアント以外から消去要求を生成する構成も考えられる。例えば、作成から一定時間以上経過した履歴に対して、サーバ内部で自動的に消去要求を生成する場合がある。また、最新のバージョンに対する非同期編集のみをサポートすれば十分であって、過去のバージョンを編集することがない場合には、新たなバージョンができた時点で自動的にサーバ内部でその前のバージョンに対する消去要求を生成する構成をとればよい。
【0279】
なお、以上は図13のサーバのファイル内容秘匿機能と非同期編集機能をクライアント・サーバ型システムに実装した実施例に、クライアント計数部を付加した例であったが、クライアント計数部は図16や図20の非同期編集機能をクライアント・サーバ型システムに実装した実施例に対して付加することも可能である。この場合、クライアント計数部900は、図13の実施例に付加した場合と、同様の構成・機能を有する。
【0280】
次に図13、図16、あるいは図20を用いて説明した非同期編集機能を有する共有ファイル編集システムにおいて、あるファイルのブロック・データが暗号化されている場合に、図25を用いて説明したあるファイルのあるバージョンを編集中であるクライアントが存在しなくなるまで消去実行を遅延させる機能と、当該ファイルののブロック・データを再構成する機能を有する本発明の第6実施例の共有ファイル編集システムについて説明する。
【0281】
図25の実施例で説明したように、履歴管理を行うシステムにおいては履歴中の一部のバージョンを消去する機能を提供することが考えられる。ここでは、ブロック・データが暗号化されている場合にあるバージョンの履歴を消去する機能を提供する実施例を示す。また、ブロック・データの再構成を行うことによりブロック数を減らす機能を提供する実施例も併せて示す。
【0282】
本実施例では上記機能を実現するために、クライアント装置内にファイルのブロックデータを再構成する手段を設ける。これにより、クライアント装置は、あるバージョンの履歴を消去するとともにファイルデータを所望のブロックに構成し直すことができる。
【0283】
以下、前述の図25の実施例を基にして、上記機能を設けた共有ファイル編集システムについて説明する。
【0284】
図33は、図25の実施例に、上記のようなブロック・データを再構成する手段を設けた実施例である。図中のファイル管理サーバ95、通信路111は、図25の実施例と同様の構成である。アクセス要求者92は、ブロック・データ再構成部910が加わっている点が図25と異なる。ブロック・データ再構成部910はすべてのアクセス要求者に備わっていなくてもよい。あるファイルのあるバージョンの消去命令はクライアント計数部900の計数値が0であるときに実行される。
【0285】
ブロック・データが暗号化されている場合にあるバージョンの履歴を消去する処理手順は、履歴管理部510が差分積み上げ、RCS、変形SCCSのいずれの管理方法をとっているかによって異なるものであり、以下ではそれら3方式についてそれぞれ一例を説明する。
【0286】
以下の説明においては、次に示す記号を用いる。
r:消去対象バージョンのバージョン番号
f:対象となっているファイルの履歴のうちで、履歴管理部510が保持している最も古いバージョンのバージョン番号(多くの場合f=1であるが、過去にバージョンの消去命令によってバージョン1が消去されている場合には、fは1でない値になる。)
n:対象となっているファイルの履歴のうちで、履歴管理部510が保持している最も新しいバージョン(すなわち現行版)のバージョン番号
p(x):履歴管理部510が保持しているバージョンのうちで、バージョンxの1つ前のバージョンのバージョン番号(多くの場合,p=x−1であるが、過去にバージョンx−1が消去された場合には、p=x−2に、さらにバージョンx−2が消去された場合には、p=x−3に等々、順次前のバージョンになる。)
s(x):履歴管理部510が保持しているバージョンのうちで、バージョンxの1つ後のバージョンのバージョン番号(多くの場合、s=x+1であるが、過去にバージョンx+1が消去された場合には、s=x+2に、さらにバージョンx+2が消去された場合には、s=x+3に等々、順次後のバージョンになる。)
V[x]:バージョンx(の内容)
V[x]−V[y]:バージョンxとバージョンyとの差分
【0287】
最初に、履歴管理部510が差分積み上げ方式により履歴管理を行っている場合の実施例について説明する。図34にはクライアント92におけるブロック・データ再構成部910の処理手順を、図35にはクライアント92からの消去要求を受けたサーバ95における履歴管理部510の処理手順を示す。
【0288】
まず、クライアント92における処理手順を示す(図34)。
【0289】
1.消去対象が履歴の最初のバージョンや現行版でない場合(ステップS101、S106にてr≠fかつr≠nの場合)
・消去対象の後のバージョンV[s(r)]をサーバから読み込む。サーバからは暗号化された(複数の)ブロックデータが送られて来る(ステップS108)。
・送られてきたブロックデータを復号し、V[s(r)]とV[p(r)]を復元する。V[p(r)]はステップS108で読み込んだV[s(r)]から得ることができる(ステップS109)。
・V[s(r)]−V[p(r)]を生成する(ステップS110)。
・V[s(r)]−V[p(r)]を新たなブロック・データとして暗号器で暗号化する(ステップS111)。
・この暗号化ブロックデータとバージョンrの消去要求をサーバへ送る(ステップS112)。
【0290】
2.消去対象が履歴の最初のバージョンである場合(ステップS101にてr=fの場合)
・消去対象の後のバージョンV[s(r)]をサーバから読み込む。サーバからは暗号化された(複数の)ブロックデータが送られて来る(ステップS102)。
・送られてきたブロックデータを復号器で復号し、V[s(r)]を復元する(ステップS103)。
・V[s(r)]を新たなブロック・データとして暗号化する(ステップS104)。
・この暗号化ブロックデータとバージョンrの消去要求をサーバへ送る(ステップS105)。
【0291】
3.消去対象が履歴の最後のバージョン(現行版)である場合(ステップS106にてr=nの場合)
・バージョンrの消去要求をサーバへ送る(ステップS107)。
【0292】
次に、クライアント92からの消去要求を受けたサーバ95の処理手順を示す(図35)。
1.消去対象が履歴の最初のバージョンや現行版でない場合(ステップS121、S123にてr≠fかつr≠nの場合)
・V[s(r)]−V[r]ブロック・データおよびV[r]−V[p(r)]ブロック・データを消去し、代わりにクライアントから送られてきたV[s(r)]−V[p(r)]ブロック・データを挿入(ステップS125)。
【0293】
2.消去対象が履歴の最初のバージョンである場合(ステップS121にてr=fの場合)
・V[r]ブロック・データおよびV[s(r)]−V[r]ブロック・データを消去し、代わりにクライアントから送られてきたV[s(r)]ブロック・データを挿入(ステップS122)。
【0294】
3.消去対象が履歴の最後のバージョン(現行版)である場合(ステップS123にてr=nの場合)
・V[r]−V[p(r)]ブロック・データを消去(ステップS124)。
以上の処理手順により、バージョンrの履歴が消去される。
【0295】
次に、履歴管理部510がRCS方式により履歴管理を行っている場合の実施例について説明する。図36にはクライアント92におけるブロック・データ再構成部910の処理手順を、図37にはクライアント92からの消去要求を受けたサーバ95における履歴管理部510の処理手順を示す。
【0296】
まず、クライアント92における処理手順を示す(図36)。
1.消去対象が履歴の最初のバージョンや現行版でない場合(ステップS131、S133にてr≠fかつr≠nの場合)
・消去対象の前のバージョンV[p(r)]をサーバから読み込む。サーバからは最新バージョンを含む暗号化された(複数の)ブロックデータが送られて来る(ステップS138)。
・送られてきたブロックデータを復号器で復号し、V[s(r)]とV[p(r)]を復元する。V[s(r)]はステップS138で読み込んだV[p(r)]から得ることができる(ステップS139)。
・V[p(r)]−V[s(r)]を生成する(ステップS140)。
・V[p(r)]−V[s(r)]を新たなブロック・データとして暗号器で暗号化する(ステップS141)。
・この暗号化ブロックデータとバージョンrの消去要求をサーバへ送る(ステップS142)。
【0297】
2.消去対象が履歴の最初のバージョンである場合(ステップS131にてr=fの場合)
・バージョンrの消去要求をサーバへ送る(ステップS132)。
【0298】
3.消去対象が履歴の最後のバージョン(現行版)である場合(ステップS133にてr=nの場合)
・消去対象の前のバージョンV[p(r)]をサーバから読み込む。サーバからは最新バージョンを含む暗号化された(複数の)ブロックデータが送られて来る(ステップS134)。
・送られてきたブロックデータを復号し、V[p(r)]を復元する(ステップS135)。
・V[p(r)]を新たなブロック・データとして暗号化する(ステップS136)。
・この暗号化ブロックデータとバージョンrの消去要求をサーバへ送る(ステップS137)。
【0299】
次に、クライアント92からの消去要求を受けたサーバ95の処理手順を示す(図37)。
【0300】
1.消去対象が履歴の最初のバージョンや現行版でない場合(ステップS151、S153にてr≠fかつr≠nの場合)
・V[r]−V[s(r)]ブロック・データおよびV[p(r)]−V[r]ブロック・データを消去し、代わりにクライアントから送られてきたV[p(r)]−V[s(r)]ブロック・データを挿入(ステップS155)。
2.消去対象が履歴の最初のバージョンである場合(ステップS151にてr=fの場合)
・V[r]−V[s(r)]ブロック・データを消去(ステップS152)。
3.消去対象が履歴の最後のバージョン(現行版)である場合(ステップS153にてr=nの場合)
・V[r]ブロック・データおよびV[p(r)]−V[r]ブロック・データを消去し、代わりにクライアントから送られてきたV[p(r)]ブロック・データを挿入(ステップS154)。
以上の処理手順により、バージョンrの履歴が消去される。
【0301】
次に、履歴管理部510が変形SCCS方式により履歴管理を行っている場合について説明する。前述したように、変形SCCS方式においてはブロックはバージョンがすすむにつれて分割されてくる。ブロック数が増えると、ブロック識別データやブロック処理のオーバヘッドが増えてきてしまうため、ブロック数が増えすぎないようにするのが望ましい。
【0302】
図32に示したように、変形SCCS方式により履歴管理を行っている場合は、サーバ95の履歴管理部510があるバージョンの履歴消去命令を実行することが出来る。従って、バージョン消去はサーバ95の履歴管理部510が行い、クライアント92のブロック・データ再構成部910はブロックの再構成を行うという実施例が考えられる。その場合の手順は以下のようになる。
【0303】
・クライアント92は、まずサーバ95にバージョンrの消去命令を送る。
・サーバ95の履歴管理部510は、図32に示した手順でバージョンrの履歴を消去する。
・クライアント92は、V[s(r)]あるいはV[n]のファイルを読み込み、ブロックデータ・再構成部910においてブロックの再構成および暗号化を行う。再構成できるブロックデータは位置が連続しておりかつ生成時間と消去時間が等しいブロックである。これらのブロックを復号した後、任意の新たなブロック・データとして再構成し暗号化してサーバ95へ送る。
・サーバ95の履歴管理部510は送られてきたブロックを古いブロックと入れ換える。
【0304】
尚、この第6実施例におけるブロックデータ再構成に関する特徴を、上述した図23の様にファイル内容の秘匿機能のみを有するファイル編集システムに組み込むことも可能である。
【0305】
次に、図13、図16、あるいは図20を用いて説明したファイル編集システムにおいて、クライアントが、あるファイルのあるバージョンを既に保有しているときに新たに別のバージョンを読み込もうとする場合、ファイル全体を読み込むのではなく、必要な部分だけを読み込む機能を設けた本発明の第7実施例のファイル編集システムについて説明する。
【0306】
図38は、図13の実施例に、上記のようなクライアントがサーバから必要な部分だけを読み込む機能を設けた実施例である。図中の通信路111は、図13の実施例と同様の構成である。ファイル管理サーバ96は、差分情報構築部930が、アクセス要求者93はファイル記憶部920とファイルデータ構築部921が加わっている点が、図13と異なる。
【0307】
クライアント93は、前回アクセスしたファイルをそのバージョン情報とともにファイル記憶部920に保存している。サーバ96から、同ファイルの別のバージョン(例えば最新バージョン)を読み込もうとする場合、現在保有しているバージョン情報と所望のバージョン情報をサーバ96に伝える。サーバ96の差分情報構築部930は、クライアント93からの2つのバージョン情報に基づきクライアント93が所有するバージョンのファイルに対する差分データを構築しクライアント93に送り返す。クライアント93のファイルデータ構築部921は、現在保有しているファイルデータとサーバ96からの差分データにより所望のバージョンを構築する。そして共有ファイル編集部122に渡すことによりファイルを編集することができる。
【0308】
一般に、バージョン間の差分データはファイル全体のデータよりも少いため通信量が少くてすみ、高速な読み込みが実現できる。
【0309】
サーバ96の差分情報構築部930において差分データを構築する方法は、履歴管理部510が差分積み上げ、RCS、変形SCCSのいずれの管理方法をとっているかによって異なる。以下ではそれら3方式についてそれぞれ実施例の一例を説明する。
以下の説明においては、次に示す記号を用いる。
c:クライアントが保有しているファイルのバージョン番号
r:クライアントが新たに読み込むバージョン番号
V[x]:バージョンx(の内容)
V[x]−V[y]:バージョンxとバージョンyとの差分
最初に、履歴管理部510が差分積み上げ方式により履歴管理を行っている場合の、差分情報構築部930の処理手順の実施例について説明する。
【0310】
1.保有しているバージョンよりも新しいバージョンを読み込む場合(r>c)
・差分積み上げ方式はバージョン間の差分を積み上げていくものであるから、バージョンrとcとの差分ブロック・データを選べばよい。
2.保有しているバージョンよりも古いバージョンを読み込む場合(r<c)
【0311】
以下の2つの方法がある。
【0312】
(a)差分情報を構築せずV[r]を返す。
ブロック・データが暗号化されている場合は、サーバは差分情報を構築できないので本方法をとる。
(b)サーバがV[r]とV[c]を復元しV[r]−V[c]を生成する。
ブロック・データが暗号化されていない場合は本方法が可能。
【0313】
次に、履歴管理部510がRCS方式により履歴管理を行っている場合の、差分情報構築部930の処理手順の実施例について説明する。
1.保有しているバージョンよりも新しいバージョンを読み込む場合(r>c)以下の2つの方法がある。
(a)差分情報を構築せずV[r]を返す。
ブロック・データが暗号化されている場合は、サーバは差分情報を構築できないので本方法をとる。
(b)サーバがV[r]とV[c]を復元しV[r]−V[c]を生成する。
ブロック・データが暗号化されていない場合は本方法が可能。
2.保有しているバージョンよりも古いバージョンを読み込む場合(r<c)・RCS方式はバージョン間の逆方向の差分を履歴として残すものであるから、バージョンcとrの差分ブロック・データを選べばよい。
【0314】
次に、履歴管理部510が変形SCCS方式により履歴管理を行っている場合の、差分情報構築部930の処理手順の実施例について説明する。図39に、差分情報構築部930がファイルの履歴を構成するブロックから差分ブロックを選択する処理手順のフローチャートを示す。尚、図39のフローチャートは、履歴を構成するブロックの1つに対する差分ブロック選択処理手順を示している。差分情報構築部930における差分ブロック選択処理は、本フローチャートに示す手順を、全てのブロック各々に対して施すことによって行われる。
【0315】
以下の説明においては、次に示す記号を用いる。
i:処理対象となっているブロックの生成バージョン番号
d:処理対象となっているブロックの消去バージョン番号
まだ消去されていないブロックは、d=NULLで表すものとする。
【0316】
1.保有しているバージョンよりも新しいバージョンを読み込む場合(ステップS161においてr>cの場合)
以下の条件のどれかを満たすブロックを選択する(ステップS167)。
(a)バージョンcからrの間に生成されてrの時点で消去されていないブロック
つまり、(ri>c)and{(r<d)or(d=NULL)}(ステップS162)
(b)バージョンcの時点で生成されていてcからrの間に消去されたブロック
つまり、(ic)and(rd>c)(ステップS163)
【0317】
2.保有しているバージョンよりも古いバージョンを読み込む場合(ステップS164においてr<cの場合)
以下の条件のどれかを満たすブロックを選択する(ステップS167)。
(a)バージョンrからcの間に生成されてcの時点で消去されていないブロック
つまり、(r<ic)and{(d>c)or(d=NULL)}(ステップS165)
(b)バージョンcの時点で生成されていてrからcの間に消去されたブロック
つまり、(ic)and(r<dc)(ステップS166)
【0318】
差分情報構築部930は上記手順にて差分ブロックを選択後、そのブロック情報をクライアント93が現在保有しているバージョンに対する差分情報に変換してクライアント93に送る。例えば、挿入データに対しては、クライアント93が保有しているバージョンに対する挿入位置を求め挿入ブロック・データと共に送る。削除データに対しては、クライアント93が保有しているバージョンに対する削除範囲を求めその情報を送る。これより、クライアント93は所望のバージョンを容易に構築すことができる。また、サーバ96からクライアント93への通信データ量が少くてすむ。
【0319】
尚、この第7実施例における所望のバージョンの構築に関する特徴を、上述した図23の様にファイル内容秘匿機能のみを有するファイル編集システムに組み込むことも可能である。
【0320】
次に、図13、図16、あるいは図20を用いて説明した非同期編集機能を有する共有ファイル編集システムにおいて、あるファイルに対して複数のクライアントからの書き込みが非同期に起こるために編集の競合が生じる場合があるが、その対応策を施した本発明の第8実施例を示す。
【0321】
図40は、図16の実施例に、上記のような機能がサーバに組み込まれた実施例である。図中のアクセス要求者211、通信路111は、図16の実施例と同様の構成である。ファイル管理サーバ220は、編集競合検出部940が加わっている点が図16と異なる。
【0322】
本実施例では、図16の例と同様に複数のクライアント211からのデータの書き込み要求が様々なタイミングで発生する。サーバ220では、211からの書き込み要求を編集手続き変換部502にてその時点での最新版に対する位置データに変換する。そして、編集競合検出部940において、その変換された編集データが他のクライアント211による編集結果と競合していないかどうかを検出する。その検出結果は、クライアント211に返される。ここで競合しているとは、例えば以下のように判断することができる。
・挿入データの挿入地点が既に削除されている
・挿入データの挿入地点に別のデータが挿入されている
・削除範囲に別のデータが挿入されている
0・削除範囲の一部が既に削除されている
【0323】
履歴管理部510では編集競合検出部940の結果は受け取らず、編集手続き変換部502にて変換されたクライアント211から送られたデータを最新バージョンとして保存する。
【0324】
上記のサーバ220におけるデータ更新機能は、履歴管理部510の管理方法とブロック・データが暗号化されているかどうかにより、実現可能な場合と実現不可能な場合がある。ブロック・データが暗号化されていない場合は、差分積み上げ、RCS、変形SCCSのいずれの管理方法においても実現可能である。ブロック・データが暗号化されている時は、変形SCCS方式のみで実現可能となる。
【0325】
次に同様の構成において編集競合検出部940の競合検出結果を履歴管理部510に通知し、履歴管理部510はその検出結果に基づいてデータの更新を行うかどうかの判断を行う本発明の第9実施例を示す。
【0326】
図41は、図40の実施例に上記のような機能がサーバに組み込まれた実施例である。図中のアクセス要求者211、通信路111は、図40の実施例と同様の構成である。ファイル管理サーバ225は、編集競合検出部940の出力が履歴管理部510に入力されている点が図40と異なる。
【0327】
本実施例によると例えば、他のクライアントとの編集競合が起こらなかった場合は、編集手続き変換部502にて変換されたクライアント211から送られたデータを最新バージョンとして保存し、編集競合が起こった場合はサーバ225のデータを更新しないというという機能が実現できる。この場合、書き込みが行われた最新バージョンは、他のクライアント211との編集競合が起こっていないので、意味的矛盾が起こりにくいという利点がある。クライアント211は編集競合検出部940による検出結果の通知を受けるので、書き込みが行われなかった場合は、サーバ225から最新バージョンを読み込み競合が起こらないように編集し直すことができる。
【0328】
次に、共有ファイル編集システムを既存のアプリケーション・プログラムから利用することを可能にした本発明の第10実施例を示す。
【0329】
図41は、既存のアプリケーション・プログラムから共有ファイル編集システムを利用する実施例である。図中のファイル管理サーバ970は、通信部131、アクセス情報記憶部971、共有ファイル履歴管理部972、データ記憶部973を有する。アクセス要求者950は、アクセス要求部951、システム・コール・テーブル955、共有ファイルアクセス処理部960、通信部130を有する。ファイル管理サーバ970とアクセス要求者950は通信部130,131を通して、通信路111により通信可能である。
【0330】
本実施例では、アクセス要求部951は既存アプリケーション・プログラムであると想定し、アクセス要求部951により発せられるアクセス要求はオペレーティング・システムによって提供されるシステム・コールによって行われるとする。
【0331】
本実施例おいて、アクセス要求部951は、システム・コール・テーブル955の持つシステム・コールに対応する関数を参照した上で、open/close/read/writeの関数を実行する。オペレーティング・システムにおけるシステム・コールの関数を参照するシステム・コール・テーブル955のデータは、オペレーティング・システムによって提供されるopen関数/close関数/read関数/write関数への接続データ(アドレス・ポインタ)から、共有ファイルアクセス処理部960によって提供される共有open関数/共有close関数/共有read関数/共有write関数961への接続データ(アドレス・ポインタ)に書き換えられている。この共有open関数/共有close関数/共有read関数/共有write関数961は、通信部130を通してファイル管理サーバ970に送られる。
【0332】
従って、既存のアプリケーション・プログラムからなるアクセス要求部951がopen関数/close関数/read関数/write関数を実行した結果、実際は共有open関数/共有close関数/共有read関数/共有write関数961が実行されることになる。
【0333】
ここで、共有open関数/共有close関数/共有read関数/共有write関数は、それぞれ、“open”をする共有ファイルアクセス要求に応じた処理/“close”をする共有ファイルアクセス要求に応じた処理/“read”をする共有ファイルアクセス要求に応じた処理/“write”をする共有ファイルアクセス要求に応じた処理に該当する。なお、図42では、共有open関数/共有close関数/共有read関数/共有write関数961は、それぞれ独立した形で構成されているが、各関数961に共通する処理に対応する部分は1つの処理実体として4つの関数で共有化してもよい。
【0334】
ファイル管理サーバ970は、アクセス要求者950より共有open関数/共有close関数/共有read関数/共有write関数を受け取り、共有ファイル用履歴管理部972に渡す。共有ファイル用履歴管理部972は、アクセス情報記憶部971の情報を元にデータ記憶部973から所望のデータの読み込みあるいは書き込みを行うことができる。そして、行われたアクセス要求をアクセス情報記憶部971のデータに記録する。
【0335】
図43には、アクセス情報記憶部971のアクセス履歴リスト980の例を示す。アクセス履歴リスト980は、ファイル管理サーバ970のファイルへのアクセス要求を記憶したリストである。このアクセス履歴リスト980には、ファイル識別子981、モード982、オープン時刻983、クローズ時刻984、バージョン985、カレント986の6つのフィールドがある。
【0336】
ファイル識別子981は、アクセス要求部951から共有ファイル用履歴管理部972に対して与えられた“open”の共有ファイル・アクセス要求ごとに固有に割り当てられる識別子である。“open”要求以後は、アクセス要求部951からの共有ファイル・アクセス要求は、ファイル識別子981を用いて管理される。このファイル識別子981は、共有ファイル用履歴管理部972が“open”の共有ファイルアクセス要求を受け付ける度に、アクセス要求部951に対して発給する。
【0337】
モード982は、このファイルへのopen要求のモードを示したもので、ここに書かれている“r”は読みだし専用であることを意味している。また、ここに“w”と書かれていれば、書き込み専用または読み書き両用のモードであることを意味している。
【0338】
オープン時刻983は、このファイルへのopen要求が発せられた時刻を示している。この例のID1で表されるファイルは、時刻t1にオープンされたことを意味している。また、クローズ時刻984は、このファイルへのclose要求が発せられた時刻を示している。この例では、ID1で表されるファイルはクローズ時刻984が書かれていないので、現在オープン中であることを、ID2で表されるファイルは、時刻t5にクローズされたことを意味している。
【0339】
ここで、上記の時刻は、各事象の発生した時刻の前後関係を示すためのものであり、例えば、計算機の持つ内部的な時計でもよいし、ファイル管理にバージョン番号をつけてそれを時刻として用いてもよい。また、この時刻は共有ファイル用履歴管理部972だけで用いるものであるから、必ずしも他の部分(例えばアクセス要求者950)から直接にこの時刻が参照できなくてもよい。
【0340】
バージョン985は、このファイルへのopen要求が発せられたファイルのバージョンを示す。通常、システム・コールのopenは最新バージョンに対する要求であるので、open要求が発せられた時点での最新のバージョンが入ることが多い。
【0341】
カレント986は、現在アクセスしているアクセス要求に関して、現在アクセスしている位置を示す値(シーク・ポインタ)である。このシーク・ポインタは、次に来る“read”の共有ファイル・アクセス要求に対して、読み出す位置(ファイル内の相対位置)を示すものであり、読みだし専用の“open”の場合、デフォルトとして初期値が0となっている。
【0342】
共有ファイル用履歴管理部972は、アクセス要求者950からの非同期アクセスを管理し、アクセス情報記憶部971の内容に従い、データ記憶部973から所望のデータの読み書きを行う。共有ファイル用履歴管理部972の動作は前述の実施例と同様であるので、ここでは詳細に説明しない。
【0343】
このように本実施例によれば、オペレーティング・システムによって提供されるシステム・コール・テーブル955中のアドレス・ポインタの値を書き換えるだけで、既存のアプリケーション・ソフトウェア等のプログラム自体は全く変更せずに、アクセス要求者として利用して非同期編集を行うこが可能になる。
【0344】
次に、上記第10実施例と同様な目的をもった本発明の第11実施例を図44に示す。図44においては、図42のファイル管理サーバ970が保有していたアクセス情報記憶部971をアクセス要求者990が有する構成をとっている。ファイル管理サーバ90は図13で示したファイル管理サーバと同様の構成であり、共有ファイル用履歴管理部510、データ記憶部511、通信部131からなる。
【0345】
本実施例においては、アクセス要求者の990は自らが保有するアクセス要求部991からの共有ファイルアクセス情報をアクセス情報記憶部995に記憶する。アクセス情報記憶部995の内容は、例えば図43と同じものを用いることができる。
【0346】
共有ファイルアクセス処理部993は、アクセス情報記憶部995の情報を読み込み、共有open関数/共有close関数/共有read関数/共有write関数994の引数として、それぞれの関数に必要な情報を加えてファイル管理サーバ90に要求を送る。
【0347】
例えば、アクセス要求部991よりファイル識別子ID1のファイルから10バイト読み込みたいというreadシステム・コールが発せられた時、共有ファイルアクセス処理部993は、アクセス情報記憶部995から、ファイル識別子ID1に関するバージョン情報985、カレント位置情報986を読み込み、ファイル識別ID1と読み込むバイト数とともに、共有open関数の引数に付加してファイル管理サーバ90に送る。
【0348】
アクセス要求者990からファイル管理サーバ90に送られる要求には、通常のオペレーティング・システムのシステム・コールで付与される情報以外にアクセス要求者の現在のアクセス情報も含まれているので、その情報をもとに共有ファイル用履歴管理部510は、データ記憶部511から所望のデータを取り出すことができる。
【0349】
このように本実施例においても、オペレーティング・システムによって提供されるシステム・コール・テーブル992中のアドレス・ポインタの値を書き換えるだけで、既存のアプリケーションソフトウェア等のプログラム自体は全く変更せずに、アクセス要求者として利用して非同期編集を行うことが可能になる。
【0350】
尚、上記第10,第11実施例における既存のアプリケーション・プログラムを共有ファイルに対して使用可能とする特徴で、共有ファイルに対するアクセス関数を暗号化ファイルに対するアクセス関数に変えることで、既存のアプリケーション・プログラムを暗号化ファイルに対して使用可能とする特徴として、上述した図23の様にファイル内容秘匿機能のみを有するファイル編集システムに組み込むことも可能である。
【0351】
また、上述の各実施例においてクライアントとサーバの通信部の間の通信路を介した通信はクライアント・コンピュータとサーバ・コンピュータの間のネットワーク通信の形でも良いし、クライアント・プログラムとサーバ・プログラムの間のデータ転送の形でも良い。
【0352】
尚、本発明は上述した各実施例に限定されるものではなく、その要旨を逸脱しない範囲で、種々変更して実施することができる。
【0353】
【発明の効果】
以上説明したように、本発明(請求項1,2,6〜1,23,24)によれば、ファイルをブロック単位で暗号化するとともに、各ブロックに暗号化していないブロック識別子を付加したので、復号鍵を持つ正規のクライアント装置のみがファイルの内容を読み取ることができるとともに、ファイル管理サーバ装置にはファイルの内容が秘匿されているが、データ構造は管理させることができる秘匿性の高いファイル編集システムを提供することができる。
【0354】
本発明(請求項,1〜1,2)によれば、ファイルをブロック単位で暗号化するとともに、各ブロックに暗号化していないブロック識別子を付加したので、復号鍵を持つ正規のクライアント装置のみがファイルの内容を読み取ることかできるとともに、ファイル管理サーバ装置にはファイルの内容が秘匿されているが、データ構造は管理させることができる秘匿性の高い共有ファイル編集システムを提供することができる。
【0355】
また、ファイル管理サーバ装置は、クライアント装置から渡されたファイル編集の内容を示すデータを、該クライアント装置がアクセスして得たバージョンがいずれであるかに従って、該ファイル管理サーバ装置内での最新バージョンに対する編集内容に変換する処理を行うので、前記ファイル管理サーバ装置側では例えば“どのクライアントがどのバージョンのファイルをオープンしている”といったアクセス状況の情報を持つ必要がなくロック機構不要な仕組みで非同期編集可能な共有ファイル編集システムを構成することができる。
【0356】
特に、時間的に古いバージョンを編集し、最新バージョンとする使い方が可能となる。すなわち、非同期編集可能な共有ファイルにおいて、編集対象を現行版に限定しない使い方が可能となる。
【0357】
本発明(請求項,1〜1,1,2)によれば、ファイルをブロック単位で暗号化するとともに、各ブロックに暗号化していないブロック識別子を付加したので、復号鍵を持つ正規のクライアント装置のみがファイルの内容を読み取ることができるとともに、ファイル管理サーバ装置にはファイルの内容が秘匿されているが、データ構造は管理させることができる秘匿性の高い共有ファイル編集システムを提供することができる。
【0358】
一方、上記データを採用することにより、ファイル管理サーバ装置では、常に各クライアント装置による編集終了時における最新バージョンのファイルの内容に対する更新が行われるようにしたので、ロックを掛けずに複数のクライアント装置による非同期編集を行うことが可能となる。
【0359】
本発明(請求項10〜120〜2,2)によれば、ファイル管理サーバ装置は、クライアント装置から渡されたファイル編集の内容を示すデータを、該クライアント装置がアクセスして得たバージョンがいずれであるかに従って、該ファイル管理サーバ装置内での最新のバージョンに対する編集内容に変換する処理を行うので、前記ファイル管理サーバ装置側で例えば“どのクライアントがどのバージョンのファイルをオープンしている”といったアクセス状況の情報を持つ必要がなくロック機構不要な仕組みで非同期編集可能な共有ファイル編集システムを構成することができる。
【0360】
特に、時間的に古いバージョンを編集し、最新バージョンとする使い方が可能となる。すなわち、非同期編集可能な共有ファイルにおいて、編集対象を現行版に限定しない使い方が可能となる。
【0361】
また、本発明(請求項)によれば、ファイルをブロック単位で暗号化するとともに、各ブロックに暗号化していないブロック識別子を付加したので、復号鍵を持つ正規のクライアント装置のみがファイルの内容を読み取ることができるとともに、ファイル管理サーバ装置にはファイルの内容が秘匿されているが、データ構造は管理させることができる秘匿性の高い共有ファイル編集システムを提供することができる。
【0362】
一方、上記データ構造を採用することにより、ファイル管理サーバ装置ではクライアント装置から渡された編集内容を示す暗号化されたブロック・データとブロック識別情報とに基づいて、該ファイルの履歴管理を行うことができる。
【0363】
このように、ファイルの履歴管理とファイル管理サーバ装置に対するデータの秘匿性を同時に実現できる。
【0364】
また、本発明(請求項10)によれば、クライアント装置は、ファイル管理サーバ装置からファイルを得ることができ、保有している復号鍵を用いて該ブロック・データを復号化し、得られた復号化データをブロック新たなブロック・データに再構成し、暗号鍵を用いて新たなブロック・データごとに暗号化し、ファイル管理サーバ装置に出力することができる。
【0365】
また、これにより、クライアント装置により、履歴情報の消去を行ったり、ファイルのブロック・データ数が多くなった時などにブロックを再構成し、ブロック識別情報によるオーバヘッドを削減することができる。暗号鍵/復号鍵を有するクライアント装置が行うことにより、サーバに対するファイルの内容の秘匿性は守られる。
【0366】
また、本発明(請求項1)によれば、クライアント装置は、あるバージョンのファイルを保存する手段を有し、ファイル管理サーバ装置から、現在クライアント装置が保有しているバージョンのファイルと、所望のバージョンのファイルの差分情報を受け取り、クライアントが保有している当該ファイルのデータとファイル管理サーバ装置からの差分情報により、所望のバージョンのファイルを構築し編集することができる。
【0367】
従って、クライアント装置は、ファイル全体ではなく、現在保有するバージョンと所望するバージョンとの差分情報のみをファイル管理サーバ装置から取得すればよく、通信量の削減を図ることができるとともに、ブロック・データが暗号化されている場合はクライアント装置での復号化処理量を削減できる。
【0368】
本発明(請求項1)によれば、オペレーティング・システムによって提供されるコールテーブル中のアドレス・ポインタの値を書き換えるだけで、既存のアプリケーションソフトウェア等のプログラム自体は全く変更せずに、アクセス要求者として利用して非同期編集を行うことが可能になる。
【0369】
本発明(請求項20)によれば、ファイル管理サーバ装置では、各々のファイルの各々のバージョンについて、それを編集しているクライアント装置の数を記憶し、ユーザから消去の要求があっても消去対象となるファイルのバージョンを編集するクライアントがなくなるまで消去の実行を遅延させるので、いずれかのクライアントが編集途中のバージョンを消去することがなくなり、マージ処理の実行に支障をきたすおそれがなくなる。
【0370】
また、本発明(請求項2,2)によれば、各クライアント装置による編集結果は、ファイル管理サーバ装置における最新バージョンのファイルに対する更新に変換され、他のクライアントによる編集と競合するか否かによらず、ファイル管理サーバ装置に最新バージョンとして更新されるため、ロックを掛けずに複数のクライアント装置による非同期編集を行うことが可能となる。
【0371】
また、ファイル更新を行ったクライアントは、ファイル管理サーバ装置より、編集内容の競合検出の結果を通知されるので、その結果に基づいて、ファイルを編集し直すことができる。その際、ファイル管理サーバ装置ではファイルは履歴管理されているので、過去のバージョンを取り出すなどして柔軟に編集を行うことができる。
【0372】
また、請求項2のように構成した場合、ファイル管理サーバ装置は、他のクライアントによる編集との競合検出の結果に基づいて、ファイルの更新を行うかどうかを判断することができるので、ファイル管理サーバ装置の最新バージョンのファイルにおいて意味的矛盾が起こりにくい、あるいは起こらないようにすることができる。
【図面の簡単な説明】
【図1】本発明の第1実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図2】同実施例の差分積み上げ方式による履歴管理法でのファイルのデータ構造を示す図。
【図3】同実施例のRCS方式による履歴管理法でのファイルのデータ構造を示す図。
【図4】同実施例の変形SCCS方式による履歴管理法でのファイルのデータ構造を示す図。
【図5】同実施例の非同期編集機構の基本構成を示すブロック図。
【図6】同実施例の差分積み上げ方式による履歴管理時の非同期編集機構の働きを説明する図。
【図7】同実施例の変形SCCS方式による履歴管理時の非同期編集機構の働きを説明する図。
【図8】同実施例のOFBモードによる暗号化手順を説明するための図。
【図9】同実施例のCFBモードによる暗号化手順を説明するための図。
【図10】同実施例の暗号方式によるブロック・データ分割時の暗号手順を説明するための図。
【図11】同実施例のファイル・ブロック分割時の暗号化に関わる処理を説明するフローチャート。
【図12】同実施例のファイル・ブロック分割時の暗号化に関わる他の処理を説明するフローチャート。
【図13】本発明の第2実施例に係る共有ファイル編集システムのより具体的な一構成例を示すブロック図。
【図14】図13の共有ファイル編集部の内部構成を示すブロック図。
【図15】図13の暗号器の内部構成を示すブロック図。
【図16】本発明の第2実施例に係る共有ファイル編集システムのより具体的な他の構成例を示すブロック図。
【図17】図16の共有ファイル編集部の内部構成を示すブロック図。
【図18】図13の共有ファイル編集部の要部構成をまとめたブロック図。
【図19】図16の共有ファイル編集部の要部構成をまとめたブロック図。
【図20】本発明の第3実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図21】図20の共有ファイル編集部の内部構成を示すブロック図。
【図22】図20のマージ処理部の内部構成を示すブロック図。
【図23】本発明の第4実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図24】図23の暗号器の内部構成を示すブロック図。
【図25】本発明の第5実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図26】図25のクライアント計数部の内部構成を示すブロック図。
【図27】図26の計数記憶部に記憶されるデータのデータ構造を説明するための図。
【図28】図26の消去要求処理部の処理の流れを示すフローチャート。
【図29】図26の編集終了処理部の処理の流れを示すフローチャート。
【図30】図25で履歴管理部510が差分積み上げ方式により履歴管理を行う場合の消去命令の実行処理手順を示すフローチャート。
【図31】図25で履歴管理部510がRCS方式により履歴管理を行う場合の消去命令の実行処理手順を示すフローチャート。
【図32】図25で履歴管理部510が変形SCCS方式により履歴管理を行う場合の消去命令の実行処理手順を示すフローチャート。
【図33】本発明の第6実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図34】図33で履歴管理部が差分積み上げ方式により履歴管理を行う場合のブロック・データ再構成部の処理手順を示すフローチャート。
【図35】図33で履歴管理部が差分積み上げ方式により履歴管理を行う場合のサーバの履歴管理部の処理手順を示すフローチャート。
【図36】図33で履歴管理部がRCS方式により履歴管理を行う場合のブロック・データ再構成部の処理手順を示すフローチャート。
【図37】図33で履歴管理部がRCS方式により履歴管理を行う場合のサーバの履歴管理部の処理手順を示すフローチャート。
【図38】本発明の第7実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図39】履歴管理部が変形SCCS方式により履歴管理を行う場合のサーバの差分情報構築部の差分ブロック選択処理手順を示すフローチャート。
【図40】本発明の第8実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図41】本発明の第9実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図42】本発明の第10実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【図43】図42のアクセス情報記憶部が記憶する情報の例を示す図。
【図44】本発明の第11実施例に係る共有ファイル編集システムの基本構成を示すブロック図。
【符号の説明】
91,92,93,101,211,701,801,950,990 アクセス要求者(クライアント)
90,95,96,110,210,220,225,710,810,970 ファイル管理サーバ(サーバ)
111 通信路
112,212,812 暗号器
113 共有ファイル
121,221,721,821 メモリ
122,222,722 共有ファイル編集部
130,131,132,230,231,730,731,830〜832通信部
201,202,203,204 差分積み上げ方式でのブロック
301,302,303,304 RCS方式でのブロック
401,402,403,404,405 SCCS方式でのブロック
406 生成時点フィールド
407 消去時点フィールド
500 編集部
501 編集手続き生成部
502 編集手続き変換部
503 履歴管理情報生成部
510 履歴管理部
511,973 データ記憶部
740 マージ処理部
822 ファイル編集部
840 データ管理部
1121,8121 暗号化/復号化処理部
1122,8122 鍵記憶部
900 クライアント計数部
901 分岐部
902 編集開始処理部
903 消去要求処理部
904 編集終了処理部
905 計数記憶部
906 消去命令発行部
910 ブロック・データ再構成部
920 ファイル記憶部
921 ファイルデータ構築部
930 差分情報構築部
940 編集競合検出部
951,991 アクセス要求部
955,992 システム・コール・テーブル
960,993 共有ファイルアクセス処理部
961,994 共有open関数/共有close関数/共有read関数/共有write関数
971,995 アクセス情報記憶部
972 共有ファイル用履歴管理部
980 アクセス履歴リスト
981 ファイル識別子
982 モード
983 オープン時刻
984 クローズ時刻
985 バージョン
986 カレント

Claims (27)

  1. 各ファイルが、履歴管理に必要なバージョン間の差分に対応する複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、
    ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、
    前記クライアント装置は、
    前記ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータをブロック単位で取得し、所定の復号鍵を用いてブロック単位で復号化する復号化手段と、
    前記復号化手段で復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得る編集手段と、
    前記編集手段で得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化手段と、
    前記暗号化手段で得られた暗号化編集データを前記ファイル管理サーバ装置に送る通信手段とを備え、
    前記ファイル管理サーバ装置は前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記差分に対応するブロック単位で前記所望のファイルを管理することを特徴とするファイル編集システム。
  2. 各ファイルが、履歴管理に必要な複数のブロックデータと、対応するブロックデータの生成時と消去時のバージョン情報を有するブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、
    ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、
    前記クライアント装置は、
    前記ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータをブロック単位で取得し、所定の復号鍵を用いてブロック単位で復号化する復号化手段と、
    前記復号化手段で復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得る編集手段と、
    前記編集手段で得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化手段と、
    前記暗号化手段で得られた暗号化編集データを前記ファイル管理サーバ装置に送る通信手段とを備え、
    前記ファイル管理サーバ装置は前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理することを特徴とするファイル編集システム。
  3. 各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、
    ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、
    前記クライアント装置は、
    前記ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータをブロック単位で取得し、所定の復号鍵を用いてブロック単位で復号化する復号化手段と、
    前記復号化手段復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集する編集手段と、
    前記編集手段で前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示す編集手続データを生成する編集手続生成手段と、
    前記編集手続生成手段で生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換する編集手続変換手段と、
    前記編集手段でなされた編集の結果を示す履歴管理情報を、前記編集手続変換手段で得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成する履歴管理情報生成手段と、
    前記履歴管理情報生成手段で生成された履歴管理情報を、所定の暗号鍵を用いてブロック単位で暗号化して、暗号化履歴管理情報を得る暗号化手段と、
    前記暗号化手段で得られた暗号化履歴管理情報を前記ファイル管理サーバ装置に送る通信手段とを備え、
    前記ファイル管理サーバ装置は前記クライアント装置から受取った暗号化履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理する履歴管理手段を含むことを特徴とするファイル編集システム。
  4. 各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、
    ファイル編集を行なう少なくとも一つのクライアント装置とから構成され、
    前記クライアント装置は、
    前記ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータをブロック単位で取得し、所定の復号鍵を用いて復号化する復号化手段と、
    前記復号化手段で復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集する編集手段と、
    前記編集手段で前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示し、該所望のファイルに挿入される挿入データを含んだ編集手続データを生成する編集手続生成手段と、
    前記編集手続生成手段で生成された編集手続データに含まれる挿入データを所定の暗号鍵を用いて暗号化して、暗号化編集手続データを得る暗号化手段と、
    前記暗号化手段で得られた暗号化編集手続データを前記ファイル管理サーバ装置に送る通信手段とを備え、
    前記ファイル管理サーバ装置は、
    前記クライアント装置から受取った前記所望のファイルの所望のバージョンに対する暗号化編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する暗号化編集手続データに変換する編集手続変換手段と、
    前記編集手段でなされた編集の結果を示す履歴管理情報を、前記編集手続変換手段で得られた前記所望のファイルの最新バージョンに対する暗号化編集手続データに基づいて生成する履歴管理情報生成手段と、
    前記履歴管理情報生成手段で生成された履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理する履歴管理手段とを含むことを特徴とするファイル編集システム。
  5. 各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、
    前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得し、該ファイル管理サーバ装置から得たブロックデータで構成される前記所望のファイルを編集する、複数のクライアント装置と、
    前記複数のクライアント装置による非同期編集をサポートする非同期編集サポート手段とから構成され、
    前記非同期編集サポート手段は、
    各クライアント装置により前記所望のファイルに対してなされた編集内容を得る手続を示す編集手続データを生成する編集手続生成手段と、
    前記編集手続生成手段で生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまで の編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換する編集手続変換手段と、
    各クライアント装置により前記所望のファイルになされた編集の結果を示す履歴管理情報を、前記編集手続変換手段で得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成する履歴管理情報生成手段とを含み、
    前記ファイル管理サーバ装置は前記履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理することを特徴とする共有ファイル編集システム。
  6. 請求項1又は2記載のファイル編集システムにおいて、
    前記クライアント装置は前記所望のファイルの所望のバージョンに対応するブロックデータを前記ファイル管理サーバ装置から取得し、該ファイル管理サーバ装置は該クライアント装置から受取った前記所望のファイルの所望のバージョンに対する暗号化編集データに基づいて前記所望のファイルの履歴管理を行なう履歴管理手段を含むものであることを特徴とするファイル編集システム。
  7. 請求項1又は2記載のファイル編集システムにおいて、
    前記クライアント装置は前記所望のファイルの所望のバージョンに対応するブロックデータを前記ファイル管理サーバ装置から取得し、該ファイル管理サーバ装置は該クライアント装置から受取った前記所望のファイルの最新のバージョンに対する暗号化編集データに基づいて前記所望のファイルの履歴管理を行なう履歴管理手段を含むものであることを特徴とするファイル編集システム。
  8. 請求項1又は2記載のファイル編集システムにおいて、
    前記ファイル管理サーバ装置は、二つ以上のクライアント装置からの同一ファイルに対するアクセス要求を非同期に受け付けて、該二つ以上のクライアント装置が該同一ファイルに対する非同期編集を行なうようにするものであることを特徴とするファイル編集システム。
  9. 請求項1からのいずれかに記載のファイル編集システムにおいて、
    前記ファイル管理サーバ装置は、各ブロックデータをストリーム暗号方式で暗号化された状態で管理し、前記暗号化手段は前記編集データ又は前記履歴管理情報又は前記挿入データをストリーム暗号方式で暗号化することを特徴とするファイル編集システム。
  10. 請求項1、2又は5記載のファイル編集システム又は共有ファイル編集システムにおいて、
    前記クライアント装置は、前記ファイル管理サーバ装置から取得した複数のブロックデータを新たなブロックデータに再構成するブロックデータ再構成手段と、該ブロックデータ再構成手段で得られた新しいブロックデータを該ファイル管理サーバ装置に送る手段とを含み、該ファイル管理サーバ装置は該クライアント装置から受取った新たなブロックデータに基づいて前記所望のファイルを管理することを特徴とするファイル編集システム又は共有ファイル編集システム。
  11. 請求項1、2又は5記載のファイル編集システム又は共有ファイル編集システムにおいて、
    前記クライアント装置は、前記所望のファイルの以前アクセスされたバージョンを格納するファイル記憶手段と、前記ファイル記憶手段に格納されている以前アクセスされたバージョンと前記ファイル管理サーバ装置から取得した前記所望のファイルに属するブロックデータとに基づいて、前記所望のファイルの所望のバージョンを構築するファイルデータ構築手段と、を含み、
    前記ファイル管理サーバ装置は、前記クライアント装置に与えるブロックデータを、前記以前アクセスされたバージョンと前記所望のバージョンとの差分を求めることで構築する差分構築手段を含む
    ことを特徴とするファイル編集システム又は共有ファイル編集システム。
  12. 請求項1、2又は5記載のファイル編集システム又は共有ファイル編集システムにおいて、
    前記クライアント装置は、
    前記ファイル管理サーバ装置が管理する暗号化されたファイル又は共有ファイルに対するアクセス要求をオペレーティングシステムが提供するシステムコールにより発行するアクセス要求手段と、
    前記システムコールに対応するアドレスポインタを登録するシステムコールテーブル手段と、
    前記クライアント装置から前記ファイル管理サーバ装置に送るファイルアクセス要求を、前記アクセス要求手段が発行したアクセス要求で指定されるシステムコールに対応する前記アドレスポインタに基づいて求めるファイルアクセス処理手段と、
    を含むものであることを特徴とするファイル編集システム又は共有ファイル編集システム。
  13. 請求項又は記載のファイル編集システムにおいて、
    前記履歴管理手段はそれにより前記所望のファイルの履歴管理を行なうものである履歴データを前記編集手続変換手段に送り、該編集手続変換手段は前記所望のファイルの最新のバージョンに対する編集手続データを前記履歴データによって示される前記所望のバージョンと前記最新バージョンとの関係に基づいて求めるものであることを特徴とするファイル編集システム。
  14. 請求項又は記載のファイル編集システムにおいて、
    前記ファイル管理サーバ装置は各ファイルを、最初に生成されたファイル内容が暗号化された最初のブロックデータと、各編集の前のファイル内容と各編集の後のファイル内容の各差分が暗号化された以降のブロックデータと、各ブロックデータに付与されて各ブロックデータを同定する前記ブロックデータ識別情報とからなる形式で管理することを特徴とするファイル編集システム。
  15. 請求項又は記載のファイル編集システムにおいて、
    前記ファイル管理サーバ装置は各ファイルを、最新の編集されたファイル内容が暗号化された最新のブロックデータと、各編集の前のファイル内容と各編集の後のファイル内容の各差分が暗号化された以前のブロックデータと、各ブロックデータに付与されて各ブロックデータを同定する前記ブロックデータ識別情報とからなる形式で管理することを特徴とするファイル編集システム。
  16. 請求項又は記載のファイル編集システムにおいて、
    前記ファイル管理サーバ装置は各ファイルを、各ファイルに挿入された各内容が暗号化された挿入ブロックデータと、各ファイルから削除された各内容が暗号化された削除ブロックデータと、各ブロックデータに付与されて各ブロックデータの生成時点と消去時点を同定する前記ブロックデータ識別情報とからなる形式で管理することを特徴とするファイル編集システム。
  17. 請求項1記載のファイル編集システムにおいて、
    前記ファイル管理サーバ装置は、各ブロックデータを8ビットCFBモード型暗号方式で暗号化された状態で管理し、前記暗号化手段は前記履歴管理情報又は前記挿入データを8ビットCFBモード型暗号方式で暗号化することを特徴とするファイル編集システム。
  18. 請求項記載のファイル編集システムにおいて、
    前記履歴管理情報生成手段は前記編集手段でなされた編集の結果得られるブロックデータに対するブロック識別情報を前記履歴管理情報に対し付加し、前記通信手段は前記暗号化履歴管理情報を前記履歴管理情報に付加されたブロック識別情報と共に送ることを特徴とするファイル編集システム。
  19. 請求項又は記載のファイル編集システムにおいて、
    前記履歴管理手段は前記編集手段でなされた編集の結果得られるブロックデータに対するブロック識別情報を前記暗号化履歴管理情報又は前記履歴管理情報に対し付加することを特徴とするファイル編集システム。
  20. 請求項記載の共有ファイル編集システムにおいて、
    前記ファイル管理サーバ装置は、
    該ファイル管理サーバ装置が管理する各ファイルの各バージョンに対応させて、各ファイルの各バージョンを現在編集中であるクライアント装置の数を計数するクライアント計数手段と、
    特定ファイルの特定バージョンを消去する要求に対し、該特定ファイルの該特定バージョンの消去の実行を、前記クライアント計数手段により計数されたクライアントの数が0になるまで遅延させる消去遅延手段と、
    を含むものであることを特徴とする共有ファイル編集システム。
  21. 請求項記載の共有ファイル編集システムにおいて、
    前記ファイル管理サーバ装置は、あるクライアント装置によりなされた編集手続データを前記編集手続変換手段により変換して得られた前記最新バージョンに対する編集手続データと、他のクライアント装置によりなされた編集手続データを前記編集手続変換手段により変換して得られた前記最新バージョンに対する編集手続データとを比較して競合するか否かを検出し、競合した場合に、その競合の検出を該あるクライアント装置に通知する編集競合検出手段を含むものであることを特徴とする共有ファイル編集システム。
  22. 請求項2記載の共有ファイル編集システムにおいて、
    前記ファイル管理サーバ装置は更に、前記編集競合検出手段が該あるクライアント装置についての競合の発生を検出しない時のみ、前記非同期編集サポート手段で前記あるクライアント装置に対して得られた履歴管理情報に基づいて前記所望のファイルの履歴管理を行なう履歴管理手段を含むものであることを特徴とする共有ファイル編集システム。
  23. 各ファイルが、履歴管理に必要なバージョン間の差分に対応する複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、
    前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータを取得するステップと、
    前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いてブロック単位で復号化するステップと、
    前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得るステップと、
    前記クライアント装置において、前記編集するステップで得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化するステップと、
    前記暗号化するステップで得られた暗号化編集データを前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、
    前記ファイル管理サーバ装置が前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記差分に対応するブロック単位で前記所望のファイルを管理するステップと、
    から成ることを特徴とするファイル編集方法。
  24. 各ファイルが、履歴管理に必要な複数のブロックデータと、対応するブロックデータの生成時と消去時のバージョン情報を有するブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、
    前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルに属するブロックデータを取得するステップと、
    前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデ ータを所定の復号鍵を用いてブロック単位で復号化するステップと、
    前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルを編集して、該所望のファイルになされた編集内容を示す編集データを得るステップと、
    前記クライアント装置において、前記編集するステップで得られた編集データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集データを得る暗号化するステップと、
    前記暗号化するステップで得られた暗号化編集データを前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、
    前記ファイル管理サーバ装置が前記クライアント装置から受取った暗号化編集データと前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、
    から成ることを特徴とするファイル編集方法。
  25. 各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含み、かつ前記ブロックデータがブロック単位で暗号化されているファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、
    前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得するステップと、
    前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いてブロック単位で復号化するステップと、
    前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集するステップと、
    前記クライアント装置において、前記編集するステップで前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示す編集手続データを生成するステップと、
    前記クライアント装置において、前記編集手続データを生成するステップで生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換するステップと、
    前記クライアント装置において、前記編集するステップでなされた編集の結果を示す履歴管理情報を、前記変換するステップで得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成するステップと、
    前記クライアント装置において、前記履歴管理情報を生成するステップで生成された履歴管理情報を所定の暗号鍵を用いてブロック単位で暗号化して暗号化履歴管理情報を得る暗号化するステップと、
    前記暗号化するステップで得られた暗号化履歴管理情報を前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、
    前記ファイル管理サーバ装置において、前記クライアント装置から受取った暗号化履歴管理情報と前記各ブロックのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、
    から成ることを特徴とするファイル編集方法。
  26. 各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう少なくとも一つのクライアント装置からなるファイル管理システムにおいてファイルを編集する方法であって、
    前記クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得するステップと、
    前記クライアント装置において、前記ファイル管理サーバ装置から取得したブロックデータを所定の復号鍵を用いて復号化するステップと、
    前記クライアント装置において、前記復号化するステップで復号化されたブロックデータから構成される前記所望のファイルの所望のバージョンを編集するステップと、
    前記クライアント装置において、前記編集するステップで前記所望のファイルの所望のバージョンに対してなされた編集内容を得る手続を示し、該所望のファイルに挿入される挿入データを含んだ編集手続データを生成するステップと、
    前記クライアント装置において、前記編集手続データを生成するステップで生成された編集手続データに含まれる挿入データを所定の暗号鍵を用いてブロック単位で暗号化して暗号化編集手続データを得る暗号化するステップと、
    前記暗号化するステップで得られた暗号化編集手続データを前記クライアント装置から前記ファイル管理サーバ装置に送るステップと、
    前記ファイル管理サーバ装置において、前記クライアント装置から受取った前記所望のファイルの所望のバージョンに対する暗号化編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する暗号化編集手続データに変換するステップと、
    前記ファイル管理サーバ装置において、前記編集するステップでなされた編集の結果を示す履歴管理情報を、前記変換するステップで得られた前記所望のファイルの最新バージョンに対する暗号化編集手続データに基づいて生成するステップと、
    前記ファイル管理サーバ装置において、前記履歴管理情報を生成するステップで生成された履歴管理情報と前記各ブロックのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、
    から成ることを特徴とするファイル編集方法。
  27. 各ファイルが複数のブロックデータと各ブロックのブロック識別情報とを含むファイルを管理するファイル管理サーバ装置と、ファイル編集を行なう複数のクライアント装置からなる共有ファイル管理システムにおいてファイルを編集する方法であって、
    各クライアント装置において、前記ファイル管理サーバ装置にアクセスして該ファイル管理サーバ装置が管理する所望のファイルの所望のバージョンに対応するブロックデータを取得するステップと、
    各クライアント装置において、前記取得するステップで前記ファイル管理サーバ装置から取得したブロックデータによって構成される前記所望のファイルの所望のバージョンを編集するステップと、
    各クライアント装置により前記所望のファイルになされた編集内容を得る手続を示す編集手続データを生成するステップと、
    前記編集手続データを生成するステップで生成された前記所望のファイルの所望のバージョンに対する編集手続データを、別途既になされた前記所望のバージョンから最新バージョンに至るまでの編集手続データに基づいて、前記最新バージョンに対する編集手続データに変換するステップと、
    各クライアント装置により前記所望のファイルになされた編集の結果を示す履歴管理情報を、前記変更するステップで得られた前記所望のファイルの最新バージョンに対する編集手続データに基づいて生成するステップと、
    前記ファイル管理サーバ装置が前記履歴管理情報と前記各ブロックデータのブロック識別情報とに基づいて前記所望のファイルを管理するステップと、
    ら成ることを特徴とする共有ファイル編集方法。
JP05921095A 1994-03-17 1995-03-17 ファイル編集システム及び共有ファイル編集システム Expired - Lifetime JP3707821B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP05921095A JP3707821B2 (ja) 1994-03-17 1995-03-17 ファイル編集システム及び共有ファイル編集システム

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP4738194 1994-03-17
JP6-190696 1994-08-12
JP6-47381 1994-08-12
JP19069694 1994-08-12
JP05921095A JP3707821B2 (ja) 1994-03-17 1995-03-17 ファイル編集システム及び共有ファイル編集システム

Publications (2)

Publication Number Publication Date
JPH08106412A JPH08106412A (ja) 1996-04-23
JP3707821B2 true JP3707821B2 (ja) 2005-10-19

Family

ID=27292958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05921095A Expired - Lifetime JP3707821B2 (ja) 1994-03-17 1995-03-17 ファイル編集システム及び共有ファイル編集システム

Country Status (1)

Country Link
JP (1) JP3707821B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1115710A (ja) * 1997-06-19 1999-01-22 Yokogawa Electric Corp 計測システム
JP2008269277A (ja) * 2007-04-20 2008-11-06 Meidensha Corp 共有データの分散編集システム、分散編集方法およびプログラム
US7870108B2 (en) * 2007-09-25 2011-01-11 Amadeus S.A.S. Method and apparatus for version management of a data entity
JP5205937B2 (ja) * 2007-11-20 2013-06-05 富士ゼロックス株式会社 文書操作履歴管理システム
JP5455340B2 (ja) * 2008-09-11 2014-03-26 株式会社アール・アイ バックアッププログラム
JP5098950B2 (ja) * 2008-10-21 2012-12-12 株式会社島津製作所 クライアント・サーバ型分析システム
JP5593452B2 (ja) 2011-10-12 2014-09-24 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュリティレベルを維持するために情報を削除する方法、システム、仲介サーバ、クライアント及びコンピュータプログラム
JP5723257B2 (ja) * 2011-11-11 2015-05-27 富士通フロンテック株式会社 文書管理プログラム、情報処理装置および文書管理方法
WO2015137760A1 (ko) * 2014-03-14 2015-09-17 주식회사 로웸 비밀 데이터 관리 방법과 장치 및 보안 인증 방법 및 시스템
BR112016021120B1 (pt) * 2014-03-14 2023-04-18 Rowem Inc Método e dispositivo de gerenciamento de dados confidenciais; método e sistema de autenticação segura
JP2017167274A (ja) * 2016-03-15 2017-09-21 株式会社東芝 暗号装置及び復号装置
JP2022506633A (ja) * 2018-11-09 2022-01-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 無線アップグレード方法および関連装置
US11604898B2 (en) * 2019-08-20 2023-03-14 Google Llc Secure online collaboration
JP6903247B1 (ja) * 2020-11-18 2021-07-14 三菱電機株式会社 監視画面作成支援装置、監視画面作成支援方法、および監視画面作成支援プログラム

Also Published As

Publication number Publication date
JPH08106412A (ja) 1996-04-23

Similar Documents

Publication Publication Date Title
EP0674253B1 (en) Shared file editing system with file content secrecy, version management and asynchronous editing
US7631185B2 (en) File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing
JP3707821B2 (ja) ファイル編集システム及び共有ファイル編集システム
US7137025B2 (en) Key controlling system, key controlling apparatus, information encrypting apparatus, information decrypting apparatus and storage media for storing programs
JP4759513B2 (ja) 動的、分散的および協働的な環境におけるデータオブジェクトの管理
Bellare et al. Incremental cryptography and application to virus protection
US6915435B1 (en) Method and system for managing information retention
TW202145753A (zh) 加密使用者資料傳輸及儲存(nuts)之彈性階層式物件圖像
TW545019B (en) Controlling and tracking access to disseminated information
US20080002830A1 (en) Method, system, and computer-readable medium to maintain and/or purge files of a document management system
US20040205653A1 (en) Method and system for document collaboration
JP6011533B2 (ja) 情報処理装置、情報処理方法およびプログラム
JPH10260903A (ja) グループ暗号方法、及びファイル暗号システム
JPS6133194B2 (ja)
CA2452419A1 (en) Method for an integrated protection system of data distributed processing in computer networks and system for carrying out said method
WO2001001260A2 (en) Secure, limited-access database system and method
CN108702289A (zh) 数据保护环境中的端到端加密和备份
US20240080181A1 (en) Blockchain Data Structures and Systems and Methods Therefor for Multipath Transaction Management
CN108763401A (zh) 一种文件的读写方法及设备
JP4303408B2 (ja) 情報をブロック暗号化して記録する方法およびこれをサポートする記録媒体
JP2002033727A (ja) ファイル管理装置
JPH10200522A (ja) Icカード利用暗号化方法およびシステムおよびicカード
KR100859651B1 (ko) 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체
US7373672B2 (en) Method for securely managing information in database
CN113114757B (zh) 一种文件传输方法、装置和设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041007

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050802

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090812

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090812

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100812

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100812

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110812

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120812

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120812

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130812

Year of fee payment: 8

EXPY Cancellation because of completion of term