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

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

Info

Publication number
JPH08106412A
JPH08106412A JP7059210A JP5921095A JPH08106412A JP H08106412 A JPH08106412 A JP H08106412A JP 7059210 A JP7059210 A JP 7059210A JP 5921095 A JP5921095 A JP 5921095A JP H08106412 A JPH08106412 A JP H08106412A
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.)
Granted
Application number
JP7059210A
Other languages
English (en)
Other versions
JP3707821B2 (ja
Inventor
Atsushi Shinpo
淳 新保
Toshinari Takahashi
俊成 高橋
Masao Murota
真男 室田
Ichiro Tomota
一郎 友田
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

Landscapes

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

Abstract

(57)【要約】 【目的】 ファイルのバージョン管理、ファイルの内容
のサーバに対する秘匿性、非同期編集を同時に実現した
共有ファイル編集システムを提供すること。 【構成】 ファイルサーバと複数のアクセス要求クライ
アントを備え、同一ファイルへの複数アクセスを許す共
有ファイル編集システムにおいて、ファイルは複数のブ
ロックデータとブロック識別情報を含みデータはブロッ
ク単位で暗号化され、アクセス要求クライアントは、サ
ーバから得た所望のバージョンのファイルをブロック毎
に復号化する手段と、ファイル編集手段と、編集の手続
きを該ファイルのサーバ内での最新バージョンに対する
編集手続きに変換する手段と、変換結果から作成した編
集データを暗号化する手段と、暗号化された編集データ
をサーバに出力する手段を備え、サーバは、クライアン
トから受け取った編集データと、ブロック識別情報に基
づいて該ファイルの履歴管理を行う手段を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はファイル編集システムに
係わり、特に、計算機の共有ファイル・システムやデー
タベース・システムにおいて、複数ユーザからの共有フ
ァイルの非同期編集や、ファイルの内容の読み出し保護
を実現したものに関する。
【0002】
【従来の技術】計算機システムにおいて、システム内の
資源に対する複数ユーザからのアクセスを管理するため
には、アクセス要求を出したユーザが当該資源に対する
アクセス権を有する正規のユーザであるか否かを確認す
るための認証機構が必要であることが指摘されてきた。
特に、システムが巨大化し遠隔ユーザからのアクセスを
認める環境では、認証機構の重要性が増してくる。この
ような機構を実現する代表的な認証システムとしては、
Kerberosなどがある。
【0003】こうした認証機構の必要となる典型的なシ
ステムとしては、CSCW(Comuputer Su
pported 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)で
は、各ファイルが複数のブロックデータと各ブロックの
ブロック識別情報とを含み、かつ前記ブロックデータが
ブロック単位で暗号化されているファイルを、前記各ブ
ロックのブロック識別情報に基づいて管理するファイル
管理サーバ装置と、ファイル編集を行なう少なくとも一
つのクライアント装置とから構成され、前記クライアン
ト装置は、前記ファイル管理サーバ装置にアクセスして
取得した、該ファイル管理サーバ装置が管理する所望の
ファイルに属するブロックデータを、所定の復号鍵を用
いてブロック単位で復号化する復号化手段と、前記復号
化手段で復号化されたブロックデータから構成される前
記所望のファイルを編集して、該所望のファイルになさ
れた編集内容を示す編集データを得る編集手段と、前記
編集手段で得られた編集データを所定の暗号鍵を用いて
ブロック単位で暗号化して暗号化編集データを得る暗号
化手段と、前記暗号化手段で得られた暗号化編集データ
を前記ファイル管理サーバ装置に送る通信手段とを備
え、前記ファイル管理サーバ装置は前記クライアント手
段から受取った暗号化編集データに基づいて前記所望の
ファイルを管理することを特徴とする。
【0014】また、本発明(請求項2)では、各ファイ
ルが複数のブロックデータと各ブロックのブロック識別
情報とを含み、かつ前記ブロックデータがブロック単位
で暗号化されているファイルを管理するファイル管理サ
ーバ装置と、ファイル編集を行なう少なくとも一つのク
ライアント装置とから構成され、前記クライアント装置
は、前記ファイル管理サーバ装置にアクセスして取得し
た、該ファイル管理サーバ装置が管理する所望のファイ
ルの所望のバージョンに対応するブロックデータを、所
定の復号鍵を用いてブロック単位で復号化する復号化手
段と、前記復号化手段て復号化されたブロックデータか
ら構成される前記所望のファイルの所望のバージョンを
編集する編集手段と、前記編集手段で前記所望のファイ
ルの所望のバージョンに対してなされた編集内容を得る
手続を示す編集手続データを生成する編集手続生成手段
と、前記編集手続生成手段で生成された前記所望のファ
イルの所望のバージョンに対する編集手続データを、所
望のファイルの最新バージョンに対する編集手続データ
に変換する編集手続変換手段と、前記編集手段でなされ
た編集の結果を示す履歴管理情報を、前記編集手続変換
手段で得られた前記所望のファイルの最新バージョンに
対する編集手続データに基づいて生成する履歴管理情報
生成手段と、前記履歴管理情報生成手段で生成された履
歴管理情報を、所定の暗号鍵を用いてブロック単位で暗
号化して、暗号化履歴管理情報を得る暗号化手段と、前
記暗号化手段で得られた暗号化履歴管理情報を前記ファ
イル管理サーバ装置に送る通信手段とを備え、前記ファ
イル管理サーバ装置は前記クライアント装置から受取っ
た暗号化履歴管理情報と前記各ブロックデータのブロッ
ク識別情報とに基づいて前記所望のファイルを管理する
履歴管理手段を含むことを特徴とする。
【0015】また、本発明(請求項3)では、各ファイ
ルが複数のブロックデータと各ブロックのブロック識別
情報とを含むファイルを管理するファイル管理サーバ装
置と、ファイル編集を行なう少なくとも一つのクライア
ント装置とから構成され、前記クライアント装置は、前
記ファイル管理サーバ装置にアクセスして取得した、該
ファイル管理サーバ装置が管理する所望のファイルの所
望のバージョンに対応するブロックデータを、所定の復
号鍵を用いて復号化する復号化手段と、前記復号化手段
で復号化されたブロックデータから構成される前記所望
のファイルの所望のバージョンを編集する編集手段と、
前記編集手段で前記所望のファイルの所望のバージョン
に対してなされた編集内容を得る手続を示し、該所望の
ファイルに挿入される挿入データを含んだ編集手続デー
タを生成する編集手続生成手段と、前記編集手続生成手
段で生成された編集手続データに含まれる挿入データを
所定の暗号鍵を用いて暗号化して、暗号化編集手続デー
タを得る暗号化手段と、前記暗号化手段で得られた暗号
化編集手続データを前記ファイル管理サーバ装置に送る
通信手段とを備え、前記ファイル管理サーバ装置は、前
記クライアント装置から受取った前記所望のファイルの
所望のバージョンに対する暗号化編集手続データを、所
望のファイルの最新バージョンに対する暗号化編集手続
データに変換する編集手続変換手段と、前記編集手段で
なされた編集の結果を示す履歴管理情報を、前記編集手
続変換手段で得られた前記所望のファイルの最新バージ
ョンに対する暗号化編集手続データに基づいて生成する
履歴管理情報生成手段と、前記履歴管理情報生成手段で
生成された履歴管理情報と前記各ブロックデータのブロ
ック識別情報とに基づいて前記所望のファイルを管理す
る履歴管理手段とを含むことを特徴とする。
【0016】また、本発明(請求項4)では、各ファイ
ルが複数のブロックデータと各ブロックのブロック識別
情報とを含むファイルを管理するファイル管理サーバ装
置と、前記ファイル管理サーバ装置にアクセスして該フ
ァイル管理サーバ装置が管理する所望のファイルの所望
のバージョンに対応するブロックデータを取得し、該フ
ァイル管理サーバ装置から得たブロックデータで構成さ
れる前記所望のファイルを編集する、複数のクライアン
ト装置と、前記複数のクライアント装置による非同期編
集をサポートする非同期編集サポート手段とから構成さ
れ、前記非同期編集サポート手段は、各クライアント装
置により前記所望のファイルに対してなされた編集内容
を得る手続を示す編集手続データを生成する編集手続生
成手段と、前記編集手続生成手段で生成された前記所望
のファイルの所望のバージョンに対する編集手続データ
を、所望のファイルの最新バージョンに対する編集手続
データに変換する編集手続変換手段と、各クライアント
装置により前記所望のファイルになされた編集の結果を
示す履歴管理情報を、前記編集手続変換手段で得られた
前記所望のファイルの最新バージョンに対する編集手続
データに基づいて生成する履歴管理情報生成手段とを含
み、前記ファイル管理サーバ装置は前記履歴管理情報と
前記各ブロックデータのブロック識別情報とに基づいて
前記所望のファイルを管理することを特徴とする。
【0017】また、本発明(請求項5)では、上記(請
求項1)において、前記クライアント装置は前記所望の
ファイルの所望のバージョンに対応するブロックデータ
を前記ファイル管理サーバ装置から取得し、該ファイル
管理サーバ装置は該クライアント装置から受取った前記
所望のファイルの所望のバージョンに対する暗号化編集
データに基づいて前記所望のファイルの履歴管理を行な
う履歴管理手段を含むものであることを特徴とする。
【0018】また、本発明(請求項6)では上記(請求
項1)において、前記クライアント装置は前記所望のフ
ァイルの所望のバージョンに対応するブロックデータを
前記ファイル管理サーバ装置から取得し、該ファイル管
理サーバ装置は該クライアント装置から受取った前記所
望のファイルの最新のバージョンに対する暗号化編集デ
ータに基づいて前記所望のファイルの履歴管理を行なう
履歴管理手段を含むものであることを特徴とする。
【0019】また、本発明(請求項7)では、上記(請
求項)において、前記ファイル管理サーバ装置は、二つ
以上のクライアント装置からの同一ファイルに対するア
クセス要求を非同期に受け付けて、該二つ以上のクライ
アント装置が該同一ファイルに対する非同期編集を行な
うようにするものであることを特徴とする。
【0020】また、本発明(請求項8)では、上記(請
求項1から3のいずれか)において、前記ファイル管理
サーバ装置は、各ブロックデータをストリーム暗号方式
で暗号化された状態で管理し、前記暗号化手段は前記編
集データ又は前記履歴管理情報又は前記挿入データをス
トリーム暗号方式で暗号化することを特徴とする。
【0021】また、本発明(請求項9)では、上記(請
求項1又は4)において、前記クライアント装置は、前
記ファイル管理サーバ装置から取得した複数のブロック
データを新たなブロックデータに再構成するブロックデ
ータ再構成手段と、該ブロックデータ再構成手段で得ら
れた新しいブロックデータを該ファイル管理サーバ装置
に送る手段とを含み、該ファイル管理サーバ装置は該ク
ライアント装置から受取った新たなブロックデータに基
づいて前記所望のファイルを管理することを特徴とす
る。
【0022】また、本発明(請求項10)では、上記
(請求項1又は4)において、前記クライアント装置
は、前記所望のファイルの以前アクセスされたバージョ
ンを格納するファイル記憶手段と、前記ファイル記憶手
段に格納されている以前アクセスされたバージョンと前
記ファイル管理サーバ装置から取得した前記所望のファ
イルに属するブロックデータとに基づいて、前記所望の
ファイルの所望のバージョンを構築するファイルデータ
構築手段と、を含み、前記ファイル管理サーバ装置は、
前記クライアント装置に与えるブロックデータを、前記
以前アクセスされたバージョンと前記所望のバージョン
との差分を求めることで構築する差分構築手段を含むこ
とを特徴とする。
【0023】また、本発明(請求項11)では、上記
(請求項1又は4)において、前記クライアント装置
は、前記ファイル管理サーバ装置が管理する暗号化され
たファイル又は共有ファイルに対するアクセス要求をオ
ペレーティングシステムが提供するシステムコールによ
り発行するアクセス要求手段と、前記システムコールに
対応するアドレスポインタを登録するシステムコールテ
ーブル手段と、前記クライアント装置から前記ファイル
管理サーバ装置に送るファイルアクセス要求を、前記ア
クセス要求手段が発行したアクセス要求で指定されるシ
ステムコールに対応する前記アドレスポインタに基づい
て求めるファイルアクセス処理手段と、を含むものであ
ることを特徴とする。
【0024】また、本発明(請求項12)では、上記
(請求項2又は3)において、前記履歴管理手段はそれ
により前記所望のファイルの履歴管理を行なうものであ
る履歴データを前記編集手続変換手段に送り、該編集手
続変換手段は前記所望のファイルの最新のバージョンに
対する編集手続データを前記履歴データによって示され
る前記所望のバージョンと前記最新バージョンとの関係
に基づいて求めるものであることを特徴とする。
【0025】また、本発明(請求項13)では、上記
(請求項2又は3)において、前記ファイル管理サーバ
装置は各ファイルを、最初に生成されたファイル内容が
暗号化された最初のブロックデータと、各編集の前のフ
ァイル内容と各編集の後のファイル内容の各差分が暗号
化された以降のブロックデータと、各ブロックデータに
付与されて各ブロックデータを同定する前記ブロックデ
ータ識別情報とからなる形式で管理することを特徴とす
る。
【0026】また、本発明(請求項14)では、上記
(請求項2又は3)において、前記ファイル管理サーバ
装置は各ファイルを、最新の編集されたファイル内容が
暗号化された最新のブロックデータと、各編集の前のフ
ァイル内容と各編集の後のファイル内容の各差分が暗号
化された以前のブロックデータと、各ブロックデータに
付与されて各ブロックデータを同定する前記ブロックデ
ータ識別情報とからなる形式で管理することを特徴とす
る。
【0027】また、本発明(請求項15)では、上記
(請求項2又は3)において、前記ファイル管理サーバ
装置は各ファイルを、各ファイルに挿入された各内容が
暗号化された挿入ブロックデータと、各ファイルから削
除された各内容が暗号化された削除ブロックデータと、
各ブロックデータに付与されて各ブロックデータの生成
時点と消去時点を同定する前記ブロックデータ識別情報
とからなる形式で管理することを特徴とする。
【0028】また、本発明(請求項16)では、上記
(請求項15)において、前記ファイル管理サーバ装置
は、各ブロックデータを8ビットCFBモード型暗号方
式で暗号化された状態で管理し、前記暗号化手段は前記
履歴管理情報又は前記挿入データを8ビットCFBモー
ド型暗号方式で暗号化することを特徴とする。
【0029】また、本発明(請求項17)では、上記
(請求項2)において、前記履歴管理情報生成手段は前
記編集手段でなされた編集の結果得られるブロックデー
タに対するブロック識別情報を前記履歴管理情報に対し
付加し、前記通信手段は前記暗号化履歴管理情報を前記
履歴管理情報に付加されたブロック識別情報と共に送る
ことを特徴とする。
【0030】また、本発明(請求項18)では、上記
(請求項2又は3)において、前記履歴管理手段は前記
編集手段でなされた編集の結果得られるブロックデータ
に対するブロック識別情報を前記暗号化履歴管理情報又
は前記履歴管理情報に対し付加することを特徴とする。
【0031】また、本発明(請求項19)では、上記
(請求項4)において、前記ファイル管理サーバ装置
は、該ファイル管理サーバ装置が管理する各ファイルの
各バージョンに対応させて、各ファイルの各バージョン
を現在編集中であるクライアント装置の数を計数するク
ライアント計数手段と、特定ファイルの特定バージョン
を消去する要求に対し、該特定ファイルの該特定バージ
ョンの消去の実行を、前記クライアント計数手段により
計数されたクライアントの数が0になるまで遅延させる
消去遅延手段と、を含むものであることを特徴とする。
【0032】また、本発明(請求項20)では、上記
(請求項4)において、前記ファイル管理サーバ装置
は、あるクライアント装置によりなされた編集内容と他
のクライアント装置によりなされた他の編集内容との競
合の発生を検出して、検出された競合の発生を該あるク
ライアント装置に通知する編集競合検出手段を含むもの
であることを特徴とする。
【0033】また、本発明(請求項21)では、上記
(請求項20)において、前記ファイル管理サーバ装置
は更に、前記編集競合検出手段が該あるクライアント装
置についての競合の発生を検出しない時のみ、前記非同
期編集サポート手段で前記あるクライアント装置に対し
て得られた履歴管理情報に基づいて前記所望のファイル
の履歴管理を行なう履歴管理手段を含むものであること
を特徴とする。
【0034】また、本発明(請求項22)では、各ファ
イルが複数のブロックデータと各ブロックのブロック識
別情報とを含み、かつ前記ブロックデータがブロック単
位で暗号化されているファイルを管理するファイル管理
サーバ装置と、ファイル編集を行なう少なくとも一つの
クライアント装置からなるファイル管理システムにおい
てファイルを編集する方法であって、前記クライアント
装置において、前記ファイル管理サーバ装置にアクセス
して該ファイル管理サーバ装置が管理する所望のファイ
ルに属するブロックデータを取得するステップと、前記
クライアント装置において、前記ファイル管理サーバ装
置から取得したブロックデータを所定の復号鍵を用いて
ブロック単位で復号化するステップと、前記クライアン
ト装置において、前記復号化するステップで復号化され
たブロックデータから構成される前記所望のファイルを
編集して、該所望のファイルになされた編集内容を示す
編集データを得るステップと、前記クライアント装置に
おいて、前記編集するステップで得られた編集データを
所定の暗号鍵を用いてブロック単位で暗号化して暗号化
編集データを得る暗号化するステップと、前記暗号化す
るステップで得られた暗号化編集データを前記クライア
ント装置から前記ファイル管理サーバ装置に送るステッ
プと、前記ファイル管理サーバ装置が前記クライアント
装置から受取った暗号化編集データに基づいて前記所望
のファイルを管理するステップと、から成ることを特徴
とする。
【0035】また、本発明(請求項23)では、各ファ
イルが複数のブロックデータと各ブロックのブロック識
別情報とを含み、かつ前記ブロックデータがブロック単
位で暗号化されているファイルを管理するファイル管理
サーバ装置と、ファイル編集を行なう少なくとも一つの
クライアント装置からなるファイル管理システムにおい
てファイルを編集する方法であって、前記クライアント
装置において、前記ファイル管理サーバ装置にアクセス
して該ファイル管理サーバ装置が管理する所望のファイ
ルの所望のバージョンに対応するブロックデータを取得
するステップと、前記クライアント装置において、前記
ファイル管理サーバ装置から取得したブロックデータを
所定の復号鍵を用いてブロック単位で復号化するステッ
プと、前記クライアント装置において、前記復号化する
ステップで復号化されたブロックデータから構成される
前記所望のファイルの所望のバージョンを編集するステ
ップと、前記クライアント装置において、前記編集する
ステップで前記所望のファイルの所望のバージョンに対
してなされた編集内容を得る手続を示す編集手続データ
を生成するステップと、前記クライアント装置におい
て、前記編集手続データを生成するステップで生成され
た前記所望のファイルの所望のバージョンに対する編集
手続データを、所望のファイルの最新バージョンに対す
る編集手続データに変換するステップと、前記クライア
ント装置において、前記編集するステップでなされた編
集の結果を示す履歴管理情報を、前記変換するステップ
で得られた前記所望のファイルの最新バージョンに対す
る編集手続データに基づいて生成するステップと、前記
クライアント装置において、前記履歴管理情報を生成す
るステップで生成された履歴管理情報を所定の暗号鍵を
用いてブロック単位で暗号化して暗号化履歴管理情報を
得る暗号化するステップと、前記暗号化するステップで
得られた暗号化履歴管理情報を前記クライアント装置か
ら前記ファイル管理サーバ装置に送るステップと、前記
ファイル管理サーバ装置において、前記クライアント装
置から受取った暗号化履歴管理情報と前記各ブロックの
ブロック識別情報とに基づいて前記所望のファイルを管
理するステップと、から成ることを特徴とする。
【0036】また、本発明(請求項24)では、各ファ
イルが複数のブロックデータと各ブロックのブロック識
別情報とを含むファイルを管理するファイル管理サーバ
装置と、ファイル編集を行なう少なくとも一つのクライ
アント装置からなるファイル管理システムにおいてファ
イルを編集する方法であって、前記クライアント装置に
おいて、前記ファイル管理サーバ装置にアクセスして該
ファイル管理サーバ装置が管理する所望のファイルの所
望のバージョンに対応するブロックデータを取得するス
テップと、前記クライアント装置において、前記ファイ
ル管理サーバ装置から取得したブロックデータを所定の
復号鍵を用いて復号化するステップと、前記クライアン
ト装置において、前記復号化するステップで復号化され
たブロックデータから構成される前記所望のファイルの
所望のバージョンを編集するステップと、前記クライア
ント装置において、前記編集するステップで前記所望の
ファイルの所望のバージョンに対してなされた編集内容
を得る手続を示し、該所望のファイルに挿入される挿入
データを含んだ編集手続データを生成するステップと、
前記クライアント装置において、前記編集手続データを
生成するステップで生成された編集手続データに含まれ
る挿入データを所定の暗号鍵を用いてブロック単位で暗
号化して暗号化編集手続データを得る暗号化するステッ
プと、前記暗号化するステップで得られた暗号化編集手
続データを前記クライアント装置から前記ファイル管理
サーバ装置に送るステップと、前記ファイル管理サーバ
装置において、前記クライアント装置から受取った前記
所望のファイルの所望のバージョンに対する暗号化編集
手続データを、所望のファイルの最新バージョンに対す
る暗号化編集手続データに変換するステップと、前記フ
ァイル管理サーバ装置において、前記編集するステップ
でなされた編集の結果を示す履歴管理情報を、前記変換
するステップで得られた前記所望のファイルの最新バー
ジョンに対する暗号化編集手続データに基づいて生成す
るステップと、前記ファイル管理サーバ装置において、
前記履歴管理情報を生成するステップで生成された履歴
管理情報と前記各ブロックのブロック識別情報とに基づ
いて前記所望のファイルを管理するステップと、から成
ることを特徴とする。
【0037】また、本発明(請求項25)では、各ファ
イルが複数のブロックデータと各ブロックのブロック識
別情報とを含むファイルを管理するファイル管理サーバ
装置と、ファイル編集を行なう複数のクライアント装置
からなる共有ファイル管理システムにおいてファイルを
編集する方法であって、各クライアント装置において、
前記ファイル管理サーバ装置にアクセスして該ファイル
管理サーバ装置が管理する所望のファイルの所望のバー
ジョンに対応するブロックデータを取得するステップ
と、各クライアント装置において、前記取得するステッ
プで前記ファイル管理サーバ装置から取得したブロック
データによって構成される前記所望のファイルの所望の
バージョンを編集するステップと、各クライアント装置
により前記所望のファイルになされた編集内容を得る手
続を示す編集手続データを生成するステップと、前記編
集手続データを生成するステップで生成された前記所望
のファイルの所望のバージョンに対する編集手続データ
を、所望のファイルの最新バージョンに対する編集手続
データに変換するステップと、各クライアント装置によ
り前記所望のファイルになされた編集の結果を示す履歴
管理情報を、前記変更するステップで得られた前記所望
のファイルの最新バージョンに対する編集手続データに
基づいて生成するステップと、前記ファイル管理サーバ
装置が前記履歴管理情報と前記各ブロックデータのブロ
ック識別情報とに基づいて前記所望のファイルを管理す
るステップと、とから成ることを特徴とする。
【0038】
【作用】本発明(請求項1,5〜11,22)では、フ
ァイル管理サーバ装置に格納管理されるファイルは、デ
ータ部分と付加情報部分からなり、データ部分は複数の
ブロック・データからなり、付加情報部分は各ブロック
・データに付加されたブロック識別情報を含み、さら
に、各ブロック・データはブロック・データ単位で暗号
化されているとともに、データ構造の管理に必要なブロ
ック識別情報は暗号化されていない情報である。そし
て、クライアント装置は、ファイル管理サーバ装置に対
して所望のファイルをブロック・データ単位でアクセス
でき、保有している暗号鍵/復号鍵を用いて、該ブロッ
ク・データを暗号化/復号化する。また、ファイル管理
サーバ装置にはファイルの内容が秘匿されているが、デ
ータ構造の管理は実行させることができる。
【0039】従って、ファイルの内容をファイル管理サ
ーバ装置からは読み取ることのできない秘匿性の高いフ
ァイル編集システムを提供することができる。
【0040】また、クライアント装置は、ファイルのう
ちの必要なデータ・ブロックだけを通信により取得でき
るので、通信量の削減を図ることができるとともに、必
要なブロックだけを復号化/暗号化すれば良いので、ク
ライアント装置での処理量の削減、クライアント装置で
必要なバッファ(メモリ)の削減ができる利点もある。
【0041】また、本発明(請求項2,8,12〜1
8,23)では、ファイル管理サーバ装置に格納管理さ
れるファイルは、データ部分と付加情報部分からなり、
データ部分は複数のブロック・データからなり、付加情
報部分は各ブロック・データに付加されたブロック識別
情報を含み、さらに、各ブロック・データはブロック・
データ単位で暗号化されているとともに、データ構造の
管理に必要なブロック識別情報は暗号化されていない情
報である。このブロック識別情報は、履歴を管理するた
めに用いられる。
【0042】これによって、ファイルの内容は復号鍵を
持っている正規のクライアント装置からのみ読み取れ、
ファイルの内容をファイル管理サーバ装置からは読み取
ることのできないようにした秘匿性の高いファイル編集
システムを提供することができる。
【0043】また、クライアント装置は、ファイル管理
サーバ装置に対して所望のバージョンのファイルをアク
セスし、該ファイルを編集した後、この編集の内容をフ
ァイル管理サーバ装置に送り、ファイル管理サーバ装置
は、前記クライアント装置から渡された編集の内容を示
すデータを、前記クライアント装置がアクセスして得た
バージョンがいずれであるかに従い、前記ファイル管理
サーバ装置内での最新のバージョンに対する編集内容に
変換する処理(マージ処理)を行う。
【0044】従って、ファイル管理サーバ装置は、常に
各クライアント装置による編集終了時における最新バー
ジョンのファイルの内容に対する更新を行うので、ロッ
クを掛けずに複数のクライアント装置による非同期編集
を行うことが可能となる。
【0045】また、時間的に古いバージョンを編集し、
最新バージョンとする使い方が可能となる。すなわち、
非同期編集可能な共有ファイルにおいて、編集対象を現
行版に限定しない使い方が可能となる。
【0046】また、ファイルのデータ構造として、単純
に一つ前(あるいは後)のバージョンとの差分を残して
いくRCSのような構造ではなく、変形SCCSで利用
されているようなファイルの先頭から順番に挿入された
データが挿入された位置にブロックとして管理され、部
分的に消去された場合にはブロックの分割を繰り返して
いく方式に変形を加えて採用すると、ファイル管理サー
バ装置が行うマージ処理に必要となる挿入/削除の位置
の決定が極めて単純化され、非同期編集が容易となる。
【0047】特に、ファイルのデータ構造として変形S
CCS方式を用い、暗号方式としてストリーム暗号のう
ちの8ビットCFBモードによる方式を用いると、ブロ
ックの分割においても再暗号化が不要になる利点があ
る。
【0048】また、本発明(請求項3,8,12〜1
6,18,24)では、ファイル管理サーバ装置に格納
管理されるファイルは、データ部分と付加情報部分から
なり、データ部分は複数のブロック・データからなり、
付加情報部分は各ブロック・データに付加されたブロッ
ク識別情報を含み、さらに、各ブロック・データはブロ
ック・データ単位で暗号化されているとともに、データ
構造の管理に必要なブロック識別情報は暗号化されてい
ない情報である。このブロック識別情報は、履歴を管理
するために用いられる。
【0049】これによって、ファイルの内容は復号鍵を
持っている正規のクライアント装置からのみ読み取れ、
ファイルの内容をファイル管理サーバ装置からは読み取
ることのできないようにした秘匿性の高いファイル編集
システムを提供することができる。
【0050】また、クライアント装置は、ファイル管理
サーバ装置に対して所望のバージョンのファイルをアク
セスし、該ファイルを編集した後、前記ファイル管理サ
ーバ装置に格納されている該ファイルの最新のバージョ
ンの内容と、この編集後の内容との差分を求め、この差
分に対応するブロック・データを作成してファイル管理
サーバ装置に送り、ファイル管理サーバ装置ではクライ
アント装置から渡された前記差分に対応するブロック・
データを用いて、格納している前記ファイルのバージョ
ンを更新する。
【0051】従って、ファイル管理サーバ装置では、常
に各クライアント装置による編集終了時における最新バ
ージョンのファイルの内容に対する更新が行われるの
で、ロックを掛けずに複数のクライアント装置による非
同期編集を行うことが可能となる。
【0052】また、時間的に古いバージョンを編集し、
最新バージョンとする使い方が可能となる。すなわち、
非同期編集可能な共有ファイルにおいて、編集対象を現
行版に限定しない使い方が可能となる。
【0053】また、非同期編集により編集結果のマージ
処理を実行する場合に、サーバからはクライアントでの
処理に必要となるデータのみを送り、クライアントで必
要な処理を実行してサーバに返す形式を実現でき、不必
要な履歴に関する部分まで通信されるなどの無駄がなく
なり、効率が著しく向上する。
【0054】また、ファイルのデータ構造として、単純
に一つ前(あるいは後)のバージョンとの差分を残して
いくRCSのような構造ではなく、変形SCCSで利用
されているようなファイルの先頭から順番に挿入された
データが挿入された位置にブロックとして管理され、部
分的に消去された場合にはブロックの分割を繰り返して
いく方式に変形を加えて採用すると、マージ処理に必要
となる挿入/削除の位置の決定が極めて単純化され、非
同期編集が容易となる。
【0055】さらに、先に説明したマージ処理に適した
変形SCCSのようなデータ構造を採用した場合のデー
タ内容の暗号化方式として、ビット単位(あるいはバイ
ト単位)のストリーム暗号を利用することができる。こ
のストリーム暗号は平文の特定ビット(あるいはバイ
ト)が暗号文の特定ビット(あるいはバイト)に対応す
る性質がある。このため、先のような暗号化されたブロ
ックの分割が繰り返される場合に、分割されるポイント
より後ろを切りとり、その部分だけ暗号化しなおせばよ
く、再暗号化のオーバヘッドが軽減される。さらに、サ
ーバ側で分割ポイントより前の部分が変更されていない
ことを確認することもできる。
【0056】また、本発明(請求項4,9〜11,19
〜21,25)では、クライアント装置は、ファイル管
理サーバ装置に対して所望のバージョンのファイルをア
クセスし、該ファイルを編集した後、この編集の内容を
ファイル管理サーバ装置に送り、ファイル管理サーバ装
置は、前記クライアント装置から渡された編集の内容を
示すデータを、前記クライアント装置がアクセスして得
たバージョンがいずれであるかに従い、前記ファイル管
理サーバ装置内での最新のバージョンに対する編集内容
に変換する処理(マージ処理)を行う。
【0057】従って、ファイル管理サーバ装置は、常に
各クライアント装置による編集終了時における最新バー
ジョンのファイルの内容に対する更新を行なうので、ロ
ックを掛けずに複数のクライアント装置による非同期編
集を行なうことが可能となる。
【0058】また、本発明(請求項5及び6)では、フ
ァイル管理サーバ装置に格納管理されるファイルは、デ
ータ部分と付加情報部分からなり、データ部分は複数の
ブロック・データからなり、付加情報部分は各ブロック
・データに付加されたブロック識別情報を含み、さら
に、各ブロック・データはブロック・データ単位で暗号
化されているとともに、データ構造の管理に必要なブロ
ック識別情報は暗号化されていない情報である。
【0059】従って、ファイル管理サーバ装置にはファ
イルの内容が秘匿されているとともに、ブロック識別情
報は暗号化されていないので、ファイル管理サーバ装置
ではデータ構造の管理を実行することができる。
【0060】また、クライアント装置は、ファイル管理
サーバ装置に対して所望のファイルをアクセスし保有し
ている復号鍵を用いてブロック単位で復号化する。そし
て、編集手段を用いてこのファイルを編集し、この編集
の内容を示すデータをブロック・データごとに所定の暗
号鍵を用いて暗号化する。一方、ファイル管理サーバ装
置は、クライアント装置から渡されたブロック・データ
とブロック識別情報とに基づいて、該ファイルの履歴管
理を行う。
【0061】このように、ファイルの履歴管理とファイ
ル管理サーバ装置に対するデータの秘匿性を同時に実現
できる。
【0062】また、クライアント装置からファイル管理
サーバ装置には、ファイルのうちの必要なデータ・ブロ
ックだけを通信すれば良いので、通信量の削減を図るこ
とができる。
【0063】また、請求項8のように構成した場合、ブ
ロックの分割暗号化に際し、ブロックの先頭から分割ポ
イントまでの部分は暗号化されたままで再利用でき、分
割ポイント以降のみを再暗号化する。なお、全く再暗号
化を必要としない方法もある。バージョン管理法とし
て、SCCSを変形した方式を用いた場合、ブロックの
分割が繰り返されるが、このような場合に有利である。
【0064】また、本発明(請求項9)では、ファイル
管理サーバ装置に格納されるファイルは、データ部分と
付加情報部分からなり、データ部分は複数のブロック・
データからなり、付加情報部分は各ブロック・データに
付加されたブロック識別情報を含み、さらに、各ブロッ
ク・データはブロック・データ単位で暗号化されている
とともに、データ構造の管理に必要なブロック識別情報
は暗号化されていない情報である。そして、クライアン
ト装置は、ファイル管理サーバ装置からファイルを得る
ことができ、保有している復号鍵を用いて該ブロック・
データを復号化し、得られた復号化データをブロックと
して新たなブロック・データに再構成し、暗号鍵を用い
て新たなブロック・データごとに暗号化し、ファイル管
理サーバ装置に出力することができる。
【0065】これにより、クライアント装置により、履
歴情報の消去を行ったり、ファイルのブロック・データ
数が多くなった時などにブロックを再構成し、ブロック
識別情報によるオーバヘッドを削減することができる。
また、これを暗号鍵/復号鍵を有するクライアント装置
が行うことにより、サーバに対するファイルの内容の秘
匿性は守られる。
【0066】また、本発明(請求項10)では、ファイ
ル管理サーバ装置に格納されるファイルは、データ部分
と付加情報部分からなり、データ部分は複数のブロック
・データからなり、付加情報部分は各ブロック・データ
に付加されたブロック識別情報を含む。そして、クライ
アント装置は、あるバージョンのファイルを保存する手
段を有し、ファイル管理サーバ装置から、現在クライア
ント装置が保有しているバージョンのファイルと、所望
のバージョンのファイルの差分情報を受け取り、クライ
アントが保有している当該ファイルのデータとファイル
管理サーバ装置からの差分情報により、所望のバージョ
ンのファイルを構築し編集することができる。
【0067】従って、クライアント装置は、ファイル全
体ではなく、現在保有するバージョンと所望するバージ
ョンとの差分情報のみをファイル管理サーバ装置から取
得すればよく、通信量の削減を図ることができるととも
に、ブロック・データが暗号化されている場合はクライ
アント装置での復号化処理量を削減できる利点がある。
【0068】また、本発明(請求項11)では、オペレ
ーティング・システムによって提供されるシステムコー
ルテーブル中のアドレス・ポインタの値を書き換えるだ
けで、既存のアプリケーションソフトウェア等のプログ
ラム自体は全く変更せずに、アクセス要求者として利用
して非同期編集を行うことが可能になる。
【0069】また、請求項13のように構成した場合、
請求項2又は3のファイルのバージョン管理において、
履歴の完全性をファイル管理サーバ装置側だけで保証で
きる。
【0070】また、請求項14のように構成した場合、
請求項2又は3のファイルのバージョン管理において、
現行バージョンのファイルの取り出しおよび古い履歴の
消去が容易となる。
【0071】また、請求項15,16のように構成した
場合、請求項2又は3のファイルのバージョン管理にお
いて、古い履歴の消去が容易となる。
【0072】また、本発明(請求項19)では、ファイ
ル管理サーバ装置内に、その管理する各々のファイルの
各々のバージョン毎に対応付けて、当該ファイルの当該
バージョンを編集中であるクライアント装置の数を計数
する手段を設けた。これにより、ファイル管理サーバ装
置は、各々のファイルの各々のバージョンについて、そ
れを編集途中であるクライアント装置が存在するかどう
かを判断することができる。すなわち、指定されたファ
イルの指定されたバージョンに対応する計数値が0であ
るならば、それを編集途中であるクライアントは存在せ
ず、また、計数値が0でないならば、それを編集途中で
あるクライアントが存在すると判断できる。
【0073】そして、ファイル管理サーバ装置は、ファ
イルのバージョンを消去する要求が発行された際、対応
する計数値が0でない場合には、0に等しくなるまで消
去の実行を遅延させることができる。
【0074】これにより、ファイル管理サーバ装置は、
消去の対象となったファイルのバージョンを編集途中の
クライアントが存在する間は、該ファイルの該バージョ
ンを消去することがなくなるので、マージ処理の実行に
支障をきたすおそれがなくなる。
【0075】また、本発明(請求項20,21)では、
クライアント装置は、ファイル管理サーバ装置に対して
所望のバージョンのファイルをアクセスし、該ファイル
を編集した後、この編集の内容をファイル管理サーバ装
置に送り、ファイル管理サーバ装置は、前記クライアン
ト装置から渡された編集の内容を示すデータを、前記ク
ライアント装置がアクセスして得たバージョンがいずれ
であるかに従い、前記ファイル管理サーバ装置内での最
新のバージョンに対する編集内容に変換し、他のクライ
アントによって既に行われている編集内容と競合するか
どうかの検出を行い、前記クライアント装置に競合検出
の結果を通知する。そして、この検出の結果にかかわら
ず、ファイルの更新(マージ処理)を行う。
【0076】従って、各クライアント装置による編集結
果は、ファイル管理サーバ装置における最新バージョン
のファイルに対する更新に変換され、他のクライアント
による編集と競合するか否かによらず、ファイル管理サ
ーバ装置に最新バージョンとして更新されるため、ロッ
クを掛けずに複数のクライアント装置による非同期編集
を行うことが可能となる。
【0077】また、ファイル更新を行ったクライアント
装置は、ファイル管理サーバ装置により、編集内容の競
合検出の結果を通知されるので、その結果に基づいて、
ファイルを編集し直すことができる。その際、ファイル
管理サーバ装置ではファイルは履歴管理されているの
で、過去のバージョンを取り出すなどして柔軟に編集を
行うことができる。
【0078】また、請求項21のように構成した場合、
ファイル管理サーバ装置は、他のクライアントによる編
集との競合検出の結果に基づいて、ファイルの更新を行
うかどうかを判断することができるので、ファイル管理
サーバ装置の最新バージョンのファイルにおいて意味的
矛盾が起こりにくい、あるいは起こらないようにするこ
とができる。
【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の11
22,図24の8122)からなる。この暗号化/復号
化処理部と鍵記憶部の働きについては後述する。
【0083】一方、サーバ110は、ファイル管理を行
う計算機のプロセスでも良いし、ファイル管理機能を有
する独立した装置でも良い。
【0084】通信路111は、公衆網、LANなどのイ
ーサネット、あるいは計算機内のソケットによる通信な
ど、電子的にメッセージを交換できる媒体であれば何を
用いても良い。
【0085】サーバ110は、複数のファイル113を
保管している。このファイル113は、ファイルの内容
であるデータだけでなく、後で説明する履歴管理の情報
やアクセスが許されたユーザ名のリストや暗号化・復号
化に利用される情報などを含む。これらのファイル11
3は、それぞれ正規のクライアント101だけが復号で
きる形式で暗号化されている。
【0086】例えば慣用暗号(暗号化の鍵と復号化の鍵
が同一の暗号方式)を利用する場合には、正規のクライ
アント101は同一の鍵を所持しており、ファイル11
3はその鍵を利用して暗号化・復号化されている。
【0087】ファイル113は、そのファイル名自体は
同一に保たれても、各アクセス時点で書き込みや消去な
どが繰り返され、経時的にその内容が変化していく性質
のものである。そこで、いくつかの特定の時点でのファ
イルの内容を保存しておき、後に保存を行った任意の時
点における状態を再現したいなどの要求が生じる場合が
ある。特に、プログラム開発を行っている場合などでは
上記要求は一般的である。このような履歴管理(バージ
ョン管理)を実現する最も原始的な方法は、ある時点で
のファイルの内容をまるごと保存しておくものである。
一般的には、複数のバージョン間での違い(差分)はわ
ずかなことが多いため、このような管理法はサイズの面
で無駄があり、SCCS(Source Code C
ontrol System)やRCS(Revisi
on Control System)といった差分の
情報だけを保存していく方法が通常用いられている。
【0088】以下、各履歴管理法でのデータ構造の概要
を説明する。
【0089】まず、RCSの原型と考えられる方式を説
明する。ここで説明する方式は、差分積み上げ方式と呼
ぶこととする。図2に、この差分積み上げ方式でのファ
イルのデータ構造を示す。この方式では、最初に作成さ
れたバージョンのファイルを全文そのままの形で保存し
ておき、これをバージョンV.1(ブロック201)と
する。次に、このバージョンV.1の一部を消去した
り、何か挿入したりして新たなバージョンV.2が生成
された場合、これを保存する際にV.2とV.1との間
の差分を求め、その差分V.2−V.1(ブロック20
2)だけを保存する。ここで、バージョン間の差分は、
例えば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はクライアント10
1に、データ記憶部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】この一連の手続きは履歴管理情報生成部5
03の機能も含んでおり、履歴管理部510を更新する
ところまでが達成される。
【0125】ここで見たように履歴管理法として変形S
CCSのような方式を利用すると、変更位置の検索が単
純に先頭からのカウントだけで達成されるため、極めて
処理が単純化される。
【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方式の
ような履歴管理法を利用する場合に、ブロック「30
1,302,303,304を独立に暗号化し、サーバ
には「ブロック301が差分V.1−V.2を暗号化し
たものである」「ブロック302が差分V.2−V.3
を暗号化したものである」といった対応関係を認識可能
な形態にすることである。
【0132】さらに他の具体例としては、図4の変形S
CCS方式のような履歴管理法を利用する場合に、ブロ
ック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 Encryp
tion Standard)をOFB(Output
FeedBack)モードあるいはCFB(Ciph
er FeedBack)モードで利用する方式があ
る。OFBモードによる暗号化手順は図8に、CFBモ
ードによる暗号化手順は図9に示した。
【0139】まず、図8を参照しながらOFBモードの
動作原理を説明する。送信側と受信側はブロック暗号の
鍵Kとシフトレジスタ602,612の初期値であるI
V(601,611)を共有しているものとする。送信
側は暗号化に当たりシフトレジスタ602の内容を暗号
化し、得られた結果604の内Lビットをシフトレジス
タ602に帰還させるとともに、平文のLビットとビッ
ト単位で排他的論理和演算(605)を行う。この処理
を繰り返すことにより、平文をLビットずつ暗号化す
る。但し、1回の処理で暗号化される量はLビットであ
るが、実はビット単位で暗号化されているものである。
【0140】また、受信側の復号処理も送信側とまった
く同様に行われるが、その詳細は自明であるので説明を
省略する。
【0141】次に、図9を参照しながらCFBモードの
動作原理を説明する。OFBモードの場合と前提は同じ
で、ハードウェアの構成もほとんど同様であるが、違い
は暗号化時にシフトレジスタ622に帰還させるデータ
がブロック暗号器の出力ではなく、暗号文を用いる点に
ある。このために、復号側の処理もシフトレジスタ63
2への入力に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として保存する(ステップS1
3)。ステップ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ビットずつ
復号化すれは良い。また、ブロックの分割時の初期値I
Vの保存は、前のブロックの最後の半端ビット(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】なお、注意すべき点として、暗号化SCC
S方式の場合、古い履歴を消去してもブロックの融合を
行う訳ではなく、不要なブロックの切り離し処理を行う
だけであることがあげられる。ブロックの融合まで行う
場合にはクライアントの関与が必要である。また、暗号
化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を介して通信を行うための通信部13
0、サーバ90から得たファイルを格納するためのメモ
リ121、共有ファイル編集部122、暗号器112を
備えている。
【0167】図14のように共有ファイル編集部122
は、図5で説明した編集部500、編集手続き生成部5
01、編集手続き変換部502、履歴管理情報生成部5
03を備えている。なお、サーバ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での5
10から502への矢印)の各要求が様々なタイミング
で発生する。
【0170】以下これらの要求を処理する一般的な手順
を説明する。前述したように、1つの履歴管理情報に対
応する編集手続きは複数に挿入と削除の組み合わせから
なるが、これらを一纏めとして取り扱うことが望まし
い。すなわち、あるクライアント91があるバージョン
のファイルに対し、複数箇所の変更を行った場合に、そ
れらの変更がすべてサーバ90側のデータに反映された
時点で新規バージョンとする。履歴管理情報の書き込み
要求は1つ1つが待ち行列(キュー)に入れられ、先入
れ先出し方式(First−in−First−ou
t)で順次履歴管理部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】ここで、本実施例では、クライアント21
1は複数であるために、(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側で
認識可能な編集手続きデータの他の部分と履歴管理部5
10から与えられる履歴データとに基づいて編集手続き
データの変換を行える。
【0199】この図19の構成を変形して、編集手続き
変換部502をクライアント211側に、編集手続き生
成部501と暗号器212の間に設けるようにして、図
18と図19の折衷形とすることも可能である。この場
合、変換後の編集手続きデータのみがクライアント21
1からサーバ210へ送られ、この変換後の編集手続き
データに基づいて得られる新しいブロックデータを同定
するブロック識別情報はサーバ210側の履歴管理情報
生成部503か履歴管理部510により付加される。こ
こでは、変換後の挿入データ内容のみが暗号器212で
暗号化され、変換後の編集手続きデータの他の部分は暗
号化されないので、サーバ210側の履歴管理情報生成
部503はこれらの暗号化されておらず従ってサーバ2
10側で認識可能な変換後の編集手続きデータの他の部
分に基づいて履歴管理情報の生成を行える。
【0200】さて、上述した2つの発明は独立実施可能
である。以下で、一方の発明だけを適用した実施例を夫
々説明する。
【0201】最初に、上述した非同期編集機能(第2の
発明)をクライアント・サーバ型システムに実装した本
発明の第3実施例について説明する。
【0202】まず、ファイルの構造、履歴管理方式、非
同期編集システムについては前述した第1実施例と同様
のものを用いることを前提とする。これらについては、
すでに詳細に説明したので、ここでは、主に本実施例に
特有の構成・動作について説明する。
【0203】図20は、本実施例の共有ファイル編集シ
ステムの構成を示す。図20のように、この共有ファイ
ル編集システムは、複数のクライアント701と、サー
バ710からなる。
【0204】サーバ710は、各クライアント701と
通信路111を介して通信を行うための通信部731、
マージ処理部740、複数のファイルを格納するための
データ記憶部711を備えている。
【0205】また、各クライアント701は、サーバ7
10と通信路111を介して通信を行うための通信部7
30、サーバ710から得たファイルを格納するための
メモリ721、共有ファイル編集部722を備えてい
る。
【0206】図21のように、クライアント701の共
有ファイル編集部722は、図5で説明した編集部50
0、編集手続き生成部501を備えている。
【0207】また、図22のように、サーバ710のマ
ージ処理部740は、図5で説明した編集手続き変換部
502、履歴管理情報生成部503、共有ファイル用履
歴管理部510を備えている。なお、サーバ710のデ
ータ記憶部511は、図5におけるデータ記憶部511
に相当する。
【0208】ここで、本実施例では、クライアント70
1は複数であるために、(a)特定バージョンのファイ
ルデータの読み出し(図5での510から500への矢
印)、(b)編集結果を変換した編集手続きデータの書
き込み(図5での501から502への矢印)、の各要
求が様々なタイミングで発生する。
【0209】以下、これらの要求を処理する手順の一例
を説明する。
【0210】この場合、クライアント701はサーバ7
10から特定のバージョンのファイルデータを要求し、
ファイルをメモリ721に格納した後、編集部500に
て編集を行い、編集手続き生成部501にて編集手続き
データに変換し、それをサーバ710に送る。
【0211】サーバ710側では、1つ1つの編集手続
きデータをキューに入れ、マージ処理部740が順次取
り出して履歴に変換して保存していく。先の暗号機能付
きの装置の実施例の場合との違いは、サーバ710単独
で最新版に対する編集手続きデータに変換可能であるこ
とにある。すなわち、クライアント701の編集手続き
データと履歴データから編集手続きの変換を実施した後
に履歴として保存する。従って、図5での510→50
2→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は、サーバ81
0と通信路111を介して通信を行うための通信部83
0、サーバ810から得たファイル113を格納するた
めのメモリ821、ファイル編集部822、暗号器81
2を備えている。暗号器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の非同期編集システムの編集手続き変換部50
2を削除して編集手続き生成部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に登録
してある復号鍵を用いて、暗号化/復号化処理部812
1にて復号化しておく。ファイルの編集が終了したら、
編集手続き生成部501にて編集手続きデータを生成す
る。そして、その編集手続きデータを履歴管理情報生成
部503にて、利用している履歴管理法に適した形式の
履歴情報に変換する。ここで、この履歴情報を鍵記憶部
8122に登録してある暗号鍵を用いて、暗号化/復号
化処理部8121にて暗号化した後、サーバ810に送
り、データ管理部840にてデータ記憶部811のファ
イルが更新される。
【0233】このように、ファイルのバージョン管理と
ファイル管理装置に対するデータの秘匿性を同時に実現
できる。
【0234】また、ファイルの構造として図2の差分積
み上げ方式による構造を採用した場合、履歴の完全性を
ファイル管理装置側だけで保証できる。
【0235】また、ファイルの構造として図3のRCS
方式による構造を採用した場合、ファイルのバージョン
管理において、現行バージョンのファイルの取り出しお
よび古い履歴の消去が容易となる。
【0236】また、ファイルの構造として図4のSCC
S方式による構造を採用した場合、ファイルのバージョ
ン管理において、古い履歴の消去が容易となる。
【0237】また、暗号として、前述したストリーム暗
号を用いる場合、ブロックの分割時の暗号化に際し、ブ
ロックの先頭から分割ポイントまでの部分は暗号化され
たままで再利用でき、分割ポイント以降のみを再暗号化
する。なお、全く再暗号化を必要としない方法もある。
これは、SCCSに代表されるブロックの分割が繰り返
される場合に有利である。
【0238】次に、図13、図16、あるいは図20を
用いて説明した非同期編集機能を有する共有ファイル編
集システムにおいて、あるファイルのあるバージョンの
消去要求が発行されても、当該ファイルの当該バージョ
ンを編集中であるクライアントが存在しなくなるまで消
去実行を遅延させる機能を設けた本発明の第5実施例の
共有ファイル編集システムについて説明する。
【0239】履歴管理を行うシステムにおいては、履歴
中の一部のバージョンを消去する機能を提供することが
考えられる。バージョンの消去は、例えばクライアント
が消去コマンドを実行するとこによって行われる場合
や、作成から一定時間以上経過したバージョンをシステ
ムが自動的に消去する場合などが考えられる。
【0240】本発明に係る非同期編集機能を有する共有
ファイル編集システムにおいては、バージョンを消去す
る場合には、消去対象となっているバージョンを編集し
ているクライアント装置が存在していてはならない。な
ぜならば、このシステムでは、ファイル管理サーバはマ
ージ処理(クライアントがアクセスしたバージョンがい
ずれであるかに従い、ファイル管理サーバ内での最新の
バージョンに変換する処理)を行うからである。もし、
いずれかのクライアントが当該バージョンを編集途中
に、そのバージョンを消去してしまったとすると、マー
ジ処理が不可能になってしまう。
【0241】本実施例では上記機能を実現するために、
ファイル管理サーバ内に、その管理する各々のファイル
の各々のバージョン毎に対応付けて、当該ファイルの当
該バージョンを編集中であるクライアントの数を計数す
る手段を設ける。これによりファイル管理サーバは、各
々のファイルの各々のバージョンについて、それを編集
途中であるクライアントが存在するかどうかを判断する
ことができる。すなわち、指定されたファイルの指定さ
れたバージョンに対応する計数値が0であるならば、そ
れを編集途中であるクライアントは存在せず、また、計
数値が0でないならば、それを編集途中であるクライア
ントが存在すると判断できる。
【0242】そして、本実施例のファイル管理サーバ
は、ファイルのバージョンを消去する要求が発行された
際、該計数値が0でない場合には、0に等しくなるまで
消去の実行を遅延する手段を有する。これによりファイ
ル管理サーバは、消去の対象となったファイルのバージ
ョンを編集途中のクライアントが存在する間は、該ファ
イルの該バージョンを消去することがなくなるので、マ
ージ処理の実行に支障をきたすおそれがなくなる。
【0243】以下、前述の図13の実施例を基にして、
上記機能を設けた共有ファイル編集システムについて説
明する。
【0244】図25は、図13の実施例に、上記のよう
なクライアント数を計数する手段を設けた実施例であ
る。図中のアクセス要求者91、通信路111は、図1
3の実施例と同様の構成である。ファイル管理サーバ9
5は、クライアント計数部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のバージョンの計数値、また、F1
1,F12,F13は、ファイルID1のファイルのそ
れぞれバージョン番号1,2,3のバージョンの消去遅
延フラグの値を表している。なお、計数値の初期値は
0、消去遅延フラグの初期値はfalse(を示す値;
例えば0)である。
【0249】本実施例においては、クライアント91
は、ファイルの編集を開始する直前に、ファイル管理サ
ーバ95に対して、編集開始宣言を行う。この編集開始
宣言は、例えば通信路111を通してクライアント91
からファイル管理サーバ95に対して、編集開始宣言で
あることを示すコマンドワードに続けて編集しようとす
るファイルの識別子および編集しようとするバージョン
のバージョン番号を送信することにより行われる。
【0250】ファイル管理サーバ95によって受け取ら
れた通信データは、分岐部901に入力される。
【0251】分岐部901では、例えば通信データの初
めの1ワードを読み、それが編集開始宣言を示すコマン
ドワードであることを判定すると、通信データ中の続く
ファイルIDおよびバージョン番号を編集開始処理部9
02に入力する。
【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から発行する(ステップS2
3)。また、計数値が0でない場合には、計数記憶部9
05にアクセスして、指定されたファイルのIDの指定
されたバージョン番号に対応する消去遅延フラグをtr
ue(を示す値;例えば1)にする(ステップS2
4)。
【0258】次に、編集終了時の処理について説明す
る。本実施例においては、クライアント91は、ファイ
ルの編集を終了した直後に、ファイル管理サーバ95に
対して、編集終了宣言を行う。この編集終了宣言は、通
信路111を通してクライアント91からファイル管理
サーバ95に対して、編集終了宣言であることを示すコ
マンドワードに続けて編集を終了しようとするファイル
の識別子および編集を終了しようとするバージョンのバ
ージョン番号を送信することにより行われる。
【0259】ファイル管理サーバ95によって受け取ら
れた通信データは、分岐部901に入力される。分岐部
901では、通信データの初めの1ワードを読み、それ
が編集終了宣言を示すコマンドワードであることを判定
すると、通信データ中の続くファイルIDおよびバージ
ョン番号を編集終了処理部904に入力する。なお、必
要に応じて、上記通信データは、そのままあるいはファ
イルの識別子およびバージョン番号などが加工しなおさ
れて、分岐部901から共有ファイル用履歴管理部51
0に与えられる。
【0260】編集終了処理部904では、図29のフロ
ーチャートに示す手順により処理を行う。
【0261】編集終了処理部904の処理手順ではま
ず、計数記憶部905にアクセスして、指定されたファ
イルIDのファイルの指定されたバージョン番号に対応
する計数値Cと消去遅延フラグFの値を得る(ステップ
S31)。次に、計数値Cの値を1減らす(ステップS
32)。次に、計数値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、変形S
CCSのいずれの管理方法をとっているかによって異な
るものであり、以下ではそれら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)])において消去されたものとする(ステップS
89)。
【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と異なる。ブロック・データ再構成部9
10はすべてのアクセス要求者に備わっていなくてもよ
い。あるファイルのあるバージョンの消去命令はクライ
アント計数部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)]を新たなブロック・
データとして暗号器で暗号化する(ステップS11
1)。 ・この暗号化ブロックデータとバージョン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の消去要求をサーバへ送る(ステップS
107)。
【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)]ブロック・データを挿入(ステップS1
25)。
【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)]を新たなブロック・
データとして暗号器で暗号化する(ステップS14
1)。 ・この暗号化ブロックデータとバージョンrの消去要求
をサーバへ送る(ステップS142)。
【0297】2.消去対象が履歴の最初のバージョンで
ある場合(ステップS131にてr=fの場合) ・バージョンrの消去要求をサーバへ送る(ステップS
132)。
【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)]ブロック・データを挿入(ステップS1
55)。 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は、前回アクセスしたフ
ァイルをそのバージョン情報とともにファイル記憶部9
20に保存している。サーバ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)(ステップS
163)
【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)(ステップS
166)
【0318】差分情報構築部930は上記手順にて差分
ブロックを選択後、そのブロック情報をクライアント9
3が現在保有しているバージョンに対する差分情報に変
換してクライアント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では編集競合検出部94
0の結果は受け取らず、編集手続き変換部502にて変
換されたクライアント211から送られたデータを最新
バージョンとして保存する。
【0324】上記のサーバ220におけるデータ更新機
能は、履歴管理部510の管理方法とブロック・データ
が暗号化されているかどうかにより、実現可能な場合と
実現不可能な場合がある。ブロック・データが暗号化さ
れていない場合は、差分積み上げ、RCS、変形SCC
Sのいずれの管理方法においても実現可能である。ブロ
ック・データが暗号化されている時は、変形SCCS方
式のみで実現可能となる。
【0325】次に同様の構成において編集競合検出部9
40の競合検出結果を履歴管理部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は、通信部1
31、アクセス情報記憶部971、共有ファイル履歴管
理部972、データ記憶部973を有する。アクセス要
求者950は、アクセス要求部951、システム・コー
ル・テーブル955、共有ファイルアクセス処理部96
0、通信部130を有する。ファイル管理サーバ970
とアクセス要求者950は通信部130,131を通し
て、通信路111により通信可能である。
【0330】本実施例では、アクセス要求部951は既
存アプリケーション・プログラムであると想定し、アク
セス要求部951により発せられるアクセス要求はオペ
レーティング・システムによって提供されるシステム・
コールによって行われるとする。
【0331】本実施例おいて、アクセス要求部951
は、システム・コール・テーブル955の持つシステム
・コールに対応する関数を参照した上で、open/c
lose/read/writeの関数を実行する。オ
ペレーティング・システムにおけるシステム・コールの
関数を参照するシステム・コール・テーブル955のデ
ータは、オペレーティング・システムによって提供され
るopen関数/close関数/read関数/wr
ite関数への接続データ(アドレス・ポインタ)か
ら、共有ファイルアクセス処理部960によって提供さ
れる共有open関数/共有close関数/共有re
ad関数/共有write関数961への接続データ
(アドレス・ポインタ)に書き換えられている。この共
有open関数/共有close関数/共有read関
数/共有write関数961は、通信部130を通し
てファイル管理サーバ970に送られる。
【0332】従って、既存のアプリケーション・プログ
ラムからなるアクセス要求部951がopen関数/c
lose関数/read関数/write関数を実行し
た結果、実際は共有open関数/共有close関数
/共有read関数/共有write関数961が実行
されることになる。
【0333】ここで、共有open関数/共有clos
e関数/共有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は、このファイルへのope
n要求のモードを示したもので、ここに書かれている
“r”は読みだし専用であることを意味している。ま
た、ここに“w”と書かれていれば、書き込み専用また
は読み書き両用のモードであることを意味している。
【0338】オープン時刻983は、このファイルへの
open要求が発せられた時刻を示している。この例の
ID1で表されるファイルは、時刻t1にオープンされ
たことを意味している。また、クローズ時刻984は、
このファイルへのclose要求が発せられた時刻を示
している。この例では、ID1で表されるファイルはク
ローズ時刻984が書かれていないので、現在オープン
中であることを、ID2で表されるファイルは、時刻t
5にクローズされたことを意味している。
【0339】ここで、上記の時刻は、各事象の発生した
時刻の前後関係を示すためのものであり、例えば、計算
機の持つ内部的な時計でもよいし、ファイル管理にバー
ジョン番号をつけてそれを時刻として用いてもよい。ま
た、この時刻は共有ファイル用履歴管理部972だけで
用いるものであるから、必ずしも他の部分(例えばアク
セス要求者950)から直接にこの時刻が参照できなく
てもよい。
【0340】バージョン985は、このファイルへのo
pen要求が発せられたファイルのバージョンを示す。
通常、システム・コールのopenは最新バージョンに
対する要求であるので、open要求が発せられた時点
での最新のバージョンが入ることが多い。
【0341】カレント986は、現在アクセスしている
アクセス要求に関して、現在アクセスしている位置を示
す値(シーク・ポインタ)である。このシーク・ポイン
タは、次に来る“read”の共有ファイル・アクセス
要求に対して、読み出す位置(ファイル内の相対位置)
を示すものであり、読みだし専用の“open”の場
合、デフォルトとして初期値が0となっている。
【0342】共有ファイル用履歴管理部972は、アク
セス要求者950からの非同期アクセスを管理し、アク
セス情報記憶部971の内容に従い、データ記憶部97
3から所望のデータの読み書きを行う。共有ファイル用
履歴管理部972の動作は前述の実施例と同様であるの
で、ここでは詳細に説明しない。
【0343】このように本実施例によれば、オペレーテ
ィング・システムによって提供されるシステム・コール
・テーブル955中のアドレス・ポインタの値を書き換
えるだけで、既存のアプリケーション・ソフトウェア等
のプログラム自体は全く変更せずに、アクセス要求者と
して利用して非同期編集を行うこが可能になる。
【0344】次に、上記第10実施例と同様な目的をも
った本発明の第11実施例を図44に示す。図44にお
いては、図42のファイル管理サーバ970が保有して
いたアクセス情報記憶部971をアクセス要求者990
が有する構成をとっている。ファイル管理サーバ90は
図13で示したファイル管理サーバと同様の構成であ
り、共有ファイル用履歴管理部510、データ記憶部5
11、通信部131からなる。
【0345】本実施例においては、アクセス要求者の9
90は自らが保有するアクセス要求部991からの共有
ファイルアクセス情報をアクセス情報記憶部995に記
憶する。アクセス情報記憶部995の内容は、例えば図
43と同じものを用いることができる。
【0346】共有ファイルアクセス処理部993は、ア
クセス情報記憶部995の情報を読み込み、共有ope
n関数/共有close関数/共有read関数/共有
write関数994の引数として、それぞれの関数に
必要な情報を加えてファイル管理サーバ90に要求を送
る。
【0347】例えば、アクセス要求部991よりファイ
ル識別子ID1のファイルから10バイト読み込みたい
というreadシステム・コールが発せられた時、共有
ファイルアクセス処理部993は、アクセス情報記憶部
995から、ファイル識別子ID1に関するバージョン
情報985、カレント位置情報986を読み込み、ファ
イル識別ID1と読み込むバイト数とともに、共有op
en関数の引数に付加してファイル管理サーバ90に送
る。
【0348】アクセス要求者990からファイル管理サ
ーバ90に送られる要求には、通常のオペレーティング
・システムのシステム・コールで付与される情報以外に
アクセス要求者の現在のアクセス情報も含まれているの
で、その情報をもとに共有ファイル用履歴管理部510
は、データ記憶部511から所望のデータを取り出すこ
とができる。
【0349】このように本実施例においても、オペレー
ティング・システムによって提供されるシステム・コー
ル・テーブル992中のアドレス・ポインタの値を書き
換えるだけで、既存のアプリケーションソフトウェア等
のプログラム自体は全く変更せずに、アクセス要求者と
して利用して非同期編集を行うことが可能になる。
【0350】尚、上記第10,第11実施例における既
存のアプリケーション・プログラムを共有ファイルに対
して使用可能とする特徴で、共有ファイルに対するアク
セス関数を暗号化ファイルに対するアクセス関数に変え
ることで、既存のアプリケーション・プログラムを暗号
化ファイルに対して使用可能とする特徴として、上述し
た図23の様にファイル内容秘匿機能のみを有するファ
イル編集システムに組み込むことも可能である。
【0351】また、上述の各実施例においてクライアン
トとサーバの通信部の間の通信路を介した通信はクライ
アント・コンピュータとサーバ・コンピュータの間のネ
ットワーク通信の形でも良いし、クライアント・プログ
ラムとサーバ・プログラムの間のデータ転送の形でも良
い。
【0352】尚、本発明は上述した各実施例に限定され
るものではなく、その要旨を逸脱しない範囲で、種々変
更して実施することができる。
【0353】
【発明の効果】以上説明したように、本発明(請求項
1,5〜11,22)によれば、ファイルをブロック単
位で暗号化するとともに、各ブロックに暗号化していな
いブロック識別子を付加したので、復号鍵を持つ正規の
クライアント装置のみがファイルの内容を読み取ること
ができるとともに、ファイル管理サーバ装置にはファイ
ルの内容が秘匿されているが、データ構造は管理させる
ことができる秘匿性の高いファイル編集システムを提供
することができる。
【0354】本発明(請求項2,8,12〜18,2
3)によれば、ファイルをブロック単位で暗号化すると
ともに、各ブロックに暗号化していないブロック識別子
を付加したので、復号鍵を持つ正規のクライアント装置
のみがファイルの内容を読み取ることかできるととも
に、ファイル管理サーバ装置にはファイルの内容が秘匿
されているが、データ構造は管理させることができる秘
匿性の高い共有ファイル編集システムを提供することが
できる。
【0355】また、ファイル管理サーバ装置は、クライ
アント装置から渡されたファイル編集の内容を示すデー
タを、該クライアント装置がアクセスして得たバージョ
ンがいずれであるかに従って、該ファイル管理サーバ装
置内での最新バージョンに対する編集内容に変換する処
理を行うので、前記ファイル管理サーバ装置側では例え
ば“どのクライアントがどのバージョンのファイルをオ
ープンしている”といったアクセス状況の情報を持つ必
要がなくロック機構不要な仕組みで非同期編集可能な共
有ファイル編集システムを構成することができる。
【0356】特に、時間的に古いバージョンを編集し、
最新バージョンとする使い方が可能となる。すなわち、
非同期編集可能な共有ファイルにおいて、編集対象を現
行版に限定しない使い方が可能となる。
【0357】本発明(請求項3,8,12〜16,1
8,24)によれば、ファイルをブロック単位で暗号化
するとともに、各ブロックに暗号化していないブロック
識別子を付加したので、復号鍵を持つ正規のクライアン
ト装置のみがファイルの内容を読み取ることができると
ともに、ファイル管理サーバ装置にはファイルの内容が
秘匿されているが、データ構造は管理させることができ
る秘匿性の高い共有ファイル編集システムを提供するこ
とができる。
【0358】一方、上記データを採用することにより、
ファイル管理サーバ装置では、常に各クライアント装置
による編集終了時における最新バージョンのファイルの
内容に対する更新が行われるようにしたので、ロックを
掛けずに複数のクライアント装置による非同期編集を行
うことが可能となる。
【0359】本発明(請求項4,9〜11,19〜2
1,25)によれば、ファイル管理サーバ装置は、クラ
イアント装置から渡されたファイル編集の内容を示すデ
ータを、該クライアント装置がアクセスして得たバージ
ョンがいずれであるかに従って、該ファイル管理サーバ
装置内での最新のバージョンに対する編集内容に変換す
る処理を行うので、前記ファイル管理サーバ装置側で例
えば“どのクライアントがどのバージョンのファイルを
オープンしている”といったアクセス状況の情報を持つ
必要がなくロック機構不要な仕組みで非同期編集可能な
共有ファイル編集システムを構成することができる。
【0360】特に、時間的に古いバージョンを編集し、
最新バージョンとする使い方が可能となる。すなわち、
非同期編集可能な共有ファイルにおいて、編集対象を現
行版に限定しない使い方が可能となる。
【0361】また、本発明(請求項5,6)によれば、
ファイルをブロック単位で暗号化するとともに、各ブロ
ックに暗号化していないブロック識別子を付加したの
で、復号鍵を持つ正規のクライアント装置のみがファイ
ルの内容を読み取ることができるとともに、ファイル管
理サーバ装置にはファイルの内容が秘匿されているが、
データ構造は管理させることができる秘匿性の高い共有
ファイル編集システムを提供することができる。
【0362】一方、上記データ構造を採用することによ
り、ファイル管理サーバ装置ではクライアント装置から
渡された編集内容を示す暗号化されたブロック・データ
とブロック識別情報とに基づいて、該ファイルの履歴管
理を行うことができる。
【0363】このように、ファイルの履歴管理とファイ
ル管理サーバ装置に対するデータの秘匿性を同時に実現
できる。
【0364】また、本発明(請求項9)によれば、クラ
イアント装置は、ファイル管理サーバ装置からファイル
を得ることができ、保有している復号鍵を用いて該ブロ
ック・データを復号化し、得られた復号化データをブロ
ック新たなブロック・データに再構成し、暗号鍵を用い
て新たなブロック・データごとに暗号化し、ファイル管
理サーバ装置に出力することができる。
【0365】また、これにより、クライアント装置によ
り、履歴情報の消去を行ったり、ファイルのブロック・
データ数が多くなった時などにブロックを再構成し、ブ
ロック識別情報によるオーバヘッドを削減することがで
きる。暗号鍵/復号鍵を有するクライアント装置が行う
ことにより、サーバに対するファイルの内容の秘匿性は
守られる。
【0366】また、本発明(請求項10)によれば、ク
ライアント装置は、あるバージョンのファイルを保存す
る手段を有し、ファイル管理サーバ装置から、現在クラ
イアント装置が保有しているバージョンのファイルと、
所望のバージョンのファイルの差分情報を受け取り、ク
ライアントが保有している当該ファイルのデータとファ
イル管理サーバ装置からの差分情報により、所望のバー
ジョンのファイルを構築し編集することができる。
【0367】従って、クライアント装置は、ファイル全
体ではなく、現在保有するバージョンと所望するバージ
ョンとの差分情報のみをファイル管理サーバ装置から取
得すればよく、通信量の削減を図ることができるととも
に、ブロック・データが暗号化されている場合はクライ
アント装置での復号化処理量を削減できる。
【0368】本発明(請求項11)によれば、オペレー
ティング・システムによって提供されるコールテーブル
中のアドレス・ポインタの値を書き換えるだけで、既存
のアプリケーションソフトウェア等のプログラム自体は
全く変更せずに、アクセス要求者として利用して非同期
編集を行うことが可能になる。
【0369】本発明(請求項19)によれば、ファイル
管理サーバ装置では、各々のファイルの各々のバージョ
ンについて、それを編集しているクライアント装置の数
を記憶し、ユーザから消去の要求があっても消去対象と
なるファイルのバージョンを編集するクライアントがな
くなるまで消去の実行を遅延させるので、いずれかのク
ライアントが編集途中のバージョンを消去することがな
くなり、マージ処理の実行に支障をきたすおそれがなく
なる。
【0370】また、本発明(請求項20,21)によれ
ば、各クライアント装置による編集結果は、ファイル管
理サーバ装置における最新バージョンのファイルに対す
る更新に変換され、他のクライアントによる編集と競合
するか否かによらず、ファイル管理サーバ装置に最新バ
ージョンとして更新されるため、ロックを掛けずに複数
のクライアント装置による非同期編集を行うことが可能
となる。
【0371】また、ファイル更新を行ったクライアント
は、ファイル管理サーバ装置より、編集内容の競合検出
の結果を通知されるので、その結果に基づいて、ファイ
ルを編集し直すことができる。その際、ファイル管理サ
ーバ装置ではファイルは履歴管理されているので、過去
のバージョンを取り出すなどして柔軟に編集を行うこと
ができる。
【0372】また、請求項21のように構成した場合、
ファイル管理サーバ装置は、他のクライアントによる編
集との競合検出の結果に基づいて、ファイルの更新を行
うかどうかを判断することができるので、ファイル管理
サーバ装置の最新バージョンのファイルにおいて意味的
矛盾が起こりにくい、あるいは起こらないようにするこ
とができる。
【図面の簡単な説明】
【図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,7
31,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 カレント
───────────────────────────────────────────────────── フロントページの続き (72)発明者 友田 一郎 神奈川県川崎市幸区小向東芝町1 株式会 社東芝研究開発センター内

