(57)【要約】    【課題】      プログラムの更新を行ってもプログラム電子透かしが消去されないようにすること。    【解決手段】  本発明は、オリジナルのプログラムを更新するための差分プログラムと共に更新したプログラムに対する電子透かしを入力し、入力した差分プログラムを用いてオリジナルのプログラムを更新し、更新したプログラムに入力した電子透かしを挿入することにより、プログラムの更新を行っても電子透かしが消去されないようにできるようにした。  【選択図】      図１
2004326735.tif 000002
【特許請求の範囲】
【請求項１】
電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、電子透かしが付与され、前記オリジナルのプログラムを更新するための透かし入り差分プログラムを入力する差分プログラム入力手段と、前記透かし入り差分プログラムから前記電子透かしを抽出する電子透かし抽出手段と、前記オリジナルのプログラムに対して前記透かし入り差分プログラムを用いることで更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに前記差分プログラムから抽出した前記電子透かしを挿入する透かし挿入手段と、を具備したことを特徴とするプログラム電子透かし処理装置。
【請求項２】
電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムを更新するための差分プログラムを入力する差分プログラム入力手段と、新たな電子透かしを入力する透かし入力手段と、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに前記新たな電子透かしを挿入する透かし挿入手段と、を具備したことを特徴とするプログラム電子透かし処理装置。
【請求項３】
電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムを更新するための差分プログラムを入力する差分プログラム入力手段と、前記オリジナルのプログラムから前記電子透かしを抽出する電子透かし抽出手段と、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに前記オリジナルのプログラムから抽出した前記電子透かしを挿入する透かし挿入手段と、を具備したことを特徴とするプログラム電子透かし処理装置。
【請求項４】
電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを入力する差分プログラム入力手段と、前記ユーザ用差分プログラムを用いることで前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するプログラム更新手段と、を具備したことを特徴とするプログラム電子透かし処理装置。
【請求項５】
オリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムに電子透かしを入れた透かし入りオリジナルプログラムを生成するオリジナル透かし挿入手段と、前記透かし入りオリジナルプログラムを伝送するオリジナルプログラム出力手段と、前記オリジナルのプログラムを更新するための差分プログラムを入力する差分プログラム入力手段と、前記差分プログラムに電子透かしを入れた透かし入り差分プログラムを生成する差分プログラム透かし挿入手段と、前記透かし入り差分プログラムを伝送する差分プログラム出力手段と、を具備したことを特徴とするプログラム電子透かし挿入装置。
【請求項６】
前記差分プログラムに挿入する前記電子透かしと、前記オリジナルのプログラムに付与する前記電子透かしとは異なることを特徴とする請求項５に記載のプログラム電子透かし挿入装置。
【請求項７】
オリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムに電子透かしを付与した透かし入りオリジナルプログラムを生成する透かし挿入手段と、前記透かし入りオリジナルプログラムを伝送するオリジナルプログラム出力手段と、前記オリジナルのプログラムを更新するための更新用差分プログラムを入力する差分プログラム入力手段と、前記更新用差分プログラムを用いることで前記オリジナルのプログラムを更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに電子透かしを挿入した透かし入り更新プログラムを生成する透かし挿入手段と、前記透かし入りオリジナルプログラムから前記透かし入り更新プログラムを生成するためのユーザ用差分プログラムを生成する差分プログラム生成手段と、前記ユーザ用差分プログラムを伝送する差分プログラム伝送手段と、を具備したことを特徴とするプログラム電子透かし挿入装置。
【請求項８】
前記オリジナルのプログラムと前記透かし入りオリジナルとの差分プログラムを生成し、管理するプログラム管理手段、を具備したことを特徴とする請求項７記載のプログラム電子透かし挿入装置。
【請求項９】
前記更新プログラムと前記透かし入り更新プログラムとの差分プログラムを生成し、管理するプログラム管理手段、を具備したことを特徴とする請求項７または請求項８記載のプログラム電子透かし挿入装置。
【請求項１０】
請求項５記載のプログラム電子透かし挿入装置と、請求項１記載のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システム。
【請求項１１】
電子透かしが付与されたオリジナルのプログラムと、前記オリジナルのプログラムを更新するための差分プログラムと、新たな電子透かしとを伝送する配布元と、請求項２記載のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システム。
【請求項１２】
電子透かしが付与されたオリジナルのプログラムと、前記オリジナルのプログラムを更新するための差分プログラムと、を送信する配布元と、請求項３記載のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システム。
【請求項１３】
請求項７記載のプログラム電子透かし挿入装置と、請求項４記載のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システム。
【請求項１４】
電子透かしが付与されたオリジナルのプログラムを入力するステップと、電子透かしが付与され、前記オリジナルのプログラムを更新するための透かし入り差分プログラムを入力するステップと、前記透かし入り差分プログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記透かし入り差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記差分プログラムから抽出した前記電子透かしを挿入するステップと、を具備したことを特徴とするプログラム電子透かし処理方法。
【請求項１５】
電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、新たな電子透かしを入力するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記新たな電子透かしを挿入するステップと、を具備したことを特徴とするプログラム電子透かし処理方法。
【請求項１６】
電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記オリジナルのプログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記オリジナルのプログラムから抽出した前記電子透かしを挿入するステップと、を具備したことを特徴とするプログラム電子透かし処理方法。
【請求項１７】
電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを入力するステップと、前記ユーザ用差分プログラムを用いることで前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するステップと、を具備したことを特徴とするプログラム電子透かし処理方法。
【請求項１８】
オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを入れた透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記差分プログラムに電子透かしを入れた透かし入り差分プログラムを生成するステップと、前記透かし入り差分プログラムを伝送するステップと、を具備したことを特徴とするプログラム電子透かし処理方法。
【請求項１９】
オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを付与した透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための更新用差分プログラムを入力するステップと、前記更新用差分プログラムを用いることで前記オリジナルのプログラムを更新した更新プログラムを生成するステップと、前記更新プログラムに電子透かしを挿入した透かし入り更新プログラムを生成するステップと、前記透かし入りオリジナルプログラムから前記透かし入り更新プログラムを生成するためのユーザ用差分プログラムを生成するステップと、前記ユーザ用差分プログラムを伝送するステップと、を具備したことを特徴とするプログラム電子透かし処理方法。
【請求項２０】
コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、電子透かしが付与され、前記オリジナルのプログラムを更新するための透かし入り差分プログラムを入力するステップと、前記透かし入り差分プログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記透かし入り差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記差分プログラムから抽出した前記電子透かしを挿入するステップと、を行わせることを特徴とするプログラム。
【請求項２１】
コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、新たな電子透かしを入力するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記新たな電子透かしを挿入するステップと、を行わせることを特徴とするプログラム。
【請求項２２】
コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記オリジナルのプログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記オリジナルのプログラムから抽出した前記電子透かしを挿入するステップと、を行わせることを特徴とするプログラム。
【請求項２３】
コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを入力するステップと、前記ユーザ用差分プログラムを用いることで前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するステップと、を行わせることを特徴とするプログラム。
【請求項２４】
コンピュータに、オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを入れた透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記差分プログラムに電子透かしを入れた透かし入り差分プログラムを生成するステップと、前記透かし入り差分プログラムを伝送するステップと、を行わせることを特徴とするプログラム。
【請求項２５】
コンピュータに、オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを付与した透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための更新用差分プログラムを入力するステップと、前記更新用差分プログラムを用いることで前記オリジナルのプログラムを更新した更新プログラムを生成するステップと、前記更新プログラムに電子透かしを挿入した透かし入り更新プログラムを生成するステップと、前記透かし入りオリジナルプログラムから前記透かし入り更新プログラムを生成するためのユーザ用差分プログラムを生成するステップと、前記ユーザ用差分プログラムを伝送するステップと、を行わせることを特徴とするプログラム。
【請求項２６】
請求項２０から請求項２５のいずれかに記載のプログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの不正な使用および配布を防止および抑止するためのプログラム電子透かし処理装置に関するものである。
【背景技術】
【０００２】
コンピュータネットワークの進展に伴い、ネットワークを介したコンピュータプログラムの流通が一般的になっている。コンピュータプログラムは、容易に複製を作成できるため、プログラムの複製が不正に２次配布されたり、プログラム中のアルゴリズムを盗用、改竄されたりする可能性がある。したがって、このような不正利用からプログラムを保護する必要がある。
【０００３】
従来のプログラム保護の技術の一つとして、プログラムへ電子透かしを挿入する方法が挙げられる。この方法では、配布先毎に異なる透かし情報をプログラムに埋め込んで配布する。そして、不正利用が発生した場合に、不正利用者のプログラムから透かし情報を取り出し、透かし情報を解析する。これにより、流出元を容易に検出することが可能となる。
【０００４】
具体的な透かしの挿入方法としては、例えば、特許文献１に開示されたものがある。この方法は、まず、実行順序に依存関係のないコードを検出する。次に、検出部分にダミー変数の演算を挿入する。そして、ダミー変数の演算を含む検出部分の実行順序をランダムに入れ替える。このような処理を行うことにより、その実行順序を電子透かし情報として配布先毎に変更する仕組みを実現している。
【特許文献１】特開２０００−７６０６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来より、ＵＮＩＸ（Ｒ）のｄｉｆｆコマンド等により、プログラムのソースコードや、バイナリーコードの差分を得て、この差分をソースコードやバイナリーコードの保存や更新に利用することが行われている。
【０００６】
しかしながら、従来の差分を用いたプログラムの更新方法は、プログラムへの電子透かしに関しては考慮されていない。このため、差分を用いたプログラムの更新により、プログラムの電子透かしが消去される可能性がある。
【０００７】
このように、従来のプログラムへの電子透かし挿入方式は、差分更新に基づく透かしの改変、削除が容易であるという問題がある。
【０００８】
加えて、従来技術の差分更新ではセキュリティ面での配慮がなされていなかったので、不正にプログラムの更新処理が実行されたり、プログラム電子透かしの読み取りや、挿入、削除などの処理が不正に行われたりという問題がある。
【０００９】
本発明は、かかる点に鑑みてなされたものであり、安全にプログラムの更新を行うとともに、プログラムの更新を行ってもプログラムの電子透かしの読み取りや、挿入、削除などの処理が不正に行われないことを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、オリジナルのプログラムを更新するための差分プログラムと共に更新したプログラムに対する電子透かしを入力し、入力した差分プログラムを用いてオリジナルのプログラムを更新し、更新したプログラムに入力した電子透かしを挿入するようにしたものである。
【発明の効果】
【００１１】
本発明により、安全にプログラムの更新を行うとともに、プログラムの更新を行ってもプログラムの電子透かしの読み取りや、挿入、削除などの処理が不正に行われないようにできる。
【発明を実施するための最良の形態】
【００１２】
本発明の第１の態様にかかるプログラム電子透かし処理装置は、電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、電子透かしが付与され、前記オリジナルのプログラムを更新するための透かし入り差分プログラムを入力する差分プログラム入力手段と、前記透かし入り差分プログラムから前記電子透かしを抽出する電子透かし抽出手段と、前記オリジナルのプログラムに対して前記透かし入り差分プログラムを用いることで更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに前記差分プログラムから抽出した前記電子透かしを挿入する透かし挿入手段と、を具備した構成を採る。
【００１３】
これにより、透かし入り差分プログラムを用いることで生成した更新プログラムに対して、透かし入り差分プログラムに付与された電子透かしを付与することができる。これにより、たとえ更新プログラム生成の際に電子透かしが消去されたとしても、更新プログラムに透かしを確実に付与することができる。この結果、プログラムの不正配布を防止することができる。
【００１４】
本発明の第２の態様にかかるプログラム電子透かし処理装置は、電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムを更新するための差分プログラムを入力する差分プログラム入力手段と、新たな電子透かしを入力する透かし入力手段と、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに前記新たな電子透かしを挿入する透かし挿入手段と、を具備した構成を採る。
【００１５】
これにより、差分プログラム用の新しい電子透かしを用いることで、更新プログラムに対して、電子透かしを付与することができる。
【００１６】
本発明の第３の態様にかかるプログラム電子透かし処理装置は、電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムを更新するための差分プログラムを入力する差分プログラム入力手段と、前記オリジナルのプログラムから前記電子透かしを抽出する電子透かし抽出手段と、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに前記オリジナルのプログラムから抽出した前記電子透かしを挿入する透かし挿入手段と、を具備した構成を採る。
【００１７】
これにより、オリジナルのプログラムに付与された電子透かしを抽出し、抽出しておいた電子透かしを、更新プログラムの電子透かしとして再度利用して、更新プログラムに付与することができる。
【００１８】
本発明の第４の態様にかかるプログラム電子透かし処理装置は、電子透かしが付与されたオリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを入力する差分プログラム入力手段と、前記ユーザ用差分プログラムを用いることで前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するプログラム更新手段と、を具備した構成を採る。
【００１９】
これにより、電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを用いることで、電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成することができる。
【００２０】
本発明の第５の態様にかかるプログラム電子透かし挿入装置は、オリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムに電子透かしを入れた透かし入りオリジナルプログラムを生成するオリジナル透かし挿入手段と、前記透かし入りオリジナルプログラムを伝送するオリジナルプログラム出力手段と、前記オリジナルのプログラムを更新するための差分プログラムを入力する差分プログラム入力手段と、前記差分プログラムに電子透かしを入れた透かし入り差分プログラムを生成する差分プログラム透かし挿入手段と、前記透かし入り差分プログラムを伝送する差分プログラム出力手段と、を具備した構成を採る。
【００２１】
これにより、受信側に、透かし入りオリジナルプログラムと透かし入り差分プログラムを伝送でき、受信側で透かし入り差分プログラムを用いることで透かし入りオリジナルプログラムの更新と、電子透かしの付与ができる。
【００２２】
本発明の第６の態様は、第５の態様にかかるプログラム電子透かし挿入装置において、前記差分プログラムに挿入する前記電子透かしと、前記オリジナルのプログラムに付与する前記電子透かしとは異なる。
【００２３】
これにより、更新プログラムに付与される透かしと、オリジナルプログラムに付与される透かしとを区別して、管理することが可能である。これにより、不正にプログラムが流出した場合に、電子透かしを解析することで、流出したプログラムが、更新プログラムであるかオリジナルプログラムであるか容易に判断できる。
【００２４】
本発明の第７の態様にかかるプログラム電子透かし挿入装置は、オリジナルのプログラムを入力するオリジナルプログラム入力手段と、前記オリジナルのプログラムに電子透かしを付与した透かし入りオリジナルプログラムを生成する透かし挿入手段と、前記透かし入りオリジナルプログラムを伝送するオリジナルプログラム出力手段と、前記オリジナルのプログラムを更新するための更新用差分プログラムを入力する差分プログラム入力手段と、前記更新用差分プログラムを用いることで前記オリジナルのプログラムを更新した更新プログラムを生成するプログラム更新手段と、前記更新プログラムに電子透かしを挿入した透かし入り更新プログラムを生成する透かし挿入手段と、前記透かし入りオリジナルプログラムから前記透かし入り更新プログラムを生成するためのユーザ用差分プログラムを生成する差分プログラム生成手段と、前記ユーザ用差分プログラムを伝送する差分プログラム伝送手段と、を具備した構成を採る。
【００２５】
これにより、受信側に電子透かしが付与されたオリジナルのプログラムと、ユーザ用差分プログラムを送り、受信側に、電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成させることができる。
【００２６】
本発明の第８の態様は、第７の態様にかかるプログラム電子透かし挿入装置において、前記オリジナルのプログラムと前記透かし入りオリジナルとの差分プログラムを生成し、管理するプログラム管理手段、を具備した構成を採る。
【００２７】
これにより、オリジナルのプログラムをそのまま保存、管理するのではなく、差分プログラムの管理を行えるので、ディスク容量などを削減することが可能になる。
【００２８】
本発明の第９の態様は、第７の態様または第８の態様にかかるプログラム電子透かし挿入装置において、前記更新プログラムと前記透かし入り更新プログラムとの差分プログラムを生成し、管理するプログラム管理手段、を具備した構成を採る。
【００２９】
これにより、透かし入り更新プログラムをそのまま保存、管理するのではなく、差分プログラムの管理を行うことで、ディスク容量などを削減することが可能になる。
【００３０】
本発明の第１０の態様は、第５の態様のプログラム電子透かし挿入装置と、第１の態様のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システムである。
【００３１】
本発明の第１１の態様は、電子透かしが付与されたオリジナルのプログラムと、前記オリジナルのプログラムを更新するための差分プログラムと、新たな電子透かしとを伝送する配布元と、第２の態様のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システムである。
【００３２】
本発明の第１２の態様は、電子透かしが付与されたオリジナルのプログラムと、前記オリジナルのプログラムを更新するための差分プログラムと、を送信する配布元と、第３の態様のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システムである。
【００３３】
本発明の第１３の態様は、第７の態様のプログラム電子透かし挿入装置と、第４の態様のプログラム電子透かし処理装置と、を具備したことを特徴とするプログラム不正配布防止システムである。
【００３４】
本発明の第１４の態様は、電子透かしが付与されたオリジナルのプログラムを入力するステップと、電子透かしが付与され、前記オリジナルのプログラムを更新するための透かし入り差分プログラムを入力するステップと、前記透かし入り差分プログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記透かし入り差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記差分プログラムから抽出した前記電子透かしを挿入するステップと、を具備したことを特徴とするプログラム電子透かし処理方法である。
【００３５】
本発明の第１５の態様は、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、新たな電子透かしを入力するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記新たな電子透かしを挿入するステップと、を具備したことを特徴とするプログラム電子透かし処理方法である。
【００３６】
本発明の第１６の態様は、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記オリジナルのプログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記オリジナルのプログラムから抽出した前記電子透かしを挿入するステップと、を具備したことを特徴とするプログラム電子透かし処理方法である。
【００３７】
本発明の第１７の態様は、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを入力するステップと、前記ユーザ用差分プログラムを用いることで前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するステップと、を具備したことを特徴とするプログラム電子透かし処理方法である。
【００３８】
本発明の第１８の態様は、オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを入れた透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記差分プログラムに電子透かしを入れた透かし入り差分プログラムを生成するステップと、前記透かし入り差分プログラムを伝送するステップと、を具備したことを特徴とするプログラム電子透かし処理方法である。
【００３９】
本発明の第１９の態様は、オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを付与した透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための更新用差分プログラムを入力するステップと、前記更新用差分プログラムを用いることで前記オリジナルのプログラムを更新した更新プログラムを生成するステップと、前記更新プログラムに電子透かしを挿入した透かし入り更新プログラムを生成するステップと、前記透かし入りオリジナルプログラムから前記透かし入り更新プログラムを生成するためのユーザ用差分プログラムを生成するステップと、前記ユーザ用差分プログラムを伝送するステップと、を具備したことを特徴とするプログラム電子透かし処理方法である。
【００４０】
本発明の第２０の態様は、コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、電子透かしが付与され、前記オリジナルのプログラムを更新するための透かし入り差分プログラムを入力するステップと、前記透かし入り差分プログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記透かし入り差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記差分プログラムから抽出した前記電子透かしを挿入するステップと、を行わせることを特徴とするプログラムである。
【００４１】
本発明の第２１の態様は、コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、新たな電子透かしを入力するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記新たな電子透かしを挿入するステップと、を行わせることを特徴とするプログラムである。
【００４２】
本発明の第２２の態様は、コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記オリジナルのプログラムから前記電子透かしを抽出するステップと、前記オリジナルのプログラムに対して前記差分プログラムを用いることで更新した更新プログラムを生成するステップと、前記更新プログラムに前記オリジナルのプログラムから抽出した前記電子透かしを挿入するステップと、を行わせることを特徴とするプログラムである。
【００４３】
本発明の第２３の態様は、コンピュータに、電子透かしが付与されたオリジナルのプログラムを入力するステップと、前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するためのユーザ用差分プログラムを入力するステップと、前記ユーザ用差分プログラムを用いることで前記電子透かしが付与されたオリジナルのプログラムから電子透かし入りの更新プログラムを生成するステップと、を行わせることを特徴とするプログラムである。
【００４４】
本発明の第２４の態様は、コンピュータに、オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを入れた透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための差分プログラムを入力するステップと、前記差分プログラムに電子透かしを入れた透かし入り差分プログラムを生成するステップと、前記透かし入り差分プログラムを伝送するステップと、を行わせることを特徴とするプログラムである。
【００４５】
本発明の第２５の態様は、コンピュータに、オリジナルのプログラムを入力するステップと、前記オリジナルのプログラムに電子透かしを付与した透かし入りオリジナルプログラムを生成するステップと、前記透かし入りオリジナルプログラムを伝送するステップと、前記オリジナルのプログラムを更新するための更新用差分プログラムを入力するステップと、前記更新用差分プログラムを用いることで前記オリジナルのプログラムを更新した更新プログラムを生成するステップと、前記更新プログラムに電子透かしを挿入した透かし入り更新プログラムを生成するステップと、前記透かし入りオリジナルプログラムから前記透かし入り更新プログラムを生成するためのユーザ用差分プログラムを生成するステップと、前記ユーザ用差分プログラムを伝送するステップと、を行わせることを特徴とするプログラムである。
【００４６】
本発明の第２６の態様は、第２０の態様から第２５の態様のいずれかに記載のプログラムを格納したことを特徴とする記憶媒体である。
【００４７】
（実施の形態１）
以下、本発明の実施の形態１にかかるプログラム電子透かし処理装置を具備したプログラム不正配布防止システムについて添付図面を用いて説明する。
【００４８】
図１は、実施の形態１にかかる透かし挿入による不正配布防止システムのブロック図である。
【００４９】
まず、配布元１０は、配布先４０ａ、４０ｂのプログラムの２次配布を認めないようにするために、オリジナルのプログラム（以下、オリジナルプログラムという）配布の際に、プログラム電子透かし挿入装置（以下、透かし挿入装置）２０により、配布先４０ａ、４０ｂ毎に、異なる（電子）透かしを挿入して、透かし入りオリジナルプログラムとして配布する。
【００５０】
このように、オリジナルプログラムに透かしを埋め込んだ透かし入りオリジナルプログラムを配布することで、不正な２次配布などにより透かし入りオリジナルプログラムが流出した際に、配布元１０は、透かし取出装置３０を用いて、流出先５０に流出した透かし入りオリジナルプログラムから透かしを取り出して配布先を確認し、流出元（配布先）４０ａ、４０ｂを特定することができる。また、配布先４０ａ、４０ｂは、透かしによる流出元の特定を恐れて、不正な２次配布を控えることになる。
【００５１】
このようにして、不正配布防止システムは、透かしによるオリジナルプログラムの不正配布を抑止する。
【００５２】
また、配布元１０は、配布先４０ａ、４０ｂに、既に送った透かし入りオリジナルプログラムを更新するための差分プログラムの伝送をする。そして、配布先４０ａ、４０ｂは、既に受け取ったプログラムに対して、差分プログラムを用いることにより、透かし入りオリジナルプログラムの更新し、更新プログラムを生成する。
【００５３】
このように、配布元１０は、既に伝送した透かし入りオリジナルプログラムの更新を行う場合に、配布先１０において更新したプログラム全体を伝送するのではなく、差分プログラムのみを伝送することにより、配布先４０ａ、４０ｂに伝送するデータ量を減らすようにしている。
【００５４】
ところで、プログラムへの透かしに関して考慮されていない差分プログラムを用いて透かし入りオリジナルプログラムを更新した場合、更新プログラムからオリジナルプログラムに付与されていた透かしが消去される可能性がある。
【００５５】
そこで、実施の形態１では、差分プログラムを用いて更新した更新プログラムにも透かしが入るような工夫をしている。
【００５６】
以下、実施の形態１にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法の概要について説明する。図２は、実施の形態１にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法を説明するための概念図である。
【００５７】
配布元１０は、透かし挿入装置２０から配布先４０のプログラム電子透かし処理装置（以下、透かし処理装置）６０に透かし入りオリジナルプログラムと、透かしを付与した差分プログラム（透かし入り差分プログラム）を伝送する。差分プログラムは、例えば、ＵＮＩＸ（Ｒ）のＤｉｆｆなどで得られる差分プログラムなどである。
【００５８】
これに対して、配布先４０は、透かし処理装置６０において、透かし入りオリジナルプログラムおよび透かし入り差分プログラムを受信する。そして、透かし処理装置６０は、透かし入りオリジナルプログラムを、透かし入り差分プログラムを用いることで更新し、更新プログラムを生成する。この際に、透かし処理装置６０は、透かし入り差分プログラムに付与された透かしを用いて更新プログラムに透かしを付与する。
【００５９】
なお、配布元で生成された透かし入り差分プログラムを配信する前に、事前にオリジナルプログラムに対して、生成された透かし入り差分プログラムを用いて正しく更新処理されることを確認する。これにより、更新されたプログラムに透かしを挿入にする領域が確保できていないなどの理由により、プログラム電子透かしの更新処理が、配布先で未然に失敗することを防ぐことが可能となる。
【００６０】
また、万一のために、配布元で、透かし挿入失敗時に自らオリジナルプログラムを復帰できるようにすることで、透かしの更新を失敗した場合でも、配布元でプログラムが全く動作しないという状況を回避することが可能となる。
【００６１】
このように、配布元１０が透かし入り差分プログラムを伝送し、配布先が透かし入り差分プログラムに付与された透かしを利用することで、配布するプログラムを使用するユーザ毎に異なる透かしを付与するとともに、オリジナルプログラムの更新をあわせて行うことが容易に実現できる。
【００６２】
なお、配布先４０でプログラム電子透かしの読み取り、削除、更新など、プログラム電子透かしへの処理を行う場合、処理は不正のアクセスが禁止された領域（例えば、ＩＣカードのような改竄に耐性のある耐タンパ装置）で実行する。
【００６３】
耐タンパ領域で、プログラム電子透かしへの処理を行うことで、プログラム電子透かしの処理プログラムの解読によるプログラム電子透かしへの不正アクセスや、プログラム電子透かしの改竄などを防止することができる。これにより、不正にプログラム電子透かしの挿入や削除が行われるという問題を解決する。
【００６４】
また、配布元での透かし挿入処理に関しても、同様の理由で、耐タンパ領域で処理するのが望ましい。
【００６５】
また、配信されるプログラムの改竄が行われていないことを検証するために、配信するオリジナルプログラムや差分プログラムには電子署名を付与する。配布元もしくはプログラムの製作者が電子署名を付与することで、配信過程での改竄を検出する。耐タンパ領域へプログラムを読み込む前に、配布元もしくはプログラム製作者の署名であることを確認することで、不正な透かしによるプログラム電子透かしでの更新を抑制することができる。
【００６６】
なお、正しい配布元もしくはプログラム製作者であるという認証と、正しい利用者が更新処理を行っているという認証は、従来技術から一般に用いられている端末認証（例えば、端末ＩＤやＰＫＩを用いる方法）や個人認証（例えば、指紋や虹彩認証を用いる方法）の技術を用いることで、それぞれ解決できる。
【００６７】
以下、上述したように更新プログラムに透かし挿入処理を行う不正配布防止システムの構成について詳細に説明する。
【００６８】
まず、実施の形態１にかかる透かし挿入装置２０について図３を用いて説明する。図３は、透かし挿入装置２０のブロック図である。
【００６９】
透かし挿入装置２０には、プログラム入力部２０１が設けられている。プログラム入力部２０１は、伝送されてきた、透かしを入力するオリジナルのプログラムコード（以下、オリジナルプログラム）およびオリジナルプログラムを更新するための差分プログラムを受信し、入力する手段である。プログラム入力部２０１は、オリジナルプログラムおよび差分プログラムを透かし挿入部２０２に出力する。
【００７０】
なお、オリジナルプログラムを入力するプログラム入力部と、差分プログラムを入力するプログラム入力部は、別々の構成であっても良い。
【００７１】
なお、オリジナルプログラムおよび差分プログラムは、伝送されてくる形態でなくても、予め格納されている形態などであっても良い。
【００７２】
透かし挿入部２０２は、ＩＤ情報生成部２０５により生成されるＩＤ情報からオリジナルプログラムおよび差分プログラムに実際に埋め込む透かしを生成し、プログラム入力部２０１から出力されたオリジナルプログラムおよび差分プログラムに対し、透かしを入力する手段である。また、透かし挿入部２０２は、プログラム入力部２０１が出力したオリジナルプログラムおよび差分プログラムがソースコードであれば、ソースコードをコンパイルし、透かしの入力箇所をアセンブラコードの行番号として透かし情報記憶部２０６に渡す。なお、透かし挿入部２０２の透かし挿入処理についての詳細は後述する。
【００７３】
なお、オリジナルプログラムに対して透かしを挿入する手段と、差分プログラムに対して透かしを挿入する手段とを別に具備した構成であっても良い。
【００７４】
プログラム出力部２０３は、透かし挿入部２０２が透かしを入力した、オリジナルプログラムおよび差分プログラムを配布先４０に伝送する手段である。
【００７５】
なお、透かし入りオリジナルプログラムを出力する手段と、透かし入り差分プログラムを出力する手段とを別に具備した構成であっても良い。
【００７６】
透かし用データ入力部２０４は、伝送されてきた透かし用データを受信、入力する。入力する透かし用データは、配布先を一意に特定する情報であり、配布先の住所、電話番号、会社名、氏名、電子メールアドレス、プログラムの使用可能な有効期限などである。また、透かし用データに、配布元の情報を入力してもよい。
【００７７】
なお、透かし用データは、伝送されてくる形態でなくても、キーボードなどにより入力される形態であっても良い。
【００７８】
ＩＤ情報生成部２０５は、透かし用データ入力部２０４により入力された透かし用データから一意に決定できるＩＤ情報を生成する。ＩＤ情報は、入力したデータそのものであってもよいし、それを暗号化したデータであってもよい。また、ＩＤ情報は、透かし用データを保存するデータベース上において透かし用データを一意に特定するためのＩＤであってもよい。
【００７９】
なお、実施の形態１においては、ＩＤ情報に基づいて透かし情報を生成する形態となっているが、必ずしもＩＤ情報に基づいて透かし情報を生成する必要はなく、透かし情報から一意に配布先を特定可能となっていればよい。例えば、ソフトウェアに１〜Ｎシーケンス番号を透かし情報として挿入し、配布先Ａにシーケンス番号ｉのソフトを配布、配布先Ｂにシーケンス番号ｊのソフトを配布といったように透かし情報と配布先を一意に特定可能としてもよい。
【００８０】
透かし情報記憶部２０６は、透かし挿入部２０２が挿入した透かしの挿入箇所を記録する手段である。具体的には、透かしを挿入したプログラムのアセンブラコード行番号を記録する。
【００８１】
次に、実施の形態１にかかる透かし挿入装置２０の透かし挿入部２０２のプログラムへの電子透かしの挿入処理について図４を用いて説明する。図４は、実施の形態１にかかる透かし挿入装置２０の透かし挿入部２０２のプログラムへの電子透かしの具体的な挿入方法について説明するための図である。
【００８２】
図４の例では、透かし挿入部２０２は、透かしビットの値に応じてソースコードに挿入するスペース長の与え方を変えている。また、透かし挿入部２０２は、透かしビットを埋め込むソースコードの行番号に応じて、スペース長の与え方を変えている。
【００８３】
具体的には、透かし挿入部２０２は、行番号が奇数の部分に透かしビットの値０を埋め込む場合には挿入するスペース長を１とし、透かしビットの値１を埋め込む場合には挿入するスペース長を２としている。また、透かし挿入部２０２は、行番号が偶数の部分に透かしビットの値０を埋め込む場合には挿入するスペース長を２とし、透かしビットの値１を埋め込む場合には挿入するスペース長を１としている。
【００８４】
図４に示す例では、透かし挿入部２０２は、この規則を用いて、Ｃ言語に書かれたソースコードの第１行から第４行までに文字記号間スペースを挿入することにより、電子透かしのビット列「０１１０１１」を埋め込んでいる。
【００８５】
なお、ＵＮＩＸ（Ｒ）のＤｉｆｆなどで得られる差分プログラムでも同様の方法で、電子透かしの情報を挿入することが可能である。
【００８６】
次に、実施の形態１にかかる透かし取出装置３０について図５を用いて説明する。図５は、実施の形態１における透かし取出装置３０のブロック図である。
【００８７】
プログラム入力部３０１は、配布先４０ａ、４０ｂが流出した、透かしが挿入された、オリジナルプログラムおよび更新プログラムを受信し、入力する手段である。
【００８８】
透かし検出部３０２は、プログラム入力部３０１から出力されたオリジナルプログラムおよび更新プログラムを逆アセンブリングし、透かし情報記憶部３０５より得られる透かし挿入箇所（アセンブラコード行番号）から入力された透かしを取り出す。そして、透かし検出部３０２は、取り出した透かしからＩＤ情報を生成し、ＩＤ情報記憶部３０４に渡す。
【００８９】
ＩＤ情報記憶部３０４は、透かし検出部３０２より得られるＩＤ情報から、配布先の情報を生成する手段である。ＩＤ情報記憶部３０４は、ＩＤ情報がデータベースにあるデータのＩＤである場合には、ＩＤからデータを取り出すことで、配布先の情報を取得する。また、ＩＤ情報記憶部３０４は、ＩＤ情報が配布先の情報の暗号化データである場合には、復号して配布先の情報を取得する。
【００９０】
透かし情報記憶部３０５は、配布したプログラムの透かし挿入箇所を記憶している手段である。透かし挿入箇所の情報は、透かし挿入装置２０の透かし情報記憶部２０６より得る。
【００９１】
出力部３０３は、取得された配布先の情報を出力する手段である。
【００９２】
このように、透かし取出装置３０は、不正に配布されたオリジナルプログラムおよび更新プログラムから配布先の情報を出力し、配布先４０を特定する。
【００９３】
次に、透かし処理装置６０の構成について図６を用いて説明する。図６は、透かし処理装置６０のブロック図である。
【００９４】
透かし処置装置６０には、配布元１０から伝送されてきた透かし入りのオリジナルプログラム（以下、透かし入りオリジナルプログラムという）および透かし入りの差分プログラム（透かし入り差分プログラムという）を受信し、入力するプログラム入力部５０１が設けられている。プログラム入力部５０１は、透かし入りオリジナルプログラムをプログラム出力部５０３に出力する。また、プログラム入力部５０１は、透かし入り差分プログラムを透かし抽出部５０４およびプログラム更新部５０７に出力する。
【００９５】
なお、透かし入りオリジナルプログラムを入力する手段と、透かし入り差分プログラムを入力する手段とを別に具備した構成であっても良い。
【００９６】
また、透かし処理装置６０には、プログラム入力部５０１が出力した、透かし入り差分プログラムから透かしを抽出する透かし抽出部５０４が設けられている。透かし抽出部５０４は、抽出した透かしを透かし挿入部５０２に出力する。
【００９７】
プログラム更新部５０７は、プログラム入力部５０１が出力した、透かし入りオリジナルプログラムに対して透かし入り差分プログラムを用いることで更新した更新プログラムを生成し、生成した更新プログラムを透かし挿入部５０２に出力する。
【００９８】
透かし挿入部５０２は、プログラム更新部５０７から出力された更新プログラムに対して、透かし抽出部５０４から出力された透かしを挿入することにより、透かし入り更新プログラムを生成し、プログラム出力部５０３に出力する。なお、透かし挿入部５０２の透かし挿入処理は、透かし挿入部２０２と同様である。
【００９９】
プログラム出力部５０３は、プログラム入力部５０１から出力された透かし入りオリジナルプログラムおよび透かし挿入部５０２から出力された透かし入り更新プログラムを配布元１０に対して伝送する。
【０１００】
次に、実施の形態１にかかる透かし挿入装置２０の動作について図７を用いて説明する。図７は、配布元１０の透かし挿入装置２０のプログラム伝送処理のフローチャートである。
【０１０１】
まず、透かし挿入装置２０は、プログラム入力部２０１において、伝送されてきたオリジナルプログラムを受信し、入力する（ステップ１０１）。そして、プログラム入力部２０１は入力したオリジナルプログラムを透かし挿入部２０２に送る。
【０１０２】
次に、透かし挿入部２０２は、ＩＤ情報生成部２０５により生成されるＩＤ情報からオリジナルプログラムに埋め込む透かしを生成し、プログラム入力部２０１から出力されたオリジナルプログラムに対し透かしを挿入し、透かし入りオリジナルプログラムを生成する（ステップ１０２）。そして、透かし挿入部２０２は、透かし入りオリジナルプログラムをプログラム出力部２０３に送り、プログラム出力部２０３が、配布先４０に伝送する（ステップ１０３）。
【０１０３】
次に、透かし挿入装置２０は、オリジナルプログラムを更新するための差分プログラムが伝送されてくるのを待ち、伝送されてきたらプログラム入力部２０１において、伝送されてきた差分プログラムを受信し、入力する（ステップ１０４）。そして、プログラム入力部２０１は入力した差分プログラムを透かし挿入部２０２に送る。
【０１０４】
次に、透かし挿入部２０２は、ＩＤ情報生成部２０５により生成されるＩＤ情報からオリジナルプログラムに埋め込む透かしを生成し、プログラム入力部２０１から出力された差分プログラムに対し透かしを挿入し、透かし入り差分プログラムを生成する（ステップ１０５）。
【０１０５】
また、ステップ１０５において、透かし挿入部２０２は、差分プログラムに付与する透かしと、オリジナルのプログラムに付与する透かしとを異なるようにする。
【０１０６】
そして、透かし挿入部２０２は、透かし入り差分プログラムをプログラム出力部２０３に送り、プログラム出力部２０３が、配布先４０に伝送する（ステップ１０６）。
【０１０７】
このようにして、配布元１０の透かし挿入装置２０は、配布先４０に対して透かし入りオリジナルプログラムと透かし入り差分プログラムを伝送する。
【０１０８】
次に、配布先４０が、差分プログラムを用いて、オリジナルプログラムから更新プログラムを生成する処理について図８を用いて説明する。図８は、配布先４０の透かし処理装置６０における透かし入りオリジナルプログラムの更新処理のフローチャートである。
【０１０９】
まず、透かし処理装置６０は、プログラム入力部５０１において、伝送されてきた透かし入りオリジナルプログラムを受信し、入力する（ステップ２０１）。そして、プログラム入力部５０１は、透かし入りオリジナルプログラムを出力する。
【０１１０】
次に、透かし処理装置６０は、透かし入り差分プログラムが伝送されてくるのを待ち、透かし入り差分プログラムが伝送されてきたらプログラム入力部５０１において受信し、入力する（ステップ２０２）。そして、プログラム入力部５０１は、透かし入り差分プログラムを出力する。
【０１１１】
次に、透かし処理装置６０の透かし抽出部５０４が、プログラム入力部５０１が出力した透かし入り差分プログラムを入力し、入力した透かし入り差分プログラムに付与されている透かしの情報を抽出する（ステップ２０３）。そして、透かし抽出部２０３は、透かし入り差分プログラムから抽出した透かしを透かし挿入部５０２に出力する。
【０１１２】
次に、透かし処理部６０のプログラム更新部５０７が、透かし入りオリジナルプログラムに対して透かし入り差分プログラムを用いることで更新した更新プログラムを生成し、生成した更新プログラムを透かし挿入部５０２に出力する（ステップ２０４）。
【０１１３】
次に、透かし挿入部５０２は、ステップ２０４において生成された更新プログラムは透かしが消去されてしまっている可能性があるので、更新プログラムに透かし抽出部５０４が先に透かし入り差分プログラムから抽出しておいた透かしを挿入する（ステップ２０５）。
【０１１４】
このようにして、透かし処理装置６０は、更新プログラムに透かしを挿入する。
【０１１５】
なお、実施の形態１において、透かし入り差分プログラムから透かしを抽出する方法は、透かし処理装置６０において既知であるとする。
【０１１６】
以上説明したように、実施の形態１によれば、透かし入り差分プログラムを用いて生成した更新プログラムに対して、透かし入り差分プログラムに付与された透かしを付与することができる。これにより、たとえ更新プログラム生成の際に透かしが消去されたとしても、更新プログラムに透かしを確実に付与することができる。また、差分プログラムに付与する透かしをユーザ毎異なるようにすることにより、プログラムを使用するユーザ毎に異なる透かしを付与することができる。よって、配布先４０は、不正に更新プログラムの配布を行うことができなくなるので、配布元１０は、不特定多数の配布先４０に対して容易にプログラムを配布できる。
【０１１７】
また、実施の形態１によれば、透かし入り差分プログラムを用いて、透かし入りオリジナルプログラムの更新と、透かしの付与を合わせて行うことが可能である。
【０１１８】
また、透かし入りオリジナルプログラムに付与されている透かしと、透かし入り差分プログラムに付与されている透かしは異なるので、配布元１０は、更新プログラムに付与される透かしと、オリジナルプログラムに付与される透かしとを区別して、管理することが可能である。これにより、不正にプログラムが流出した場合に、配布元１０は、プログラムの透かしを解析することで、流出したプログラムが、更新プログラムであるかオリジナルプログラムであるか容易に判断できる。
【０１１９】
なお、実施の形態１では、配布先４０において、オリジナルプログラムの更新および透かしの挿入を行ったが、配布元１０において行って配布先４０に配布する形態であっても良い。また、配布元１０と配布先４０の間に介在するゲートウェイ等の装置において、オリジナルプログラムの更新および透かしの挿入を行っても良い。
【０１２０】
また、実施の形態１では、１対１型のプログラム配信の形態で説明したが、例えばデジタル放送を利用したプログラムの配布であるとか、ＩＰネットワークでマルチキャスト、ブロードキャストを利用したプログラム配布などにも適用することが可能である。
【０１２１】
また、透かし挿入装置２０、透かし取出装置３０、および透かし処理装置６０の各部が同一の機器上に存在する必要はなく、各部がネットワークで結合され、複数の端末で処理される形態であってもよい。
【０１２２】
また、透かし挿入装置２０、透かし取出装置３０、および透かし処理装置６０が行う処理をプログラムにし、汎用のコンピュータに行わせる形態であっても良い。また、この場合、配布元１０から配布先４０に、透かし処理装置６０の処理を行うプログラムを、差分プログラム配信の前までに送っておくような形態であっても良い。
【０１２３】
（実施の形態２）
本発明の実施の形態２にかかるプログラム不正配布防止システムについて説明する。まず、実施の形態２にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法の概要について図９を用いて説明する。図９は、実施の形態２にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法を説明するための概念図である。
【０１２４】
実施の形態２では、配布元９００の透かし挿入装置９０１から配布先９１０の透かし処理装置９１１に透かし入りオリジナルプログラムと、差分プログラムと、更新用の新しい透かしを伝送する。
【０１２５】
これに対して、配布先９１０の透かし処理装置９１１は、透かし入りオリジナルプログラム、差分プログラム、および新しい透かしを受信する。そして、透かし処理装置９１１は、透かし入りオリジナルプログラムを、差分プログラムを用いて更新し、更新プログラムを生成する。次に、透かし処理装置９１１は、新しい透かしを更新プログラムに付与する。
【０１２６】
なお、配布先９１０でプログラム電子透かしの読み取り、削除、更新など、プログラム電子透かしへの処理を行う場合、処理は不正のアクセスが禁止された領域（例えば、ＩＣカードのような改竄に耐性のある耐タンパ装置）で実行する。
【０１２７】
耐タンパ領域で、プログラム電子透かしへの処理を行うことで、プログラム電子透かしの処理プログラムの解読によるプログラム電子透かしへの不正アクセスや、プログラム電子透かしの改竄などを防止することができる。これにより、不正にプログラム電子透かしの挿入や削除が行われるという問題を解決する。
【０１２８】
また、配布元での透かし挿入処理に関しても、同様の理由で、耐タンパ領域で処理するのが望ましい。
【０１２９】
また、配信されるプログラムの改竄が行われていないことを検証するために、配信するオリジナルプログラムや差分プログラムには電子署名を付与する。配布元もしくはプログラムの製作者が電子署名を付与することで、配信過程での改竄を検出する。耐タンパ領域へプログラムを読み込む前に、配布元もしくはプログラム製作者の署名であることを確認することで、不正なプログラムでの更新を抑制することができる。
【０１３０】
なお、正しい配布元もしくはプログラム製作者であるという認証と、正しい利用者が更新処理を行っているという認証は、従来技術から一般に用いられている端末認証（例えば、端末ＩＤやＰＫＩを用いる方法）や個人認証（例えば、指紋や虹彩認証を用いる方法）の技術を用いることで、それぞれ解決できる。
【０１３１】
このように、新しい透かしを利用することで更新プログラムに透かしを付与する。
【０１３２】
なお、新しい電子透かしの配送に関しては、セキュアな伝送路を想定する。例えば、ＳＳＬやＩＰＳｅｃといった暗号化を用いたセキュアな伝送路を用いる。これにより、第３者から不正に、プログラム電子透かしの情報を盗聴され、伝送中に不正なプログラム電子透かしに置き換えられる脅威がなくなる。
【０１３３】
以下、実施の形態２にかかるプログラム不正配布システムについて詳細に説明する。
【０１３４】
まず、実施の形態２にかかる透かし挿入装置９０１の構成について図１０を用いて詳細に説明する。図１０は、透かし挿入装置９０１のブロック図である。なお、既に説明した部分と同一の部分には同一の符号を付与し、詳細な説明は省略する。
【０１３５】
透かし挿入装置９０１には、ＩＤ情報生成部２０５により生成されるＤ情報から更新プログラムに実際に埋め込む透かしを生成する透かし生成部９０２が設けられている。透かし生成部９０２は、生成した更新プログラム用の透かしを透かし出力部９０３に出力し、透かし出力部９０３は、透かしを配布先９１０に送る。
【０１３６】
次に、実施の形態２にかかる透かし処理装置９１１の構成について図１１を用いて説明する。図１１は、透かし処理装置９１１のブロック図である。なお、既に説明した部分と同一の部分については、同一の符号を付与し、詳細な説明を省略する。
【０１３７】
透かし処理装置９１１には、透かし入力部９１２が設けられている。透かし入力部９１２は、配布元９００から送られてきた、透かしを受信、入力し、透かし挿入部５０２に送る。
【０１３８】
次に、実施の形態２にかかる透かし挿入装置９０１の動作について図１２を用いて説明する。図１２は、配布元９００の透かし挿入装置９０１のプログラム伝送処理のフローチャートである。
【０１３９】
まず、透かし挿入装置９０１は、プログラム入力部２０１において、伝送されてきたオリジナルプログラムを受信し、入力する（ステップ３０１）。そして、プログラム入力部２０１は入力したオリジナルプログラムを透かし挿入部２０２に送る。
【０１４０】
次に、透かし挿入部２０２は、ＩＤ情報生成部２０５により生成されるＩＤ情報からオリジナルプログラムに埋め込む透かしを生成し、プログラム入力部２０１から出力されたオリジナルプログラムに対し透かしを挿入し、透かし入りオリジナルプログラムを生成する（ステップ３０２）。そして、透かし挿入部２０２は、透かし入りオリジナルプログラムをプログラム出力部２０３に送り、プログラム出力部２０３が、配布先９１０に伝送する（ステップ３０３）。
【０１４１】
次に、透かし挿入装置９０１は、オリジナルプログラムを更新するための差分プログラムが伝送されてくるのを待ち、伝送されてきたらプログラム入力部２０１において、伝送されてきた差分プログラムを受信し、入力する（ステップ３０４）。そして、プログラム入力部２０１は入力した差分プログラムをプログラム出力部２０３に送り、プログラム出力部２０３が配布先９１０に伝送する（ステップ３０５）。
【０１４２】
次に、透かし挿入装置９０１は、新しい透かし用のデータが伝送されてくるのを待ち、伝送されてきたら透かし用データ入力部２０４において受信し、入力する（ステップ３０６）。そして、透かし用データ入力部２０４は、新しい透かし用データをＩＤ情報生成部２０５に送る。
【０１４３】
次に、ＩＤ情報生成部２０５は、新しい透かし用のデータからＩＤ情報を生成し、透かし生成部９０２に送る。
【０１４４】
次に、透かし生成部９０２は、新しい透かし用のデータから新しい透かしを生成し、透かし出力部９０３に送る（ステップ３０７）。
【０１４５】
そして、透かし出力部９０３が新しい透かしを配布先９１０に伝送する（ステップ３０８）。
【０１４６】
このようにして、配布元９００の透かし挿入装置９０１は、配布先９１０に対して透かし入りオリジナルプログラム、差分プログラム、および新しい透かしを伝送する。
【０１４７】
なお、新しい透かしを伝送する場合、セキュリティが確保された伝送路を使用する。
【０１４８】
次に、配布先９１０が、差分プログラムおよび新しい透かしを用いて、オリジナルプログラムから透かし入り更新プログラムを生成する処理について図１３を用いて説明する。図１３は、配布先９１０の透かし処理装置９１１における透かし入りオリジナルプログラムの更新処理のフローチャートである。
【０１４９】
まず、透かし処理装置９１１は、プログラム入力部５０１において、伝送されてきた透かし入りオリジナルプログラムを受信し、入力する（ステップ４０１）。そして、プログラム入力部５０１は、透かし入りオリジナルプログラムを出力する。
【０１５０】
次に、透かし処理装置９１１は、差分プログラムが伝送されてくるのを待ち、差分プログラムが伝送されてきたらプログラム入力部５０１において受信し、入力する（ステップ４０２）。そして、プログラム入力部５０１は、差分プログラムを出力する。
【０１５１】
次に、透かし処理装置９１１は、新しい透かしが伝送されてくるのを待ち、新しい透かしが伝送されてきたら透かし入力部９１２において受信し、入力する（ステップ４０３）。そして、透かし入力部９１２は、新しい透かしを透かし挿入部５０２に出力する。
【０１５２】
次に、透かし処理装置９１１のプログラム更新部５０７が、プログラム入力部５０１が出力した、透かし入りオリジナルプログラムに対して差分プログラムを用いることで更新した更新プログラムを生成し、生成した更新プログラムを透かし挿入部５０２に出力する（ステップ４０４）。
【０１５３】
次に、透かし挿入部５０２は、ステップ４０４において生成された更新プログラムは透かしが消去されてしまっている可能性があるので、更新プログラムに透かし入力部９１２から出力された新しい透かしを挿入する（ステップ４０５）。
【０１５４】
このようにして、透かし処理装置９１１は、更新プログラムに透かしを挿入する。
【０１５５】
以上説明したように、実施の形態２によれば、新しい透かしを用いることで、更新プログラムに対して、透かしを付与することができる。また、新しい透かしをユーザ毎に異ならせることにより、プログラムを使用するユーザ毎に異なる透かしを付与することができる。
【０１５６】
また、実施の形態２によれば、配布先９１０において、透かしを生成もしくは抽出する必要がなく、配布先９１０の構成が簡単になる。
【０１５７】
また、実施の形態２は、透かしと、差分プログラムとは独立しているので、差分プログラムを複数のユーザに対して共通して使うことができる。
【０１５８】
また、実施の形態２において、配布元９００が、配布先９１０のユーザの認証機能や課金機能を持つようにするようにしても良い。これにより、配布元９００は、透かしを用いた場合のみオリジナルプログラムの更新を可能にし、かつ課金や登録処理を行った配布先９１０に対してのみ透かしを発行することで、課金や登録処理を行った配布先９１０のみがオリジナルプログラムの更新を行えるようにできる。
【０１５９】
また、配布元９００において予め更新プログラムを生成しておき、配布先９１０が更新プログラムを必要なときに、透かしを購入し、更新プログラムに付与することにより、更新プログラムを使用を許可するといったサービスを提供しても良い。
【０１６０】
また、透かし挿入装置９０１および透かし処理装置９１１の各部が同一の機器上に存在する必要はなく、各部がネットワークで結合され、複数の端末で処理される形態であってもよい。
【０１６１】
また、透かし挿入装置９０１および透かし処理装置９１１が行う処理をプログラムにし、汎用のコンピュータに行わせる形態であっても良い。
【０１６２】
（実施の形態３）
本発明の実施の形態３にかかるプログラム不正配布防止システムについて説明する。まず、実施の形態３にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法の概要について図１４を用いて説明する。図１４は、実施の形態３にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法を説明するための概念図である。
【０１６３】
実施の形態３では、配布元１４００の透かし挿入装置１４０１から配布先１４１０の透かし処理装置１４１１に透かし入りオリジナルプログラムおよび差分プログラムを伝送する。
【０１６４】
これに対して、配布先１４１０の透かし処理装置１４１１は、透かし入りオリジナルプログラムおよび差分プログラムを受信する。次に、透かし処理装置１４１１は、透かし入りオリジナルプログラムから透かしを抽出しておく。次に、透かし処理装置１４１１は、透かし入りオリジナルプログラムに差分プログラムを用いて更新し、更新プログラムを生成する。そして、透かし処理装置１４１１は、透かし入りオリジナルプログラムから抽出しておいた透かしを更新プログラムに付与する。
【０１６５】
なお、配布先１４１０でプログラム電子透かしの読み取り、削除、更新など、プログラム電子透かしへの処理を行う場合、処理は不正のアクセスが禁止された領域（例えば、ＩＣカードのような改竄に耐性のある耐タンパ装置）で実行する。
【０１６６】
耐タンパ領域で、プログラム電子透かしへの処理を行うことで、プログラム電子透かしの処理プログラムの解読によるプログラム電子透かしへの不正アクセスや、プログラム電子透かしの改竄などを防止することができる。これにより、不正にプログラム電子透かしの挿入や削除が行われるという問題を解決する。
【０１６７】
また、配布元での透かし挿入処理に関しても、同様の理由で、耐タンパ領域で処理するのが望ましい。
【０１６８】
また、配信されるプログラムの改竄が行われていないことを検証するために、配信するオリジナルプログラムや差分プログラムには電子署名を付与する。配布元もしくはプログラムの製作者が電子署名を付与することで、配信過程での改竄を検出する。耐タンパ領域へプログラムを読み込む前に、配布元もしくはプログラム製作者の署名であることを確認することで、不正なプログラムでの更新を抑制することができる。
【０１６９】
なお、正しい配布元もしくはプログラム製作者であるという認証と、正しい利用者が更新処理を行っているという認証は、従来技術から一般に用いられている端末認証（例えば、端末ＩＤやＰＫＩを用いる方法）や個人認証（例えば、指紋や虹彩認証を用いる方法）の技術を用いることで、それぞれ解決できる。
【０１７０】
このように、透かし入りオリジナルプログラムに付与されている透かしを利用することで更新プログラムに透かしを付与する。
【０１７１】
以下、実施の形態３にかかるプログラム不正配布システムについて詳細に説明する。
【０１７２】
まず、実施の形態３にかかる透かし挿入装置１４０１の構成について図１５を用いて詳細に説明する。図１５は、透かし挿入装置１４０１のブロック図である。なお、既に説明した部分と同一の部分には同一の符号を付与し、詳細な説明は省略する。
【０１７３】
透かし挿入装置１４０１が有する透かし挿入部１４０２は、ＩＤ情報生成部２０５から出力されたＩＤ情報を用いて透かしを生成し、プログラム入力部２０１から出力されたオリジナルプログラムに対して透かしを付与する。
【０１７４】
一方、透かし挿入部１４０２は、プログラム入力部２０１から出力された差分プログラムは入力せず、何の処理も行わない。
【０１７５】
次に、実施の形態３にかかる透かし処理装置１４１１の構成について図１６を用いて説明する。図１６は、透かし処理装置１４１１のブロック図である。なお、既に説明した部分と同一の部分については、同一の符号を付与し、詳細な説明を省略する。
【０１７６】
透かし処理装置１４１１には、プログラム入力部５０１が出力した、透かし入りオリジナルプログラムから透かしを抽出する透かし抽出部１４１２が設けられている。透かし抽出部１４１２は、抽出した透かしを透かし挿入部５０２に出力する。
【０１７７】
次に、実施の形態３にかかる透かし挿入装置１４０１の動作について図１７を用いて説明する。図１７は、配布元１４００の透かし挿入装置１４０１のプログラム伝送処理のフローチャートである。
【０１７８】
まず、透かし挿入装置１４０１は、プログラム入力部２０１において、伝送されてきたオリジナルプログラムを受信し、入力する（ステップ５０１）。そして、プログラム入力部２０１は入力したオリジナルプログラムを透かし挿入部１４０２に送る。
【０１７９】
次に、透かし挿入部１４０２は、ＩＤ情報生成部２０５により生成されるＩＤ情報からオリジナルプログラムに埋め込む透かしを生成し、プログラム入力部２０１から出力されたオリジナルプログラムに対し透かしを挿入し、透かし入りオリジナルプログラムを生成する（ステップ５０２）。そして、透かし挿入部１４０２は、透かし入りオリジナルプログラムをプログラム出力部２０３に送り、プログラム出力部２０３が、配布先１４１０に伝送する（ステップ５０３）。
【０１８０】
次に、透かし挿入装置１４０１は、オリジナルプログラムを更新するための差分プログラムが伝送されてくるのを待ち、伝送されてきたらプログラム入力部２０１において、伝送されてきた差分プログラムを受信し、入力する（ステップ５０４）。そして、プログラム入力部２０１は入力した差分プログラムをプログラム出力部２０３に送り、プログラム出力部２０３が差分プログラムを、配布先１４１０に伝送する（ステップ５０５）。
【０１８１】
このようにして、配布元１４００の透かし挿入装置１４０１は、配布先１４１０に対して透かし入りオリジナルプログラムと差分プログラムを伝送する。
【０１８２】
次に、配布先１４１０が、差分プログラムを用いて、オリジナルプログラムから更新プログラムを生成する処理について図１８を用いて説明する。図１８は、配布先１４１０の透かし処理装置１４１１における透かし入りオリジナルプログラムの更新処理のフローチャートである。
【０１８３】
まず、透かし処理装置１４１１は、プログラム入力部５０１において、伝送されてきた透かし入りオリジナルプログラムを受信し、入力する（ステップ６０１）。そして、プログラム入力部５０１は、透かし入りオリジナルプログラムを出力する。
【０１８４】
次に、透かし処理装置１４１１の透かし抽出部１４１２が、プログラム入力部５０１が出力した透かし入りオリジナルプログラムを入力し、入力した透かし入りオリジナルプログラムに付与されている透かしの情報を抽出し、保存する（ステップ６０２）。
【０１８５】
次に、透かし処理装置１４１１は、差分プログラムが伝送されてくるのを待ち、差分プログラムが伝送されてきたらプログラム入力部５０１において受信し、入力する（ステップ６０３）。そして、プログラム入力部５０１は、差分プログラムを出力する。
【０１８６】
次に、透かし処理部１４１１のプログラム更新部５０７が、透かし入りオリジナルプログラムに対して差分プログラムを用いることで更新した更新プログラムを生成し、透かし挿入部５０２に出力する（ステップ６０４）。
【０１８７】
次に、ステップ６０４において生成された更新プログラムは透かしが消去されてしまっている可能性があるので、透かし挿入部５０２は、更新プログラムに透かし抽出部１４１２が先に透かし入りオリジナルプログラムから抽出しておいた透かしを挿入する（ステップ６０５）。
【０１８８】
このように、透かし処理装置１４１１は、更新プログラムに透かしを挿入する。
【０１８９】
以上説明したように、実施の形態３によれば、透かし入りオリジナルプログラムに付与された透かしを抽出、保存しておき、この抽出しておいた透かしを更新プログラムの透かしとして再度利用し、更新プログラムに透かしを付与することができる。
【０１９０】
また、実施の形態３によれば、オリジナルプログラムに付与されている透かしを永続的に使用できるため、著作権の管理者の管理コスト（プログラム電子透かしの発行内容）をさげることができる。
【０１９１】
なお、透かし挿入装置１４０１および透かし処理装置１４１１の各部が同一の機器上に存在する必要はなく、各部がネットワークで結合され、複数の端末で処理される形態であってもよい。
【０１９２】
また、透かし挿入装置１４０１および透かし処理装置１４１１が行う処理をプログラムにし、汎用のコンピュータに行わせる形態であっても良い。
【０１９３】
（実施の形態４）
本発明の実施の形態４にかかるプログラム不正配布防止システムについて説明する。まず、実施の形態４にかかるプログラム不正配布防止システムの処理の概要について図１９を用いて説明する。図１９は、実施の形態４にかかるプログラム不正配布防止システムの処理を説明するための概念図である。
【０１９４】
配布元１９００の透かし挿入装置１９０１は、オリジナルプログラムを用いて透かし入りオリジナルプログラムを作成し、配布先１９１０に送る。また、透かし入りオリジナルプログラムに付与する透かしは配布先１９１０（ユーザ）毎に異なるものである。つまり、透かし挿入装置１９０１は、配布先１９１０毎に異なる透かし入りオリジナルプログラムを生成し、送る。
【０１９５】
また、透かし挿入装置１９０１は、オリジナルプログラムと透かし入りオリジナルプログラムの差分プログラム（オリジナル管理用差分プログラム）を生成し、管理する。透かし入りオリジナルプログラムはユーザ毎に異なるので、透かし挿入装置１９０１は、ユーザ毎に異なる、オリジナル管理用差分プログラムを管理する。
【０１９６】
また、透かし挿入装置１９０１は、更新用の差分プログラムを用いることでオリジナルプログラムを更新した更新プログラムを生成する。透かし挿入装置１９０１は、更新プログラムと透かし入り更新プログラムの差分プログラム（更新済み管理用差分プログラム）を生成し、管理する。透かし入り更新プログラムはユーザ毎に異なるので、透かし挿入装置１９０１は、ユーザ毎に異なる更新済み管理用差分プログラムを管理する。
【０１９７】
なお、配布元で生成された透かし入り差分プログラムを配信する前に、事前にオリジナルプログラムに対して、生成された透かし入り差分プログラムを用いて正しく更新処理されることを確認する。これにより、更新されたプログラムに透かしを挿入にする領域が確保できていないなどの理由により、プログラム電子透かしの更新処理が、配布先で未然に失敗することを防ぐことが可能となる。
【０１９８】
また、万一のために、配布元で、透かし挿入失敗時に自らオリジナルプログラムを復帰できるようにすることで、透かしの更新を失敗した場合でも、配布元でプログラムが全く動作しないという状況を回避することが可能となる。
【０１９９】
また、透かし挿入装置１９０１は、オリジナル管理用差分プログラムと更新済み管理用差分プログラムを用いて、透かし入りオリジナルプログラムから透かし入り更新プログラムを生成するための差分プログラム（ユーザ用差分プログラム）を生成し、送る。
【０２００】
一方、配布先１９１０は、透かし処理装置１９１１において、透かし入りオリジナルプログラムを受信する。
【０２０１】
また、透かし処理装置１９１１は、ユーザ用差分プログラムを受信し、これを用いて透かし入り更新プログラムを生成する。
【０２０２】
このように、実施の形態４にかかるプログラム不正配布システムは、更新プログラムに透かしを付与する。
【０２０３】
なお、配布先１９１０でプログラム電子透かしの読み取り、削除、更新など、プログラム電子透かしへの処理を行う場合、処理は不正のアクセスが禁止された領域（例えば、ＩＣカードのような改竄に耐性のある耐タンパ装置）で実行する。
【０２０４】
耐タンパ領域で、プログラム電子透かしへの処理を行うことで、プログラム電子透かしの処理プログラムの解読によるプログラム電子透かしへの不正アクセスや、プログラム電子透かしの改竄などを防止することができる。これにより、不正にプログラム電子透かしの挿入や削除が行われるという問題を解決する。
【０２０５】
また、配布元での透かし挿入処理に関しても、同様の理由で、耐タンパ領域で処理するのが望ましい。
【０２０６】
また、配信されるプログラムの改竄が行われていないことを検証するために、配信するオリジナルプログラムや差分プログラムには電子署名を付与する。配布元もしくはプログラムの製作者が電子署名を付与することで、配信過程での改竄を検出する。
【０２０７】
また、耐タンパ領域へプログラムを読み込む前に、配布元もしくはプログラム製作者の署名であることを確認することで、不正な透かしによるプログラム電子透かしでの更新を抑制することができる。
【０２０８】
なお、正しい配布元もしくはプログラム製作者であるという認証と、正しい利用者が更新処理を行っているという認証は、従来技術から一般に用いられている端末認証（例えば、端末ＩＤやＰＫＩを用いる方法）や個人認証（例えば、指紋や虹彩認証を用いる方法）の技術を用いることで、それぞれ解決できる。
【０２０９】
以下、実施の形態４にかかるプログラム不正配布システムについて詳細に説明する。
【０２１０】
まず、実施の形態４にかかる透かし挿入装置１９０１の構成について図２０を用いて詳細に説明する。図２０は、透かし挿入装置１９０１のブロック図である。なお、既に説明した部分と同一の部分には同一の符号を付与し、詳細な説明は省略する。
【０２１１】
透かし挿入装置１９０１には、オリジナルプログラムとオリジナルプログラムを更新するための差分プログラムとを受信し、入力するプログラム入力部１９０６が設けられている。
【０２１２】
また、透かし挿入装置１９０１には、オリジナルプログラムに差分プログラムを用いることで更新した更新プログラムを生成し、出力するプログラム更新部１９０２が設けられている。
【０２１３】
また、透かし挿入装置１９０１には、ＩＤ情報生成部２０５が出力したＩＤ情報から透かしを生成し、オリジナルプログラムおよび更新プログラムに挿入する透かし挿入部１９０３が設けられている。
【０２１４】
また、透かし挿入装置１９０１には、プログラム入力部１９０６が出力したオリジナルプログラムと透かし挿入部１９０３が出力した透かし入りオリジナルプログラムとの差分であるオリジナル管理用差分プログラムを生成し、管理するプログラム管理部１９０４が設けられている。
【０２１５】
また、プログラム管理部１９０４は、プログラム更新部１９０２が出力した更新プログラムと透かし挿入部１９０３が出力した透かし入り更新プログラムとの差分である更新済み管理用差分プログラムを生成し、管理する。
【０２１６】
また、透かし挿入装置１９０１には、プログラム管理部１９０４が管理するオリジナル管理用差分プログラムと更新済み管理用差分プログラムとを用いて、透かし入りオリジナルプログラムから透かし入り更新プログラムを生成する差分プログラム（ユーザ用差分プログラム）を生成する差分プログラム生成部１９０５が設けられている。
【０２１７】
次に、実施の形態４にかかる透かし処理装置１９１１の構成について図２１を用いて説明する。図２１は、透かし処理装置１９１１のブロック図である。なお、既に説明した部分と同一の部分については、同一の符号を付与し、詳細な説明を省略する。
【０２１８】
透かし処理装置１９１１には、透かし入りオリジナルプログラムに、ユーザ用差分プログラムを用いることにより、透かし入り更新プログラムを生成するプログラム更新部１９１２が設けられている。
【０２１９】
次に、実施の形態４にかかる透かし挿入装置１９０１の動作について図２２を用いて説明する。図２２は、配布元１９００の透かし挿入装置１９０１の処理のフローチャートである。
【０２２０】
まず、透かし挿入装置１９０１は、プログラム入力部１９０６において、伝送されてきたオリジナルプログラムを受信し、入力する（ステップ７０１）。そして、プログラム入力部１９０６は入力したオリジナルプログラムを透かし挿入部１９０３に送る。
【０２２１】
次に、透かし挿入部１９０３は、ＩＤ情報生成部２０５により生成されるＩＤ情報からオリジナルプログラムに埋め込む透かしを生成し、プログラム入力部１９０６から出力されたオリジナルプログラムに対し透かしを挿入し、透かし入りオリジナルプログラムを生成する（ステップ７０２）。そして、透かし挿入部１９０３は、透かし入りオリジナルプログラムをプログラム出力部２０３に送り、プログラム出力部２０３が、配布先１９１０に伝送する（ステップ７０３）。
【０２２２】
次に、透かし挿入装置１９０１は、透かし入りオリジナルプログラムの管理処理に移行する。
【０２２３】
まず、透かし挿入装置１９０１のプログラム管理部１９０４は、プログラム入力部１９０６が出力したオリジナルプログラムと透かし挿入部１９０３が出力した透かし入りオリジナルプログラムを入力する。次に、プログラム管理部１９０４は、オリジナルプログラムと透かし入りオリジナルプログラムとの差分をとり、オリジナル管理用差分プログラムを生成する（ステップ７０４）。
【０２２４】
そして、プログラム管理部１９０４は、生成したオリジナル管理用差分プログラムを管理する（ステップ７０５）。
【０２２５】
透かし入りオリジナルプログラムに付与する透かしが配布先１９１０（ユーザ）毎に異なるのに伴って、透かし入りオリジナルプログラムも配布先１９１０毎に異なる。よって、プログラム管理部１９０４は、配布先１９１０毎に異なるオリジナル管理用差分プログラムを管理する。
【０２２６】
このように、プログラム管理部１９０４は、ユーザ毎に異なる透かし入りオリジナルプログラムをそのまま保存、管理するのではなく、ユーザ毎に異なるオリジナル管理用差分プログラムの管理を行うことで、ディスク容量などを削減することが可能になる。
【０２２７】
次に、透かし挿入装置１９０１は、オリジナルプログラムの更新処理に移行する。
【０２２８】
まず、透かし挿入装置１９０１は、オリジナルプログラムを更新するための更新用差分プログラムが伝送されてくるのを待ち、伝送されてきたらプログラム入力部１９０６で受信し、入力する（ステップ７０６）。そして、プログラム入力部１９０６は、入力した更新用差分プログラムをプログラム更新部１９０２に出力する。
【０２２９】
次に、プログラム更新部１９０２は、先にプログラム入力部１９０６が出力したオリジナルプログラムに対して、今回プログラム入力部１９０６が出力した更新用差分プログラムを用いることで更新した更新プログラムを生成し、出力する（ステップ７０７）。
【０２３０】
次に、透かし挿入部１９０３は、ステップ７０７において生成された更新プログラムを入力する。そして、ＩＤ情報生成部２０５から出力された更新プログラム用のＩＤ情報から更新プログラム用の透かしを生成し、更新プログラムに挿入し、透かし入り更新プログラムを生成する（ステップ７０８）。そして、透かし挿入部１９０３は、生成した透かし入り更新プログラムを出力する。
【０２３１】
次に、透かし挿入装置１９０１は、透かし入り更新プログラムの管理処理に移行する。
【０２３２】
まず、透かし挿入装置１９０１のプログラム管理部１９０４は、プログラム更新部１９０２が出力した更新プログラムと透かし挿入部１９０３が出力した透かし入り更新プログラムを入力する。次に、プログラム管理部１９０４は、更新プログラムと透かし入り更新プログラムとの差分をとり、更新済み管理用差分プログラムを生成する（ステップ７０９）。
【０２３３】
そして、プログラム管理部１９０４は、生成した更新済み管理用差分プログラムを管理する（ステップ７１０）。
【０２３４】
透かし入り更新プログラムに付与する透かしが配布先１９１０（ユーザ）毎に異なるのに伴って、透かし入り更新プログラムも配布先１９１０毎に異なる。よって、プログラム管理部１９０４は、配布先１９１０毎に異なる更新済み管理用差分プログラムを管理する。
【０２３５】
このように、プログラム管理部１９０４は、ユーザ毎に異なる透かし入り更新プログラムをそのまま保存、管理するのではなく、ユーザ毎に異なる更新済み管理用差分プログラムの管理を行うことで、ディスク容量などを削減することが可能になる。
【０２３６】
次に、透かし挿入装置１９０１は、配布先１９１０に送った透かし入りオリジナルデータの更新用のプログラム（ユーザ用更新プログラム）を生成する処理に移行する。
【０２３７】
まず、透かし挿入装置１９０１の差分プログラム生成部１９０５が、プログラム管理部１９０４が管理する、オリジナル管理用差分プログラムと、更新済み管理用差分プログラムを入力する。次に、差分プログラム生成部１９０５は、透かし入りオリジナルプログラムから透かし入り更新プログラムを生成するための差分プログラム（ユーザ用差分プログラム）を生成し（ステップ７１１）、配布先１９１０に伝送する（ステップ７１２）。
【０２３８】
このようにして、透かし挿入装置１９０１は、配布先１９１０に対して、透かし入りオリジナルプログラムと、透かし入りオリジナルプログラムから透かし入り更新プログラムを生成するユーザ用差分プログラムを伝送する。
【０２３９】
次に、透かし処理装置１９１１の処理について図２３を用いて説明する。図２３は、配布先１９１０の透かし処理装置１９１１の処理のフローチャートである。
【０２４０】
まず、透かし処理装置１９１１は、プログラム入力部５０１において、伝送されてきた透かし入りオリジナルプログラムを受信し、入力する（ステップ８０１）。そして、プログラム入力部５０１は、透かし入りオリジナルプログラムを出力する。
【０２４１】
次に、透かし処理装置１９１１は、透かし入りオリジナルプログラムを更新するためのユーザ用差分プログラムが伝送されてくるのを待ち、伝送されてきたらプログラム入力部５０１において受信し、入力する（ステップ８０２）。そして、プログラム入力部５０１は、入力したユーザ用差分プログラムを出力する。
【０２４２】
次に、プログラム更新部１９１２が、プログラム入力部５０１から出力された、透かし入りオリジナルプログラムに、ユーザ用差分プログラムを用いることで透かし入り更新プログラムを生成する（ステップ８０３）。
【０２４３】
このようにして、透かし処理装置１９１１は、透かし入りの更新プログラムを生成する。
【０２４４】
以上説明したように、実施の形態４によれば、透かし入りオリジナルプログラムから透かし入り更新プログラムを生成するためのユーザ用差分プログラムを用いて、透かし入りオリジナルプログラムから透かし入り更新プログラムを生成することができる。
【０２４５】
また、実施の形態４によれば、ユーザ毎に異なる透かし入りオリジナルプログラムをそのまま保存、管理するのではなく、ユーザ毎に異なるオリジナル管理用差分プログラムの管理を行うことで、ディスク容量などを削減することが可能になる。
【０２４６】
また、実施の形態４によれば、ユーザ毎に異なる透かし入り更新プログラムをそのまま保存、管理するのではなく、ユーザ毎に異なる更新済み管理用差分プログラムの管理を行うことで、ディスク容量などを削減することが可能になる。
【０２４７】
なお、透かし挿入装置１９０１および透かし処理装置１９１１の各部が同一の機器上に存在する必要はなく、各部がネットワークで結合され、複数の端末で処理される形態であってもよい。
【０２４８】
また、透かし挿入装置１９０１および透かし処理装置１９１１が行う処理をプログラムにし、汎用のコンピュータに行わせる形態であっても良い。
【産業上の利用可能性】
【０２４９】
以上説明したように、本発明によれば、オリジナルプログラムを更新した更新プログラムにも透かしを付与できるので、安全にプログラムの更新を行うとともに、プログラムの更新を行ってもプログラムの電子透かしの読み取りや、挿入、削除などの処理が不正に行われないようにできる。また、本発明は、ネットワークを利用したコンピュータプログラムの流通等に広範囲に適応できる。
【図面の簡単な説明】
【０２５０】
【図１】本発明の実施の形態１にかかる透かし挿入による不正配布防止システムのブロック図
【図２】実施の形態１にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法を説明するための概念図
【図３】実施の形態１にかかる透かし挿入装置のブロック図
【図４】実施の形態１にかかる透かし挿入部のプログラムへの電子透かしの具体的な挿入方法について説明するための図
【図５】実施の形態１における透かし取出装置のブロック図
【図６】実施の形態１にかかる透かし処理装置のブロック図
【図７】実施の形態１にかかる透かし挿入装置のプログラム伝送処理のフローチャート
【図８】実施の形態１にかかる透かし処理装置における透かし入りオリジナルプログラムの更新処理のフローチャート
【図９】本発明の実施の形態２にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法を説明するための概念図
【図１０】実施の形態２にかかる透かし挿入装置のブロック図
【図１１】実施の形態２にかかる透かし処理装置のブロック図
【図１２】実施の形態２にかかる透かし挿入装置のプログラム伝送処理のフローチャート
【図１３】実施の形態２にかかる透かし処理装置における透かし入りオリジナルプログラムの更新処理のフローチャート
【図１４】本発明の実施の形態３にかかるプログラム不正配布防止システムが更新プログラムに透かしを入れる方法を説明するための概念図
【図１５】実施の形態３にかかる透かし挿入装置のブロック図
【図１６】実施の形態３にかかる透かし処理装置のブロック図
【図１７】実施の形態３にかかる透かし挿入装置のプログラム伝送処理のフローチャート
【図１８】実施の形態３にかかる透かし処理装置における透かし入りオリジナルプログラムの更新処理のフローチャート
【図１９】本発明の実施の形態４にかかるプログラム不正配布防止システムの処理を説明するための概念図
【図２０】実施の形態４にかかる透かし挿入装置のブロック図
【図２１】実施の形態４にかかる透かし処理装置のブロック図
【図２２】実施の形態４にかかる透かし挿入装置の処理のフローチャート
【図２３】実施の形態４にかかる透かし処理装置の処理のフローチャート
【符号の説明】
【０２５１】
１０、９００、１４００、１９００  配布元
２０、９０１、１４０１、１９０１  透かし挿入装置
３０  透かし取出装置
４０ａ、４０ｂ、９１０、１４１０、１９１０  配布先
５０  流出先
６０、９１１、１４１１、１９１１  透かし処理装置
２０１、３０１、５０１、１９０６  プログラム入力部
２０２、５０２、１４０２、１９０３  透かし挿入部
２０３、５０３  プログラム出力部
２０４  透かし用データ入力部
２０５  ＩＤ情報生成部
２０６、３０５  透かし情報記憶部
３０２  透かし検出部
３０３  出力部
３０４  ＩＤ情報記憶部
５０４、１４１２  透かし抽出部
５０７、１９０２、１９１２  プログラム更新部
９０２  透かし生成部
９０３  透かし出力部
９１２  透かし入力部
１９０４  プログラム管理部
１９０５  差分プログラム生成部
【図１】
2004326735.tif 000003
【図２】
2004326735.tif 000004
【図３】
2004326735.tif 000005
【図４】
2004326735.tif 000006
【図５】
2004326735.tif 000007
【図６】
2004326735.tif 000008
【図７】
2004326735.tif 000009
【図８】
2004326735.tif 000010
【図９】
2004326735.tif 000011
【図１０】
2004326735.tif 000012
【図１１】
2004326735.tif 000013
【図１２】
2004326735.tif 000014
【図１３】
2004326735.tif 000015
【図１４】
2004326735.tif 000016
【図１５】
2004326735.tif 000017
【図１６】
2004326735.tif 000018
【図１７】
2004326735.tif 000019
【図１８】
2004326735.tif 000020
【図１９】
2004326735.tif 000021
【図２０】
2004326735.tif 000022
【図２１】
2004326735.tif 000023
【図２２】
2004326735.tif 000024
【図２３】
2004326735.tif 000025