JPH08255104A - ソフトウエアおよびデータの効率的かつ安全性の高い更新 - Google Patents

ソフトウエアおよびデータの効率的かつ安全性の高い更新

Info

Publication number
JPH08255104A
JPH08255104A JP7325290A JP32529095A JPH08255104A JP H08255104 A JPH08255104 A JP H08255104A JP 7325290 A JP7325290 A JP 7325290A JP 32529095 A JP32529095 A JP 32529095A JP H08255104 A JPH08255104 A JP H08255104A
Authority
JP
Japan
Prior art keywords
version
instruction
file
copy
data
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.)
Withdrawn
Application number
JP7325290A
Other languages
English (en)
Inventor
David Gerard Korn
ジェラルド コーン ディヴィッド
Vo Kiem-Phong
ヴォー カーム−フォン
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.)
AT&T Corp
Original Assignee
AT&T 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 AT&T Corp filed Critical AT&T Corp
Publication of JPH08255104A publication Critical patent/JPH08255104A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 伝送データ量を削減し、かつかつ傍受されに
くい、遠隔地からソフトウエア又はデータを更新する方
法を提供する。 【解決手段】 本発明は、旧バージョンから新規バージ
ョンへデータファイルを更新する装置に関する。本発明
は、旧バージョンと新規バージョンを比較し、類似と相
違に関する情報を含む変形処理情報を導き出す。さら
に、本発明は、新規バージョンを導き出すために、新規
バージョン自体を参照せずに、変形処理情報を用いて、
旧バージョンの処理を行う。本発明を用いると、更新さ
れたファイル自体を送信しなくても、変形処理情報を複
数の場所に送信することにより、複数の場所にある銀行
の記録などのような元のファイルの複数バージョンを更
新することができる。一般に、変形処理情報には新規バ
ージョンの内容全体が含まれていないことから、この方
法は傍受に対して高い抗力を持つ。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明により用いられるソースコ
ードを記載した付録を添付する。本発明は、伝送される
データ量を削減し、かつ傍受されにくい、遠隔地からソ
フトウエアまたはデータもしくは両者を更新する方法に
関する。
【0002】
【従来の技術】電信電話会社の電話システムを介したコ
ンピュータ間の電子データ通信には、スピードと機密保
護が必要とされている。伝送前にデータを圧縮すること
により伝送速度を向上できる一方で、暗号化により機密
保護が可能である。データ圧縮は、データ源における冗
長度を低下させ、かつ暗号解読への抗力を高めることか
ら、暗号化にも有効な働きをする。しかし、データファ
イルが圧縮ならびに暗号化された場合、圧縮および暗号
化されたデータは、単一のデータ源に基づくものとな
る。単一のデータ源に基づくデータ圧縮および暗号化
は、完全なものとはいえない。データの冗長度が高くな
ければ、圧縮はうまく機能せず、最新の暗号解読法と共
に機能する高速コンピュータは、大抵の暗号化データを
解読することができるからである。多くの場合、最初の
データ源に関する複数の新規バージョンが、データに若
干の変更が加えられた後に頻繁に伝送される。この場合
の変更が若干であるとは、全バージョンが本質的に類似
していることを意味している。本質的に類似していれ
ば、その類似性を利用して、あるバージョンを別のバー
ジョンに変形する最小の変形処理情報を計算することが
可能である。
【0003】このような変形処理情報の計算方法は、デ
ータディファレンシング(データ間の差の計算)と呼ば
れている。データディファレンシングは伝達されるデー
タ量を削減する働きをすることから、これにより伝送速
度が向上する。さらに、旧バージョンを持たない傍受者
は、伝送されたデータからあまり多くの情報を引き出す
ことができないため、データディファレンシングは、プ
ライバシーの保護にも役立つ。これまで数多くの圧縮お
よびディファレンシング技術が、検討されてきた。「情
報理論に関するIEEEトランザクション(IEEE
Transactions on Informati
on Theory)」1977年5月号の23(3)
(337頁〜343頁)に記載されたJ.Zivならび
にA.Lempelによる「順次データ圧縮のための普
遍アルゴリズム(A Universal Algor
ithm for Sequential Data
Compression)」の記事では、単一のデータ
ファイルを圧縮する技術について述べられている。この
技術は、データの順序を分析し、かつ、可能であれば、
各位置においてすでに分析された部分にある別のセグメ
ントと一致する最長セグメントを識別することによって
機能する。このようなセグメントが検出された場合、一
致した位置と一致した長さを用いて暗号化が行われる。
また、一致しなかったデータは、そのまま出力される。
【0004】このアルゴリズムの具体化が、1984年
8月7日にW.L. Eastman、A. Lemp
el、およびJ.Ziv.に付与された米国特許4,4
64,650の主題であった。このEastman−L
empel−Ziv圧縮方法では、圧縮解除中も圧縮中
とほぼ同じ作業量をこなさなければならないことから、
圧縮解除の際に低速となる。さらに、この方法は、デー
タディファレンシングに応用できない。UNIXシステ
ムでは、第一ファイルから第二ファイルへの変形の際に
削除または追加する必要のある一連の行を作成する「d
iff」プログラムを用いて、(バイナリ以外の)テキ
ストファイル間の違いを算出することができる。「di
ff」による方法を採用した場合、テキスト行の若干の
変更によって、極めて大幅な変形は別のものとみなされ
ることから、そうした大幅な変形を行う可能性も出てく
る。さらに、この方法は、テキストファイルでしか機能
しないことから、応用範囲が限られている。「コンピュ
ータシステムに関するACMトランザクション(ACM
Transactions on Computer
Systems)」1984年11月号の2(4)
(309頁〜321頁)に記載されたWalter
F. Tichyによる「ブロックの移動によるストリ
ングからストリングへの訂正上の問題(The Str
ing−to−String Correction
Problem with Block Move
s)」の記事では、データファイルのあるバージョンか
ら別のバージョンへ変形を行うブロック移動と呼ばれる
一連の命令を計算するアルゴリズムについて述べられて
いる。ブロック移動(block−move)は、第一
バージョンの別のセグメントと一致する第二バージョン
のデータセグメントである。このアルゴリズムは、本質
的に実現されないものであり、第二バージョンに固有の
冗長性がある場合に、それを活用して第一バージョンか
ら第二バージョンを作成するのに必要な変形を最小限度
に抑えることができない。
【0005】
【発明の概要】本発明の一態様において、コンピュータ
プログラムにより、ファイルの第一バージョンと第二す
なわち新規バージョンを比較し、一連の命令を作成す
る。この命令により、第一バージョンに基づいた第二バ
ージョンの復元が可能になる。上記の命令は、2つのタ
イプに分けられる。ひとつはCOPY命令であり、指定
された一連の文字を構成中のファイルにコピーするよう
命令する。指定された文字列は、第一バージョンまたは
構成中のファイルのいずれにも存在可能である。もうひ
とつは、ADD命令であり、このADD命令に伴う一連
の文字の追加を指示する。この2種類の命令が連続的に
実行されると、コピーならびに追加された各文字列の連
結が行われ、第二バージョンの復元が行われる。
【0006】
【実施例】以下に、簡単な類比により、本発明のより基
本的な側面を一部説明する。また、本発明の一部を実現
するコンピュータコードについての技術的な説明は、
「本発明について」と題した項目にて行う。類推 ある新聞記者と新聞編集者が、記事を一緒に、しかし、
異なった場所で書くものとする。さらに、両者が図1A
に示すバージョン1を書いたと仮定する。また、この新
聞記者が図1Bに示す変更を行った結果、図1C(四角
枠は変更した位置を示している)に示すようなバージョ
ン2となり、このバージョンを編集者に送信したいと考
えていると仮定する。そこで、次の手順を用いれば、バ
ージョン2の内容全体を送信せずに、編集者にバージョ
ン2の送信が可能である。
【0007】手順 まず初めに、記者は、図1Aに示すように、バージョン
1の各語に位置を割り当てる。50語に対し、50箇所
の位置がある。次に、記者は、バージョン1の単語表を
確認する。単語表は、図1Aに示すような使用される語
のリストすなわち一覧表である。ただし、各語は、単語
表に一度だけしか現れない。例えば、位置18の語「t
hem」は単語表に記入されない。この語がすでに位置
16にあるからである。各語が一度しか記入されていな
いことを確認するために、記者は、各単語を入力する度
に、その語が表にあるかどうか見ながらチェックする。
例えば、記者が、最初の単語「When」を入力する。
次に、位置2の語「buying」を取り上げ、単語表
の最初の単語、すなわち、「When」と照合する。一
致しなければ、記者は、「buying」を単語表の位
置2に記入する。記者は、「them」という語が位置
18にくるまでこのようにして処理を進める。記者がこ
の語を単語表内にあるそれまでに入力された17の項目
と照合してみると、「them」が単語表の位置16に
ある「them」と一致することに気がつく。したがっ
て、後の「them」は、前の「them」と重複する
ため単語表に記入されない。
【0008】バージョン1の最後の語について一致の確
認が行われると、単語表は完了する。バージョン1に
は、全体の長さに対し50語含まれているが、単語表の
長さが示す通り、異なる語は38語しかない。次に、記
者は、図1Cにあるように、バージョン2の単語表を作
成する。バージョン2には、新語として示されている追
加の3語を除き、バージョン1と同じ単語表がある。こ
れで、記者は、編集者にバージョン2を送信する準備が
整ったことになる。記者は、次の6つのメッセージすな
わち命令を送信してバージョン2を伝送する。各命令
は、図1D〜図1Iの各図によって理解できる。 1. COPY 2 1 2. ADD 1 Hawaiian 3. COPY 3 3 4. ADD 1 all 5. COPY 37 8 6. ADD 2 a brick
【0009】命令1 事前配列により、記者と編集者は、図1Dに示すよう
に、位置1にポインタを設定する。最初の命令「COP
Y 2 1」は、「バージョン1の位置1から始まる2
語の並びをコピーせよ」を意味している。(各命令で
は、該当する語がバージョン2のポインタの位置に配置
されることが暗黙の了解となっている。)この動作が、
図1Dに示されている。ただし、構文は、以下の通りで
ある。 COPY[語数、バージョン1の開始位置] 命令を実行した後、編集者は、COPY命令にある「語
数」(この場合、2語)分だけポインタを移動させる。
これにより、ポインタは、図1Eに示す位置に設定され
る。
【0010】命令2 命令2では「ADD 1 Hawaiian」とあり、
「’Hawaiian’という1語を付け加えよ」を意
味している。この動作は、図1Eに示されている。ただ
し、構文は以下の通りである。 ADD[語数、該当する語] 命令を実行した後、編集者は、ADD命令にある「語
数」(この場合、1語)分だけポインタを移動させる。
これにより、ポインタは、図1Fに示す位置に設定され
る。
【0011】命令3 命令3の「COPY 3 3」は、「バージョン1の位
置3から始まる3語の並びをコピーせよ」を意味してい
る。この動作は、図1Fに示されている。ただし、構文
は命令1と同一である。命令を実行した後、編集者は、
COPY命令にある「語数」(この場合、3語)分だけ
ポインタを移動させる。これにより、ポインタは、図1
Gに示す位置に設定される。
【0012】命令4 命令4では「ADD 1 all」とあり、「’al
l’という1語を付け加えよ」を意味している。この動
作は、図1Gに示されている。命令を実行した後、編集
者は、ADD命令にある「語数」(この場合、1語)分
だけポインタを移動させる。これにより、ポインタは、
図1Hに示す位置に設定される。
【0013】命令5 命令5の「COPY 37 8」は、「バージョン1の
位置8から始まる37語の並びをコピーせよ」を意味し
ている。この動作は、図1Hに示されている。ただし、
構文は命令1と同一である。命令を実行した後、編集者
は、COPY命令にある「語数」(この場合、37語)
分だけポインタを移動させる。これにより、ポインタ
は、図1Iに示す位置に設定される。
【0014】命令6 命令6では「ADD 2 a brick」とあ
り、「’a brick’という2語を付け加えよ」を
意味している。この動作は、図1Iに示されている。こ
れで、バージョン2が作成されたことになる。
【0015】重要な特徴 図1Cに示されるバージョン2には、43語が含まれて
おり、語自体は、163文字から構成されていた。しか
し、6つの命令には27文字プラス命令自体(COPY
とADD)が含まれていた。各命令と各文字を1バイト
としてコード化した場合、全体のメッセージは、27+
6文字、すなわち、33文字となる。33文字を送信す
れば、163文字を送信した場合に比べて大幅に時間が
短縮される。
【0016】本発明について 上記の類比の説明は簡単に述べたものであり、本発明の
特徴のすべてを示しているわけではない。図2では、フ
ァイルに関する2つのバージョンの他に、バージョン1
と組み合わせてバージョン2を作成できるようにする
「変形処理情報」を示している。図3の手続きでは、復
元が行われる。この手続きについてこれから説明する。
まず初めに、一般的なパターンが綿密に作成される。予
備知識として、重要点を4つ認識しておく必要がある。
ひとつは、各バージョンの各文字は、図2Aに示す通
り、番号付けされた位置を占めている。例えば、バージ
ョン1の場合、最初の「a」は位置0を占有している。
最初の「b」は位置1を占有している等である。第二
に、バージョン2の番号付けされた位置は、バージョン
1の番号付けされた位置の中で最も高い数字の位置の後
ろから開始する。したがって、バージョン1の最も数字
の高い位置が「15」であることから、バージョン2は
「16」から開始することになる。第三に、ポインタ
(図3の手続き中にある変数)は、図2Aに示すような
現在位置を示している。第四に、「変形処理情報」は、
複数の命令により構成されている。命令には2種類、す
なわちADDとCOPYがある。次に、この2種類の命
令の動作について、バージョン1からバージョン2がど
のように構成されるのかを示しながら説明したい。
【0017】命令1 図2Bでは、「変形処理情報」の命令1が実行されてい
る。命令「COPY4 0」は、基本的に、「バージョ
ン1の位置から始まる文字をバージョン2のポイン
タの位置にコピーせよ」を示している。(下線の語は、
命令内の語を示している。)この動作は、図2Bに示さ
れている。上記の命令では、バージョン2の作成に使用
される文字を、命令自体からではなく、バージョン1か
ら取得している。このため、電話送信により命令を取得
する場合でも、傍受者は、バージョン1にアクセスでき
ないと推定されるため、バージョン2の作成に使用でき
る情報は一切得ることができない。構文は、以下の通り
である。 COPY[語数、開始位置]
【0018】命令2 図2Cでは、命令2が実行される。命令「ADD 2
x,y」は、事実上、「文字をポインタの位
置を起点にバージョン2に追加せよ」を意味している。
この命令では、バージョン2の作成に用いられる文字を
命令自体から得ている。その結果、傍受者は、バージョ
ン2に関する情報の一部を取得できる。しかし、実際に
は、この種の命令は、非常に多種多様な(情報を一切含
まない)COPY命令と混合して用いられることが予想
されるため、傍受者は、バージョン2について重要な情
報を得ることはない。にもかかわらず、理論的には、A
DD命令のみが「変形処理情報」に含まれる場合もあり
得ることであり、その場合、傍受者は、バージョン2を
そのまま取得することになる。あるいは、ADD命令の
数が膨大になることもある。傍受者がこうしたADD命
令から情報を取得できないようにするために、暗号化オ
プションが提供されており、内容については後に述べ
る。ADD命令の構文は以下の通りである。 ADD[語数、該当文字]
【0019】命令3 図2Dでは、命令3が実行されている。命令「COPY
6 20」は、事実上、次の内容を示している。位置
20とポインタとの間にある文字を用いて、長さが
字のコピーを作成し、ポインタの位置にコピーした文字
を配置せよ。命令を実行した結果、図示されるように、
xyxyxyとなる。(別の例として、COPY文で
「COPY 6 19」としてあれば、事実上、次の内
容を意味している。位置19(20ではない)とポイン
タとの間にある文字を用いて、長さが文字のコピー
作成し、ポインタの位置にコピーした文字を配置せよ。
この場合、位置19とポインタとの間にある文字列はd
xyであることから、ポインタの位置に付け加えられた
文字の並びはdxydxyとなる。) この命令の場合、バージョン2の作成に用いられる文字
がバージョン2から取得される点が重要である。したが
って、COPY命令は指定されたアドレスによって2つ
のデータ源を使用していることがわかる。この命令で
は、アドレス(すなわち、「COPY 6 20」の
「20」)が、バージョン2を示している(すなわち、
アドレスは15を上回る)。したがって、バージョン2
が、このコマンドのデータ源である。逆に、アドレスが
15以下であれば、バージョン1がデータ源として用い
られるはずである。この方法を用いると、事実上、AD
D命令を使用して単語表を拡張することができる。した
がって、(a)バージョン1の中になく、(b)拡張さ
れた単語表にある(以前に追加された)文字がバージョ
ン2に含まれていることが明らかになった場合、COP
Y命令が使用できる。したがって、この場合のCOPY
命令には2つの利点がある。ひとつは、COPY命令で
は、文字の総数と開始位置を示すだけで大量の文字を挿
入することができる。逆に、ADD命令を用いた場合、
送信される文字自体を必要とすることから、より長い送
信が必要となる。もうひとつは、上記の通り、命令を傍
受した者がバージョン1を取得するようなことがない限
り、COPY命令には一切の情報が含まれていないこと
になる。命令4 図2Eでは、命令4が実行されている。命令「COPY
5 9」は、事実上、「バージョン1の位置から始
まる文字をコピーせよ」を示している。この命令は、
命令1とよく似ている。
【0020】図3のプロセスに関する参照事項 図3は、コンピュータがバージョン1と「変形処理情
報」との組み合わせからバージョン2を作成するプロセ
スを示している。図3では、2行目において、図2B〜
図2Eに示されているポインタの計算に用いられる変数
cの初期化が行われている。ポインタの計算は、9行
目、13行目、および14行目で適宜行われている。命令1 図2に示される「変形処理情報」の命令1(COPY
4 0)は、図3の13行目で実行されている。変数p
は、原始データの開始位置を示しており、命令の中から
得ることができ、この場合、0である。pはn(12行
目)よりも小さいことから、データ源はバージョン1に
ある。その結果、IF文により13行目が実行される
と、バージョン1からデータがコピーされる。このと
き、バージョン1+pの位置、すなわち位置0から開始
する。変数sは、文字数を表しており、7行目の命令か
ら得ることができ、この場合、4である。ポインタは、
16行目において更新される。命令2 命令2(ADD 2 x,y)は、8行目のIF文によ
り、9行目で実行される。これにより、バージョン2+
cの位置にある長さs(2に等しい)の文字列が設定さ
れる。ポインタは、16行目で更新される。命令3 命令3(COPY 6 20)は、12行目[p(命令
から得られ、20に等しい)はnより小さい]により1
4行目において実行される。このコピー関数は、データ
源としてバージョン2を用い、バージョン2+cから開
始する。コピー関数は、文字数sの長さを有する並びで
ある。(変数sは[ポインタ−20]により得られ、20
の数字は命令から得られる。)命令4 命令4は、命令1のように13行目において実行され
る。
【0021】「変形処理情報」の作成 図5は、各バージョンを1文字ずつ確認し、かつバージ
ョン1と変形処理情報と呼ばれる命令との組み合わせか
らバージョン2を構成できるようにする一連の命令を作
成する手続きを示している。図2の変形処理情報につい
ては、すでに説明している。この手続きによって採られ
る一般的な手法について、以下に説明する。実行1 まず初めに、バージョン1の処理が行われる。バージョ
ン1は、図2Fの数箇所に表示されている。図5のコー
ドでは、位置0から始まる4文字の文字列が前の位置か
ら始まる4文字の文字列と一致するかどうか尋ねる。位
置0の前には何も存在しないことから、当然、答えは
「No」である。したがって、位置0は、「実行1」と
表示された列に示されるように、カラットを用いてフラ
グが立てられている。実行2 実行2では、コードによって、似たような質問、すなわ
ち、位置1から始まる4文字の文字列が前の位置から始
まる4文字の文字列と一致するかどうかを尋ねる。答え
は「No」であり、位置1にフラグが立てられる。実行3および実行4 同様に、フラグが位置2および位置3に設定され、図2
Fの実行4のようにフラグが立てられる。
【0022】実行5 実行5では、上記とは違った結果が得られる。実行5で
は、コードにより通常の「位置4から始まる4文字の文
字列は、前の位置から始まる4文字の文字列と一致する
か?」という問いを出す。実行5として示された列から
わかるように、答えは、位置0において、「Yes」で
ある。位置4にはフラグが表示されず、EXTEND関
数(図5の16行目)が呼び出されて動作が行われる。
EXTEND関数は、一致した文字列の長さを尋ねる。
一致したブロックの後ろの次の位置(一致したブロック
は位置4〜7を占めていることから、次の位置は、位置
8である)に4つ前の位置と同じものがあるかどうか尋
ねる。答えは、試行TAからわかるように、「Yes」
である。次に、一致したブロックの2番目の位置すなわ
ち位置9に、4つ前の位置と同じものがあるかどうか尋
ねる。試行TBからわかるように、今度の答えも「Ye
s」である。この問いは、そのような一致が検出されな
くなる試行TEに位置が到達するまで続行される。した
がって、EXTEND関数は、位置4〜位置11までの
8つの位置にわたり一致が見られることを確認した。コ
ードの論理上、拡張された一致の最後の3つの位置、す
なわち、「実行5の結果」の中の「BCD」にフラグが
立てられる。
【0023】実行6 実行6は、位置12(最も右にあるe)から始まる4文
字の並びが前に発生した位置から始まる4文字の文字列
と一致しているかどうか尋ねる。ここでは、答えは「N
o」であり、「実行6」と表示された列に示されるよう
に、位置12にフラグが立てられる。
【0024】結果 図2Fの下部に結果が示されており、「結果」と表示さ
れている。そこで、重要な特徴について2点以下に説明
する。第一に、後に説明するように、フラグは、バージ
ョン2の作成に用いられる並びの開始だけでなく、終了
も示している。第二に、図示されるように、フラグが立
てられない領域がある。バージョン2の作成に用いられ
る文字列の探索は、こうした領域の外から開始してその
領域に侵入することができるが、このような領域内から
開始することはない。したがって、探索開始点が削除さ
れることから、全体の探索時間は短縮される。
【0025】バージョン2の処理 実行1〜実行4 次に、更新バージョンであるバージョン2の処理が行わ
れる。コードにより、図2Gに示されている位置16、
17、18、および19から始まる4文字の並びが以前
の位置から始まるものと一致しているかどうか質問され
る。位置16から始まる4文字の並びが位置0から始ま
るものと一致しているが、後続の3つが一致していない
ため、図2Gの上部に示されているように、位置17、
18、および19にフラグが立てられる。EXTEND
関数では、拡張された一致が全く検出されない。図5の
コードは、29行目にジャンプして、図2に出てくる上
記の「COPY 4 0」命令を発行する。全体の結果
は、「出力」と表示された矢印で示されている。すでに
3文字にフラグが立てられており、COPY命令が発行
されている。ただし、これらのフラグが立てられた文字
は、バージョン1のフラグが立てられた文字がそうであ
ったように、後に、探索初期設定点として扱われること
に注意しなければならない。
【0026】実行5 図5のコードでは、(図2Gの「実行5」と表示されて
いる欄のバージョン2にある)位置20から始まる4文
字の並び「xyxy」が前の位置から始まるものと一致
しているかどうか尋ねる。コードにより、現在バージョ
ン2に存在するものも含め、各フラグから探索を開始す
る。さらに、各フラグにおいて、コードによって前後両
方向に探索が行われる。(この前後方向の探索について
は、簡潔化を図るため、これまでの説明では述べられて
いない。)全体の探索は、図2Gの実行5によって示さ
れている。探索は、(a)各フラグから開始し、(b)
4文字を前後両方向にサーチすることから、試行T1〜
試行T12のすべての4文字の並びが検査される。さら
に、バージョン2のフラグを立てられた位置、すなわ
ち、位置17、18、19、および20から、同じよう
な探索が行われる。一致が検出されなかったことから、
位置20にあるxにフラグが立てられる。
【0027】実行6 図5のコードでは、(バージョン2にある)位置21か
ら始まる4文字の並び「yxyx」が前の位置から始ま
るものと一致しているかどうか尋ねる。位置20につい
ては、バージョン2に存在するものも含め、各フラグか
ら前後両方向にコード探索を開始する。現在のフラグの
状態は、図2Hの右上の部分に示されている。
【0028】実行7 図5のコードでは、(バージョン2にある)位置22か
ら始まる4文字の並び「xyxy」が前の位置から始ま
るものと一致しているかどうか尋ねる。答えは、位置2
0において「Yes」である。このため、図2Hに示さ
れるように、位置22にフラグは立てられず、EXTE
ND関数(図5の16行目)が入力される。このEXT
END関数では、図2Fに関して述べられた方法によ
り、一致が図2Hの位置27まで達していると判断され
る。したがって、拡張された一致の最後の3つの位置に
フラグが立てられ、図の左下の四角枠に示されているよ
うな結果となる。このとき、論理上、図5の29行目に
進み、2つの命令「ADD 2 x,y」および「CO
PY 6 20」が発行される。(29行目の引き数
「add」および「c」は、ADD命令に関するもので
あり、引き数「pos」および「len」は、COPY
命令に関するものである。)
【0029】実行8 コードでは、位置28から始まる文字の並び「bcd
e」が前の位置から始まるものと一致しているかどうか
尋ねる。答えは、バージョン1(図2Gの左上を参照)
の位置9において「Yes」である。これで、EXTE
ND関数が呼び出され、一致が追加文字「f」まで延び
ていると判断する。次に、コードにより、29行目にお
いて、命令「COPY 5 9」を発行する。これで、
図2の4つの命令が作成されたことになる。したがっ
て、バージョン1プラス命令からバージョン2を復元で
きる。
【0030】特色 前記の概要から、次の原理を読み取ることができる。第
一に、ある位置が前に一致した並びを表しているとの判
断が下されると、その位置にはフラグが立てられず、そ
の結果、冗長であるとの理由により、該当する位置にお
いて後続の探索は開始されない。このため、(可能な場
合)探索位置が削減される。第二に、バージョン2は、
2種類のデータ源、すなわち、(a)バージョン1また
はバージョン2からコピーされた文字列、(b)バージ
ョン2に追加された文字列により構成される。さらに、
追加された文字列は、後でコピー動作に使用できる。別
の観点から、第一ユーザがバージョン1を保有している
場合、また、第二ユーザがバージョン1とバージョン2
の両方を保有している場合、第二ユーザが以下の文字列
を識別していれば、第一ユーザは、バージョン2の複製
を作成できる。 (a)第一ユーザのバージョン1からコピーしたもの (b)第一ユーザのバージョン1に付け加えられたもの (c)第一ユーザのバージョン2の複製からコピーされ
たもの
【0031】第三に、各フラグ表示された位置が、単語
表内の1語の開始点を表している。これに類似する語が
図1Aに示されている。しかし、図1Aの用語範囲とは
異なり、各フラグ表示された位置が表す用語範囲は、極
めて多くの並びを表現の対象としている。例えば、バー
ジョン1が以下の通りであるとする。 abcdeFghijk 大文字のF(位置6)にフラグが立てられた場合、次の
並びを表している。 f fg fgh fghi fghij
fghijk 上記の並びは、他のフラグ表示された位置を含むことが
ある。したがって、単一のフラグ表示された位置は、バ
ージョン2へのコピー対象となる多数の並びを表すこと
もあり得る。このため、このようなフラグ表示された位
置が多数のCOPY命令に現れることもある。例えば、
「COPY 3 6」は、「fgh」をコピーすること
を意味しており、また、「COPY 5」は、「fgh
ij」をコピーすることを意味している。
【0032】機密保護 すでに述べた通り、ADD命令には、バージョン2の内
容に関する情報が含まれており、このような情報には、
機密保護が必要である。機密保護の1手法が図1Jに示
されている。バージョン1内にポインタがくるように、
送信された図2のADD命令(「ADD 2 x,
y」)が修正される。修正された命令は、図1Jに「送
信命令」と表示されている。この場合、ポインタが
「2」であり、「c」を示している。次に、送信された
情報(すなわち、「x」および「y」を表すバイト)
が、「c」で始まるデータとの排他的論理和がとられ
る。図1Jの左側は、排他的論理和の動作を示してい
る。送信される命令は、「ADD 2 2」プラス排他
的論理和の動作結果である。傍受者はバージョン1に全
くアクセスできないことから、この排他的論理和の結果
には、傍受者にとって価値のある情報は一切含まれてい
ない。
【0033】図1Kの右側にある受信された命令に含ま
れるデータは、バージョン1内の同じデータ、すなわ
ち、「c」で始まるデータとの排他的論理和がとられ
る。この排他的論理和により、元のデータ、すなわち、
「x,y」が回復する。この手続きでは、排他的論理和
の動作の特性、すなわち、第一の語と第二の語の排他的
論理和をとることにより第三の語を作成する点を利用し
ている。第三の語を第二の語と排他的論理和をとること
により、第一の語を回復できる。このため、以下の送信
された命令から、 ADD 2 2[EX−ORの結果] 目的とする命令である次の命令を得ることができる。 ADD 2 x,y
【0034】重要事項 1.COPYおよびADD命令が現れる順序は、当然、
重要である。その順序が全く変われば、異なったバージ
ョン2が得られる。別の観点からすれば、文字列自体は
一種の情報である。文字列は、命令の組み合わせとして
見ることもできる。英語のアルファベットの並べ換えに
よりワードが生成され情報が伝達されるように、このよ
うな並べ換えの仕方に情報が含まれている。文字列の復
元を可能にする情報が含まれていれば、当然、順序をバ
ラバラにして送信することもできる。例えば、各命令に
番号付けをしてもよい。命令の正しい並びがどのように
実行されるかという点とは無関係に、実行により、連結
プロセスによってバージョン2の複製が作成される。す
なわち、図2B〜図2Eの例に戻り、 1.最初の「abcd」が複製(図2B)に書き込まれ
る。「abcd」は、バージョン1から得られたもので
ある。 2.次に、「xy」が連結される(図2C)。「xy」
は、バージョン1から得られたものである。 3.次に、「xyxyxy」の連結が行われる(図2
D)。「xyxyxy」は、バージョン2から得られた
ものである。(代わりに、4組の「xy」をバージョン
1から取得し、ステップ2で連結することもできる。し
かし、これではあまり効率的とはいえない。) 4.「bcdef」の連結が行われる(図2E)。「b
cdef」は、バージョン1から得たものである。
【0035】2.さらに、上記の重要事項1に関し、各
COPYおよびADD命令にはコピーまたは追加された
部分の長さが含まれていることを発明者から指摘してお
く。このため、所定のCOPYまたはADD命令につい
て、コピーや追加を行うバージョン2内のアドレスを、
以前の全体の長さに基づいて直ちに計算することができ
る。(このような長さに基づきポインタの計算が行われ
ていることから、図3のコードにこの状態が示されてい
る。)
【0036】3.本発明は、任意の種類のデータファイ
ルを更新する際に使用でき、テキストファイル等の特定
の種類のファイルに限定されるものではない。本発明
は、一般に、バイナリファイルを取り扱うことができ
る。ファイルには文字が含まれている。各文字は、通
常、1バイトのデータによって表される。1バイトに8
ビットが含まれていることから、28、すなわち、25
6の想定可能な文字が1バイトで表現できる。「テキス
ト」ファイルでは、このような想定可能な組み合わせを
すべて使用するわけではなく、英数字および句読点を表
すものだけを使用する。「バイナリ」ファイルでは、想
定可能な256の組み合わせがすべて使用される。本発
明では、バイナリファイルの取り扱いが可能である。こ
れとは対照的に、従来技術のプログラムのディファレン
シングでは、テキストファイルしか処理できない。
【0037】4.本発明は、記憶されているバージョン
1からバージョン2の遠隔地への復元動作に限られるも
のではない。さらに、プログラムの新規バージョンは、
バージョン全体を記憶するのではなく、ADDおよびC
OPY命令を用いて一箇所に記憶することができる。こ
の方法により、記憶スペースが節約される。バージョン
の復元を必要とする場合、図3のプログラムが実行され
る。 5.復元されるファイルのバージョンが、その時点にお
いて年代的に早いファイルの後のバージョンである必要
はない。例えば、バージョン1は、バージョン2から復
元できる。
【0038】技術上の説明 図3および図5に示されているコードについて、より技
術的な説明を行う。概要 データファイルは、バイトの並びとみなすことができ
る。実質的にはすべての現行のコンピュータ上におい
て、1バイトは、記憶、通信、およびメモリ内のデータ
の操作によって効率的に圧縮できる最小の自然単位であ
る。「データファイル」という語は、ディスク上に記憶
されたファイルを指す場合が多いが、本発明では、その
ようなバイトの並びはメインメモリのセグメントにする
ことも可能である。図1では、本発明を用いて2台のコ
ンピュータ間でデータを同期化している例を示してい
る。第一に、ソースコンピュータ(翻訳用計算機)上で
は、データの2つのバージョンであるバージョン1およ
びバージョン2が比較されて、バージョン1をバージョ
ン2に取り込む変形処理情報を作成する。この変形処理
情報は、何らかの通信チャネルを介してターゲットコン
ピュータ(目的計算機)に送信される。次に、ターゲッ
トコンピュータ上では、変形処理情報とバージョン1の
ローカルコピーを用いてバージョン2を復元する。
【0039】変形処理命令のコーディングとデコーディ
ング 本発明により計算された変形処理情報は、2種類の命
令、すなわち、COPYおよびADDの並びにより構成
されている。バージョン2の復元中は、COPY命令に
よりコピー対象となるデータの現存するセグメントの位
置と長さが定義され、ADD命令により追加対象となる
データのセグメントが定義される。図2では、バージョ
ン1が「abc dab cda bcd efgh」
のバイトの並びにより構成されている2つのデータファ
イルの例を示している(ここでは読みやすくするために
スペースを挿入している)。バージョン2は、「abc
dxy xyx yxy bcdef」の並びにより
構成されている。したがって、バージョン1の長さは1
6、バージョン2の長さは17となっている。図2に示
されている変形処理情報では、バージョン1からバージ
ョン2を構成し直すうえで必要となる命令が示されてい
る。ただし、バージョン1の位置は0からコード化さ
れ、バージョン2の位置はバージョン1の長さからコー
ド化されるという規約を採用している。例えば、図2の
変形処理情報の第三の命令は、20としてコード化され
たバージョン2の位置4からの6バイトをコピーするC
OPY命令である。
【0040】図3では、一般にバージョンの復元が行わ
れる手続きが示されている。1行目では、変数「n」を
バージョン1の長さに初期化する。2行目では、バージ
ョン2の現在位置「c」を0に設定する。3行目では、
5行目でエンドオブファイル状態が検出された後に6行
目で終了するループを開始する。4行目では、関数re
adinst()を呼び出して命令を読み取る。7行目
では、関数readsize()を用いてコピーするサ
イズすなわちデータサイズを読み取る。8行目と9行目
では、命令がADD命令であるかどうか確認し、そうで
あれば、現在位置cから開始するバージョン2にデータ
を読み込む。10行目〜15行目では、位置コードで読
み取りを行って、バージョン1またはバージョン2から
適宜コピー動作を行うことにより、COPY命令の処理
を行う。16行目では、バージョン2の現在のコピー位
置を新たに復元されたデータの長さ分だけ増加させる。
copy()関数は、ディスクメモリ(またはメインメ
モリ)の1領域から別の領域へデータをコピーする単純
関数である。しかし、readinst()、read
size()、readpos()、およびreadd
ata()関数は、COPYおよびADD命令とそのパ
ラメタがどのようにコード化されるかという点について
の具体的な定義に基づいて定義されなければならない。
【0041】図3の手続きを図1の例に当てはめてみる
と、復号化には4つのステップがあることがわかる。第
一ステップでは、位置0から始まるバージョン1から
「abcd」の4バイトをコピーする。第二ステップで
は、「xy」の2データバイトを追加する。第三ステッ
プでは、(0から数えて規約により20としてコード化
された)位置4から始まる6バイトをバージョン2から
コピーする。ただし、このステップの開始時点では、
「xy」の2バイトしかコピーに使用できないことか
ら、バージョン2の最初の6バイトである「abcdx
y」が復元されただけである。しかし、データが左から
右へコピーされることから、1バイトがコピーされると
きは必ず、作成されているはずである。第四および最終
ステップでは、バージョン1の位置9から「bcde
f」の5バイトがコピーされる。
【0042】以上で、COPYおよびADD命令のコー
ド化について説明がなされたことになる。このような特
種な具体例である上記命令が選択されたのは、発明者の
実験により、多くの異なるタイプのデータに対してこの
ような命令がうまく機能するためである。以上の説明が
なされれば、上記のreadinst()、reads
ize()、およびreadpos()機能は、容易に
実行できる。各命令は、制御バイトから開始してコード
化が行われる。制御バイトの8ビットは2つの部分に分
けられている。最初の4ビットは0〜15の数を表して
おり、各々は、命令の種類と何らかの補助情報に関する
コーディングを定義している。以下に、最初の4ビット
に関する最初の10の値の一覧を示している。 0: ADD命令 1、2、3: QUICKキャッシュの位置を伴うCO
PY命令 4: SELFとしてコード化された位置を伴うCOP
Y命令 5: HEREとの差としてコード化された位置を伴う
COPY命令 6、7、8、9: RECENTキャッシュからコード
化された位置を伴うCOPY命令 QUICKキャッシュは、サイズ768(3x356)
の配列である。この配列の各指標には、「p modu
lo 768」が配列の指標となっているように、新た
なCOPY命令の位置の値pが含まれている。このキャ
ッシュは、各COPY命令が(コーディング中に)出力
されるか、または、(デコーディング中に)処理された
後、更新される。タイプ1、2、または3のCOPY命
令は、実際の位置が記憶される配列の指標を計算するた
めに、それぞれ0、256、または512に加算されな
ければならない0〜255の値を有するバイトがその直
後に設定される。
【0043】タイプ4のCOPY命令は、一連のバイト
としてコード化されたコピー位置を有している。タイプ
5のCOPY命令は、一連のバイトとしてコード化され
たコピー位置と現在位置との差を有している。RECE
NTキャッシュは、4つの指標を有する配列であり、最
新の4つのコピー位置を記憶する。COPY命令が(コ
ーディング中に)出力されるか、または、(デコーディ
ング中に)処理されたときは必ず、そのコピー位置がキ
ャッシュ内の最も古い位置と入れ替わる。タイプ6
(7、8、9)のCOPY命令は、キャッシュの指標1
(それぞれ、2、3、4)に対応している。そのコピー
位置は、対応するキャッシュ指標に記憶されている位置
よりも大きいことが保証されており、その差のみがコー
ド化される。
【0044】タイプ1〜9のADD命令およびCOPY
命令の場合、制御バイトの2番目の4ビットが、0でな
ければ、含まれているデータのサイズをコード化する。
これらビットが0であれば、各サイズは、次のバイト列
としてコード化される。このようなコーディング方法の
結果、ADD命令の後に別のADD命令が続くことは決
してない。ADD命令のデータサイズが4以下であり、
かつ後に続くCOPY命令も小さいことがよくあるが、
そのような場合、この2つの命令を単一の制御バイトに
マージするうえで、上記の方法は有利である。最初の4
ビットである10〜15の値は、このような結合された
命令の組をコード化する。その場合、制御バイトの2番
目の4ビットの最初の2ビットにより、ADD命令のサ
イズをコード化し、残りの2ビットによりCOPY命令
のサイズをコード化する。次に、最初の4ビットの10
〜15の値の一覧を示している。 10: SELFとしてコード化されたコピー位置を伴
うマージされたADD/COPY命令 11: HEREとの差としてコード化されたコピー位
置を伴うマージされたADD/COPY命令 12、13、14、15: RECENTキャッシュか
らコード化されたコピー位置を伴うマージされたADD
/COPY命令
【0045】図4は、図2の変形処理情報である4つの
命令に関するコード化を示したものである。各命令ごと
に、制御バイトの全8ビットが示されている。例えば、
2番目の制御バイトの最初の4ビットが0となっている
が、これは、バイトによりADD命令がコード化されて
いることを示している。同じバイトの次の4ビットで
は、ADD命令のサイズが2であることを示している。
2つのデータバイト「xy」が制御バイトの後に置かれ
ている。3つのCOPY命令は、すべて、SELFタイ
プを用いてコード化されており、したがって、そのコピ
ー位置は、制御バイトに続く(示されている値を用い
て)バイトによりコード化されている。すべての命令の
サイズパラメタは、制御バイト内ですべてコード化でき
るほど小さい。したがって、この小例は、わずか9バイ
トを用いるだけで、長さ17バイトのバージョン2が変
形処理情報にコード化できることを示している。
【0046】一致セグメントの高速計算 図5は、バージョン2をいくつかのセグメントに分割
し、COPY命令およびADD命令としてコード化する
方法を示している。ただし、このコーディング方法の場
合、長さの短い一致は、少なくともそれが一致するデー
タとしてコード化を行うスペースを取ることから、有効
とはいえない。このため、短い一致を無視するように一
致方法を調整することができる。ここで用いる一致の最
小の長さは4であり、コーディング手続きの本体にある
変数MINによって示されている。
【0047】図5の1行目では、探索テーブルTを初期
化して空にする。効率上、Tは、衝突をチェーニングし
たハッシュテーブルとして保持されている。このデータ
構造は標準型であり、「コンピュータアルゴリズムの設
計と分析(The Design and Analy
sis of Computer Algorithm
s)」(A.Aho、J.Hopcroft、および
J.Ullman著、1974年、Addison−W
esley発行)(111〜112頁)などのデータ構
造およびアルゴリズムの教本に説明されている。
【0048】表Tには、2つのバージョンに一定の選択
された位置が記載されている。この位置は、手続きin
sert()によって挿入され、最長の一致データセグ
メントを高速で探索するために、手続きsearc
h()およびextend()で使用される。2行目お
よび3行目では、手続きprocess()を呼び出
し、バージョン1およびバージョン2から位置を選択し
て表Tに挿入する。バージョン2の処理中には、COP
Y命令およびADD命令の作成も行われる。
【0049】4〜45行目では、手続きprocess
()を定義する。5行目と6行目では、変数「n」と
「m」をバージョン1および処理中のバージョンの長さ
に初期化する。7行目では、処理中のバージョンの現在
位置「c」を0に初期化する。8行目では、ADD命令
のデータの開始を−1(すなわち、なし)に初期化す
る。9および10行目では、位置cから始まるデータセ
グメントの最長の一致に関する位置と長さを初期化す
る。11〜42行目では、所定のバージョンを処理する
メインループを定義する。12〜18行目では、cから
始まるデータセグメントと一致する処理済みの最長デー
タセグメントを計算する。12行目で呼び出された手続
きsearch()により、長さlen+1の一致を検
出する。この手続きでは、位置c+len−(MIN−
1)から始まるMINバイトを表Tの一致している位置
を探索するためのキーとして使用する。次に、「se
q」のデータと適切なバージョンのデータを逆方向に照
合し、一致がcからc+len+1までのすべてをカバ
ーしているかどうか確認する。
【0050】このような一致が検出されると、16行目
で呼び出された手続きextend()により、できる
だけ長く前方に一致を延長する。14および15行目
は、一致が全くなく、かつ探索ループから外れる場合に
相当する。それ以外の場合は、ループの繰り返しによ
り、さらに長い一致を検出する。19および26行目で
は、現在の一致していない位置cを表Tに挿入する。s
eqがバージョン1の場合、挿入される実効値はcであ
り、それ以外の場合は、c+バージョン1の長さ(前述
したバージョン2のコーディング位置の規約)である。
手続きinsert(T,seq,p,原点)では、キ
ーとしてバージョンseqの位置pから始まるMINバ
イトを用いて、コード化された位置「p+原点」を表T
に挿入する。
【0051】20および21行目では、未定義であれ
ば、変数addをcに設定し、そこが一致していないデ
ータのセグメントの開始であることを示す。25行目で
は、処理ループの次の繰り返しを行うために、現在位置
を1だけ前方に移動させる。27および28行目は、最
長の一致セグメントを検出する事象に相当する。28お
よび29行目では、手続きwriteinst()を呼
び出して、前述した説明に従って、COPY命令および
ADD命令を書き出す。addが0または正の値であれ
ば、writeinst()への最初の2つの引き数に
より、ADD命令のデータを定義する。第二の2つの引
き数では、COPY命令のパラメタを定義する。この手
続きの作用は簡単なので、ここでは説明を省略する。3
0〜36行目では、一致したデータセグメントの末尾に
あるMIN−1の位置を表Tに挿入する。37および3
8行目では、一致した長さの分だけcを増加し、add
を−1にリセットする。40および41行目では、処理
対象となる充分なデータがない場合に、処理を終了させ
る。43および44行目では、バージョン2から、一致
しない最終データをADD命令として出力する。
【0052】図6は、表Tに位置を挿入する手続きを示
している。図6の2行目は、キーが位置pから始まる
「seq」列のMINバイトであることを示している。
3行目では、コード化された位置を作成する。4行目で
は、(key,pos)の組を表Tに挿入する。図7
は、一致を探索する手続きを示している。3および4行
目では、現在最長となっている一致の長さの末尾のMI
N−1バイトから成る探索キーと一致していない新規の
1バイトを作成する。5〜19行目では、可能であれ
ば、一致長さの延長を試行する。この動作は、作成され
た探索キーと一致する表Tの全要素を調べ、キー位置に
置かれた現在の一致の一部が検討中の要素の対応する部
分と一致しているかどうか確認することによって行われ
る。このテストは、17行目で実行される。この結果が
真であれば、18行目において、search()によ
り一致の開始位置が返却される。20行目では、「−
1」が返却され、「len」よりも長い一致がないこと
を示す。
【0053】図5の13行目においてsearch()
への呼び出しが行われた後、一致の長さが、現在、図5
の「len」の値よりも少なくとも1以上長いことが明
らかになっている。図8では、extend()手続き
が示されており、この手続きによって、右方向にできる
だけ長く一致を延長させる。2〜10行目では、一致を
探索する正しい列を設定する。11〜13行目では、延
長を実行する。14行目では、一致した全体の長さを返
却する。図2の例に当てはめると、上記の方法により、
同じ図に示されている一連の命令が計算できる。図6で
は、表Tに挿入されるバージョン1およびバージョン2
の例の位置が示されている。
【0054】機密保護の強化 2つのバージョン1およびバージョン2と計算による変
換処理情報が与えられた場合、変換処理情報のADD命
令のみが、バージョン2から生データを取り入れる。こ
のようなデータは、傍受者がバージョン2に関する貴重
な情報を得るのに利用可能である。機密保護の必要性が
高いアプリケーションでは、情報の漏洩を防ぐために、
ADD命令を次のように修正することができる。まず初
めに、各ADD命令を修正して、その位置から始まるデ
ータセグメントが少なくともADDデータの長さ以上と
なるようなやり方で、バージョン1から任意に選択され
る位置となるようなコピーアドレスも持つようにする。
そのようにできなければ、ADDデータはさらに小さい
単位に分割することができる。次に、生データは、変換
処理情報に出力される前に、このようなデータの選択セ
グメントからのデータとの排他的論理和がとられる。例
えば、図2の同じADD命令を用いて、バージョン1の
選択位置が2であるとした場合、この位置は、制御バイ
トの直後に出力され、2データバイト「xy」は、出力
前に、2バイト「cd」との排他的論理和がとられるこ
とになる。
【0055】デコーディングの場合、出力前に、各デー
タバイトに対して同じ排他的論理和の演算を行わなけれ
ばならない。排他的論理和の数学的特性により、あるバ
イトともうひとつの同じバイトとの排他的論理和が2度
とられる場合に、元の値が確実に保持されていることか
ら、このような演算が行われる。しかし、これで、傍受
者が、安全であるとみなされたバージョン1のコピーを
すでに入手していない限り、変換されたデータバイトか
ら何らかの情報を得ることは確実に不可能になる。図7
は、このより安全性の高い方法を用いてコード化が行わ
れた図4の命令を示している。これで、ADD命令は位
置2を有していることになる。データバイト「x」およ
び「y」は、それぞれ、「c」および「d」と排他的論
理和がとられている。本発明の真の精神および範囲を逸
脱しない限り、多くの代替および変更を行うことが可能
である。特許証による保護を必要とする発明箇所につい
ては、特許請求の範囲に定義されている通りである。
【図面の簡単な説明】
【図1】本発明がコンピュータ間のデータ通信にどのよ
うに用いられるか示す略図である。
【図1A】類推により本発明によって用いられる原理を
示す図のAである。
【図1B】類推により本発明によって用いられる原理を
示す図のBである。
【図1C】類推により本発明によって用いられる原理を
示す図のCである。
【図1D】類推により本発明によって用いられる原理を
示す図のDである。
【図1E】類推により本発明によって用いられる原理を
示す図のEである。
【図1F】類推により本発明によって用いられる原理を
示す図のFである。
【図1G】類推により本発明によって用いられる原理を
示す図のGである。
【図1H】類推により本発明によって用いられる原理を
示す図のHである。
【図1I】類推により本発明によって用いられる原理を
示す図のIである。
【図1J】本発明の機密保護に関する状況を示す図のJ
である。
【図2】データセットの2つのバージョン例とこのバー
ジョンの片方をもう一方のバージョンに変形するための
一連の命令を示す図である。
【図2A】図3に示されている手続きの動作を示す図の
Aである。
【図2B】図3に示されている手続きの動作を示す図の
Bである。
【図2C】図3に示されている手続きの動作を示す図の
Cである。
【図2D】図3に示されている手続きの動作を示す図の
Dである。
【図2E】図3に示されている手続きの動作を示す図の
Eである。
【図2F】図5に示されている手続きの動作を示す図の
Fである。
【図2G】図5に示されている手続きの動作を示す図の
Gである。
【図2H】図5に示されている手続きの動作を示す図の
Hである。
【図3】擬似C言語による復号化手続きである。
【図4】図2の命令を実際にコード化したものである。
【図5】コード化の手続きを示す図である。
【図6】図5で使用されたINSERT手続きを示す図
である。
【図7】図5で使用されたSEARCH手続きを示す図
である。
【図8】図5で使用されたEXTEND手続きを示す図
である。
【図9】図2に例示されたバージョン1およびバージョ
ン2のデータの挿入位置を示す図である。
【図10】図4のコード化された命令の機密保護が考慮
されたバージョンである。付録
───────────────────────────────────────────────────── フロントページの続き (72)発明者 カーム−フォン ヴォー アメリカ合衆国 07922 ニュージャーシ ィ,バークレイ ハイツ,スウェンソン サークル 80

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータにおいて、 a)第二バージョンにアクセスしなくても、第一バージ
    ョンに基づいてバイナリファイルの第二バージョンの復
    元を可能にする命令を作成するプログラム手段から成る
    改良。
  2. 【請求項2】a)連結されたときに第二バージョンを復
    元する文字列を各々が作成する一連の命令を生成する段
    階と、 b)各命令を実行する段階とから成る、第一バージョン
    から導き出されたバイナリファイルの第二バージョンを
    復元する方法。
  3. 【請求項3】デジタルコンピュータの場合、 a) i)第一および第二ファイルを検査し、 ii)第二ファイルを復元するため、実行されたとき
    に、 A)第一ファイルの一部と、 B)第二ファイルへのアクセスを行わずに第二ファイル
    の一部とを結合する一連の命令を作成する第一プログラ
    ム手段から成る改良。
  4. 【請求項4】 第二ファイルの復元を行うために一連の
    命令を実行する第二プログラム手段を具備する請求項3
    に記載の改良。
  5. 【請求項5】a)新規バージョンと旧バージョンとを比
    較し、かつ、 i)新規バージョンが旧バージョンと似ている類似語句
    と、 ii)新規バージョンが旧バージョンと異なる相違語句
    を識別し、 b)旧バージョンに各類似語句が出現しているアドレス
    を記憶し、 c)新規バージョンに出現しているアドレスと共に各相
    違語句を記憶する段階とから成る、コンピュータファイ
    ルの新規バージョンを退避する方法。
  6. 【請求項6】a)第一サイトにおいて、第一ファイルと
    第二ファイルの i)類似と、 ii)相違 を検出する段階と、 b)第二サイトにおいて、第一ファイルのコピーを保持
    する段階と、 c) i)類似の位置と、 ii)相違自体と、 iii)(c)(i)、(c)(ii)、および第二フ
    ァイルに基づく第二ファイルの復元を可能にする情報
    を、第二サイトに送信する段階とから成る情報の復元
    法。
  7. 【請求項7】a) i)新規バージョンの指定位置に旧バージョンの指定部
    分をコピーすることと、 ii)新規バージョンの指定位置に新規バージョンの指
    定部分をコピーすることと、 iii)新規バージョンの指定位置に指定バイトを加え
    ることのうち、1つまたはそれ以上を行うよう指示する
    命令を受信する段階と、 b)命令を実行する段階とから成る、ファイルの旧バー
    ジョンを新規バージョンへ更新する方法。
  8. 【請求項8】a) i) A)第一バージョンまたは第二バージョンの発信元位置
    から、 B)第二バージョンの宛先位置へ、文字がコピーされる
    よう指示するCOPY命令と、 ii)指定文字が第二バージョンの指定位置に加えられ
    るよう指示するADD命令とから成る、並びを導き出す
    手段から成るファイルの第一バージョンと第二バージョ
    ンの相違を表すデータを作成するシステム。
