(57)【要約】内容の検索を秘密保護し容易に妨害を受けない形態で検索された内容を物理的なメディアへ転写する方法およびシステムである。暗号化され圧縮された内容はインターネットまたは他の通信路を介して一連のサーバから、消費者により検索される。内容が一度局部記憶装置に存在するか、高い転送レートの媒体を通してアクセス可能にされると、クライアント側のソフトウェアが動作する消費者のコンピュータまたは他の機器は、内容の圧縮解除し、消費者コンピュータまたは他の機器のメモリへの内容を再度暗号化するため、およびその後、内容を解読し、消費者のコンピュータまたは他の機器のメモリから一時的に部分的に消費者のコンピュータまたは他のコンピュータ機器のＣＤドライブ内の書込み可能なＣＤへ転送するために１以上のサーバと調和する。このプロセス中、内容の小部分だけが圧縮を解除されて十分に解読された形態で、消費者のコンピュータまたは他のデータ処理機器のメモリ内で現れる。そうでなければ、内容は圧縮され、暗号化の１以上の層により良好に保護される。
2005516278.tif 000002
【特許請求の範囲】
【請求項１】
電子通信媒体を通して情報を消費者へ分配する方法において、
消費者から情報提供のリクエストを受信し、
消費者を識別するためにユーザの識別子を発生し、
ユーザの識別子を消費者のコンピュータへ送信し、
クライアント側のソフトウェアを消費者のコンピュータへダウンロードし、
消費者から情報に対するその後のリクエストを受信したとき、
ユーザを認証し、
暗号化された記述に記載されている１以上の暗号化され圧縮された情報オブジェクトに対して消費者のコンピュータで動作するクライアント側のソフトウェアからリクエストを受信し、
物理的に取外し可能な情報記憶媒体へ秘密保護して書込むために消費者のコンピュータへ１以上の暗号化され圧縮された情報オブジェクトを送信するステップを含んでいる方法。
【請求項２】
ユーザ識別子の消費者のコンピュータへの送信はさらに、消費者のコンピュータのクッキーにユーザ識別子を記憶するステップを含んでいる請求項１記載の方法。
【請求項３】
さらに、クライアント側のソフトウェアを消費者のコンピュータへダウンロードするのに続いて、
クライアント側のソフトウェアを初期化するためにユーザにより初期化ルーチンを呼出し、
初期化ルーチンにより、消費者のコンピュータのコンポーネント内に記憶されている特有の値を集収し、マシン識別子を発生するために暗号化でこれらの値をハッシングし、
マシン識別子とユーザ識別子を消費者のコンピュータからサーバへ送信するステップを含んでいる請求項１記載の方法。
【請求項４】
さらに、マシン識別子とユーザ識別子をサーバにより受信し、
マシン識別子とユーザ識別子からの確認値を計算し、
確認値を消費者のコンピュータへ戻すステップを含んでいる請求項３記載の方法。
【請求項５】
さらに、初期化ルーチンにより局部確認値を計算し、
初期化ルーチンにより、局部確認値をサーバにより初期化ルーチンへ戻される確認値と比較し、
局部確認値がサーバにより初期化ルーチンへ戻される確認値に等しくないならば、エラー状態が生じたことを検出するステップを含んでいる請求項４記載の方法。
【請求項６】
消費者からその後、情報のリクエストを受信したときのユーザの認証はさらに、消費者のコンピュータで動作するクライアント側のソフトウェアによりサーバへ送信される確認値およびユーザアイディアをサーバにより局部的に記憶されたユーザ識別子および確認値と比較することを含んでいる請求項４記載の方法。
【請求項７】
消費者に送信されるリクエストされた情報の暗号化された記述はさらに、
暗号化され圧縮された情報オブジェクトの位置の記述と、
情報オブジェクトの位置付けを物理的な取外し可能な情報記憶媒体へマップするレイアウト情報とを含んでいる請求項１記載の方法。
【請求項８】
物理的な取外し可能な情報記憶媒体へ秘密保護して書込むために消費者のコンピュータに１以上の暗号化され圧縮された情報オブジェクトを秘密保護して送信するステップはさらに、
消費者のコンピュータで動作するクライアント側のソフトウェアにより１以上の暗号化され圧縮された情報オブジェクトを受信し、
消費者のコンピュータで動作するクライアント側のソフトウェアにより、局部暗号化キーを発生し、
それぞれ受信され暗号化され圧縮された情報オブジェクトに対しては、
リクエストされた情報の暗号化された記述中の情報オブジェクトに関連する暗号キーを使用して暗号化され圧縮された情報を圧縮解除し解読し、
圧縮解除され解読された情報オブジェクトを再度暗号化し、再度暗号化された情報オブジェクトをメモリに存在するイメージへ移動し、
メモリに存在するイメージ内の情報オブジェクトを区分的に解読し、解読された情報オブジェクトを物理的な取外し可能な情報記憶媒体に記憶するステップを含んでいる請求項１記載の方法。
【請求項９】
物理的な取外し可能な情報記憶媒体は、
ＣＤ−Ｒと、
ＣＤ−ＲＷと、
書込み可能なＤＶＤと、
秘密保護電子装置内のフラッシュメモリのうちの１つである請求項１記載の方法。
【請求項１０】
分配情報は、
オーディオファイルと、
ビデオファイルと、
コンピュータソフトウェアと、
テキストベースの文献と、
マルチメディアファイルと、
イメージとを含んでいる請求項１記載の方法。
【請求項１１】
請求項１記載の方法により分配される情報を含んでいる物理的な取外し可能な情報記憶媒体。
【請求項１２】
請求項１記載のクライアント側のソフトウェアのためのコンピュータの読取可能な媒体中に符号化されたコンピュータ命令。
【請求項１３】
請求項１記載の方法を実行するコンピュータの読取可能な媒体中に符号化されたコンピュータ命令。
【請求項１４】
コンピュータの読取可能なメモリに記憶されている請求項１記載のリクエストされた情報の暗号化された記述。
【請求項１５】
サーバから圧縮され暗号化された情報オブジェクトをリクエストし、
サーバから圧縮され暗号化された情報オブジェクトを暗号化されたメモリに存在するイメージへ秘密保護して組立て、
情報オブジェクトを物理的な取外し可能な情報記憶媒体へ区分的に解読し書込むクライアント側のソフトウェアプログラムを含んでいる消費者コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル、オーディオ、ビデオメディアのような情報、ソフトウェアプログラムのソースコードを含むソフトウェアオブジェクトコード、テキストメディア、その他のこのような情報の分配に関し、特に、転送された情報を信頼性のない装置および通信媒体に存在しそれに関連するセキュリティリスクへ露出せずに、通信媒体およびパーソナルコンピュータを介して情報をオーディオＣＤ、ＤＶＤ、ソフトウェアを含んだＣＤ−ＲＯＭのような物理的な情報記憶中間媒体へ秘密保護して分配する方法およびシステムに関する。
【背景技術】
【０００２】
本出願はここで参考文献とされる2002年１月23日出願の米国特許出願60/352,475号明細書の利点を主張している。
【０００３】
本発明の１実施形態を実行するプログラムソースコードを含んでいる“コピー１”と“コピー２”として識別される２つの同一のＣＤはコンピュータプログラムのリスト付録として含まれる。プログラムはウィンドウズ（Ｒ）２０００またはウィンドウズＸＰオペレーティングシステムで動作するマイクロソフトビジュアルＣ＋＋バージョン６．０を使用して表示され、編集され、実行される。各ディスクは以下のディレクトリとファイルを含んでいる。  
ｌｃｄ−コードのディレクトリ  
dir    aacdec  
dir    cppunit  
dir    Debug  
dir    ヘッダ  
ファイル名 ファイルサイズ 作成された日／時 
LCD.dsp                  16,144バイト        01/16/2003 12:00 AM  
LCD.dsw                     810バイト        03/03/2002 12:05 PM  
LCD.rc                   28,109バイト        12/04/2002  1:13 AM  
LCD.reg                     737バイト        06/12/2002 11:19 PM  
dir    lcdeng  
dir    lib  
ファイル名 ファイルサイズ 作成された日／時 
Logon.wav                486,188バイト        02/09/2002 12:34 AM  
MakeHelp.bat               1,330バイト        06/12/2002 11:29 AM  
dir    mpglib  
dir    Release  
dir    Res  
ファイル名 ファイルサイズ 作成された日／時 
resource.h                 8,086バイト        12/04/2002  1:13 AM  
dir    Source  
dir    unitTests  
ファイル：  
LCD.dsp  
LCD.dsw  
LCD.rc  
LCD.reg  
Logon.wav  
MakeHelp.bat  
resource.h  
dir  aacdec  
ファイル名 ファイルサイズ 作成された日／時 
aaclib.h                      278バイト        06/22/2002  5:23 PM  
dir  cppunit  
ファイル名 ファイルサイズ 作成された日／時 
0バイト        01/23/2003  2:39 PM  
dir  cppunit＼include  
ファイル名 ファイルサイズ 作成された日／時 
Makefile.am                    87バイト        02/09/2002 12:34 AM  
Makefile.in                10,537バイト        02/09/2002 12:34 AM  
dir    msvc6  
dir  cppunit＼include＼cppunit  
ファイル名 ファイルサイズ 作成された日／時 
config-bcb5.h               1,229バイト        01/09/2002 12:34 AM  
config-msvc6.h              1,266バイト        02/09/2002 12:34 AM  
Exception.h                 1,513バイト        02/09/2002 12:34 AM  
dir  extensions  
ファイル名 ファイルサイズ 作成された日／時 
Makefile.am                   485バイト        02/09/2002 12:34 AM  
Makefile.in                12,131バイト        02/09/2002 12:34 AM  
NotEqualException.h         1,024バイト        02/09/2002 12:34 AM  
dir    lcd-patent-filelist.txt  
ファイル名 ファイルサイズ 作成された日／時 
Portability.h               1,866バイト        02/09/2002 12:34 AM  
Test.h                      1,685バイト        02/09/2002 12:34 AM  
TestAssert.h                4,095バイト        02/09/2002 12:34 AM  
TestCaller.h                4,607バイト        02/09/2002 12:34 AM  
TestCase.h                  3,452バイト        02/09/2002 12:34 AM  
TestFailure.h               1,106バイト        02/09/2002 12:34 AM  
TestListener.h                563バイト        02/09/2002 12:34 AM  
TestRegistry.h              1,016バイト        02/09/2002 12:34 AM  
TestResult.h                3,443バイト        02/09/2002 12:34 AM  
TestSuite.h                 1,545バイト        02/09/2002 12:34 AM  
TextTestResult.h              907バイト        02/09/2002 12:34 AM  
TextTestRunner.h            1,126バイト        02/09/2002 12:34 AM  
dir  cppunit＼include＼cppunit＼extensions  
ファイル名 ファイルサイズ 作成された日／時 
AutoRegisterSuite.h         1,417バイト        02/09/2002 12:34 AM  
HelperMacros.h              9,060バイト        02/09/2002 12:34 AM  
Makefile.am                   314バイト        02/09/2002 12:34 AM  
Makefile.in                 8,419バイト        02/09/2002 12:34 AM  
Orthodox.h                  2,256バイト        02/09/2002 12:34 AM  
RepeatedTest.h                831バイト        02/09/2002 12:34 AM  
TestDecorator.h             1,425バイト        02/09/2002 12:34 AM  
TestFactory.h                 438バイト        02/09/2002 12:34 AM  
TestFactoryRegistry.h       2,263バイト        02/09/2002 12:34 AM  
TestSetUp.h                   704バイト        02/09/2002 12:34 AM  
TestSuiteBuilder.h          2,069バイト        02/09/2002 12:34 AM  
TestSuiteFactory.h            449バイト        02/09/2002 12:34 AM  
TypeInfoHelper.h              727バイト        02/09/2002 12:34 AM  
dir  cppunit＼include＼msvc6  
ファイル名 ファイルサイズ 作成された日／時 
0バイト        01/23/2003  2:39 PM  
dir DSPlugin  
dir testrunner  
dir  cppunit＼include＼msvc6＼DSPlugin  
ファイル名 ファイルサイズ 作成された日／時 
TestRunnerDSPlugin.h         5,575バイト        02/09/2002 12:34 AM  
TestRunnerDSPlugin_i.c       2,073バイト        02/09/2002 12:34 AM  
dir  cppunit＼include＼msvc6＼testrunner
ファイル名 ファイルサイズ 作成された日／時 
TestPluginInterface.h          496バイト        02/09/2002 12:34 AM  
TestRunner.h                 1,447バイト        02/09/2002 12:34 AM  
dir  Debug  
ファイル名 ファイルサイズ 作成された日／時 
0バイト        01/23/2003  2:39 PM  
dir  Header  
ファイル名 ファイルサイズ 作成された日／時 
AlbumDetails.h              1,365バイト      01/06/2003  2:39 PM  
BurnThread.h                  831バイト      08/19/2002  8:55 PM  
cdbar.h                     1,704バイト      06/12/2002 11:20 PM  
ContentDescription.h        2,756バイト      01/23/2003  1:58 PM  
ConvertThread.h             1,349バイト      10/09/2002 10:46 PM  
DDC.H                       1,539バイト      12/07/2001  1:24 AM  
DiscBar.h                   1,660バイト      06/23/2002  7:35 PM  
DiscListCtrl.h              1,791バイト      08/17/2002  9:18 PM  
Drvedialog.h                1,715バイト      10/13/2002  5:07 PM  
HttpFile.h                  1,420バイト      10/09/2002 10:46 PM  
InitDialogBar.h             2,006バイト      06/12/2002 11:29 PM  
killconversiondlg.h         1,386バイト      10/09/2001 10:46 PM  
Label.h                     3,434バイト      08/25/2002  7:07 PM  
labelpreview.h              1,393バイト      12/04/2002  1:13 AM  
LabelPrinter.h              1,392バイト      01/06/2003 12:28 AM  
LCD.h                       4,531バイト      10/11/2002  4:36 PM  
ListBoxST.h                 4,318バイト      09/03/2002  4:18 PM  
mainframe.h                 4,973バイト      12/03/2002  3:13 AM  
md5.h                       2,970バイト      06/11/2002 12:23 AM  
MemDC.h                     2,836バイト      06/22/2002  5:27 PM  
msxml.tlh                  59,584バイト      11/29/2001 11:43 PM  
msxml.tli                  54,054バイト      11/29/2001 11:43 PM  
multithread.h               2,077バイト      10/12/2002  6:03 PM  
PictureDialog.h             1,458バイト      02/21/2002  9:47 PM  
propertyrecord.h            1,455バイト      08/19/2002  8:55 PM  
propertytemp.h              1,450バイト      06/28/2002 10:10 PM  
queuebar.h                  1,427バイト      08/19/2002 10:09 PM  
RecordAudio.h                 427バイト      05/31/2002  9:04 PM  
RIFF.H                      6,662バイト      05/30/2002  2:53 AM  
SampleRateConverter.h       1,811バイト      06/22/2002  5:26 PM  
Splasher.h                  2,053バイト      08/17/2002  9:18 PM  
StatusDlgBar.h              2,273バイト      10/12/2002  6:03 PM  
StdAfx.h                    2,833バイト      10/12/2002  6:03 PM  
TaskQueue.h                 1,194バイト      10/11/2002  4:35 PM  
tempdrv.h                     395バイト      06/22/2002  5:26 PM  
TimeRemaining.h             1,850バイト      10/12/2002  6:03 PM  
TKAppAudio.h                  641バイト      05/31/2002  9:04 PM  
tkapplogdlg.h               1,546バイト      06/08/2002 10:51 PM  
TKAppUserDlg.h              2,755バイト      10/04/2002  3:13 PM  
TKInterface.h               2,655バイト      05/31/2002  9:04 PM  
TKUl.h                          0バイト      05/31/2002  9:04 PM  
Track.h                     3,194バイト      11/04/2002 12:08 AM  
TrackDecode.h               1,104バイト      04/17/2002  9:47 PM  
twofish.h                     577バイト      05/30/2002  2:53 AM  
UIOptions.h                   518バイト      10/13/2002 12:31 PM  
waitdialog.h                1,258バイト      10/13/2002  5:07 PM  
XComboList.h                2,669バイト      06/22/2002  5:26 PM  
XHeaderCtrl.h               2,773バイト      06/22/2002  5:26 PM  
XListCtrl.h                 8,609バイト      10/09/2002 10:46 PM  
dir  lcdeng  
ファイル名 ファイルサイズ 作成された日／時 
lcdeng.dsp                  3,622バイト      04/24/2002 10:28 PM  
dir  Release  
ファイル名 ファイルサイズ 作成された日／時 
LCD.res                  1,160,908バイト      01/08/2003  2:31 PM  
dir  lib  
ファイル名 ファイルサイズ 作成された日／時 
cpunit.lib                 254,818バイト      02/09/2002 12:34 AM  
testrunner.dll              65,536バイト      02/09/2002 12:34 AM  
testrunner.exp              13,812バイト      02/09/2002 12:34 AM  
testrunner.lib              23,822バイト      02/09/2002 12:34 AM  
testrunnerd.dll            192,588バイト      02/09/2002 12:34 AM  
testrunnerd.lib             23,880バイト      02/09/2002 12:34 AM  
TestRunnerDSPlugIn.dll      36,864バイト      02/09/2002 12:34 AM  
dir  mpglib  
ファイル名 ファイルサイズ 作成された日／時 
mp3lib.h                       258バイト      06/22/2002  5:23 PM  
dir  Release  
ファイル名 ファイルサイズ 作成された日／時 
0バイト      01/23/2003  2:39 PM  
dir  Res  
ファイル名 ファイルサイズ 作成された日／時 
checkboxes.bmp               1,846バイト      06/22/2002  5:27 PM  
ContentDescription.ico       1,078バイト      06/12/2002 11:29 PM  
latestlogo.bmp             280,742バイト      06/09/2002  9:41 PM  
LCD.ico                      1,078バイト      05/19/2002  5:57 PM  
LCD.rc2                        395バイト      11/29/2001  3:08 PM  
lcdlogo.bmp                802,054バイト      05/19/2002  5:57 PM  
dir  Source  
ファイル名 ファイルサイズ 作成された日／時 
AlbumDetails.cpp             3,056バイト      01/06/2003 12:28 AM  
BurnThread.cpp               2,357バイト      10/09/2003 10:46 PM  
CDBar.cpp                   12,046バイト      06/12/2002 11:29 PM  
ContentDescription.cpp      21,847バイト      01/23/2003  2:01 PM  
ConvertThread.cpp            2,701バイト      10/09/2002 10:46 PM  
Cookie.cpp                  18,639バイト      06/22/2002  5:26 PM  
CookieManager.cpp            8,094バイト      03/03/2002 12:19 PM  
CookieUtil.cpp               1,130バイト      03/03/2002 12:19 PM  
DDCRET.CPP                   1,091バイト      11/29/2001 11:42 PM  
DiscBar.cpp                  1,823バイト      10/09/2002 10:46 PM  
DiscListCtrl.cpp             5,330バイト      09/03/2002  4:18 PM  
Drive.cpp                   13,747バイト      03/03/2002 12:19 PM  
drivedialog.cpp              6,301バイト      10/13/2002  5:07 PM  
ffsg_fl.cpp                 72,743バイト      02/09/2002 12:34 AM  
HttpFile.cpp                14,053バイト      11/05/2002 11:29 AM  
InitDialogBar.cpp            2,700バイト      06/12/2002  4:36 PM  
killconversiondlg.cpp        4,060バイト      10/11/2002  4:36 PM  
Label.cpp                   30,974バイト      08/25/2002  7:07 PM  
labelpreview.cpp             1,086バイト      12/04/2002  1:13 AM  
LabelPrinter.cpp            17,478バイト      01/08/2003  3:33 AM  
LCD.cpp                     27,747バイト      10/16/2002  8:46 AM  
ListBoxST.cpp               24,614バイト      09/03/2002  4:18 PM  
mainframe.cpp               28,042バイト      12/04/2002  1:13 AM  
md5.cpp                     15,139バイト      08/21/2002  8:53 PM  
multithread.cpp              2,468バイト      10/11/2002  4:36 PM  
PictureDialog.cpp            4,112バイト      03/13/2002  2:08 AM  
propertyRecord.cpp           2,271バイト      08/19/2002  8:55 PM  
propertytemp.cpp             4,899バイト      08/17/2002  9:18 PM  
queuebar.cpp                 1,609バイト      08/19/2002 10:09 PM  
RecordAudio.cpp              6,110バイト      06/22/2002  5:26 PM  
RIFF.CPP                    23,025バイト      05/30/2002  2:53 AM  
SampleRateConverter.cpp     78,654バイト      06/22/2002  5:26 PM  
Splasher.cpp                 9,458バイト      08/17/2002  9:18 PM  
StatusDlgBar.cpp             4,834バイト      10/13/2002  1:57 PM  
StdAfx.cpp                     205バイト      11/29/2001  3:08 PM  
TaskQueue.cpp                4,385バイト      01/23/2003  1:57 PM  
tempdrv.cpp                  2,899バイト      10/02/2002  8:30 AM  
TimeRemaining.cpp            5,275バイト      10/12/2002  6:03 PM  
TKAppAudio.cpp               9,848バイト      05/31/2002  9:04 PM  
tkapplogdlg.cpp              9,162バイト      06/07/2002  9:46 PM  
TKAppUserDlg.cpp            21,356バイト      10/02/2002  8:31 AM  
TKInterface.cpp             11,384バイト      08/17/2002  9:18 PM  
TKUl.cpp                     8,674バイト      10/09/2002 10:46 PM  
Track.cpp                   11,384バイト      11/04/2002 12:08 AM  
TrackDecode.cpp              2,889バイト      04/17/2002  9:47 PM  
twofish.cpp                  4,255バイト      03/09/2002  3:11 PM  
UIOptions.cpp                  549バイト      10/13/2002 12:31 PM  
waitdialog.cpp               1,403バイト      10/13/2002  5:07 PM  
XComboList.cpp               9,995バイト      06/22/2002  5:26 PM  
XHeaderCtrl.cpp             10,619バイト      06/22/2002  5:26 PM  
XListCtrl.cpp               58,477バイト      10/09/2002 10:46 PM
本発明は取外し可能な物理的な情報記憶媒体に記憶するため消費者へのデジタル的に符号化された情報の送信に関する。本発明はサーバとクライアントコンピュータとの間で秘密保護された通信をするために暗号方法を使用し、暗号技術の基本的背景は第１のサブセクションで以下説明する。本発明の一般的な背景は第２のサブセクションで説明する。
【０００４】
［暗号背景］  
本発明は、管理上のコンソールまたはホスト、遠隔的なエージェント間で秘密保護された通信をするために暗号方法を使用する。このサブセクションでは、使用される基本的な暗号方法を一般的な用語で説明する。暗号は平文の情報を権利のないエンティティにより容易に復号されることができない符号化された情報へ変換するように設計されている。例えば、平文のメッセージは英語の文章を含んでいてもよい。この平文のテキストメッセージは任意の種々の暗号化関数Ｅにより容易に翻訳できない対応する暗号テキストメッセージへ暗号化されることができる。権利を有するユーザにはそのユーザが暗号テキストメッセージを本来の平文メッセージへ解読することを可能にする解読関数Ｄが与えられる。
【０００５】
基本的な暗号方法は以下の定義を使用して説明されることができる。  
Ａｍ＝メッセージのアルファベット＝｛ａｍ１，ａｍ２，ａｍ３，．．．ａｍｎ｝  
Ａｃ＝暗号−テキストのアルファベット＝｛ａｃ１，ａｃ２，ａｃ３，．．．ａｃｎ｝  
Ｍ＝メッセージ−スペース＝ａｍのストリング  
Ｃ＝暗号−テキストスペース＝ａｃのストリング  
Ｋ＝キースペース＝｛ｅ１，ｅ２，．．．ｅｎ｝ここでＥｅ１（ｍ）→ｃ
＝｛ｄ１，ｄ２，．．．ｄｎ｝ここでＤｄ１（ｄ）→ｍ  
平文メッセージはメッセージスペースＭ内に含まれるメッセージのインスタンスであり、暗号テキストメッセージは暗号テキストスペースＣ内に含まれる暗号テキストメッセージのインスタンスである。平文メッセージはメッセージアルファベットＡｍから選択された１以上の文字のストリングを含み、暗号−テキストメッセージは暗号−テキストアルファベットＡｃから選択された１以上の文字のストリングを含んでいる。各暗号化関数Ｅはキーｅを使用し、各解読関数Ｄはキーｄを使用し、ここでキーｅとｄはキースペースＫから選択される。  
キーペアは以下のように規定される。  
キーペア＝（ｅ，ｄ）  
ここでｅ∈Ｋ、ｄ∈Ｋ、Ｄｄ（Ｅｅ（ｍ））＝ｍ、ｍ∈Ｍである。  
キーペアの１つのキーｅは暗号化関数Ｅにより暗号テキストへのメッセージを暗号化するために暗号化中に使用され、キーペアの他方のキーｄは解読関数Ｄにより暗号−テキストメッセージから平文メッセージを再生するために使用されることができる。
【０００６】
公共キー暗号方法は全てのキーペア（ｅ、ｄ）に対して関数ｆ（ｅ）＝ｄが容易に決定されることができない特性を有するキーペア（ｅ，ｄ）を使用する暗号化／解読技術である。したがって、公共キーペアの対応する解読キーｄは暗号化キーｅから決定されることができないので、公共キーペア（ｅ，ｄ）の暗号化キーｅは自由に分配されることができる。公共キー暗号化のよく知られた例はＲＳＡ暗号化方式である。ＲＳＡ方式は、以下のように、２つの素数ｐとｑの積を表す大きい整数ｎにより、平文および暗号テキストメッセージから発生された大きい数字の整数割算を使用する。  
Ｅ（ｍ）＝ｍｅｍｏｄ  ｎ  
Ｄ（ｃ）＝ｃｄｍｏｄ  ｎ  
ｅｄ  ｍｏｄ（ｐ−１）（ｑ−１）＝１  
ｎ＝ｐｑ  
したがって、平文テキストメッセージは大きい数字であるメッセージの文字の全ての数的表示を考慮し、大きい数字を暗号化キーｅに等しい累乗へ上げた結果を計算し、その結果をｎにより割算し、割算の余りを暗号化されたメッセージとして使用することにより暗号化される。暗号の解読は同一のプロセスを使用し、解読キーｄに等しい累乗へ暗号化テキストメッセージを上げ、余りを考慮することにより暗号−テキストメッセージを再生し、その後、数字的に表され、符号のストリングとしてｎにより割算する。
【０００７】
デジタル署名はメッセージの認証に使用されることができるメッセージから発生される値である。デジタル署名スペースＳはメッセージスペースＭから選択されるメッセージに対して適用される特定のデジタル署名アルゴリズムに対する全ての可能なデジタル署名を含んでいる。デジタル署名の生成はメッセージに適用される秘密保護して保持されたデジタル署名発生関数ＳＡを含んでいる。  
ＳＡ（ｍ）→ｓ  
デジタル署名ｓはデジタル署名が発生されるメッセージｍと共に受取人へ送信される。受取人はデジタル署名がメッセージを認証するか否か、換言するとメッセージは署名者により構成され、その間に変更されていないか否かを決定するために公共証明関数ＶＡを使用する。したがってＶＡは次式のように表されることができる。  
ＶＡ（ｍ，ｓ）→｛ｔｒｕｅ，ｆａｌｓｅ｝  
ここで、結果「真」はメッセージｍがデジタル署名ｓを提供した署名者により構成されたことを示している。
【０００８】
デジタル署名システムは以下規定されているように、可逆性の公共キー暗号化システムから生成されることができる。  
全てのｍに対して、Ｄｄ（Ｅｅ（ｍ））＝Ｅｅ（Ｄｄ（ｍ））  
ここで、メッセージスペースＭ＝暗号スペース、Ｃ＝デジタル署名スペースＳである。デジタル署名生成関数ＳＡは以下のように選択されることができ、
ＳＡ＝Ｄｄ 
それによって、Ｓ＝Ｄｄ（ｍ）  
確認関数ＶＡはその後、以下のように選択されることができる。  
【数１】
2005516278.tif 000003
【０００９】
したがって、公共キー暗号化技術はメッセージがデジタル署名を提供するパーティにより送信されたことを証明するためにデジタル的に署名されたメッセージの受取人により次に使用されることができるデジタル署名の生成に使用されることができる。
【００１０】
通常、デジタル的に全体的な短いＥメールメッセージを署名することが実行可能であるが、実行可能なイメージのような多量のデータをデジタル的に署名するのには効率的ではない。実行可能なイメージのような多量のデータをデジタル的に署名するさらに効率的な方法は最初に多量のデータをハッシュ値にデジタル的にハッシュし、その後デジタル的にハッシュ値を署名することである。データ入力スペースで共に比較的近いデータ入力から発生されたハッシュ値間のハッシュ値スペースで大きい距離を発生する方法により多量のデータから比較的小さいハッシュ値を発生する効率的なハッシュ関数が必要とされる。換言すると、入力データに対する小さい変化はハッシュ値スペースで発生されたハッシュ値を広く分散すべきであり、それによってハッシュ関数は組織的に導出されることができない。この目的で広く使用されるハッシュ関数の１例はＵＲＬにより特定されるウェブサイトhttp://www.itl.nist.gov/fipspubs/fip180-1.htmで得られる秘密保護ハッシュ標準により特定される秘密保護ハッシュアルゴリズム（“ＳＨＡ−１”）である。ＳＨＡ−１の秘密保護ハッシュアルゴリズムは長さが２６４ビットよりも短い任意の長さのデータファイルからメッセージダイジェストと呼ばれる１６０ビットのハッシュ値を発生する。ＳＨＡ−１アルゴリズムは与えられたメッセージダイジェストに対応するメッセージを発見するか同一のメッセージダイジェストを発生する２つの異なるメッセージを発見するのに計算上実行可能ではないので、秘密保護ハッシュである。
【００１１】
対称的なキーの暗号化では、暗号化されたメッセージの送信者と受信者の両者は同一のシークレットキーを使用する。例えばシークレットキーがワード“ａｐｐｌｅｓａｕｃｅ”であるならば、式は以下のようになる。  
暗号−テキスト＝暗号化（クリア−テキスト“ａｐｐｌｅｓａｕｃｅ”）  
クリア−テキスト＝解読（暗号−テキスト“ａｐｐｌｅｓａｕｃｅ”）
通常使用されるキーは長くてランダム化されているビットストリングである。キーの長さは特別な対称暗号により決定される。キーの二進値はその値が十分に予測不能であることを保証するために構成されるプロセスによって生成される。
【００１２】
対称暗号は２つの基本的なタイプ、即ち（１）ブロック暗号、（２）ストリーム暗号である。ブロック暗号は単一の固定したサイズのブロックを一度に暗号化または解読する。ブロックのサイズは特別なブロック暗号により規定されている。ストリーム暗号は暗号化するためのクリア−テキスト、または解読するための暗号−テキストにより排他的ＯＲ処理される二進値のシーケンスを発生する。ストリーム暗号により発生される各二進値のサイズは特別なストリーム暗号により規定される。
【００１３】
対称キー暗号化は高速度で実行される。セキュリティと性能の理由で、対称暗号は非常に高くランク付けする。任意の機密の高容量データの交換では、対称キー暗号はその高い性能のために好ましい選択である。
【００１４】
［一般的な背景］  
過去１００年間、膨大な科学的、技術的、商用的な努力が通信媒体を介して情報を交換する方法およびシステムを開発し改良するために注がれた。多くの早期の通信媒体が非常に多量の情報の交換を行い続けている。これらの通信媒体は電話機通信、無線放送、テレビジョン放送を含んでいる。対照的に、レコードのような多数の古い形態の物理的情報記憶装置はコンパクトディスク（“ＣＤ”）を含む新しい情報記憶媒体により多くは取って代わられている。同様にフロッピー（Ｒ）ディスクはもっと新型のモデムＣＤ−ＲＯＭディスクにより、大部分置換されている。
【００１５】
情報のアナログ送信および記憶から、情報のデジタル送信および記憶への移行は古いアナログ通信媒体の基本的な改良を表し、情報のデジタル記憶および送信は新しいタイプの通信媒体で主要な基盤である。デジタル情報の送信および記憶は多くの利点を有する。デジタル情報の送信および記憶の１つの最も大きな利点は、アナログデータの送信および再生に付随する深刻な情報劣化および損失がなく、情報がさらに確実に送信され、記憶され、コピーされることができることである。デジタル情報記憶の別の利点はデジタル情報の基本単位が全てのタイプのデジタルの物理的媒体とデジタル情報表示および提示装置に共通であることである。例えば、インターネットを介して送信されたバイトストリーム中で符号化されたデジタル情報は、多数の異なるタイプの情報提示および表示装置でその後提示および表示するため、任意の数の異なる物理的なデジタル情報記憶媒体へ容易に符号化されることができる。対照的に、アナログのビニルレコードに記憶された情報はレコード装置内に埋設されたレコード針によってのみ確実に経済的にアクセスされることができる。
【００１６】
インターネットは任意の種類のデジタル的に符号化された情報を事実上分配するための人気のある手段になっている。Ｎａｐｓｔｅｒ、Ｇｎｕｔｅｌｌａおよび他のピア・ツゥ・ピアファイル共有システムの登場は高品質のオーディオ圧縮ツールおよび比較的大きい帯域幅と組合わせて、個人が音楽を取引することを容易にしている。これらの分配システムはＣＤ製造業者、音楽放送業者、ミュージシャンを含む伝統的な音楽の分配業者で大きな論争と関心を生んでいる。コンピュータ技術のその他の進歩により、一度だけ書込み可能なＣＤ−Ｒおよび繰返し再書込み可能なＣＤ−ＲＷを含めた種々のタイプのＣＤに多量のデジタル的に符号化された情報を記憶することを可能にするＣＤライターがパーソナルコンピュータに装備されることが実行可能および利用可能である。これらの装置もまたしばしばオーディオＣＤを書出すためのソフトウェアを取付けられる。重要な標準的フォーマットであると考えられている広範囲のＣＤプレーヤによりサポートされるＲｅｄ  Ｂｏｏｋ  Ａｕｄｉｏにより種々のオーディオＣＤフォーマットが現在使用されている。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
これらの技術的進歩の組合わせはアーティストおよび／または著作権保持者に補償金が支払われないで、合理的に技術を認知しているエンドユーザが音楽を不法にダウンロードしオーディオＣＤを作成することを可能にする。不法に作成されたオーディオＣＤはオリジナルＣＤと比較して比較的限定された品質であり、不法にコピーした人は著作権侵害を伴う危険性をもつが、音楽のファイルは料金の支払いなく得られるので、不法の音楽のダウンロードは現在音楽を得るための普及している方法である。同様に、ＤＶＤ書込み器機、高速度コンピュータ、高速度インターネット接続により、音楽ビデオ、テレビジョンプログラム、映画、その他の類似のメディアのダウンロードを含めたビデオ内容が不法にダウンロードされアクセスされることを可能にする。ソフトウェアの著作権侵害は数十年間、少なくともパーソナルコンピュータの登場以来、煩ってきたことである。類似の問題は、通信媒体および／または物理的な情報記憶媒体により交換される任意のタイプのデジタル内容に悩まされることが予測される。
【００１８】
前述の技術の進歩の結果として内容の不法の分配が容易になったために、音楽産業は直接的な内容分配手段としてインターネットを使用する販売方法を採択せざるを得なくなった。パーソナルコンピュータはますます廉価になり、ますますデジタル的に符号化された情報の有能な複製器および／または送信機になる。デジタル的に符号化された情報がパーソナルコンピュータで再生できることが容易であることにより、悪徳な人にはもとの内容プロバイダに収益を与えずに内容を多く再生し、再生された内容を分配する能力が与えられる。
【００１９】
特定のコンピュータでのみアクセスするように内容をロックする任意の数の提案が行われている。多くのこれらの提案の目的は内容へのアクセスを制限し、内容が使用される方法を制限することである。しかしながら、これらの提案は、結果的に消費者が音楽を聞くことを望み、映画を鑑賞することを望み、そうでなければデスクトップコンピュータで専用にそうするように限定されるのではなく選択する方法で内容を楽しみたがる事実を無視している。例えば消費者は通常、ステレオ、ブームボックス、または自動車に取付けられたＣＤプレーヤで音楽を再生する。同様に、ビデオは典型的にテレビジョンで再生する。それ故、特定のコンピュータでアクセスするように内容をロックする多くのこれらの方式および提案は消費者にとって市場で実行可能な内容アクセス方法を生成しない。
【００２０】
物理的なＣＤおよびＤＶＤはデジタル的に符号化された情報が消費者により得られる普及した媒体であるが、オーディオＣＤの製造業者はインターネットおよびパーソナルコンピュータを介して録音された音楽の不法なコピーおよび送信の結果として、過去数年間、ＣＤの売上の急峻な下降に気づいている。さらに、ＣＤおよびＤＶＤが分配される現在の方法は労力とエネルギがかかり、情報のデジタル送信と比較するとコストが比較的高くなる。例えば図１を考察すると、音楽の録音から消費者が録音された音楽を獲得するまでの過程の種々の段階が示されている。図１に示されているように、音楽は通常、録音スタジオ101で物理的なメディアへ録音され、その後企業サイト103へ自動車またはトラックにより輸送され、そこで録音された音楽がさらに製造のために編集され、コンパイルされ、パッケージされる。パッケージされた録音された音楽はその後、物理的に製造設備104へ転送され、ここではオーディオＣＤの場合には、パッケージされ録音された音楽は録音された音楽の数千または数百万のコピーを個々のＣＤへスタンプするために使用される原盤（マスター）の生成に使用される。これらのＣＤはその後、トラック105により種々の分配設備106へ輸送され、そこからこれらは再びトラック107により種々の小売店108へ輸送される。ＣＤを獲得するため、消費者は通常、自動車109または公共の輸送機関により小売店108へ行き、ＣＤのラックを探して、ＣＤを購入し、自動車または公共の輸送機関により消費者の自宅110へ戻る。過去数年間、あるこれらの経路に対する代替が現われている。例えば、消費者はインターネットによりＣＤを購入および注文する。ＣＤは郵便によって消費者へ転送される。したがって、小売店108は消費者がインターネットによりＣＤを購入するとき経路から除去される。しかしながらこのような改良にかかわらず、ＣＤの製造および分配は比較的労力がかかり、エネルギを消費する。これらの理由で、情報および内容の作成者、提供業者、分配業者は、労力がかからず、エネルギが効率的な方法で、および悪徳な人およびグループがその内容を不法に再生して販売することを防止するような方法で、確実に秘密保護して情報および内容を消費者へ送信する必要性を認識している。
【課題を解決するための手段】
【００２１】
本発明の１実施形態は、内容の検索を秘密保護し容易に妨害を受けない形態で検索された内容を物理的な媒体へ転写する方法およびシステムを提供する。暗号化され圧縮された内容はインターネット、私設ネットワーク、他の通信メディアを介して一連のサーバから、または消費者により情報記憶媒体から検索される。内容の転送レートは限定されているので、内容はその後のステップ中での迅速な処理を促すため、最初に消費者のコンピュータ、別のデータ処理器機、または商用のキオスクに局部的に記憶されることができる。内容が一度局部記憶装置に存在するか、高い転送レートの媒体を通してアクセスされると、クライアント側のソフトウェアが動作する消費者のコンピュータ、別のデータ処理器機或いは商用のキオスクは内容の圧縮を復元し、再度暗号化し、一時的に消費者のコンピュータの揮発性メモリまたは他のデータ処理器機へ記憶するため、およびその後、内容を解読し、消費者のコンピュータまたは他の機器のメモリからＣＤ−Ｒ、ＣＤ−ＲＷまたは他の物理的な情報記憶媒体へ転送するために１以上のサーバと調整する。このプロセス中、小部分の内容だけが圧縮を解除された十分に解読された形態でまたはクリアな形態で、消費者のコンピュータのメモリまたは他のデータ処理機器のメモリ内で現れる。そうでなければ、内容は圧縮され、暗号化の１以上の層により良好に保護される。したがって悪徳な、または不正なユーザが内容を盗聴し、再度不法なコピーに組立てることは非常に困難であり、恐らく不可能である。内容はさらに物理的な媒体への内容の転送中に種々の回数適用されることのできる広範囲の盗難防止およびコピー保護方式を使用して、消費者のコンピュータと相互接続される入力／出力（“Ｉ／Ｏ”）装置を介して書き込まれることができる物理的なＣＤまたは他のこのような物理的情報記憶媒体で保護されることができる。
【発明を実施するための最良の形態】
【００２２】
本発明の１実施形態は、インターネット、物理的媒体を含むその他の通信媒体または他の情報転送媒体を介してユーザへ情報および内容を転送し、転送された情報および内容をＣＤ、ＤＶＤ、ＣＤ−ＲＯＭ、または他の物理的なデータ記憶媒体のような種々の異なる物理的データ記憶媒体の１つへ供給する方法およびシステムに関する。情報および内容は秘密保護して転送され、それによって情報および内容発生者、プロバイダ、分配業者は転送された情報および内容を受信するユーザがその後受信された情報および内容をコピーし他者へ分配しないことを確実にすることができる。この方法およびシステムは情報および内容を受信する消費者が受信された情報および内容に対して便宜的に支払いをする手段も提供する。
【００２３】
本発明の利点は、オーディオＣＤでオーディオ内容を分配する場合、図２と前述の図１とを比較することにより容易に見分けられる。図２は本発明の１実施形態を示している。図２では、企業サイトまたは分配サイト202のファイルサーバに記憶されている情報は電話線204により図２に表されているインターネットを介して電子的に消費者の住居206へ転送される。情報は消費者のコンピュータ208により受信され処理され、ＣＤ−ＲまたはＣＤ−ＲＷ210のような物理的なデータ記憶媒体に書込まれる。図２を図１と比較すると、本発明は消費者が音楽のプロバイダから物理的なオーディオＣＤを受信できるさらに直接的で便利なルートを提供する。勿論、消費者はブランクの書き込み可能なＣＤを購入する必要があるが、ユーザは一度だけ買い物に出かけるかまたは一度のインターネット仲介トランザクションで比較的廉価で数百のこのような書込み可能なＣＤを購入できる。しかしながら、消費者がもはや自分自身で小売店へ出かける必要はなく、ＣＤ製造設備または分配センタの必要はなく、もはやオーディオＣＤの労力がかかりエネルギを消費する物理的な分配の必要はない。重要なことに、情報および内容プロバイダは、情報および内容が権限および補償金なしに再生され分配される消費者コンピュータにクリア形態で存在するのではなく、物理的な情報記憶媒体に分配されることを確実にされる。
【００２４】
図３乃至６は本発明のオーディオＣＤ実施形態を共に示すフロー制御図およびデータ構造図である。本発明をオーディオＣＤ実施形態に関して説明するが、本発明は情報および内容プロバイダから消費者へ転送される特定のタイプの情報または内容にどんな方法によっても限定されず、また情報および内容が情報および内容プロバイダから消費者へ転送された後に永久的に記憶される特定のタイプの物理的な媒体にどんな方法であっても限定されないことを意図していることに注意すべきである。多数の異なるタイプの情報および内容が本発明にしたがって市場で実行可能に送信されることができ、送信された情報は将来利用可能である多数の異なるタイプの現在の利用可能な物理的媒体に記憶されることが予測される。
【００２５】
図３は、パーソナルコンピュータまたは他の電子機器を介してサーバにアクセスする消費者またはユーザがサーバにより識別され権利を与えられ、ユーザが物理的媒体においてサーバにより与えられた情報および内容を選択し、受信し、記憶することを可能にするクライアント側のソフトウェアを受信する多数の異なる可能な方法の１つを示すフロー制御図である。以下の説明では、１以上のユーザとパーソナルコンピュータまたは他のこのようなコンピュータ機器の組み合わせはしばしば集合的に“クライアント”と呼ばれていることに注意する。時には、クライアントのコンピュータ部分が強調されるとき、用語“クライアントコンピュータ”が使用される。図３では、図面の左部分302はクライアントで行われた事象およびアクティビティに対応し、図面の右部分304はサーバで行われた事象およびアクティビティに対応している。用語“サーバ”は単一のサーバ、または共にインターネットを介してコンピュータの集合にアクセスするクライアントへサーバインターフェースを提供するデータベースサーバおよび他のコンピュータを含めたサーバと他のコンピュータの集合を意味することに注意すべきである。クライアント側の種々のステップは伝統的なフロー制御図の表示において一方方向の矢印により共にリンクされている。しかしながら図面のサーバ部分304のステップはそのようにリンクされておらず、通常、サーバは単にクライアントのリクエストに応答することを示している。換言すると、クライアントは段階的な方法で全体のプロセスを駆動し調整するが、サーバは通常、サーバにアクセスする１以上のクライアントからのディスクリートなリクエストに応答するために十分なコンテキストだけを維持する。図３およびその後のフロー制御図では、水平矢印306のような水平の矢印はインターネットを介する情報の転送を示している。
【００２６】
ステップ308では、ユーザはサーバにより許可されるようになるためにサーバにより提供されたウェブページをアクセスし、サーバからクライアント側のソフトウェアを受信し、クライアントが情報および内容をサーバから受信することを可能にする。ステップ310では、サーバは新しいユーザによるアクセスを表しているとしてそのアクセスを識別し、新しいユーザＩＤをそのユーザに割当て、サーバによりクライアントに割当てられたユーザＩＤを含んでいるクッキーをクライアントコンピュータへ位置させる。サーバはまた１以上のウェブページをこれらの最初の幾つかのステップ中に提供し、ユーザを識別して、ユーザがアクセスの許可を求めているサービスのレベルおよびタイプを確認するためにサーバに有効な情報をユーザが提供することを可能にする。多数の異なるタイプの相互動作およびサービスが異なる実施形態で提供されるので、これらの詳細は簡潔にするために省略される。サーバは通常、クライアントが実際に新しいユーザであることを確実にするためのチェックを行い、この段階中に、ユーザが十分に明白なクレジットの格付けを有し、過去の不正または悪用のためにサービスの使用を禁じられていないことを確実にするための種々の確認および許可ステップを行うことにも注意すべきである。ステップ312で、サーバはクライアント側のソフトウェアを新しいユーザへ送信する。ステップ314で、クライアントはサーバからクライアント側のソフトウェアを受信し、適切にそれを局部記憶装置に位置させ、クライアント側のソフトウェアを使用する準備をするためのセットアップルーチンまたはその他の初期化ルーチンを実行する。
【００２７】
ステップ316で、セットアッププログラムは、特有のプロセッサ識別子およびクライアントコンピュータに埋設されたその他の値のような多数の特有でマシンに特定のパラメータをクライアントコンピュータから検索し、マシンＩＤを形成するためにこれらのマシンに特定のパラメータを共に暗号的にハッシュする。その後、ステップ318では、セットアッププログラムはサーバへの秘密保護ソケット層（“ＳＳＬ”）リンクを設定し、サーバによりクッキーのクライアントコンピュータにもともと記憶されたユーザＩＤとコンピュータ処理されたマシンＩＤをサーバへ送信する。サーバはステップ320で、クライアントからユーザＩＤとマシンＩＤを受信し、これらの値から別の暗号ハッシュを介して確認値を計算し、これをサーバがクライアントへ戻す。ステップ322で、クライアントはサーバから確認値を受信し、確認値を計算するためにサーバにより使用される同一のアルゴリズムを使用して局部的に確認値を独立して計算する。ステップ324で、セットアッププログラムはサーバから受信された確認値を局部的に計算された確認値と比較する。局部的に計算された確認値がサーバから受信された確認値に等しいならば、クライアントはクライアントレジストリに登録し、そうでなければステップ326で確認値を局部的に記憶し、それによってクライアントはログインのためおよび種々のタイプのトランザクション中にクライアントのアイデンティティを確認するためにハンドシェイク交換期間中にクライアントが確認値をサーバへ転送することを可能にする。局部的に計算された確認値がサーバから受信された確認値に等しくないならば、エラーが発生され、ステップ328でエラーが処理される。ステップ316、318、320、322の認証プロセスを再度開始しようとすることを含む種々の異なるエラー処理方法が使用されることができる。サーバはエラーを通知され、それによってサーバはまた問題を解決するためのステップを取る。いずれにせよ、ステップ324に示されている比較動作の失敗はクライアント、サーバまたはクライアントとサーバの両者における大きな問題を示している。
【００２８】
一度、クライアント側のソフトウェアが送信されてクライアントにインストールされると、クライアントはインターネットを通してオーディオ内容を受信するようにサーバと対話し、オーディオ内容を書込み可能なＣＤへ書込むためにクライアント側のソフトウェアを呼出すことができる。勿論、オーディオ内容がクリアなオーディオフォーマットで単に送信されるならば、悪徳なクライアントは容易に内容を捕捉してそれを再生し、内容プロバイダから収益を奪う。本発明の１特徴はクライアントがクライアントコンピュータで物理的なオーディオＣＤを生成するのではなく、受信されたオーディオ内容を使用できないことを確実にすることを意図している。換言すると、本発明のこの特徴はユーザが自分の仕事場または住居で物理的なオーディオＣＤを製造する手段を提供するが、ユーザがその他の方法で内容を使用し記憶できないようにする。
【００２９】
図４は、クライアントが物理的オーディオＣＤへ書込むオーディオ内容をリクエストし受信する最初のステップを示すフロー制御図である。ステップ402で、クライアント側のソフトウェアはサーバのログインページまたは他のこのようなポータルをアクセスし、初期の許可ステップでは、先に計算され記憶された確認値をサーバへ供給する。ステップ404で、サーバはクライアントから確認値を受信し、その確認値をクライアントのインターネットアドレスのようなクライアントを識別する付加的なアイデンティティ情報およびユーザ名およびパスワードのようなクライアントを特徴付けする文字数字と共に使用して、クライアントを認証する。認証が成功したことを仮定すると、サーバはその後結合され、クライアントコンピュータで書込み可能なＣＤへ転送されるオーディオトラックをクライアントが検索および選択し始めることを可能にするその後のウェブページまたは他の情報をクライアントに返送する。
【００３０】
ステップ406と408で、これらのステップが複数回反復されることを示すために破線の長方形410に囲まれており、クライアントはサーバにより与えられた情報からカテゴリ、アーティスト、または他のさらに特別なサーチ規準を選択し、または代わりに暫定的な選択のショッピングカード状リストから暫定的な選択を選択するか削除し、選択をサーバへ返送する。ステップ408で、サーバはクライアントの選択を処理し、クライアントによりリクエストされたさらに特別な情報を返送するか、クライアントに関連する暫定的な選択のリストに関する返送された選択を処理する。一度、クライアントが適切にクライアントがオーディオＣＤに書込むことを望むオーディオトラックおよびその他の内容のリストを選択すると、ステップ412でクライアントは最終的な選択指示をサーバへ送信する。サーバはステップ414でそのクライアントに関連する暫定選択リストに残る選択を処理し、価格および支払いのリクエストを返送する。ステップ416でクライアントは支払いのリクエストを受信する。条件がクライアントに許容可能であるならば、条件ステップ418で決定されるように、クライアントはステップ420でトランザクションを終了するためにクレジットカード番号のような支払い情報をサーバへ返送する。そうでなければクライアントはステップ406、408、412、414および416の選択プロセスを再度入力することを決定する。サーバが返送された支払い情報をクライアントから受信するとき、サーバはステップ422で支払い情報を確認する。支払い情報が確認され、ステップ424で決定されるならば、サーバは支払いトランザクションを終了し、ステップ426で、暗号化された内容記述パッケージファイル（“ＣＤＰＦ”）をクライアントへ返送する。さらに詳細に以下説明するＣＤＰＦはクライアント側のソフトウェアがオーディオ内容をダウンロードし、ダウンロードされたオーディオ内容をクライアントのコンピュータの書込み可能なＣＤへ書込むことを可能にするために十分な情報を含んでいる。さらにクライアントは小売店で購入するオーディオＣＤに匹敵するオーディオＣＤを最終的に生成するためにユーザが集めることが可能なカバーアート、ライナーノート、その他のものをクライアントがプリントアウトすることを可能にするイメージおよびテキストファイルを同時にダウンロードできる。ステップ428で、クライアントは暗号化されたＣＤＰＦをサーバから受信し、ステップ430でルーチン“ＣＤの組立て”を呼び、ＣＤ組立てルーチンへ暗号化されたＣＤＰＦを送る。
【００３１】
ほぼ限定のない数の異なる代わりの対話およびトランザクションモデルがクライアントがＣＤに書込むためのオーディオ内容をサーチし選択することを可能にするために使用されることができることに注意すべきである。図４に示されている例示的なモデルは１つの可能な方法を示すことだけを目的としている。クライアントとサーバ間の情報交換中に生じる異常および不一致を検出して処理するための複数の異なるエラー検出およびエラー処理サブルーチンを含めたこのようなトランザクションモデルの多数の詳細が省略されている。幾つかのモデルでは、クライアントは１よりも多数のＣＤへ書込むためのオーディオ内容を選択し特定することができ、他のタイプの関連する内容を選択されてもよい。簡潔にするため、説明した実施形態は単一のオーディオＣＤのトラックを選択するプロセスに焦点を当てている。
【００３２】
図５は、内容記述パッケージファイルの内容を示している。ＣＤＰＦに含まれる情報は送信とクライアントによるＣＤへの書込みに選択される内容のタイプに応じて大きく変化し、サーバによりサポートされる内容選択およびトランザクションモデルのタイプに基づいて変化することに注意すべきである。図５に示されている例のＣＤＰＦは説明したオーディオＣＤ実施形態に関連するＣＤＰＦの１つの可能な実施形態を示すことを意図している。
【００３３】
図５に示されている例のＣＤＰＦ502はＸＭＬタグに関連するデータを含んでいる拡張可能なハイパーテキストマークアップ言語（“ＸＭＬ”文書）である。ＣＤＰＦ502に記憶されている情報の第１のピースはタグ“＜version number＞”506に関連するバージョン番号504である。バージョン番号はクライアント側のソフトウェアが戻されたＣＤＰＦを処理するのに十分な最近のバージョンであるか否かを決定するためにクライアント側のソフトウェアにより使用されることができる。バージョン番号はまたクライアント側のソフトウェアが戻されたＣＤＰＦを処理するのに適切なルーチンを選択することを可能にする。ＣＤＰＦはまた508で発生されるオーディオＣＤのタイトル、クライアントのプリント装置へプリントアウトされるＣＤのカバーアート510を含んでいるサーバにより供給されるファイルを説明しているユニフォームリソースロケータ（“ＵＲＬ”）、ＣＤのライナーノート512に対応するテキスト情報の位置を説明するＵＲＬとを含んでいる。次に、ＣＤＰＦはトラックデータオブジェクト514のようなトラックデータオブジェクトのシーケンスを含んでいる。各トラックデータオブジェクトはクライアントコンピュータにより生成されるオーディオＣＤに含まれる特定のオーディオトラックを説明する。最終的なトラックデータオブジェクト516は各トラックデータオブジェクトに含まれる情報を示すために、図５では拡大されている。トラックデータオブジェクトはトラック518、デジタル署名520、対称的な暗号化キー522、トラックのテキスト記述524、秒によるトラックの長さ526、トラックに先行する任意のパディング528の秒による長さ、トラックに特有のＵＲＬ530またはカバーアートのファイル仕様または他の説明情報に対応するオーディオ内容のＵＲＬを含んでいる。カバーアートのようなオーディオではないＣＤ内容は書込まれたＣＤとしてクライアントに表示されることができる。代わりに、オーディオではない内容はプリントされるか、そうでなければオーディオＣＤを補足するためクライアントにより処理されてもよい。前述したように、多数の付加的なタイプのフィールドおよびオブジェクトがＣＤＰＦに含まれる。例えば強化されたＣＤの情報を記述する付加的なセッションが含まれてもよい。オーディオではない情報の場合、全体的に異なるＣＤＰＦフォーマットがオーディオではない内容を説明するために使用されてもよい。
【００３４】
図６はルーチン“ＣＤの作成”の高レベルのフロー制御図である。ステップ602−604はｆｏｒループを表し、ここではルーチン“ＣＤの作成”に通過されるＣＤＰＦに記述された各ファイルまたは他の情報パッケージまたは情報オブジェクトはクライアントによりサーバから得られ、確認される。ステップ605−607はｆｏｒループを表し、ここではステップ602−604のｆｏｒループでクライアントによりサーバから得られた各ファイルはＣＤに書込まれるオーディオ内容のメモリに存在する事前イメージを生成するため解読され、圧縮解除され、再度暗号化される。ステップ608で、ルーチン“ＣＤの作成”はＣＤＰＦ内のレイアウトとシーケンス情報を処理し、ヘッダをその次のＣＤのオーディオ内容のレイアウトを記述するＣＤへ書込む。最後に、ステップ610−612はｆｏｒループを表し、ここではメモリに存在するオーディオ内容の事前イメージ内の暗号化されたファイルは最終的に完全なオーディオＣＤを生成するために区分的に解読されＣＤに書込まれる。ＣＤの作成ルーチンの各相中に、せいぜいサーバから受信されたオーディオ内容の非常に小部分だけがクライアントコンピュータのメモリ内にクリアな形態で存在することに注意する。クリアなオーディオ内容は不揮発性記憶装置に記憶されることはない。種々のハンドシェイクおよび確認手順はクライアントにより受信されたオーディオ内容がサーバによって忠実に送信されることを確実にする。したがって、本発明はサーバから送信されたオーディオ内容が悪徳なクライアントによる盗難および再生にさらされないことを確実にする。
【００３５】
ルーチン“ＣＤの作成”のさらに詳細な疑似コード表示を後述する。このＣ＋＋状の疑似コード記述は代わりにおよび特に、図６に示されているＣＤの作成ルーチンを説明する。第１に、ライン１上でクライアントは機能“downloadRetrieve”への呼を介してサーバから暗号化されたＣＤＰＦを受信する。  
1 暗号化されたCDPF=downloadRetrieve(CDPFlocation);
次に、ポインタ“fileQueue”がライン２上で開始される。ポインタ“fileQueue”はサーバから得られた次に圧縮され暗号化されるファイルが記憶されているメモリ位置を指向している。ライン３−１５のｄｏ−ｗｈｉｌｅループでは、クライアントは次のファイルを説明する暗号化されたＣＤＰＦ部分を解読し、説明されたファイルをダウンロードし、ダウンロードされたファイルを確認し、ポインタ“fileQueue”を次のオーディオファイルのダウンロードの準備をするように更新する。クライアントはＣＤＰＦの部分を解読するためにクライアントのメモリに記憶されているクライアントコンピュータパラメータの暗号ハッシュにより生成されたクライアントおよびマシンＩＤのクッキーに記憶されているユーザＩＤから計算された暗号キー“ＣＤＰＦキー”を使用することに注意すべきである。これはクライアントで呼出された他のルーチンではなく、クライアント側のソフトウェアのみがオーディオ内容についての情報を得るためにＣＤＰＦをアクセスできる。ライン５上で、クライアントは機能“getFile”への呼を介して次のファイルをダウンロードし、これは２つのアーギュメント、即ち（１）ファイル位置の記述と、（２）ファイルがダウンロードされるメモリ位置へのポインタを取る。第１のアーギュメントとして使用されるファイルの記述を得るために、関数“decryptPortion”はＣＤＰＦ内の次のファイルの記述を解読するために呼出される。関数“decryptPortion”は暗号化されたＣＤＰＦ、ファイルリストオブジェクト、ＣＤＰＦキーへのポインタに送られる。ライン９上で、関数“validateFile”は受信されたファイルを確認するためにＣＤＰＦに含まれる対称的な暗号キーを使用するために呼出される。ライン１２で、ポインタ“fileQueue”が更新される。  
【数２】
2005516278.tif 000004
【００３６】
次に、ルーチン“ＣＤの作成”はキー“InstanceKey”である２５６ビット対称暗号キーをマシンＩＤ、ユーザＩＤ、オーディオＣＤトランザクションを特徴付けするパラメータを含んだ種々の特有のパラメータから計算する。キー“InstanceKey”はメモリにのみ記憶され、メモリに記憶するため解読されたオーディオ内容を再度暗号化するために使用される。ライン１８−３２のｄｏ−ｗｈｉｌｅループでは、先のｄｏ−ｗｈｉｌｅループでダウンロードされた各ファイルはオーディオ内容のメモリに存在する事前イメージを生成するために圧縮を解除され、解読され、再度暗号化される。ダウンロードされたファイルは効率的な転送を確実にし、オーディオ内容が悪徳なユーザにより捕捉および再生されることができないことを確実にするために圧縮および暗号化される。ダウンロードされたファイルはクライアントのハードドライブに記憶される。ライン１８−３２のｄｏ−ｗｈｉｌｅループでは、ファイルは圧縮を解除されＣＤＰＦで送信されるファイルの対称暗号化キーを使用して解読され、その後オーディオ内容がそのインターフェースメモリ形態で秘密保護して暗号化された状態であるようにInstanceKey対称暗号化キーを使用して再度暗号化される。疑似コードで示されていないが、ハードディスクに記憶された暗号化され圧縮されたファイルはそれに後続する圧縮解除、解読、再度暗号化を除去する。
【数３】
2005516278.tif 000005
【００３７】
次に、ルーチン“ＣＤの作成”はＣＤＰＦからレイアウトの詳細を集め、オーディオ内容をオーディオＣＤへ転送する第１のステップとしてヘッダをオーディオＣＤへ書込むためにライン３３でルーチン“transcribeLayout”を呼出す。  
33 transcribeLayout(decryptPortion(EncryptedCDPF,LayoutDetails,CDPFKey));
最後に、ライン３５−４０のｄｏ−ｗｈｉｌｅループでは、ダウンロードされたファイルはライン２８の“transcribeLayout”への呼で生成されたレイアウトにしたがってアクセスされ、区分的に解読されオーディオＣＤに書込まれる。区分的解読では、対称暗号キー“InstanceKey”は一度に各オーディオ内容ファイルの小部分のみを解読することに使用され、それによって非常に少量のクリアオーディオ内容だけが時間における与えられたインスタンスでメモリ内に存在する。  
【数４】
2005516278.tif 000006
【００３８】
本発明を特定の実施形態について説明したが、本発明をこの実施形態に限定することを意図してはいない。本発明の技術的範囲内の変形は当業者に明白であろう。例えば装置のドライバおよびＩ／Ｏドライバへ送られるときに情報を捕捉する試みを防止するために、セキュリティチップを含む信頼のある装置ドライバおよびＩ／Ｏドライバが使用されることができる。前述したように、ほぼ限定のない数の異なるタイプの情報および物理的な情報記憶媒体が使用され、それによりユーザは内容プロバイダを権利のないコピーおよび不正行為の危険性にさらすことなく情報をダウンロードし、物理的なコピーを生成することが可能である。本発明の実施形態により分配される情報はオーディオファイル、ビデオファイル、コンピュータソフトウェア、テキストベースの文献、マルチメディアファイル、イメージを含んでもよい。本発明の別の実施形態を行うためにサーバおよびクライアント側ソフトウェアを構成する方法はほぼ限定のない数である。付加的な情報の秘密保護技術は本発明の実施形態により得られる情報記憶媒体の権利のないコピーを防止するために提供されることができ、これらの技術はＣＤＰＦで送られる付加的な情報を必要とする可能性がある。多数の異なる技術は事前イメージと、メモリに存在する情報および種々の感応暗号キーと、情報フィルのクリア部分とをさらに不明瞭にし、ごまかすために行われる。例えば、事前イメージは断片化され、断片はメモリを通して分配される。
【００３９】
前述の説明は、説明の目的で行われ、本発明の徹底的な理解を与えるために特別な名称を使用した。しかしながら、特別な詳細は本発明の実施で必要とされないことは当業者には明白であろう。本発明の特別な実施形態の前述の説明は例示および説明のために行われたものである。これらは説明した正確な形態に本発明を徹底または限定することを意図していない。明らかに、多数の変形および変更は前述の説明を考察して可能である。実施形態は本発明の原理とその実際の応用を最良に説明し、それによって考察された特定の使用に適するように種々の変更により、他の当業者が本発明と種々の実施形態を最良に使用することが可能である。本発明の技術的範囲は特許請求の範囲とその等価物により規定されることを意図している。
【図面の簡単な説明】
【００４０】
【図１】音楽の録音から消費者が録音された音楽を得るまでの経路の種々の段を示す図。
【図２】本発明の１実施形態の図。
【図３】パーソナルコンピュータまたは他の電子機器を介してサーバにアクセスする消費者またはユーザがサーバにより識別され権利を与えられ、ユーザがサーバにより与えられた情報および内容を選択し、受信し、物理的媒体に記憶することを可能にするクライアント側のソフトウェアを受信する多数の異なる可能な方法の１つを示すフロー制御図。
【図４】クライアントが物理的オーディオＣＤへ書込むオーディオ内容をリクエストし受信する最初のステップを示すフロー制御図。
【図５】内容記述パッケージファイルの内容を示す図。
【図６】ルーチン“ＣＤの作成”のフロー制御図。
【図１】
2005516278.tif 000007
【図２】
2005516278.tif 000008
【図３】
2005516278.tif 000009
【図４】
2005516278.tif 000010
【図５】
2005516278.tif 000011
【図６】
2005516278.tif 000012
【国際調査報告】
2005516278.tif 000013