Claims (25)

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

Publications (2)

Publication Number Publication Date
JPH08106412A true JPH08106412A (ja) 1996-04-23
JP3707821B2 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)

Cited By (13)

* 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 共有データの分散編集システム、分散編集方法およびプログラム
JP2009129004A (ja) * 2007-11-20 2009-06-11 Fuji Xerox Co Ltd 文書操作履歴管理システム
JP2010067055A (ja) * 2008-09-11 2010-03-25 Ri Co Ltd バックアッププログラム
JP2010102405A (ja) * 2008-10-21 2010-05-06 Shimadzu Corp クライアント・サーバ型分析システム
JP2010541037A (ja) * 2007-09-25 2010-12-24 アマデウス エス.エイ.エス データエンティティのバージョン管理のための方法及び装置
WO2013054584A1 (ja) * 2011-10-12 2013-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュリティレベルを維持するために情報を削除する方法、システム、仲介サーバ、クライアント及びコンピュータプログラム
JP2013105244A (ja) * 2011-11-11 2013-05-30 Fujitsu Frontech Ltd 文書管理プログラム、情報処理装置および文書管理方法
WO2015137760A1 (ko) * 2014-03-14 2015-09-17 주식회사 로웸 비밀 데이터 관리 방법과 장치 및 보안 인증 방법 및 시스템
KR20150107669A (ko) * 2014-03-14 2015-09-23 주식회사 로웸 비밀 데이터 관리 방법과 장치 및 보안 인증 방법 및 시스템
JP2017167274A (ja) * 2016-03-15 2017-09-21 株式会社東芝 暗号装置及び復号装置
JP6903247B1 (ja) * 2020-11-18 2021-07-14 三菱電機株式会社 監視画面作成支援装置、監視画面作成支援方法、および監視画面作成支援プログラム
JP2022506633A (ja) * 2018-11-09 2022-01-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 無線アップグレード方法および関連装置