JP7325290A 1994-12-14 1995-12-14 ソフトウエアおよびデータの効率的かつ安全性の高い更新 Withdrawn JPH08255104A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US35588994A 1994-12-14 1994-12-14
US08/355889 1994-12-14

Publications (1)

Publication Number Publication Date
JPH08255104A true JPH08255104A (ja) 1996-10-01

Family

ID=23399225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7325290A Withdrawn JPH08255104A (ja) 1994-12-14 1995-12-14 ソフトウエアおよびデータの効率的かつ安全性の高い更新

Country Status (7)

Country Link
EP (1) EP0717353A3 (ja)
JP (1) JPH08255104A (ja)
CN (1) CN1132372A (ja)
BR (1) BR9505888A (ja)
CA (1) CA2161360A1 (ja)
SG (1) SG34329A1 (ja)
TW (1) TW313643B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040452A1 (ja) * 2002-10-31 2004-05-13 Matsushita Electric Industrial Co., Ltd. データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム
JP2004227520A (ja) * 2003-01-27 2004-08-12 Mitsubishi Electric Corp 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US7886093B1 (en) 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices
US7890464B2 (en) * 2003-06-20 2011-02-15 Innopath Software, Inc. Processing software images and generating difference files

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6137805A (en) * 1997-02-10 2000-10-24 International Business Machines Corporation Method and apparatus to remotely configure a data processing system
US5956402A (en) * 1997-03-07 1999-09-21 At&T Corp. Passwordless secure and efficient remote data update
US6167407A (en) * 1998-06-03 2000-12-26 Symantec Corporation Backtracked incremental updating
US6080207A (en) * 1998-06-04 2000-06-27 Gateway 2000, Inc. System and method of creating and delivering software
GB2342252A (en) * 1998-09-29 2000-04-05 Motorola Gmbh Mobile radio and method of loading data into a radio
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US7958251B2 (en) 2000-08-04 2011-06-07 Goldman Sachs & Co. Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients
US7958025B2 (en) 2000-08-04 2011-06-07 Goldman Sachs & Co. Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects
US7139844B2 (en) 2000-08-04 2006-11-21 Goldman Sachs & Co. Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients
WO2002013091A1 (en) * 2000-08-04 2002-02-14 Goldman, Sachs & Co. System for processing raw financial data to produce validated product offering information to subscribers
US7644125B2 (en) 2000-09-11 2010-01-05 Ianywhere Solutions, Inc. Method, system, and computer program product for synchronization of similar data objects with event information
US20030182414A1 (en) 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
CA2414281C (en) * 2000-11-17 2009-06-02 Bitfone Corporation System and method for updating and distributing information
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
GB2389204A (en) 2002-06-01 2003-12-03 Hewlett Packard Co Updating a trusted information state
US7117507B2 (en) 2002-06-03 2006-10-03 Sumisho Computer Systems Corporation Software atomization
US20040034849A1 (en) * 2002-06-17 2004-02-19 Microsoft Corporation Volume image views and methods of creating volume images in which a file similar to a base file is stored as a patch of the base file
US7281017B2 (en) * 2002-06-21 2007-10-09 Sumisho Computer Systems Corporation Views for software atomization
US7484096B1 (en) 2003-05-28 2009-01-27 Microsoft Corporation Data validation using signatures and sampling
US7457791B1 (en) 2003-05-30 2008-11-25 Microsoft Corporation Using invariants to validate applications states
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
CN1898956B (zh) 2003-12-18 2012-02-22 松下电器产业株式会社 验证和运行应用程序的方法
CN100562096C (zh) 2003-12-18 2009-11-18 松下电器产业株式会社 用于存储、认证以及执行应用程序的方法
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7624021B2 (en) * 2004-07-02 2009-11-24 Apple Inc. Universal container for audio data
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
EP1686463A1 (en) * 2005-01-28 2006-08-02 Matsushita Electric Industrial Co., Ltd. Difference generation method and apparatus
US7496613B2 (en) * 2006-01-09 2009-02-24 International Business Machines Corporation Sharing files among different virtual machine images
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
CN101807207B (zh) * 2010-03-22 2011-10-26 北京大用科技有限责任公司 一种基于内容差异比较的文档共享方法
CN102707964B (zh) * 2012-04-09 2016-04-06 深圳市佳信捷技术股份有限公司 兼容程序版本参数配置方法和装置
CN107027326B (zh) * 2015-11-25 2018-12-07 华为技术有限公司 存储系统中数据备份的方法及装置
WO2017115379A1 (en) * 2015-12-31 2017-07-06 Cyber 2.0 (2015) Ltd. Incrementally polymorphing code for enhanced resistance to reverse engineering
CN111176676B (zh) * 2019-12-17 2024-02-02 航天信息股份有限公司 一种单文件应用程序自动升级方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE513182C2 (sv) * 1991-06-12 2000-07-24 Icl Systems Ab Förfarande och system för att revidera data i ett distribuerat datasystem
JPH07182178A (ja) * 1993-02-19 1995-07-21 Nec Corp プリロードモジュール修正システム
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040452A1 (ja) * 2002-10-31 2004-05-13 Matsushita Electric Industrial Co., Ltd. データ更新システム、データ更新システムの差分データ生成装置及びプログラム、並びに更新後ファイル復元装置及びプログラム
JP2004227520A (ja) * 2003-01-27 2004-08-12 Mitsubishi Electric Corp 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
US7890464B2 (en) * 2003-06-20 2011-02-15 Innopath Software, Inc. Processing software images and generating difference files
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US7886093B1 (en) 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices

Also Published As

Publication number Publication date
TW313643B (ja) 1997-08-21
BR9505888A (pt) 1998-01-06
CN1132372A (zh) 1996-10-02
SG34329A1 (en) 1996-12-06
EP0717353A2 (en) 1996-06-19
CA2161360A1 (en) 1996-06-15
EP0717353A3 (en) 1997-02-05

Similar Documents

Publication Publication Date Title
JPH08255104A (ja) ソフトウエアおよびデータの効率的かつ安全性の高い更新
US4641274A (en) Method for communicating changes made to text form a text processor to a remote host
US5049881A (en) Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5406278A (en) Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
JPS63292365A (ja) 文字処理装置
KR20130062889A (ko) 데이터 압축 방법 및 시스템
GB2379526A (en) A method and apparatus for indexing and searching data
CA3126089C (en) System and method for statistics-based pattern searching of compressed data and encrypted data
US7379940B1 (en) Focal point compression method and apparatus
CN107291574B (zh) 基于解释系统的备份数据恢复主键生成方法
US8244677B2 (en) Focal point compression method and apparatus
JPH10261969A (ja) データ圧縮方法および装置
JP3242795B2 (ja) データ処理装置及びデータ処理方法
JP2001125916A (ja) 情報処理装置
JP3728264B2 (ja) インデックス作成装置、検索システム、及び制御方法
JP3117760B2 (ja) データ復元方式
JP3236747B2 (ja) データ伸長方式
JP3384844B2 (ja) データ圧縮方法および装置並びにデータ復元方法および装置
JP3555506B2 (ja) 文字列データ圧縮符号化装置及び文字列データ復元装置及び文字列データ演算処理装置
JP3132774B2 (ja) データ圧縮・復元装置
JPH09232967A (ja) データ圧縮装置及び復元装置
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JPH05152971A (ja) データ圧縮・復元方法
JP3596696B2 (ja) 情報検索装置
JPH05252049A (ja) データ圧縮処理方式及びデータ復元処理方式

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20030304