説明

ソフトウェアライセンス保護方法、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体

本発明は、ソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体に関するものである。
本発明は、締結されたドングル(Dongle)形式のトークン(Token)と連動する端末機通信部と、特定ソフトウェアを演算及び制御し、かつ上記特定ソフトウェアを駆動するためのセキュレット(Seculet)が上記トークンに存在するか否かを確認し、確認結果、上記セキュレットが存在する場合、上記トークンに上記セキュレットを実行させるための実行命令を転送し、上記トークンから実行結果を受信して上記特定ソフトウェアが駆動されるように制御する端末機制御部と、上記特定ソフトウェアを格納する端末機格納部と、を含むことを特徴とする、ソフトウェアライセンス保護端末機を提供する。
本発明によれば、特定ソフトウェアのライセンス保護を通じてリバースエンジニアリング(Reverse Engineering)に対する脆弱性を克服し、かつオンライン依存性と顧客の不便を誘発しない効果がある。

【発明の詳細な説明】
【技術分野】
【0001】
本特許出願は、2008年12月26日付で韓国に出願した特許出願番号第10−2008−0134892号に対し、米国特許法119(a)条(35U.S.C §119(a))に従って優先権を主張すれば、その全ての内容は参考文献として本特許出願に併合される。併せて、本特許出願は、米国の以外の国家に対しても上記と同一な理由により優先権を主張すれば、その全ての内容は参考文献として本特許出願に併合される。
【0002】
本発明は、ソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体に関し、より詳しくは、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態の自体的なコンピューティング機能を内蔵したスマートカード等のトークンに特定ソフトウェアを駆動するための必須要素(例えば、圧縮ソフトウェアの場合は圧縮アルゴリズム、ゲームの場合はスコアリングルール、文書編集ソフトウェアの場合は客体配置ロジック)であるソフトウェアモジュール(以下、セキュア(Secure)+アプレット(Applet)=セキュレット(Seculet)と称する)を提供し、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、トークンの内部でセキュレットが実行され、それに対する実行結果を受信して、特定ソフトウェアが駆動されるように制御するソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体に関する。
【背景技術】
【0003】
一般に、ソフトウェアは、CD−ROM、DVD−ROMなどの媒体を通じてオフライン(Off−line)上で直接販売されたり、該当ソフトウェア会社のインターネットサイトを用いて消費者がダウンロードする方式により販売がなされる。ソフトウェア(S/W)製品を購入したユーザが製品を設置し、使用するためには、ソフトウェア製造会社でCD−ROMなどと共に提供する正規商品認証用CD−キー(CD−Key)の入力を必要とする。
【0004】
しかしながら、正規商品認証用CD−キーは、一般テキスト形式でユーザが入力するように露出されているので、CD−キーとCD−ROMをそのままに複写して第3者が不法的に使用する事例が頻繁に発生する問題がある。更に、このようなユーザはCD−キーがない場合でも不法製作されたCD−キー生成プログラムを利用したり、CD−キー認証プログラムをクラッキングする方法などを動員してソフトウェアの正規商品認証方法をハッキングしているので、P2Pサイトなどを通じて不法な共有がなされて、ソフトウェア著作権保護に大きい被害を与えている。
【0005】
一方、従来技術のうち、CD−キー認証方式より保安性の高い暗号キー認証方式のハードウェアドングルを用いたソフトウェア著作権保護技術が存在するが、このような従来の方式は、リバースエンジニアリングを通じて認証ロジックが容易に無力化されることがあり、特定ソフトウェアのみに従属的に動作するので、費用対比効果が低いという短所がある。
【0006】
ここに、プリントポート(Printer Port)やUSBポートに別のハードウェア装置を連結し、ソフトウェアで該当装置の存在有無を確認したり、該当装置に暗号化、復号化用のキー値とアルゴリズムを内蔵して実行時点で暗号されたコードを解除する方式のソフトウェア複製防止装置も使われている。しかしながら、実行時点にソフトウェアが結局は復号化されてメモリにロードせざるを得ない構造的な問題によって、該当装置無しでソフトウェアが使用できるようにするハッキング事例がよく発生し、それだけでなく、有名なソフトウェア複製防止技術の場合、専門技術がない一般人もハッキングすることができる自動化されたハッキング道具が配布される事例もある。その他にも、仮想の実行環境(Virtual Machine)を通じてリバースエンジニアリング(Reverse Engineering)を難しくしてソフトウェアの認証キー確認ロジックを保護する方法が試されたが、これもまたハッキング事例及び自動化されたハッキング道具配布事例が存在する。
【発明の概要】
【発明が解決しようとする課題】
【0007】
前述した問題点を解決するために、本発明は、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態のトークンに特定ソフトウェアを駆動するための必須要素であるセキュレットを提供し、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレット(Seculet)が締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、それに対する実行結果を受信して特定ソフトウェアが駆動されるように制御するソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体を提供することを主な目的とする。
【課題を解決するための手段】
【0008】
前述した目的を達成するために、本発明は、締結されたドングル(Dongle)形式のトークン(Token)と連動する端末機通信部と、特定ソフトウェアを演算及び制御し、かつ上記特定ソフトウェアを駆動するためのセキュレット(Seculet)が上記トークンに存在するか否かを確認し、確認結果、上記セキュレットが存在する場合、上記トークンに上記セキュレットを実行させるための実行命令を転送し、上記トークンから実行結果を受信して上記特定ソフトウェアが駆動されるように制御する端末機制御部と、上記特定ソフトウェアを格納する端末機格納部と、を含むことを特徴とする、ソフトウェアライセンス保護端末機を提供する。
【0009】
また、本発明の他の目的によれば、ユーザ端末機と連動するサーバ通信部と、上記ユーザ端末機が特定ソフトウェアを購買した場合、上記ユーザ端末機にドングル形式のトークンが存在するか否かを確認し、確認結果、上記トークンが存在する場合、上記特定ソフトウェアを駆動するためのセキュレットを暗号化して上記トークンに転送するサーバ制御部と、上記特定ソフトウェア、上記セキュレットのうち、1つ以上の情報を格納するサーバ格納部と、を含むことを特徴とする、ソフトウェアライセンス保護サーバを提供する。
【0010】
また、本発明の他の目的によれば、特定ソフトウェアを演算及び制御し、かつ上記特定ソフトウェアを駆動するためのセキュレットが存在する場合、上記セキュレットを実行させるための実行命令を転送し、実行結果を受信して上記ソフトウェアを駆動するユーザ端末機と、上記セキュレットを格納し、ドングル形式として上記ユーザ端末機に締結されて上記セキュレットを上記ユーザ端末機に転送し、上記実行命令を受信する場合、上記セキュレットを実行可能メモリ領域に呼んできた上記実行結果を上記ユーザ端末機に伝達するトークン(Token)と、を含むことを特徴とするソフトウェアライセンス保護システムを提供する。
【0011】
また、本発明の他の目的によれば、特定ソフトウェアを実行するソフトウェア実行ステップと、上記特定ソフトウェアを駆動するためのセキュレットが締結されたトークンに存在するか否かを確認し、確認結果、上記セキュレットが存在する場合、上記トークンに上記セキュレットを実行させるための実行命令を転送する実行命令転送ステップと、上記トークンから実行結果を受信して上記ソフトウェアを駆動するソフトウェア駆動ステップと、を含むことを特徴とする、ソフトウェアライセンス保護方法を提供する。
【0012】
また、本発明の他の目的によれば、前述したようなソフトウェアライセンス保護方法を実行させるためのプログラムで記録したコンピュータで読み取り可能な記録媒体を提供する。
【発明の効果】
【0013】
以上、説明したように、本発明によれば、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態のトークンに特定ソフトウェアを駆動するための必須要素であるセキュレット(Seculet)を提供して物理的に分離されたドングル形態のトークンに格納され、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、トークンの内で該当セキュレットが駆動されて、それに対する実行結果を受信して特定ソフトウェアが駆動されるように制御することができる効果がある。
【0014】
また、本発明によれば、特定ソフトウェアの駆動に必要な必須部分を分離してセキュレットに作って、これを物理的に保護されるトークンに格納し、駆動することによって、リバースエンジニアリング(Reverse Engineering)に対する脆弱性を克服してライセンスを保護し、トークンの締結という単純な操作だけでソフトウェアのライセンスを確認するので、ネットワーク認証、ホスト端末認証などの手続きを要求しないことによって、顧客の不便を誘発しない効果がある。
【図面の簡単な説明】
【0015】
【図1】本発明の実施形態に係るソフトウェアライセンス保護システムを概略的に示すブロック構成図である。
【図2】本発明の実施形態に係るユーザ端末機を概略的に示すブロック構成図である。
【図3】本発明の実施形態に係るソフトウェア提供サーバを概略的に示すブロック構成図である。
【図4】本発明の実施形態に係るトークンを概略的に示すブロック構成図である。
【図5】本発明の実施形態に係るセキュレットを概略的に示すブロック構成図である。
【図6】本発明の実施形態に係るソフトウェア提供サーバがセキュレットを提供する方法を説明するためのフローチャートである。
【図7】本発明の実施形態に係るユーザ端末機とトークンが連動して特定ソフトウェアを実行する方法を説明するためのフローチャートである。
【発明を実施するための形態】
【0016】
以下、本発明の一部の実施形態を添付した図面を参照しつつ詳細に説明する。各図面の構成要素に参照符号を付加するに当たって、同一な構成要素に対してはたとえ他の図面上に表示されても、できる限り同一な符号を有するようにしていることに留意しなければならない。また、本発明を説明するに当たって、関連した公知構成または機能に対する具体的な説明が本発明の要旨を曖昧にすることができると判断される場合にはその詳細な説明は省略する。
【0017】
また、本発明の構成要素を説明するに当たって、第1、第2、A、B、(a)、(b)などの用語を使用することができる。このような用語はその構成要素を他の構成要素と区別するためのものであり、その用語により当該構成要素の本質や回順序または順序などが限定されない。どの構成要素が他の構成要素に“連結”、“結合”、または“接続”されると記載された場合、その構成要素はその他の構成要素に直接的に連結、または接続できるが、各構成要素の間に更に他の構成要素が“連結”、“結合”、または“接続”されることもできると理解されるべきである。
【0018】
図1は、本発明の実施形態に係るソフトウェアライセンス保護システムを概略的に示すブロック構成図である。
【0019】
本実施形態に係るソフトウェアライセンス保護システムは、ユーザ端末機110、トークン120、及びソフトウェア提供サーバ130を含む。
【0020】
ユーザ端末機110は、ユーザのキー操作に従って有無線通信網を経由して各種ウェブページデータを受信することができる端末機をいうものであり、個人用コンピュータ(PC:Personal Computer)、ノートブック、個人携帯用情報端末機(PDA:Personal Digital Assistant)、及び移動通信端末機(Mobile Communication Terminal)等のうちのいずれか1つであり、有無線通信網を経由してソフトウェア提供サーバ130に接続するためのウェブブラウザーとプログラムを格納するためのメモリ、プログラムを実行して演算及び制御するためのマイクロプロセッサーなどを具備している端末機を意味する。即ち、ユーザ端末機110は個人PCのものが一般的であるが、有無線通信網に連結されてソフトウェア提供サーバ130とサーバ−クライアント通信が可能であれば、如何なる端末機も可能であり、ノートブックコンピュータ、移動通信端末機、PDAなど、如何なる通信コンピューティング装置を全て含む広い概念である。
【0021】
ユーザ端末機110は特定ソフトウェアを演算及び制御し、かつ、特定ソフトウェアを駆動するためのセキュレット(Seculet)(または、‘ソフトウェアジャンク(Software Chunk)’と称する)が締結されたドングル(Dongle)形式のトークン120に存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークン120にセキュレットを実行させるための実行命令を転送し、トークン120から実行結果を受信して特定ソフトウェアが駆動されるように制御する機能を遂行する。ここで、セキュレットはセキュア(Secure)とアプレット(Applet)とを合成した概念の用語である。
【0022】
ユーザ端末機110は、特定プログラムの実行中にセキュレットを必要とする場合、セキュレットの識別経路(Identity Path)情報をトークン120に要請し、トークン120から識別経路情報を受信する場合、トークン120にセキュレットが存在することと認識する機能を遂行する。
【0023】
ユーザ端末機110は、特定プログラムとトークン120が共有しているキー(Key)を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、トークン120を認証する機能を遂行する。ユーザ端末機110は、セキュレットまたは識別経路情報に基づいて、入力パラメータ及び実行命令をトークン120に転送し、トークン120からセキュレットを実行可能メモリ領域に呼んできた後、入力パラメータをセッティングして該当コードを実行した実行結果を受信する機能を遂行する。
【0024】
トークン120はセキュレットを格納し、ドングル形式としてユーザ端末機110に締結されてセキュレットをユーザ端末機110に転送し、ユーザ端末機110から実行命令を受信する場合、セキュレットを実行可能メモリ領域に呼んできた実行結果をユーザ端末機110に伝達する機能を遂行する。
【0025】
ソフトウェア提供サーバ130は、ハードウェアー的には通常的なウェブサーバ(Web Server)と同一な構成をなしている。しかしながら、ソフトウェア的には、図3と関連して後述するように、C、C++、Java、Visual Basic、Visual Cなど、如何なる言語を通じて具現されて、多様な機能をするプログラムモジュール(Module)を含む。ソフトウェア提供サーバ130は、ウェブサーバ(Web Server)の形態で具現され、ウェブサーバは、一般的にインターネットのような開放型コンピュータネットワークを介して不特定多数のクライアント及び/または他のサーバと連結されており、クライアントまたは他のウェブサーバの作業遂行要請を受付けて、それに対する作業結果を導出して提供するコンピュータシステム、及びそのために設置されているコンピュータソフトウェア(ウェブサーバプログラム)を意味する。
【0026】
しかしながら、前述したウェブサーバプログラムの他にも、上記ウェブサーバ上で動作する一連の応用プログラム(Application Program)と、場合によっては、内部に構築されている各種データベースを含む広い概念として理解されるべきである。
【0027】
このようなソフトウェア提供サーバ130は、一般的なサーバ用ハードウェアに、DOS、ウィンドウ(windows)、リヌックス(Linux)、ユニックス(UNIX)、マッキントッシュ(Macintosh)等の運営体制によって多様に提供されているウェブサーバプログラムを用いて具現され、代表的なものには、ウィンドウ環境で使われるウェブサイト(Website)、IIS(Internet Information Server)と、ユニックス環境で使われるCERN、NCSA、APPACHなどが用いられる。また、ソフトウェア提供サーバ130は、ソフトウェア提供のための認証システム及び決済システムと連動することもできる。
【0028】
また、ソフトウェア提供サーバ130は、会員加入情報と、ソープウェアー提供に対する情報を分類してデータベース(Database)に格納させ、管理するが、このようなデータベースはソフトウェア提供サーバ130の内部または外部に具現されることができる。
【0029】
このようなデータベースは、データベース管理プログラム(DBMS)を用いてコンピュータシステムの格納空間(ハードディスクまたはメモリ)に具現された一般的なデータ構造を意味するものであって、データの検索(抽出)、削除、編集、追加などを自由に行なうことができるデータ格納形態を意味するものであって、オラクル(Oracle)、インフォミックス(Infomix)、サイベース(Sybase)、DB2のような関係型データベース管理システム(RDBMS)や、ゲムストン(Gemston)、オリオン(Orion)、O2などのオブジェクト指向データベース管理システム(OODBMS)、及びエクセロン(Excelon)、タミノ(Tamino)、セカイジュ(Sekaiju)などのXML専用データベース(XML Native Database)を用いて本実施形態の目的に合うように具現されることができ、自身の機能を達成するために、適当なフィールド(Field)またはエレメントを有している。
【0030】
ソフトウェア提供サーバ130は、ユーザ端末機110が特定ソフトウェアを購買した場合、ユーザ端末機110にドングル形式のトークンが存在するか否かを確認し、確認結果、トークン120が存在する場合、特定ソフトウェアを駆動するためのセキュレットを暗号化してトークン120に転送する機能を遂行する。
【0031】
ソフトウェア提供サーバ130は、サブスティチューション(Substitution)、トランスポジション(Transposition)、ロータマシン(Rotor Machine)、秘密キー(Private Key)、公開キー(Public Key)のうち、少なくとも1つの方式によりセキュレットを暗号化する機能を遂行する。
【0032】
ソフトウェア提供サーバ130は、トークン120が暗号化されたセキュレットの暗号化を解除して格納することを確認した後、ソフトウェアの購買処理を完了する機能を遂行する。
【0033】
図2は、本発明の実施形態に係るユーザ端末機を概略的に示すブロック構成図である。本実施形態に係るユーザ端末機110は、端末機通信部210、端末機制御部220、及び端末機格納部230を含む。
【0034】
本実施形態では、ユーザ端末機110が端末機通信部210、端末機制御部220、及び端末機格納部230のみを含んで構成されるものと記載しているが、これは本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でユーザ端末機110に含まれる構成要素に対して多様に修正及び変形して適用可能である。
【0035】
端末機通信部210はトークン120と連動する機能を遂行する通信手段であって、各種データを送受信する機能を遂行する。
【0036】
本実施形態に係る端末機制御部220は端末機の全般的な機能を制御する制御手段であって、特定ソフトウェアを演算及び制御し、かつ、特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形式のトークン120に存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークン120にセキュレットを実行させるための実行命令を転送し、トークン120から実行結果を受信して特定ソフトウェアが駆動するようにする機能を遂行する。
【0037】
端末機制御部220は、特定プログラムの実行中にセキュレットを必要とする場合、セキュレットの識別経路(Identity Path)情報をトークン120に要請し、トークン120から識別経路情報を受信する場合、トークン120にセキュレットが存在することと認識するようにする機能を遂行する。
【0038】
端末機制御部220は、特定プログラムとトークン120が共有しているキー(Key)を通じて相互暗号または復号化されたメッセージを送受信して同一な暗号化技法を有していることが確認されれば、トークン120を認証するようにする機能を遂行する。端末機制御部220は、セキュレットまたは識別経路情報に基づいて、入力パラメータ及び実行命令をトークン120に転送し、トークン120からセキュレットを実行可能メモリ領域に呼んできた後、入力パラメータをセッティングして該当コードを実行した実行結果を受信するようにする機能を遂行する。
【0039】
端末機格納部230は端末機の駆動に必要な各種データを格納する格納手段であって、特定ソフトウェアを格納する機能を遂行する。
【0040】
図3は、本発明の実施形態に係るソフトウェア提供サーバを概略的に示すブロック構成図である。
【0041】
本実施形態に係るソフトウェア提供サーバ130は、サーバ通信部310、サーバ制御部320、及びサーバ格納部330を含んで構成される。
【0042】
本実施形態では、ソフトウェア提供サーバ130がサーバ通信部310、サーバ制御部320、及びサーバ格納部330のみを含んで構成されるものと記載しているが、これは本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でソフトウェア提供サーバ130に含まれる構成要素に対して多様に修正及び変形して適用可能である。
【0043】
サーバ通信部310はユーザ端末機110と連動する機能を遂行する通信手段であって、各種データを送受信する機能を遂行する。
【0044】
本実施形態に係るサーバ制御部320はサーバの全般的な機能を制御する制御手段であって、サーバ通信部310を制御してユーザ端末機110が特定ソフトウェアを購買した場合、ユーザ端末機110にドングル形式のトークンが存在するか否かを確認し、確認結果、トークン120が存在する場合、特定ソフトウェアを駆動するためのセキュレットを暗号化してトークン120に転送するようにする機能を遂行する。
【0045】
サーバ制御部320は、サブスティチューション(Substitution)、トランスポジション(Transposition)、ロータマシン(Rotor Machine)、秘密キー(Private Key)、公開キー(Public Key)のうち、少なくとも1つの方式によりセキュレットを暗号化するようにする機能を遂行する。サーバ制御部320は、トークン120が暗号化されたセキュレットの暗号化を解除して格納することを確認した後、ソフトウェアの購買処理を完了するようにする機能を遂行する。
【0046】
サーバ格納部330はサーバの駆動に必要な各種データを格納する格納手段であって、特定ソフトウェア、セキュレットのうち、1つ以上の情報を格納する機能を遂行する。
【0047】
図4は、本発明の実施形態に係るトークンを概略的に示すブロック構成図である。
【0048】
本実施形態に係るトークン120は、トークン管理部410、及び格納部420を含んで構成される。
【0049】
本実施形態では、トークン120がトークン管理部410及び格納部420のみを含んで構成されるものと記載しているが、これは本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でトークン120に含まれる構成要素に対して多様に修正及び変形して適用可能である。
【0050】
トークン管理部410はトークンの全般的な機能を制御する制御手段であって、セキュレットをユーザ端末機110に転送し、実行命令を受信する場合、セキュレットを実行可能メモリ領域に呼んできた実行結果をユーザ端末機110に伝達する機能を遂行する。即ち、トークン管理部410は格納部420に格納されたセキュレットを実行して演算及び制御するためのマイクロプロセッサーでありうる。格納部420はトークンの駆動に必要な各種データを格納する格納手段であって、複数個のセキュレットを格納する機能を遂行する。
【0051】
図5は、本発明の実施形態に係るセキュレットを概略的に示すブロック構成図である。
【0052】
本実施形態に係るセキュレットは特定ソフトウェアの駆動に必須要素から構成されたプログラムを意味し、アイデンティティセクション、コードセクション、不変データセクション、及び可変データセクションを含む。
【0053】
アイデンティティセクションは、セキュレットを区分するための文字列、ディスクリプション(Description)、アイコンイメージ(Icon Image)、及び固有番号のうち、1つ以上の情報を含む。アイデンティティセクションは、ユーザ端末機110でトークン120の内に存在するセキュレットを用いるための探索/実行選択情報として活用できる。
【0054】
コードセクションは、トークン120で実行される実行命令を含む。コードセクションは、機械語または高い水準のプログラミング言語で作られて、セキュレットの実行命令を込めるようになる。この実行命令のIn/Outputの複雑度があまりに単純な場合、複製が容易になるので、不変データ/可変データの活用などを通じて適正水準以上の複雑度を有するようにすることができる。
【0055】
不変データセクションは、レファレンス(Reference)に用いられる不変データを格納する。不変データセクションは、ナンドフラッシュ(NAND Flash)等の大容量ストレージ(Storage)に格納されてコードセクションの実行中に参照され、各種ソフトウェアで使われる各種レファレンステーブルが対象となる。
【0056】
可変データセクションは、セキュレットの実行に従うヒストリー情報を格納する。可変データセクションは、コードの実行中に発生する状態情報を記録するようになり、ナンドフラッシュに格納されることもできるが、場合によって、EEPROMやNorなど、I/O速度の速い領域に格納されることもできる。また、可変データはセキュレットをContext Sensitiveに作って、使用量基盤、機能基盤、回数基盤、データ量基盤など、多様なライセンシングスキーム(Licensing Scheme)を具現することができるようにする。
【0057】
図6は、本発明の実施形態に係るソフトウェア提供サーバがセキュレットを提供する方法を説明するためのフローチャートである。
【0058】
ユーザ端末機110は、ソフトウェア提供サーバ130に接続して特定ソフトウェアを購買する(S610)。ソフトウェア提供サーバ130は、ユーザ端末機110にドングル形式のトークンが存在するか否かを確認する(S620)。ステップS620の確認結果、トークン120が存在する場合、ソフトウェア提供サーバ130は、サーバとトークンとの間に相互認証されるか否かを確認する(S630)。
【0059】
ステップS630の確認結果、サーバとトークンとの間に相互認証される場合、ソフトウェア提供サーバ130は、特定ソフトウェアを駆動するためのセキュレットを暗号化してトークン120に転送する(S640)。ここで、ソフトウェア提供サーバ130は、サブスティチューション(Substitution)、トランスポジション(Transposition)、ロータマシン(Rotor Machine)、秘密キー(Private Key)、公開キー(Public Key)のうち、少なくとも1つの方式によりセキュレットを暗号化することができる。
【0060】
トークン120は、セキュレットの暗号を解除した後、格納する(S650)。ソフトウェア提供サーバ130は、トークン120が暗号化されたセキュレットの暗号化を解除して格納することを確認した後、ソフトウェアの購買処理を完了する。
【0061】
図6では、ソフトウェア提供サーバ130がステップS610乃至ステップS650を順次に実行するものと記載しているが、これは、本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲でソフトウェア提供サーバ130が図6に記載された順序を変更して実行したり、ステップS610乃至ステップS650のうち、1つ以上のステップを並列的に実行することで、多様に修正及び変形して適用可能であるので、図6は時系列的な順序に限定されるものではない。
【0062】
図7は、本発明の実施形態に係るユーザ端末機とトークンとが連動して特定ソフトウェアを実行する方法を説明するためのフローチャートである。
【0063】
ユーザ端末機110は、特定ソフトウェアを実行する(S710)。ユーザ端末機110は、特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形式のトークン120に存在するか否かを確認する(S720)。即ち、ユーザ端末機110は、特定プログラムの実行中にセキュレットを必要とする場合、セキュレットの識別経路(Identity Path)情報をトークン120に要請し、トークン120から識別経路情報を受信する場合、トークン120にセキュレット存在することと認識することができる。
【0064】
一方、ユーザ端末機110は、特定プログラムとトークン120が共有しているキー(Key)を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、トークン120を認証する機能を遂行する。
【0065】
ステップS720の確認結果、セキュレットが存在する場合、ユーザ端末機110はトークン120にセキュレットを実行させるための実行命令を転送する(S730)。即ち、ユーザ端末機110は、セキュレットまたは識別経路情報に基づいて、入力パラメータ及び実行命令をトークン120に転送する。
【0066】
トークン120はセキュレットを実行可能メモリ領域に呼んでくる(S740)。トークン120は、入力パラメータをセッティングして該当コードを実行する(S750)。トークン120は、実行結果をユーザ端末機110に転送する(S760)。ユーザ端末機110は、トークン120から実行結果を受信して特定ソフトウェアを駆動する。
【0067】
図7では、ユーザ端末機110及びトークン120がステップS710乃至ステップS760を順次に実行するものと記載しているが、これは、本実施形態の技術事象の例示的な説明に過ぎないものであって、本実施形態が属する技術分野で通常の知識を有する者であれば、本実施形態の本質的な特性から逸脱しない範囲で、ユーザ端末機110及びトークン120は、図7に記載された順序を変更して実行したり、ステップS710乃至ステップS760のうち、1つ以上のステップを並列的に実行することで、多様に修正及び変形して適用可能であるので、図7は時系列的な順序に限定されるものではない。
【0068】
前述したように、図6乃至図7に記載された本実施形態に係るソフトウェアライセンス保護方法は、プログラムで具現され、コンピュータで読み取り可能な記録媒体に記録されることができる。本実施形態に係るソフトウェアライセンス保護方法を具現するためのプログラムが記録され、コンピュータが読み取り可能な記録媒体は、コンピュータシステムによって読み取り可能なデータが格納される全ての種類の記録装置を含む。このようなコンピュータが読み取り可能な記録媒体の例には、ROM、RAM、CD−ROM、磁気テープ、フロッピーディスク、光データ格納装置などがあり、また、キャリアウェーブ(例えば、インターネットを通じた転送)の形態で具現されるものも含む。また、コンピュータが読み取り可能な記録媒体は、ネットワークにより連結されたコンピュータシステムに分散されて、分散方式によりコンピュータが読み取り可能なコードが格納され、実行されることもできる。また、本実施形態を具現するための機能的な(Functional)プログラム、コード、及びコードセグメントは、本実施形態が属する技術分野のプログラマーにより容易に推論できる。
【0069】
以上、本発明の実施形態を構成する全ての構成要素が1つに結合されるか、結合されて動作することと説明されたが、本発明が必ずこのような実施形態に限定されるものではない。即ち、本発明の目的範囲内であれば、その全ての構成要素が1つ以上に選択的に結合して動作することもできる。また、その全ての構成要素が各々1つの独立的なハードウェアで具現されることができるが、各構成要素のその一部または全部が選択的に組み合わせて1つまたは複数個のハードウェアで組み合わせた一部または全部の機能を遂行するプログラムモジュールを有するコンピュータプログラムとして具現されることもできる。そのコンピュータプログラムを構成するコード及びコードセグメントは本発明の技術分野の当業者により容易に推論できるものである。このようなコンピュータプログラムは、コンピュータが読取可能な格納媒体(Computer Readable Media)に格納されてコンピュータによって読取され、実行されることによって、本発明の実施形態を具現することができる。コンピュータプログラムの格納媒体としては、磁気記録媒体、光記録媒体、キャリアウェーブ媒体などが含まれることができる。
【0070】
また、以上で記載された“含む”、“構成する”、または“有する”などの用語は、特別に反対になる記載がない限り、該当構成要素が内在できることを意味するものであるので、他の構成要素を除外するのでなく、他の構成要素を更に含むことができることと解釈されるべきである。技術的または科学的な用語を含んだ全ての用語は、異に定義されない限り、本発明が属する技術分野で通常の知識を有する者により一般的に理解されることと同一な意味を有する。事前に定義された用語のように、一般的に使われる用語は関連技術の文脈上の意味と一致するものと解釈されるべきであり、本発明で明らかに定義しない限り、理想的であるとか、過度に形式的な意味として解釈されない。
【0071】
以上の説明は、本発明の技術思想を例示的に説明したことに過ぎないものであって、本発明が属する技術分野で通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で多様な修正及び変形が可能である。したがって、本発明に開示された実施形態は本発明の技術思想を限定するためのものではなく、説明するためのものであり、このような実施形態により本発明の技術思想の範囲が限定されるのではない。本発明の保護範囲は請求範囲により解釈されなければならず、それと同等な範囲内にある全ての技術思想は本発明の権利範囲に含まれるものと解釈されるべきである。
【産業上の利用可能性】
【0072】
以上、説明したように、本発明は、ユーザが特定ソフトウェアを購買すれば、サーバでユーザの端末機に締結されたドングル形態のトークンに特定ソフトウェアを駆動するための必須要素であるセキュレットを提供し、ユーザが特定ソフトウェアを実行する過程で特定ソフトウェアを駆動するためのセキュレットが締結されたドングル形態のトークンに存在するか否かを確認し、確認結果、セキュレットが存在する場合、トークンにセキュレットを実行させるための実行命令を転送し、それに対する実行結果を受信して特定ソフトウェアが駆動されるように制御するソフトウェアライセンス保護方法と、そのためのシステム、サーバ、端末機、及びコンピュータで読み取り可能な記録媒体分野に適用されて、特定ソフトウェアのライセンス保護を通じてリバースエンジニアリング(Reverse Engineering)に対する脆弱性を克服し、かつオンライン依存性と顧客の不便を誘発しない効果を発生する非常に有用な発明である。