Cited By (19)

* 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 共有データの分散編集システム、分散編集方法およびプログラム
JP2010541037A (ja) * 2007-09-25 2010-12-24 アマデウス エス.エイ.エス データエンティティのバージョン管理のための方法及び装置
JP2009129004A (ja) * 2007-11-20 2009-06-11 Fuji Xerox Co Ltd 文書操作履歴管理システム
JP2010067055A (ja) * 2008-09-11 2010-03-25 Ri Co Ltd バックアッププログラム
JP2010102405A (ja) * 2008-10-21 2010-05-06 Shimadzu Corp クライアント・サーバ型分析システム
GB2507935A (en) * 2011-10-12 2014-05-14 Ibm Method, system, mediation server, client, and computer program for deleting information in order to maintain security level
WO2013054584A1 (ja) * 2011-10-12 2013-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュリティレベルを維持するために情報を削除する方法、システム、仲介サーバ、クライアント及びコンピュータプログラム
GB2507935B (en) * 2011-10-12 2014-07-30 Ibm Method, system, mediation server, client, and computer program for deleting information in order to maintain security level
US9460295B2 (en) 2011-10-12 2016-10-04 International Business Machines Corporation Deleting information to maintain security level
US9910998B2 (en) 2011-10-12 2018-03-06 International Business Machines Corporation Deleting information to maintain security level
JP2013105244A (ja) * 2011-11-11 2013-05-30 Fujitsu Frontech Ltd 文書管理プログラム、情報処理装置および文書管理方法
WO2015137760A1 (ko) * 2014-03-14 2015-09-17 주식회사 로웸 비밀 데이터 관리 방법과 장치 및 보안 인증 방법 및 시스템
KR20150107669A (ko) * 2014-03-14 2015-09-23 주식회사 로웸 비밀 데이터 관리 방법과 장치 및 보안 인증 방법 및 시스템
JP2017167274A (ja) * 2016-03-15 2017-09-21 株式会社東芝 暗号装置及び復号装置
JP2022506633A (ja) * 2018-11-09 2022-01-17 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 無線アップグレード方法および関連装置
US11947673B2 (en) 2018-11-09 2024-04-02 Huawei Technologies Co., Ltd. Over-the-air upgrade method and related apparatus
JP6903247B1 (ja) * 2020-11-18 2021-07-14 三菱電機株式会社 監視画面作成支援装置、監視画面作成支援方法、および監視画面作成支援プログラム
WO2022107248A1 (ja) * 2020-11-18 2022-05-27 三菱電機株式会社 監視画面作成支援装置、監視画面作成支援方法、および監視画面作成支援プログラム

