(57)【特許請求の範囲】
【請求項１】
締結されたドングル（Dongle）形式のトークン（Token）と連動する端末機通信部と、
特定ソフトウェアを演算及び制御し、かつ前記特定ソフトウェアを駆動するためのセキュレット（Seculet）が前記トークンに存在するか否かを確認し、確認結果、前記セキュレットが存在する場合、前記トークンに前記セキュレットを実行させるための実行命令を転送し、前記トークンから実行結果を受信して前記特定ソフトウェアが駆動されるように制御する端末機制御部と、
前記特定ソフトウェアを格納する端末機格納部と、
を含むソフトウェアライセンス保護端末機であって、
前記特定ソフトウェアの実行中に、前記セキュレットを必要とする場合、前記セキュレットの識別経路（Identity Path）情報を前記トークンに要請し、前記トークンから前記識別経路情報を受信する場合、前記トークンに前記セキュレットが存在することと認識することを特徴とする、ソフトウェアライセンス保護端末機。
【請求項２】
前記セキュレットは、
前記特定ソフトウェアの駆動に必須要素から構成されたプログラムであることを特徴とする、請求項１に記載のソフトウェアライセンス保護端末機。
【請求項３】
前記セキュレットは、
前記セキュレットを区分するための文字列、ディスクリプション（Description）、アイコンイメージ（Icon Image）、及び固有番号のうち、１つ以上の情報を含むアイデンティティセクション（Identity Section）と、
前記トークンで実行される前記実行命令を含むコードセクション（Code Section）と、
レファレンス（Reference）に用いられる不変データを格納する不変データセクション（Permanent Data Section）と、
前記セキュレットの実行に従うヒストリー情報を格納する可変データセクション（Dydamic Data Section）と、
を含むことを特徴とする、請求項２に記載のソフトウェアライセンス保護端末機。
【請求項４】
前記端末機制御部は、
前記特定ソフトウェアと前記トークンが共有しているキー（Key）を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、前記トークンを認証することを特徴とする、請求項１に記載のソフトウェアライセンス保護端末機。
【請求項５】
前記端末機制御部は、
前記セキュレットまたは識別経路情報に基づいて、入力パラメータ及び前記実行命令を前記トークンに転送し、前記トークンから前記セキュレットを実行可能メモリ領域に呼んできた後、前記入力パラメータをセッティングして該当コードを実行した前記実行結果を受信することを特徴とする、請求項１に記載のソフトウェアライセンス保護端末機。
【請求項６】
特定ソフトウェアを演算及び制御し、かつ前記特定ソフトウェアを駆動するためのセキュレットが存在する場合、前記セキュレットを実行させるための実行命令を転送し、実行結果を受信して前記ソフトウェアを駆動するユーザ端末機と、
前記セキュレットを格納し、ドングル形式として前記ユーザ端末機に締結されて、前記実行命令を受信する場合、前記セキュレットを実行可能メモリ領域に呼んできた後、前記セキュレットを実行した前記実行結果を前記ユーザ端末機に伝達するトークン（Token）と、
を含むソフトウェアライセンス保護システムであって、
前記ユーザ端末機は、前記特定ソフトウェアの実行中に、前記セキュレットを必要とする場合、前記セキュレットの識別経路（Identity Path）情報を前記トークンに要請し、前記トークンから前記識別経路情報を受信する場合、前記トークンに前記セキュレットが存在することと認識することを特徴とするソフトウェアライセンス保護システム。
【請求項７】
前記トークンは、
複数個の前記セキュレットを格納する格納部と、
前記セキュレットを実行して演算及び制御し、セキュレットを実行して演算及び制御するためのマイクロプロセッサーと、
を含んで構成されることを特徴とする、請求項６に記載のソフトウェアライセンス保護システム。
【請求項８】
特定ソフトウェアを実行するソフトウェア実行ステップと、
前記特定ソフトウェアを駆動するためのセキュレットが締結されたトークンに存在するか否かを確認し、確認結果、前記セキュレットが存在する場合、前記トークンに前記セキュレットを実行させるための実行命令を転送する実行命令転送ステップと、
前記トークンから実行結果を受信して前記ソフトウェアを駆動するソフトウェア駆動ステップと、
を含むソフトウェアライセンス保護方法であって、
前記実行命令転送ステップは、
前記特定ソフトウェアの実行中に、前記セキュレットを必要とする場合、前記トークンに前記セキュレットの識別経路（Identity Path）情報を要請する識別経路情報要請ステップと、
前記トークンから前記識別経路情報を受信する場合、前記トークンに前記セキュレットが存在することと認識するセキュレット認識ステップと、
を含むことを特徴とする、ソフトウェアライセンス保護方法。
【請求項９】
前記セキュレット認識ステップの以後に、
前記特定ソフトウェアと前記トークンが共有しているキー（Key）を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、前記トークンを認証するトークン認証ステップを更に含むことを特徴とする、請求項８に記載のソフトウェアライセンス保護方法。
【請求項１０】
前記実行命令転送ステップは、
前記セキュレットまたは識別経路情報に基づいて、入力パラメータ及び前記実行命令を前記トークンに転送する実行命令転送ステップを含むことを特徴とする、請求項８に記載のソフトウェアライセンス保護方法。
【請求項１１】
前記ソフトウェア駆動ステップは、
前記トークンから前記セキュレットを実行可能メモリ領域に呼んできた後、前記入力パラメータをセッティングして、該当コードを実行した前記実行結果を受信することを特徴とする、請求項８に記載のソフトウェアライセンス保護方法。
【請求項１２】
請求項８乃至１１のうちのいずれか１項にあるソフトウェアライセンス保護方法を実行させるためのプログラムを記録したコンピュータが読取可能な格納媒体。
【発明の詳細な説明】
【技術分野】
【０００１】  本特許出願は、２００８年１２月２６日付で韓国に出願した特許出願番号第１０−２００８−０１３４８９２号に対し、米国特許法１１９（ａ）条（３５Ｕ．Ｓ．Ｃ  §１１９（ａ））に従って優先権を主張すれば、その全ての内容は参考文献として本特許出願に併合される。併せて、本特許出願は、米国の以外の国家に対しても上記と同一な理由により優先権を主張すれば、その全ての内容は参考文献として本特許出願に併合される。【０００２】  本発明は、ソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体に関し、より詳しくは、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態の自体的なコンピューティング機能を内蔵したスマートカード等のトークンに特定ソフトウェアを駆動するための必須要素（例えば、圧縮ソフトウェアの場合は圧縮アルゴリズム、ゲームの場合はスコアリングルール、文書編集ソフトウェアの場合は客体配置ロジック）であるソフトウェアモジュール（以下、セキュア（Ｓｅｃｕｒｅ）＋アプレット（Ａｐｐｌｅｔ）＝セキュレット（Ｓｅｃｕｌｅｔ）と称する）を提供し、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、トークンの内部でセキュレットが実行され、それに対する実行結果を受信して、特定ソフトウェアが駆動されるように制御するソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体に関する。
【背景技術】
【０００３】  一般に、ソフトウェアは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの媒体を通じてオフライン（Ｏｆｆ−ｌｉｎｅ）上で直接販売されたり、該当ソフトウェア会社のインターネットサイトを用いて消費者がダウンロードする方式により販売がなされる。ソフトウェア（Ｓ／Ｗ）製品を購入したユーザが製品を設置し、使用するためには、ソフトウェア製造会社でＣＤ−ＲＯＭなどと共に提供する正規商品認証用ＣＤ−キー（ＣＤ−Ｋｅｙ）の入力を必要とする。【０００４】  しかしながら、正規商品認証用ＣＤ−キーは、一般テキスト形式でユーザが入力するように露出されているので、ＣＤ−キーとＣＤ−ＲＯＭをそのままに複写して第３者が不法的に使用する事例が頻繁に発生する問題がある。更に、このようなユーザはＣＤ−キーがない場合でも不法製作されたＣＤ−キー生成プログラムを利用したり、ＣＤ−キー認証プログラムをクラッキングする方法などを動員してソフトウェアの正規商品認証方法をハッキングしているので、Ｐ２Ｐサイトなどを通じて不法な共有がなされて、ソフトウェア著作権保護に大きい被害を与えている。【０００５】  一方、従来技術のうち、ＣＤ−キー認証方式より保安性の高い暗号キー認証方式のハードウェアドングルを用いたソフトウェア著作権保護技術が存在するが、このような従来の方式は、リバースエンジニアリングを通じて認証ロジックが容易に無力化されることがあり、特定ソフトウェアのみに従属的に動作するので、費用対比効果が低いという短所がある。【０００６】  ここに、プリントポート（Ｐｒｉｎｔｅｒ  Ｐｏｒｔ）やＵＳＢポートに別のハードウェア装置を連結し、ソフトウェアで該当装置の存在有無を確認したり、該当装置に暗号化、復号化用のキー値とアルゴリズムを内蔵して実行時点で暗号されたコードを解除する方式のソフトウェア複製防止装置も使われている。しかしながら、実行時点にソフトウェアが結局は復号化されてメモリにロードせざるを得ない構造的な問題によって、該当装置無しでソフトウェアが使用できるようにするハッキング事例がよく発生し、それだけでなく、有名なソフトウェア複製防止技術の場合、専門技術がない一般人もハッキングすることができる自動化されたハッキング道具が配布される事例もある。その他にも、仮想の実行環境（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を通じてリバースエンジニアリング（Ｒｅｖｅｒｓｅ  Ｅｎｇｉｎｅｅｒｉｎｇ）を難しくしてソフトウェアの認証キー確認ロジックを保護する方法が試されたが、これもまたハッキング事例及び自動化されたハッキング道具配布事例が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】  前述した問題点を解決するために、本発明は、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態のトークンに特定ソフトウェアを駆動するための必須要素であるセキュレットを提供し、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレット（Ｓｅｃｕｌｅｔ）が締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、それに対する実行結果を受信して特定ソフトウェアが駆動されるように制御するソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体を提供することを主な目的とする。
【課題を解決するための手段】
【０００８】  前述した目的を達成するために、本発明は、締結されたドングル（Ｄｏｎｇｌｅ）形式のトークン（Ｔｏｋｅｎ）と連動する端末機通信部と、特定ソフトウェアを演算及び制御し、かつ上記特定ソフトウェアを駆動するためのセキュレット（Ｓｅｃｕｌｅｔ）が上記トークンに存在するか否かを確認し、確認結果、上記セキュレットが存在する場合、上記トークンに上記セキュレットを実行させるための実行命令を転送し、上記トークンから実行結果を受信して上記特定ソフトウェアが駆動されるように制御する端末機制御部と、上記特定ソフトウェアを格納する端末機格納部と、を含むことを特徴とする、ソフトウェアライセンス保護端末機を提供する。【０００９】  また、本発明の他の目的によれば、ユーザ端末機と連動するサーバ通信部と、上記ユーザ端末機が特定ソフトウェアを購買した場合、上記ユーザ端末機にドングル形式のトークンが存在するか否かを確認し、確認結果、上記トークンが存在する場合、上記特定ソフトウェアを駆動するためのセキュレットを暗号化して上記トークンに転送するサーバ制御部と、上記特定ソフトウェア、上記セキュレットのうち、１つ以上の情報を格納するサーバ格納部と、を含むことを特徴とする、ソフトウェアライセンス保護サーバを提供する。【００１０】  また、本発明の他の目的によれば、特定ソフトウェアを演算及び制御し、かつ上記特定ソフトウェアを駆動するためのセキュレットが存在する場合、上記セキュレットを実行させるための実行命令を転送し、実行結果を受信して上記ソフトウェアを駆動するユーザ端末機と、上記セキュレットを格納し、ドングル形式として上記ユーザ端末機に締結されて上記セキュレットを上記ユーザ端末機に転送し、上記実行命令を受信する場合、上記セキュレットを実行可能メモリ領域に呼んできた上記実行結果を上記ユーザ端末機に伝達するトークン（Ｔｏｋｅｎ）と、を含むことを特徴とするソフトウェアライセンス保護システムを提供する。【００１１】  また、本発明の他の目的によれば、特定ソフトウェアを実行するソフトウェア実行ステップと、上記特定ソフトウェアを駆動するためのセキュレットが締結されたトークンに存在するか否かを確認し、確認結果、上記セキュレットが存在する場合、上記トークンに上記セキュレットを実行させるための実行命令を転送する実行命令転送ステップと、上記トークンから実行結果を受信して上記ソフトウェアを駆動するソフトウェア駆動ステップと、を含むことを特徴とする、ソフトウェアライセンス保護方法を提供する。【００１２】  また、本発明の他の目的によれば、前述したようなソフトウェアライセンス保護方法を実行させるためのプログラムで記録したコンピュータで読み取り可能な記録媒体を提供する。
【発明の効果】
【００１３】  以上、説明したように、本発明によれば、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態のトークンに特定ソフトウェアを駆動するための必須要素であるセキュレット（Ｓｅｃｕｌｅｔ）を提供して物理的に分離されたドングル形態のトークンに格納され、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、トークンの内で該当セキュレットが駆動されて、それに対する実行結果を受信して特定ソフトウェアが駆動されるように制御することができる効果がある。【００１４】  また、本発明によれば、特定ソフトウェアの駆動に必要な必須部分を分離してセキュレットに作って、これを物理的に保護されるトークンに格納し、駆動することによって、リバースエンジニアリング（Ｒｅｖｅｒｓｅ  Ｅｎｇｉｎｅｅｒｉｎｇ）に対する脆弱性を克服してライセンスを保護し、トークンの締結という単純な操作だけでソフトウェアのライセンスを確認するので、ネットワーク認証、ホスト端末認証などの手続きを要求しないことによって、顧客の不便を誘発しない効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るソフトウェアライセンス保護システムを概略的に示すブロック構成図である。
【図２】本発明の実施形態に係るユーザ端末機を概略的に示すブロック構成図である。
【図３】本発明の実施形態に係るソフトウェア提供サーバを概略的に示すブロック構成図である。
【図４】本発明の実施形態に係るトークンを概略的に示すブロック構成図である。
【図５】本発明の実施形態に係るセキュレットを概略的に示すブロック構成図である。
【図６】本発明の実施形態に係るソフトウェア提供サーバがセキュレットを提供する方法を説明するためのフローチャートである。
【図７】本発明の実施形態に係るユーザ端末機とトークンが連動して特定ソフトウェアを実行する方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】  以下、本発明の一部の実施形態を添付した図面を参照しつつ詳細に説明する。各図面の構成要素に参照符号を付加するに当たって、同一な構成要素に対してはたとえ他の図面上に表示されても、できる限り同一な符号を有するようにしていることに留意しなければならない。また、本発明を説明するに当たって、関連した公知構成または機能に対する具体的な説明が本発明の要旨を曖昧にすることができると判断される場合にはその詳細な説明は省略する。
【００１７】  また、本発明の構成要素を説明するに当たって、第１、第２、Ａ、Ｂ、（ａ）、（ｂ）などの用語を使用することができる。このような用語はその構成要素を他の構成要素と区別するためのものであり、その用語により当該構成要素の本質や回順序または順序などが限定されない。どの構成要素が他の構成要素に“連結”、“結合”、または“接続”されると記載された場合、その構成要素はその他の構成要素に直接的に連結、または接続できるが、各構成要素の間に更に他の構成要素が“連結”、“結合”、または“接続”されることもできると理解されるべきである。
【００１８】  図１は、本発明の実施形態に係るソフトウェアライセンス保護システムを概略的に示すブロック構成図である。
【００１９】  本実施形態に係るソフトウェアライセンス保護システムは、ユーザ端末機１１０、トークン１２０、及びソフトウェア提供サーバ１３０を含む。
【００２０】  ユーザ端末機１１０は、ユーザのキー操作に従って有無線通信網を経由して各種ウェブページデータを受信することができる端末機をいうものであり、個人用コンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノートブック、個人携帯用情報端末機（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、及び移動通信端末機（Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｔｅｒｍｉｎａｌ）等のうちのいずれか１つであり、有無線通信網を経由してソフトウェア提供サーバ１３０に接続するためのウェブブラウザーとプログラムを格納するためのメモリ、プログラムを実行して演算及び制御するためのマイクロプロセッサーなどを具備している端末機を意味する。即ち、ユーザ端末機１１０は個人ＰＣのものが一般的であるが、有無線通信網に連結されてソフトウェア提供サーバ１３０とサーバ−クライアント通信が可能であれば、如何なる端末機も可能であり、ノートブックコンピュータ、移動通信端末機、ＰＤＡなど、如何なる通信コンピューティング装置を全て含む広い概念である。
【００２１】  ユーザ端末機１１０は特定ソフトウェアを演算及び制御し、かつ、特定ソフトウェアを駆動するためのセキュレット（Ｓｅｃｕｌｅｔ）（または、‘ソフトウェアジャンク（Ｓｏｆｔｗａｒｅ  Ｃｈｕｎｋ）’と称する）が締結されたドングル（Ｄｏｎｇｌｅ）形式のトークン１２０に存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークン１２０にセキュレットを実行させるための実行命令を転送し、トークン１２０から実行結果を受信して特定ソフトウェアが駆動されるように制御する機能を遂行する。ここで、セキュレットはセキュア（Ｓｅｃｕｒｅ）とアプレット（Ａｐｐｌｅｔ）とを合成した概念の用語である。
【００２２】  ユーザ端末機１１０は、特定プログラムの実行中にセキュレットを必要とする場合、セキュレットの識別経路（Ｉｄｅｎｔｉｔｙ  Ｐａｔｈ）情報をトークン１２０に要請し、トークン１２０から識別経路情報を受信する場合、トークン１２０にセキュレットが存在することと認識する機能を遂行する。
【００２３】  ユーザ端末機１１０は、特定プログラムとトークン１２０が共有しているキー（Ｋｅｙ）を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、トークン１２０を認証する機能を遂行する。ユーザ端末機１１０は、セキュレットまたは識別経路情報に基づいて、入力パラメータ及び実行命令をトークン１２０に転送し、トークン１２０からセキュレットを実行可能メモリ領域に呼んできた後、入力パラメータをセッティングして該当コードを実行した実行結果を受信する機能を遂行する。
【００２４】  トークン１２０はセキュレットを格納し、ドングル形式としてユーザ端末機１１０に締結されてセキュレットをユーザ端末機１１０に転送し、ユーザ端末機１１０から実行命令を受信する場合、セキュレットを実行可能メモリ領域に呼んできた実行結果をユーザ端末機１１０に伝達する機能を遂行する。
【００２５】  ソフトウェア提供サーバ１３０は、ハードウェアー的には通常的なウェブサーバ（Ｗｅｂ  Ｓｅｒｖｅｒ）と同一な構成をなしている。しかしながら、ソフトウェア的には、図３と関連して後述するように、Ｃ、Ｃ＋＋、Ｊａｖａ、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｖｉｓｕａｌ  Ｃなど、如何なる言語を通じて具現されて、多様な機能をするプログラムモジュール（Ｍｏｄｕｌｅ）を含む。ソフトウェア提供サーバ１３０は、ウェブサーバ（Ｗｅｂ  Ｓｅｒｖｅｒ）の形態で具現され、ウェブサーバは、一般的にインターネットのような開放型コンピュータネットワークを介して不特定多数のクライアント及び／または他のサーバと連結されており、クライアントまたは他のウェブサーバの作業遂行要請を受付けて、それに対する作業結果を導出して提供するコンピュータシステム、及びそのために設置されているコンピュータソフトウェア（ウェブサーバプログラム）を意味する。
【００２６】  しかしながら、前述したウェブサーバプログラムの他にも、上記ウェブサーバ上で動作する一連の応用プログラム（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ）と、場合によっては、内部に構築されている各種データベースを含む広い概念として理解されるべきである。
【００２７】  このようなソフトウェア提供サーバ１３０は、一般的なサーバ用ハードウェアに、ＤＯＳ、ウィンドウ（ｗｉｎｄｏｗｓ）、リヌックス（Ｌｉｎｕｘ）、ユニックス（ＵＮＩＸ）、マッキントッシュ（Ｍａｃｉｎｔｏｓｈ）等の運営体制によって多様に提供されているウェブサーバプログラムを用いて具現され、代表的なものには、ウィンドウ環境で使われるウェブサイト（Ｗｅｂｓｉｔｅ）、ＩＩＳ（Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｅｒ）と、ユニックス環境で使われるＣＥＲＮ、ＮＣＳＡ、ＡＰＰＡＣＨなどが用いられる。また、ソフトウェア提供サーバ１３０は、ソフトウェア提供のための認証システム及び決済システムと連動することもできる。
【００２８】  また、ソフトウェア提供サーバ１３０は、会員加入情報と、ソープウェアー提供に対する情報を分類してデータベース（Ｄａｔａｂａｓｅ）に格納させ、管理するが、このようなデータベースはソフトウェア提供サーバ１３０の内部または外部に具現されることができる。
【００２９】  このようなデータベースは、データベース管理プログラム（ＤＢＭＳ）を用いてコンピュータシステムの格納空間（ハードディスクまたはメモリ）に具現された一般的なデータ構造を意味するものであって、データの検索（抽出）、削除、編集、追加などを自由に行なうことができるデータ格納形態を意味するものであって、オラクル（Ｏｒａｃｌｅ）、インフォミックス（Ｉｎｆｏｍｉｘ）、サイベース（Ｓｙｂａｓｅ）、ＤＢ２のような関係型データベース管理システム（ＲＤＢＭＳ）や、ゲムストン（Ｇｅｍｓｔｏｎ）、オリオン（Ｏｒｉｏｎ）、Ｏ２などのオブジェクト指向データベース管理システム（ＯＯＤＢＭＳ）、及びエクセロン（Ｅｘｃｅｌｏｎ）、タミノ（Ｔａｍｉｎｏ）、セカイジュ（Ｓｅｋａｉｊｕ）などのＸＭＬ専用データベース（ＸＭＬ  Ｎａｔｉｖｅ  Ｄａｔａｂａｓｅ）を用いて本実施形態の目的に合うように具現されることができ、自身の機能を達成するために、適当なフィールド（Ｆｉｅｌｄ）またはエレメントを有している。
【００３０】  ソフトウェア提供サーバ１３０は、ユーザ端末機１１０が特定ソフトウェアを購買した場合、ユーザ端末機１１０にドングル形式のトークンが存在するか否かを確認し、確認結果、トークン１２０が存在する場合、特定ソフトウェアを駆動するためのセキュレットを暗号化してトークン１２０に転送する機能を遂行する。
【００３１】  ソフトウェア提供サーバ１３０は、サブスティチューション（Ｓｕｂｓｔｉｔｕｔｉｏｎ）、トランスポジション（Ｔｒａｎｓｐｏｓｉｔｉｏｎ）、ロータマシン（Ｒｏｔｏｒ  Ｍａｃｈｉｎｅ）、秘密キー（Ｐｒｉｖａｔｅ  Ｋｅｙ）、公開キー（Ｐｕｂｌｉｃ  Ｋｅｙ）のうち、少なくとも１つの方式によりセキュレットを暗号化する機能を遂行する。
【００３２】  ソフトウェア提供サーバ１３０は、トークン１２０が暗号化されたセキュレットの暗号化を解除して格納することを確認した後、ソフトウェアの購買処理を完了する機能を遂行する。
【００３３】  図２は、本発明の実施形態に係るユーザ端末機を概略的に示すブロック構成図である。本実施形態に係るユーザ端末機１１０は、端末機通信部２１０、端末機制御部２２０、及び端末機格納部２３０を含む。
【００３４】  本実施形態では、ユーザ端末機１１０が端末機通信部２１０、端末機制御部２２０、及び端末機格納部２３０のみを含んで構成されるものと記載しているが、これは本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でユーザ端末機１１０に含まれる構成要素に対して多様に修正及び変形して適用可能である。
【００３５】  端末機通信部２１０はトークン１２０と連動する機能を遂行する通信手段であって、各種データを送受信する機能を遂行する。
【００３６】  本実施形態に係る端末機制御部２２０は端末機の全般的な機能を制御する制御手段であって、特定ソフトウェアを演算及び制御し、かつ、特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形式のトークン１２０に存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークン１２０にセキュレットを実行させるための実行命令を転送し、トークン１２０から実行結果を受信して特定ソフトウェアが駆動するようにする機能を遂行する。
【００３７】  端末機制御部２２０は、特定プログラムの実行中にセキュレットを必要とする場合、セキュレットの識別経路（Ｉｄｅｎｔｉｔｙ  Ｐａｔｈ）情報をトークン１２０に要請し、トークン１２０から識別経路情報を受信する場合、トークン１２０にセキュレットが存在することと認識するようにする機能を遂行する。
【００３８】  端末機制御部２２０は、特定プログラムとトークン１２０が共有しているキー（Ｋｅｙ）を通じて相互暗号または復号化されたメッセージを送受信して同一な暗号化技法を有していることが確認されれば、トークン１２０を認証するようにする機能を遂行する。端末機制御部２２０は、セキュレットまたは識別経路情報に基づいて、入力パラメータ及び実行命令をトークン１２０に転送し、トークン１２０からセキュレットを実行可能メモリ領域に呼んできた後、入力パラメータをセッティングして該当コードを実行した実行結果を受信するようにする機能を遂行する。
【００３９】  端末機格納部２３０は端末機の駆動に必要な各種データを格納する格納手段であって、特定ソフトウェアを格納する機能を遂行する。
【００４０】  図３は、本発明の実施形態に係るソフトウェア提供サーバを概略的に示すブロック構成図である。
【００４１】  本実施形態に係るソフトウェア提供サーバ１３０は、サーバ通信部３１０、サーバ制御部３２０、及びサーバ格納部３３０を含んで構成される。
【００４２】  本実施形態では、ソフトウェア提供サーバ１３０がサーバ通信部３１０、サーバ制御部３２０、及びサーバ格納部３３０のみを含んで構成されるものと記載しているが、これは本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でソフトウェア提供サーバ１３０に含まれる構成要素に対して多様に修正及び変形して適用可能である。
【００４３】  サーバ通信部３１０はユーザ端末機１１０と連動する機能を遂行する通信手段であって、各種データを送受信する機能を遂行する。
【００４４】  本実施形態に係るサーバ制御部３２０はサーバの全般的な機能を制御する制御手段であって、サーバ通信部３１０を制御してユーザ端末機１１０が特定ソフトウェアを購買した場合、ユーザ端末機１１０にドングル形式のトークンが存在するか否かを確認し、確認結果、トークン１２０が存在する場合、特定ソフトウェアを駆動するためのセキュレットを暗号化してトークン１２０に転送するようにする機能を遂行する。
【００４５】  サーバ制御部３２０は、サブスティチューション（Ｓｕｂｓｔｉｔｕｔｉｏｎ）、トランスポジション（Ｔｒａｎｓｐｏｓｉｔｉｏｎ）、ロータマシン（Ｒｏｔｏｒ  Ｍａｃｈｉｎｅ）、秘密キー（Ｐｒｉｖａｔｅ  Ｋｅｙ）、公開キー（Ｐｕｂｌｉｃ  Ｋｅｙ）のうち、少なくとも１つの方式によりセキュレットを暗号化するようにする機能を遂行する。サーバ制御部３２０は、トークン１２０が暗号化されたセキュレットの暗号化を解除して格納することを確認した後、ソフトウェアの購買処理を完了するようにする機能を遂行する。
【００４６】  サーバ格納部３３０はサーバの駆動に必要な各種データを格納する格納手段であって、特定ソフトウェア、セキュレットのうち、１つ以上の情報を格納する機能を遂行する。
【００４７】  図４は、本発明の実施形態に係るトークンを概略的に示すブロック構成図である。
【００４８】  本実施形態に係るトークン１２０は、トークン管理部４１０、及び格納部４２０を含んで構成される。
【００４９】  本実施形態では、トークン１２０がトークン管理部４１０及び格納部４２０のみを含んで構成されるものと記載しているが、これは本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でトークン１２０に含まれる構成要素に対して多様に修正及び変形して適用可能である。
【００５０】  トークン管理部４１０はトークンの全般的な機能を制御する制御手段であって、セキュレットをユーザ端末機１１０に転送し、実行命令を受信する場合、セキュレットを実行可能メモリ領域に呼んできた実行結果をユーザ端末機１１０に伝達する機能を遂行する。即ち、トークン管理部４１０は格納部４２０に格納されたセキュレットを実行して演算及び制御するためのマイクロプロセッサーでありうる。格納部４２０はトークンの駆動に必要な各種データを格納する格納手段であって、複数個のセキュレットを格納する機能を遂行する。
【００５１】  図５は、本発明の実施形態に係るセキュレットを概略的に示すブロック構成図である。
【００５２】  本実施形態に係るセキュレットは特定ソフトウェアの駆動に必須要素から構成されたプログラムを意味し、アイデンティティセクション、コードセクション、不変データセクション、及び可変データセクションを含む。
【００５３】  アイデンティティセクションは、セキュレットを区分するための文字列、ディスクリプション（Ｄｅｓｃｒｉｐｔｉｏｎ）、アイコンイメージ（Ｉｃｏｎ  Ｉｍａｇｅ）、及び固有番号のうち、１つ以上の情報を含む。アイデンティティセクションは、ユーザ端末機１１０でトークン１２０の内に存在するセキュレットを用いるための探索／実行選択情報として活用できる。
【００５４】  コードセクションは、トークン１２０で実行される実行命令を含む。コードセクションは、機械語または高い水準のプログラミング言語で作られて、セキュレットの実行命令を込めるようになる。この実行命令のＩｎ／Ｏｕｔｐｕｔの複雑度があまりに単純な場合、複製が容易になるので、不変データ／可変データの活用などを通じて適正水準以上の複雑度を有するようにすることができる。
【００５５】  不変データセクションは、レファレンス（Ｒｅｆｅｒｅｎｃｅ）に用いられる不変データを格納する。不変データセクションは、ナンドフラッシュ（ＮＡＮＤ  Ｆｌａｓｈ）等の大容量ストレージ（Ｓｔｏｒａｇｅ）に格納されてコードセクションの実行中に参照され、各種ソフトウェアで使われる各種レファレンステーブルが対象となる。
【００５６】  可変データセクションは、セキュレットの実行に従うヒストリー情報を格納する。可変データセクションは、コードの実行中に発生する状態情報を記録するようになり、ナンドフラッシュに格納されることもできるが、場合によって、ＥＥＰＲＯＭやＮｏｒなど、Ｉ／Ｏ速度の速い領域に格納されることもできる。また、可変データはセキュレットをＣｏｎｔｅｘｔ  Ｓｅｎｓｉｔｉｖｅに作って、使用量基盤、機能基盤、回数基盤、データ量基盤など、多様なライセンシングスキーム（Ｌｉｃｅｎｓｉｎｇ  Ｓｃｈｅｍｅ）を具現することができるようにする。
【００５７】  図６は、本発明の実施形態に係るソフトウェア提供サーバがセキュレットを提供する方法を説明するためのフローチャートである。
【００５８】  ユーザ端末機１１０は、ソフトウェア提供サーバ１３０に接続して特定ソフトウェアを購買する（Ｓ６１０）。ソフトウェア提供サーバ１３０は、ユーザ端末機１１０にドングル形式のトークンが存在するか否かを確認する（Ｓ６２０）。ステップＳ６２０の確認結果、トークン１２０が存在する場合、ソフトウェア提供サーバ１３０は、サーバとトークンとの間に相互認証されるか否かを確認する（Ｓ６３０）。
【００５９】  ステップＳ６３０の確認結果、サーバとトークンとの間に相互認証される場合、ソフトウェア提供サーバ１３０は、特定ソフトウェアを駆動するためのセキュレットを暗号化してトークン１２０に転送する（Ｓ６４０）。ここで、ソフトウェア提供サーバ１３０は、サブスティチューション（Ｓｕｂｓｔｉｔｕｔｉｏｎ）、トランスポジション（Ｔｒａｎｓｐｏｓｉｔｉｏｎ）、ロータマシン（Ｒｏｔｏｒ  Ｍａｃｈｉｎｅ）、秘密キー（Ｐｒｉｖａｔｅ  Ｋｅｙ）、公開キー（Ｐｕｂｌｉｃ  Ｋｅｙ）のうち、少なくとも１つの方式によりセキュレットを暗号化することができる。
【００６０】  トークン１２０は、セキュレットの暗号を解除した後、格納する（Ｓ６５０）。ソフトウェア提供サーバ１３０は、トークン１２０が暗号化されたセキュレットの暗号化を解除して格納することを確認した後、ソフトウェアの購買処理を完了する。
【００６１】  図６では、ソフトウェア提供サーバ１３０がステップＳ６１０乃至ステップＳ６５０を順次に実行するものと記載しているが、これは、本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でソフトウェア提供サーバ１３０が図６に記載された順序を変更して実行したり、ステップＳ６１０乃至ステップＳ６５０のうち、１つ以上のステップを並列的に実行することで、多様に修正及び変形して適用可能であるので、図６は時系列的な順序に限定されるものではない。
【００６２】  図７は、本発明の実施形態に係るユーザ端末機とトークンとが連動して特定ソフトウェアを実行する方法を説明するためのフローチャートである。
【００６３】  ユーザ端末機１１０は、特定ソフトウェアを実行する（Ｓ７１０）。ユーザ端末機１１０は、特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形式のトークン１２０に存在するか否かを確認する（Ｓ７２０）。即ち、ユーザ端末機１１０は、特定プログラムの実行中にセキュレットを必要とする場合、セキュレットの識別経路（Ｉｄｅｎｔｉｔｙ  Ｐａｔｈ）情報をトークン１２０に要請し、トークン１２０から識別経路情報を受信する場合、トークン１２０にセキュレット存在することと認識することができる。
【００６４】  一方、ユーザ端末機１１０は、特定プログラムとトークン１２０が共有しているキー（Ｋｅｙ）を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、トークン１２０を認証する機能を遂行する。
【００６５】  ステップＳ７２０の確認結果、セキュレットが存在する場合、ユーザ端末機１１０はトークン１２０にセキュレットを実行させるための実行命令を転送する（Ｓ７３０）。即ち、ユーザ端末機１１０は、セキュレットまたは識別経路情報に基づいて、入力パラメータ及び実行命令をトークン１２０に転送する。
【００６６】  トークン１２０はセキュレットを実行可能メモリ領域に呼んでくる（Ｓ７４０）。トークン１２０は、入力パラメータをセッティングして該当コードを実行する（Ｓ７５０）。トークン１２０は、実行結果をユーザ端末機１１０に転送する（Ｓ７６０）。ユーザ端末機１１０は、トークン１２０から実行結果を受信して特定ソフトウェアを駆動する。
【００６７】  図７では、ユーザ端末機１１０及びトークン１２０がステップＳ７１０乃至ステップＳ７６０を順次に実行するものと記載しているが、これは、本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲で、ユーザ端末機１１０及びトークン１２０は、図７に記載された順序を変更して実行したり、ステップＳ７１０乃至ステップＳ７６０のうち、１つ以上のステップを並列的に実行することで、多様に修正及び変形して適用可能であるので、図７は時系列的な順序に限定されるものではない。
【００６８】  前述したように、図６乃至図７に記載された本実施形態に係るソフトウェアライセンス保護方法は、プログラムで具現され、コンピュータで読み取り可能な記録媒体に記録されることができる。本実施形態に係るソフトウェアライセンス保護方法を具現するためのプログラムが記録され、コンピュータが読み取り可能な記録媒体は、コンピュータシステムによって読み取り可能なデータが格納される全ての種類の記録装置を含む。このようなコンピュータが読み取り可能な記録媒体の例には、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、光データ格納装置などがあり、また、キャリアウェーブ（例えば、インターネットを通じた転送）の形態で具現されるものも含む。また、コンピュータが読み取り可能な記録媒体は、ネットワークにより連結されたコンピュータシステムに分散されて、分散方式によりコンピュータが読み取り可能なコードが格納され、実行されることもできる。また、本実施形態を具現するための機能的な（Ｆｕｎｃｔｉｏｎａｌ）プログラム、コード、及びコードセグメントは、本実施形態が属する技術分野のプログラマーにより容易に推論できる。
【００６９】
以上、本発明の実施形態を構成する全ての構成要素が１つに結合されるか、結合されて動作することと説明されたが、本発明が必ずこのような実施形態に限定されるものではない。即ち、本発明の目的範囲内であれば、その全ての構成要素が１つ以上に選択的に結合して動作することもできる。また、その全ての構成要素が各々１つの独立的なハードウェアで具現されることができるが、各構成要素のその一部または全部が選択的に組み合わせて１つまたは複数個のハードウェアで組み合わせた一部または全部の機能を遂行するプログラムモジュールを有するコンピュータプログラムとして具現されることもできる。そのコンピュータプログラムを構成するコード及びコードセグメントは本発明の技術分野の当業者により容易に推論できるものである。このようなコンピュータプログラムは、コンピュータが読取可能な格納媒体（Ｃｏｍｐｕｔｅｒ Ｒｅａｄａｂｌｅ Ｍｅｄｉａ）に格納されてコンピュータによって読取され、実行されることによって、本発明の実施形態を具現することができる。コンピュータプログラムの格納媒体としては、磁気記録媒体、光記録媒体などが含まれることができる。
【００７０】  また、以上で記載された“含む”、“構成する”、または“有する”などの用語は、特別に反対になる記載がない限り、該当構成要素が内在できることを意味するものであるので、他の構成要素を除外するのでなく、他の構成要素を更に含むことができることと解釈されるべきである。技術的または科学的な用語を含んだ全ての用語は、異に定義されない限り、本発明が属する技術分野で通常の知識を有する者により一般的に理解されることと同一な意味を有する。事前に定義された用語のように、一般的に使われる用語は関連技術の文脈上の意味と一致するものと解釈されるべきであり、本発明で明らかに定義しない限り、理想的であるとか、過度に形式的な意味として解釈されない。
【００７１】  以上の説明は、本発明の技術思想を例示的に説明したことに過ぎないものであって、本発明が属する技術分野で通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で多様な修正及び変形が可能である。したがって、本発明に開示された実施形態は本発明の技術思想を限定するためのものではなく、説明するためのものであり、このような実施形態により本発明の技術思想の範囲が限定されるのではない。本発明の保護範囲は請求範囲により解釈されなければならず、それと同等な範囲内にある全ての技術思想は本発明の権利範囲に含まれるものと解釈されるべきである。
【産業上の利用可能性】
【００７２】  以上、説明したように、本発明は、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態のトークンに特定ソフトウェアを駆動するための必須要素であるセキュレットを提供し、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、それに対する実行結果を受信して特定ソフトウェアが駆動されるように制御するソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体分野に適用されて、特定ソフトウェアのライセンス保護を通じてリバースエンジニアリング（Ｒｅｖｅｒｓｅ  Ｅｎｇｉｎｅｅｒｉｎｇ）に対する脆弱性を克服し、かつオンライン依存性と顧客の不便を誘発しない効果を発生する非常に有用な発明である。
【図１】
0005567033.tif 000002
【図２】
0005567033.tif 000003
【図３】
0005567033.tif 000004
【図４】
0005567033.tif 000005
【図５】
0005567033.tif 000006
【図６】
0005567033.tif 000007
【図７】
0005567033.tif 000008