【特許請求の範囲】
【請求項1】
締結されたドングル(Dongle)形式のトークン(Token)と連動する端末機通信部と、
特定ソフトウェアを演算及び制御し、かつ前記特定ソフトウェアを駆動するためのセキュレット(Seculet)が前記トークンに存在するか否かを確認し、確認結果、前記セキュレットが存在する場合、前記トークンに前記セキュレットを実行させるための実行命令を転送し、前記トークンから実行結果を受信して前記特定ソフトウェアが駆動されるように制御する端末機制御部と、
前記特定ソフトウェアを格納する端末機格納部と、
を含むことを特徴とする、ソフトウェアライセンス保護端末機。
【請求項2】
前記セキュレットは、
前記特定ソフトウェアの駆動に必須要素から構成されたプログラムであることを特徴とする、請求項1に記載のソフトウェアライセンス保護端末機。
【請求項3】
前記セキュレットは、
前記セキュレットを区分するための文字列、ディスクリプション(Description)、アイコンイメージ(Icon Image)、及び固有番号のうち、1つ以上の情報を含むアイデンティティセクション(Identity Section)と、
前記トークンで実行される前記実行命令を含むコードセクション(Code Section)と、レファレンス(Reference)に用いられる不変データを格納する不変データセクション(Permanent Data Section)と、
前記セキュレットの実行に従うヒストリー情報を格納する可変データセクション(Dydamic Data Section)と、
を含むことを特徴とする、請求項2に記載のソフトウェアライセンス保護端末機。
【請求項4】
前記端末機制御部は、
前記特定プログラムの実行中に、前記セキュレットを必要とする場合、前記セキュレットの識別経路(Identity Path)情報を前記トークンに要請し、前記トークンから前記識別経路情報を受信する場合、前記トークンに前記セキュレットが存在することと認識することを特徴とする、請求項1に記載のソフトウェアライセンス保護端末機。
【請求項5】
前記端末機制御部は、
前記特定プログラムと前記トークンが共有しているキー(Key)を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、前記トークンを認証することを特徴とする、請求項1に記載のソフトウェアライセンス保護端末機。
【請求項6】
前記端末機制御部は、
前記セキュレットまたは識別経路情報に基づいて、入力パラメータ及び前記実行命令を前記トークンに転送し、前記トークンから前記セキュレットを実行可能メモリ領域に呼んできた後、前記入力パラメータをセッティングして該当コードを実行した前記実行結果を受信することを特徴とする、請求項1に記載のソフトウェアライセンス保護端末機。
【請求項7】
ユーザ端末機と連動するサーバ通信部と、
前記ユーザ端末機が特定ソフトウェアを購買した場合、前記ユーザ端末機にドングル形式のトークンが存在するか否かを確認し、確認結果、前記トークンが存在する場合、前記特定ソフトウェアを駆動するためのセキュレットを暗号化して前記トークンに転送するサーバ制御部と、
前記特定ソフトウェア、前記セキュレットのうち、1つ以上の情報を格納するサーバ格納部と、
を含むことを特徴とする、ソフトウェアライセンス保護サーバ。
【請求項8】
前記サーバ制御部は、
サブスティチューション(Substitution)、トランスポジション(Transposition)、ロータマシン(Rotor Machine)、秘密キー(Private Key)、公開キー(Public Key)のうち、少なくとも1つの方式により前記セキュレットを暗号化することを特徴とする、請求項7に記載のソフトウェアライセンス保護サーバ。
【請求項9】
前記サーバ制御部は、
前記トークンが暗号化された前記セキュレットの暗号化を解除して格納することを確認した後、前記ソフトウェアの購買処理を完了することを特徴とする、請求項7に記載のソフトウェアライセンス保護サーバ。
【請求項10】
特定ソフトウェアを演算及び制御し、かつ前記特定ソフトウェアを駆動するためのセキュレットが存在する場合、前記セキュレットを実行させるための実行命令を転送し、実行結果を受信して前記ソフトウェアを駆動するユーザ端末機と、
前記セキュレットを格納し、ドングル形式として前記ユーザ端末機に締結されて前記セキュレットを前記ユーザ端末機に転送し、前記実行命令を受信する場合、前記セキュレットを実行可能メモリ領域に呼んできた前記実行結果を前記ユーザ端末機に伝達するトークン(Token)と、
を含むことを特徴とするソフトウェアライセンス保護システム。
【請求項11】
前記トークンは、
複数個の前記セキュレットを格納する格納部と、
前記セキュレットを実行して演算及び制御し、セキュレットを実行して演算及び制御するためのマイクロプロセッサーと、
を含んで構成されることを特徴とする、請求項10に記載のソフトウェアライセンス保護システム。
【請求項12】
特定ソフトウェアを実行するソフトウェア実行ステップと、
前記特定ソフトウェアを駆動するためのセキュレットが締結されたトークンに存在するか否かを確認し、確認結果、前記セキュレットが存在する場合、前記トークンに前記セキュレットを実行させるための実行命令を転送する実行命令転送ステップと、
前記トークンから実行結果を受信して前記ソフトウェアを駆動するソフトウェア駆動ステップと、
を含むことを特徴とする、ソフトウェアライセンス保護方法。
【請求項13】
前記実行命令転送ステップは、
前記特定プログラムの実行中に、前記セキュレットを必要とする場合、前記トークンに前記セキュレットの識別経路(Identity Path)情報を要請する識別経路情報要請ステップと、
前記トークンから前記識別経路情報を受信する場合、前記トークンに前記セキュレットが存在することと認識するセキュレット認識ステップと、
を含むことを特徴とする、請求項12に記載のソフトウェアライセンス保護方法。
【請求項14】
前記セキュレット認識ステップの以後に、
前記特定プログラムと前記トークンが共有しているキー(Key)を通じて相互暗号または復号化されたメッセージを送受信して、同一な暗号化技法を有していることが確認されれば、前記トークンを認証するトークン認証ステップを更に含むことを特徴とする、請求項13に記載のソフトウェアライセンス保護方法。
【請求項15】
前記実行命令転送ステップは、
前記セキュレットまたは識別経路情報に基づいて、入力パラメータ及び前記実行命令を前記トークンに転送する実行命令転送ステップを含むことを特徴とする、請求項12に記載のソフトウェアライセンス保護方法。
【請求項16】
前記ソフトウェア駆動ステップは、
前記トークンから前記セキュレットを実行可能メモリ領域に呼んできた後、前記入力パラメータをセッティングして、該当コードを実行した前記実行結果を受信することを特徴とする、請求項12に記載のソフトウェアライセンス保護方法。
【請求項17】
請求項12乃至16のうちのいずれか1項にあるソフトウェアライセンス保護方法を実行させるためのプログラムで記録したコンピュータで読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2012−514277(P2012−514277A)
【公表日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2011−546206(P2011−546206)
【出願日】平成21年12月16日(2009.12.16)
【国際出願番号】PCT/KR2009/007530
【国際公開番号】WO2010/074449
【国際公開日】平成22年7月1日(2010.7.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.WINDOWS
3.Linux
4.UNIX
5.フロッピー
【出願人】(500310672)エスケーテレコム株式会社 (107)
【氏名又は名称原語表記】SK TELECOM CO.,LTD.
【住所又は居所原語表記】11,Euljiro−2ga,Jung−gu,Seoul,Korea