Also Published As

Publication number Publication date
JP3707821B2 (ja) 2005-10-19

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
US6430292B1 (en) System and method for controlling disclosure time of information
US7185205B2 (en) Crypto-pointers for secure data storage
Bellare et al. Incremental cryptography and application to virus protection
DE10084964B3 (de) Verfahren zum sicheren Speichern, Übertragen und Wiedergewinnen inhaltsadresssierbarer Informationen
EP1154348B1 (en) File management apparatus
US6915435B1 (en) Method and system for managing information retention
US7593532B2 (en) Management of the retention and/or discarding of stored data
JP4578119B2 (ja) 情報処理装置および情報処理装置におけるセキュリティ確保方法
JP2006526851A (ja) 動的、分散的および協働的な環境におけるデータオブジェクトの管理
JP3707821B2 (ja) ファイル編集システム及び共有ファイル編集システム
JPH10260903A (ja) グループ暗号方法、及びファイル暗号システム
JP3453842B2 (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
WO2000075779A2 (en) Token based data processing systems and methods
KR100346411B1 (ko) 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체
CN108763401A (zh) 一种文件的读写方法及设备
JPH11265317A (ja) 著作権保護システム
JP2000298974A (ja) メディア固有化情報を移動可能にする情報記録方法
KR100859651B1 (ko) 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체
CN113114757B (zh) 一种文件传输方法、装置和设备
JP3520812B2 (ja) データ生成方法及びデータ生成プログラムを格納した記憶媒体
CN101932995A (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