(57)【要約】不揮発性メモリのバイナリデータの保護方法及びその装置が開始される。本発明の一実施例による不揮発性メモリのバイナリデータの保護方法は、プログラムコードを受信する段階と、前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する段階と、前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する段階と、前記生成された前記固有パターン情報を利用して前記プログラムコードを暗号化する段階と、前記暗号化された前記プログラムコードをメモリに格納する段階とを含み、前記暗号化する段階は、前記メモリの製造固有情報と前記メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化したり、ユーザー情報と時間または日付情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することによって、不揮発性メモリ毎にプログラムコードを適応的に（ａｄａｐｔｉｖｅ）暗号化して格納し、これを介して不揮発性メモリのバイナリデータに対する保護水準を向上させることができる。【選択図】図３
2016508629.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードを受信する段階と、
前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する段階と、
前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する段階と、
前記生成された前記固有パターン情報を利用して前記プログラムコードを暗号化する段階と、
前記暗号化された前記プログラムコードをメモリに格納する段階と
を含む不揮発性メモリのバイナリデータの保護方法。
【請求項２】
前記暗号化する段階は、
前記メモリの製造固有情報と前記メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することを特徴とする請求項１に記載の不揮発性メモリのバイナリデータの保護方法。
【請求項３】
前記暗号化する段階は、
ユーザー情報と時間または日付情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することを特徴とする請求項１に記載の不揮発性メモリのバイナリデータの保護方法。
【請求項４】
前記メモリに格納された前記暗号化された前記プログラムコードを前記固有パターン情報を利用して解読する段階と、
前記解読された前記プログラムコードを読み取る段階と
をさらに含むことを特徴とする請求項１に記載の不揮発性メモリのバイナリデータの保護方法。
【請求項５】
前記生成された前記固有パターン情報を予め決定された格納領域に格納する段階をさらに含み、
前記解読する段階は、
前記格納された前記固有パターン情報を利用し、前記暗号化された前記プログラムコードを解読することを特徴とする請求項４に記載の不揮発性メモリのバイナリデータの保護方法。
【請求項６】
前記受信された前記プログラムコードのデータ領域を複数の領域に分割する段階をさらに含み、
前記検出する段階は、
前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、
前記生成する段階は、
前記検出された前記データパターンに基づき、前記複数の領域各々に対するデータの固有データパターン情報を生成し、
前記暗号化する段階は、
前記生成された前記固有データパターン情報を利用し、前記複数の領域各々に対するデータを暗号化することを特徴とする請求項１に記載の不揮発性メモリのバイナリデータの保護方法。
【請求項７】
前記受信された前記プログラムコードのデータ領域を複数の領域に分割する段階をさらに含み、
前記検出する段階は、
前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、前記検出された前記データパターンを利用し、前記バイナリパターンを検出することを特徴とする請求項１に記載の不揮発性メモリのバイナリデータの保護方法。
【請求項８】
請求項１乃至７の何れかの方法を行うためのプログラムが記録されていることを特徴とするコンピュータで読取可能な記録媒体。
【請求項９】
プログラムコードを受信する受信部と、
前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する検出部と、
前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する生成部と、
前記生成された前記固有パターン情報をキー値として前記プログラムコードを暗号化する暗号化部と、
前記暗号化された前記プログラムコードをメモリに格納する格納部と
を含むことを特徴とする不揮発性メモリのバイナリデータの保護装置。
【請求項１０】
前記暗号化部は、
前記メモリの製造固有情報と前記メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することを特徴とする請求項９に記載の不揮発性メモリのバイナリデータの保護装置。
【請求項１１】
前記暗号化部は、
ユーザー情報と日付または時間情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することを特徴とする請求項９に記載の不揮発性メモリのバイナリデータの保護装置。
【請求項１２】
前記メモリに格納された前記暗号化された前記プログラムコードを前記固有パターン情報を利用して解読する解読部と、
前記解読された前記プログラムコードを読み取る読取部と
をさらに含むことを特徴とする請求項９に記載の不揮発性メモリのバイナリデータの保護装置。
【請求項１３】
前記生成された前記固有パターン情報を予め決定された格納領域に格納するパターン情報格納部をさらに含み、
前記解読部は、
前記パターン情報格納部に格納された前記固有パターン情報を利用し、前記暗号化された前記プログラムコードを解読することを特徴とする請求項１２に記載の不揮発性メモリのバイナリデータの保護装置。
【請求項１４】
前記受信された前記プログラムコードのデータ領域を複数の領域に分割する分割部をさらに含み、
前記検出部は、
前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、
前記生成部は、
前記検出された前記データパターンに基づき、前記複数の領域各々に対するデータの固有データパターン情報を生成し、
前記暗号化部は、
前記生成された前記固有データパターン情報を利用し、前記複数の領域各々に対するデータを暗号化することを特徴とする請求項９に記載の不揮発性メモリのバイナリデータの保護装置。
【請求項１５】
前記受信された前記プログラムコードのデータ領域を複数の領域に分割する分割部をさらに含み、
前記検出部は、
前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、前記検出された前記データパターンを利用し、前記バイナリパターンを検出することを特徴とする請求項９に記載の不揮発性メモリのバイナリデータの保護装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ ｍｅｍｏｒｙ）のバイナリデータの保護に関するものであって、詳しくは、不揮発性メモリに格納されるプログラムコードをプログラムコードのバイナリパターン、不揮発性メモリに関する固有情報、さらにユーザー情報及び時間／日付情報等を利用して暗号化することによって、不揮発性メモリのバイナリデータに対する保護水準を向上させることができる不揮発性メモリのバイナリデータの保護方法及びその装置に関するものである。
【背景技術】
【０００２】
フラッシュメモリは不揮発性であり、これはフラッシュメモリがチップ（ｃｈｉｐ）の情報を維持するのに電力を必要としない方式で半導体上に情報を格納するということを意味する。フラッシュメモリは、各々が１ビット以上の情報を格納する、「セル（ｃｅｌｌ）」と呼ばれるトランジスタのアレイ（ａｒｒａｙ）に情報を格納する。メモリセルは、ＦＡＭＯＳ（Ｆｌｏａｔｉｎｇ−Ｇａｔｅ Ａｖａｌａｎｃｈｅ−Ｉｎｊｅｃｔｉｏｎ Ｍｅｔａｌ Ｏｘｉｄｅ Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）トランジスタに基づき、ＦＡＭＯＳトランジスタは本質的にゲートとソース／ドレイン端子の間に浮遊する（ｓｕｓｐｅｎｄｅｄ）付加的な伝導体（ｃｏｎｄｕｃｔｏｒ）を有するＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ Ｍｅｔａｌ Ｏｘｉｄｅ Ｓｅｍｉｃｏｎｄｕｃｔｏｒ） ＦＥＴ（Ｆｉｅｌｄ Ｅｆｆｅｃｔ Ｔｒａｎｓｉｓｔｏｒ）である。現在のフラッシュメモリ装置は、二つの基本的なアレイアーキテクチャからなる。ＮＯＲフラッシュ及びＮＡＮＤフラッシュロジック（ｌｏｇｉｃ）の類型を指す名称が格納セルアレイ（ｓｔｏｒａｇｅ ｃｅｌｌ ａｒｒａｙ）で使用される。
【０００３】
フラッシュセルは、単に１つのゲートの代わりに２つのゲートを有するということを除いては、標準ＭＯＳＦＥＴトランジスタと類似する。一つのゲートは他のＭＯＳトランジスタでの制御ゲート（ｃｏｎｔｒｏｌ  ｇａｔｅ、ＣＧ）のようなものであり、もう一つのゲートは酸化層により周りが全て絶縁された浮遊ゲート（ｆｌｏａｔｉｎｇ ｇａｔｅ、ＦＧ）である。ＦＧはその酸化層により絶縁されるため、その上に置かれる任意の電子はそこにトラップされ（ｔｒａｐｐｅｄ）、それから情報を格納する。
【０００４】
電子がＦＧ上にトラップされるとき、それらはＣＧからの電場を修正（部分的に相殺）し、これはセルの臨界電圧（Ｖｔ）を修正する。それから、ＣＧを特定の電圧で作ることによって、セルが「読取」されるとき、セルのＶｔに応じてそのセルのソースとドレイン接続の間で電流が流れたり、流れなかったりするであろう。このような電流の存在または不在が感知され、「１」または「０」に変換されることができ、こうして格納されたデータが再生される。
【０００５】
前述したフラッシュメモリのような不揮発性メモリは、製造会社固有のプログラムを格納して特定の制御を目的で使用され、このようなプログラムの違法な流出を防ぐために暗号を使用し、暗号を知らない場合、正確なプログラムを使用することができないようにした。
【０００６】
従来の不揮発性メモリの読取防止回路は、特定のプログラムを有する暗号部のデータと、不揮発性メモリセル部のデータとを排他的ＮＯＲ（ＸＮＯＲ、ｅｘｃｌｕｓｉｖｅ ＮＯＲ）組み合わせて、不揮発性メモリのプログラムの内容を他人が違法に使用することを防止したが、不揮発性メモリセルのプログラムとならないセルの数が暗号部のセル数よりも多い場合は、メモリセルのプログラムとならないセルのデータと暗号部のデータとを排他的ＮＯＲ組合せた値は、暗号部のデータと同一になり、他人に暗号部のデータが露出されやすく、不揮発性メモリに格納されたプログラムが違法に流出されるという問題点があった。
【０００７】
従って、不揮発性メモリに格納されたプログラムの違法な流出を防止することができる構成の必要性が台頭される。不揮発性メモリに格納されたプログラムの違法な流出を防止するために開発された先行技術として、韓国登録特許第１０−２５８８６１号「不揮発性メモリの読取防止回路」が提案された。
【０００８】
前記先行技術は、暗号加重ビット（ｓｃｒａｍｂｌｅ ｗｅｉｇｈｔ ｂｉｔ）に応じて印加されるアドレス信号と実際のメモリセルのアドレスを異なって変形し、不揮発性メモリのプログラムを他人が読み取ることができないようにするのに適当なようにした不揮発性メモリの読取防止回路に関するものであって、暗号を露出させることを防止し、プログラムの違法な流出を防止するためのものである。
【０００９】
即ち、先行技術は、暗号の露出を防止するためのものであって、不揮発性メモリに同一のプログラムが暗号化されて格納される場合、暗号化され格納されるデータが全て同一であるため、暗号化されるパターンを繰り返し分析すると、暗号化アルゴリズムと暗号を類推する可能性があり、よって、同一のプログラムを暗号化する際、相違する暗号化キーを利用して暗号化することによって、プログラムの流出を防止することができる構成の必要性が台頭される。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、前記のような従来技術の問題点を解決しようと導き出されたものであって、不揮発性メモリに同一のプログラムコードを格納する際、プログラムコードのバイナリパターン、不揮発性メモリに関する固有情報、さらにユーザー情報及び時間／日付情報等を利用して暗号化することによって、不揮発性メモリのバイナリデータに対する保護水準を向上させることができる不揮発性メモリのバイナリデータの保護方法及びその装置を提供することを目的とする。
【００１１】
また、本発明は、不揮発性メモリ毎にプログラムコードを異なって暗号化して格納することによって、複雑な暗号化のハードウェアを使用しなくても、プログラムコードをメモリ毎に適応的に（ａｄａｐｔｉｖｅ）暗号化できる不揮発性メモリのバイナリデータの保護方法及びその装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前記のような目的を達成するために、本発明の一実施例による不揮発性メモリのバイナリデータの保護方法は、プログラムコードを受信する段階と、前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する段階と、前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する段階と、前記生成された前記固有パターン情報を利用して前記プログラムコードを暗号化する段階と、前記暗号化された前記プログラムコードをメモリに格納する段階とを含む。
【００１３】
前記暗号化する段階は、前記メモリの製造固有情報と前記メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することもでき、ユーザー情報と時間または日付情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することもできる。
【００１４】
さらに、本発明による方法は、前記メモリに格納された前記暗号化された前記プログラムコードを前記固有パターン情報を利用して解読する段階と、前記解読された前記プログラムコードを読み取る段階とをさらに含むことができる。
【００１５】
さらに、本発明による方法は、前記生成された前記固有パターン情報を予め決定された格納領域に格納する段階をさらに含み、前記解読する段階は、前記格納された前記固有パターン情報を利用して前記暗号化された前記プログラムコードを解読することができる。
【００１６】
さらに、本発明による方法は、前記受信された前記プログラムコードのデータ領域を複数の領域に分割する段階をさらに含み、前記検出する段階は、前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、前記生成する段階は、前記検出された前記データパターンに基づき、前記複数の領域各々に対するデータの固有データパターン情報を生成し、前記暗号化する段階は、前記生成された前記固有データパターン情報を利用して前記複数の領域各々に対するデータを暗号化することができる。
【００１７】
さらに、本発明による方法は、前記受信された前記プログラムコードのデータ領域を複数の領域に分割する段階をさらに含み、前記検出する段階は、前記分割された前記複数の領域の各々に対するデータのデータパターンを検出し、前記検出された前記データパターンを利用して前記バイナリパターンを検出することができる。
【００１８】
本発明の一実施例による不揮発性メモリのバイナリデータの保護装置は、プログラムコードを受信する受信部と、前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する検出部と、前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する生成部と、前記生成された前記固有パターン情報をキー値として前記プログラムコードを暗号化する暗号化部と、前記暗号化された前記プログラムコードをメモリに格納する格納部とを含む。
【発明の効果】
【００１９】
本発明によると、同一のプログラムコードを不揮発性メモリ毎に格納する際、プログラムコードを適応的に（Ａｄａｐｔｉｖｅ）暗号化して格納することによって、不揮発性メモリのバイナリデータに対する保護水準を向上させることができる。
【００２０】
具体的に、本発明は、格納しようとするプログラムコードのバイナリパターン、不揮発性メモリに関する固有情報、さらにユーザー情報及び時間／日付情報等を利用してプログラムコードを暗号化し、このように暗号化されたプログラムコードを不揮発性メモリに格納するため、不揮発性メモリのバイナリデータに対する保護水準を向上させることができる。
【００２１】
さらに、本発明は複雑な暗号化のハードウェアを使用しなくても、不揮発性メモリ毎に異なって暗号化されたプログラムコードを格納することができるため、不揮発性メモリに格納されたプログラムコードに対する保護水準を向上させることができ、装置の単価を下げて競争力を向上させることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施例による不揮発性メモリのバイナリデータの保護装置に関する構成を示すものである。
【図２】図１に図示された検出部に関する一実施例の構成を示すものである。
【図３】本発明の一実施例による不揮発性メモリのバイナリデータの保護方法に関する動作のフロー図を示すものである。
【図４】図３に図示された段階Ｓ３６０に関する一実施例の動作のフロー図を示すものである。
【図５】図３に図示された段階Ｓ３６０に関する他の一実施例の動作のフロー図を示すものである。
【図６】図３に図示された段階Ｓ３３０に関する一実施例の動作のフロー図を示すものである。
【図７】図３により格納されたプログラムコードを読み取る方法に関する一実施例の動作のフロー図を示すものである。
【図８】プログラムコードのバイナリデータから固有パターン情報を生成する過程に関する一例を示すものである。
【図９】プログラムコードのバイナリデータを暗号化する過程に関する一例を示すものである。
【発明を実施するための形態】
【００２３】
前記のような目的を達成するために、本発明の一実施例による不揮発性メモリのバイナリデータの保護方法は、プログラムコードを受信する段階と、前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する段階と、前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する段階と、前記生成された前記固有パターン情報を利用して前記プログラムコードを暗号化する段階と、前記暗号化された前記プログラムコードをメモリに格納する段階とを含む。
【００２４】
前記暗号化する段階は、前記メモリの製造固有情報と前記メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することもでき、ユーザー情報と時間または日付情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することもできる。
【００２５】
さらに、本発明による方法は、前記メモリに格納された前記暗号化された前記プログラムコードを前記固有パターン情報を利用して解読する段階と、前記解読された前記プログラムコードを読み取る段階とをさらに含むことができる。
【００２６】
さらに、本発明による方法は、前記生成された前記固有パターン情報を予め決定された格納領域に格納する段階をさらに含み、前記解読する段階は、前記格納された前記固有パターン情報を利用して前記暗号化された前記プログラムコードを解読することができる。
【００２７】
さらに、本発明による方法は、前記受信された前記プログラムコードのデータ領域を複数の領域に分割する段階をさらに含み、前記検出する段階は、前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、前記生成する段階は、前記検出された前記データパターンに基づき、前記複数の領域各々に対するデータの固有データパターン情報を生成し、前記暗号化する段階は、前記生成された前記固有データパターン情報を利用して前記複数の領域各々に対するデータを暗号化することができる。
【００２８】
さらに、本発明による方法は、前記受信された前記プログラムコードのデータ領域を複数の領域に分割する段階をさらに含み、前記検出する段階は、前記分割された前記複数の領域各々に対するデータのデータパターンを検出し、前記検出された前記データパターンを利用して前記バイナリパターンを検出することができる。
【００２９】
本発明の一実施例による不揮発性メモリのバイナリデータの保護装置は、プログラムコードを受信する受信部と、前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する検出部と、前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する生成部と、前記生成された前記固有パターン情報をキー値として前記プログラムコードを暗号化する暗号化部と、前記暗号化された前記プログラムコードをメモリに格納する格納部とを含む。
【００３０】
前記目的の他に本発明の他の目的及び特徴は、添付図を参照した実施例に関する説明を通じて明白に示すであろう。
【００３１】
本出願で使用した用語は、単に特定の実施例を説明するために使用されたものであって、本発明を限定しようとする意図はない。単数の表現は文脈上明白に異なって意味しない限り、複数の表現を含む。本出願で、「含む」等の用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品またはこれらを組み合わせたものが存在するということを指定しようとするものであって、一つまたはそれ以上の他の特徴や数字、段階、動作、構成要素、部品またはこれらを組み合わせたものの存在または付加の可能性を予め排除しないものと理解されなければならない。
【００３２】
異なって定義されない限り、技術的や科学的な用語を含めて、ここで使用される全ての用語は、本発明が属する技術分野で通常の知識を有する者により一般的に理解されるものと同一の意味を有している。一般的に使用される辞典に定義されているような用語は、関連技術の文脈上有する意味と一致する意味を有するものと解釈されなければならず、本出願で明白に定義しない限り、理想的であったり過度に形式的な意味で解釈されない。
【００３３】
本発明の好ましい実施例を添付された図を参照して詳しく説明する。本発明を説明するのにおいて、関連する公知の構成または機能に関する具体的な説明が本発明の要旨を逸脱し得ると判断された場合は、その詳細な説明は省略する。
【００３４】
しかし、本発明が実施例により制限されたり限定されるわけではない。各図面に提示された同一の参照符号は同一の部材を示す。
【００３５】
以下では、本発明の一実施例による不揮発性メモリのバイナリデータの保護方法及びその装置を添付された図１乃至図９を参照して詳しく説明する。
【００３６】
図１は、本発明の一実施例による不揮発性メモリのバイナリデータの保護装置に関する構成を示すものである。
【００３７】
図１を参照すると、本発明による装置は、受信部１１０、検出部１２０、生成部１３０、暗号化部１４０、格納部１５０、不揮発性メモリ１６０、パターン情報格納部１７０、解読部１８０及び読取部１９０を含む。
【００３８】
受信部１１０は、不揮発性メモリ１６０に格納されるプログラムコードを外部から受信する。
【００３９】
このとき、受信部１１０は、プログラムコードをプログラムコードを生成することができる機器またはプログラム、さらにプログラムコードを格納している外部の格納手段を介して受信できる。
【００４０】
検出部１２０は、受信部１１０に受信されたプログラムコードを分析し、プログラムコードを構成するバイナリデータのバイナリパターンを検出する。
【００４１】
このとき、検出部１２０は、プログラムコードのビット値「１」のパターンに基づいてバイナリパターンを検出することもでき、ビット値「０」のパターンに基づいてバイナリパターンを検出することもできる。
【００４２】
例えば、検出部は、図８に図示されたように、６４ＫＢのバイナリデータ（Ｅ[７：０][０：６５５３５]）に対するｋ番目の８ビットバイナリデータ（Ｅ[７：０][ｋ]）と予め決定されたパターン検出値を結合し、これを６４ＫＢに対して繰り返し行い、６４ＫＢのバイナリデータに対するバイナリパターンを検出することができる。
【００４３】
さらに、検出部１２０は、プログラムコードに対するバイナリデータ領域を複数の領域に分割した後、分割されたデータ領域各々に対するデータパターンを検出することもでき、さらに、検出された複数のデータ領域各々に対するデータパターンを利用してバイナリパターンを検出することもできる。図２で、複数の領域を分割して複数のデータパターンを検出することについて説明する。
【００４４】
図２は、図１に図示された検出部に関する一実施例の構成を示すものである。
【００４５】
図２を参照すると、検出部１２０は、分割部２１０及び領域パターン検出部２２０を含む。
【００４６】
分割部２１０は、プログラムコードのデータ領域、即ち、バイナリデータのデータ領域を複数の領域に分割する。
【００４７】
このとき、分割部２１０は、バイナリデータを予め決定された個数のデータ領域に分割することもでき、プログラムコードのバイナリデータを一定領域の単位に分割することもできる。
【００４８】
領域パターン検出部２２０は、分割部２１０により分割された複数のデータ領域各々に対するデータのデータパターンを検出する。
【００４９】
即ち、領域パターン検出部２２０は、プログラムコードの複数のデータ領域に対する複数のデータパターンを検出する。
【００５０】
このとき、領域パターン検出部２２０は、隣接するデータ領域に対するパターンを考慮し、該当データ領域に対するデータパターンを検出することもできる。
【００５１】
領域パターン検出部２２０は、図８に図示されたように、予め決定されたパターン検出値を利用し、複数のデータ領域各々に対するデータパターンを検出することもできる。
【００５２】
再度図１を参照し、生成部１３０は、検出部１２０により検出されたバイナリパターンに基づき、バイナリパターンに該当する固有パターン情報を生成する。
【００５３】
このとき、生成部１３０は、バイナリパターン情報に対応する固有パターン情報が予め格納されたデータテーブルを利用し、検出部１２０により検出されたバイナリパターンに該当する固有パターン情報を生成することもでき、バイナリパターン情報を変数とする予め決定された関数などを用いて、バイナリパターンに対応する固有パターン情報を生成することもできる。
【００５４】
例えば、生成部１３０は、ＳＨＡ（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ)−１を利用して固有パターン情報を生成することもでき、図８に図示されたように、バイナリデータの固有パターン情報を入力とするＣＲＣ（Ｃｙｃｌｉｃ Ｒｅｄｕｎｄａｎｃｙ Ｃｈｅｃｋ)−１６を利用してバイナリデータのパターンに対応する１６ビットの固有パターン情報（ｆｉｎｇｅｒｐｒｉｎｔ[１５：０]）を生成することもできる。即ち、生成部により生成される固有パターン情報は、プログラムコードのバイナリデータによって固有に生成される情報であって、固有パターン情報を生成する方式によって８ビット、１６ビット、３２ビット等の情報を有することができ、図８に図示された一例のように、固有パターン情報はプログラムコードの該当バイト数（ここでは６４ｋ＝６５５３６回）だけ繰り返し行って生成されることができる。
【００５５】
もちろん、生成部１３０は、検出部１２０により複数のデータ領域に対するデータパターンが検出された場合は、複数のデータパターン各々に対応する複数の固有データパターン情報を生成することもできる。
【００５６】
このとき、生成部１３０は、複数の固有データパターン情報を利用して、プログラムコードの固有パターン情報を生成することもできる。
【００５７】
パターン情報格納部１７０は、生成部１３０により生成された固有パターン情報またはデータ領域各々に対する固有データパターン情報を格納する。
【００５８】
このとき、パターン情報格納部１７０に格納された情報は、解読部１８０で不揮発性メモリ１６０に格納されたデータ、即ち、暗号化されたプログラムコードを解読するときに使用されることができる。
【００５９】
このようなパターン情報格納部１７０は、不揮発性メモリ１６０の一部領域に固有パターン情報または固有データパターン情報を格納することもでき、別途備えられた格納手段に固有パターン情報または固有データパターン情報を格納することもできる。
【００６０】
暗号化部１４０は、生成部１３０により生成された固有パターン情報を利用して、プログラムコードのバイナリデータを暗号化する構成であって、暗号化するのに使用されるアルゴリズムは予め決定された暗号化アルゴリズムであってもよく、複数のアルゴリズムのうちランダム（ｒａｎｄｏｍ）に選択された暗号化アルゴリズムであってもよい。すなわち、暗号化部１４０は固有パターン情報を利用して暗号化キーを生成し、生成された暗号化キーを利用してプログラムコードを暗号化することができる。
【００６１】
このとき、暗号化部１４０は、生成された暗号化キーの各ビット値とプログラムコードのビット値に対する排他的論理和（Ｅｘｃｌｕｓｉｖｅ−ＯＲ）の組み合わせを利用してプログラムコードを暗号化することができる。
【００６２】
暗号化部１４０は、生成部１３０により複数の固有データパターン情報が生成される場合は、分割された複数のデータ領域各々に対する固有データパターン情報を利用して、複数のデータ領域各々を暗号化することもできる。
【００６３】
さらに、暗号化部１４０は、固有パターン情報だけでなく、不揮発性メモリの製造固有情報と不揮発性メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、プログラムコードを暗号化することもできる。
【００６４】
例えば、図９に図示されたように、暗号化部１４０は、シード生成部で不揮発性メモリの製造固有情報（Ｆａｂ  ＩＤ）と不揮発性メモリのチップ固有情報（Ｃｈｉｐ  ＩＤ）の入力を受け、シード値（Ｓ[１５：０]）を生成し、生成されたシード値の各ビット間の排他的論理和（ＸＯＲ）の組み合わせに対する値（Ｋ[７：０]）を出力し、原本のプログラムコードのバイナリデータのうち、一番目の８ビットのデータ（Ｅ[７：０][１]）と第１の出力値（Ｋ[７：０]）の各ビット間の排他的論理和の組み合わせを行い、排他的論理和の組み合わせを行うことによる出力値と固有パターン情報（Ａ[１５：０]）の各ビット間の排他的論理和の組み合わせにより出力された値（Ｍ[７：０]）を再度排他的論理和の組み合わせを行うことによって、該当原本データ（Ｅ[７：０][１]）を暗号化されたデータ（Ｉ[７：０]）に変換して出力する。このような過程が原本のプログラムコードの全てのデータに対して繰り返し行われ、原本のプログラムコードのバイナリデータを暗号化されたデータに変更できる。例えば、プログラムコードのバイナリデータが６４ＫＢであると仮定すれば、図９に図示された処理過程を６５５３６回行うことによって、原本のプログラムコードのバイナリデータを暗号化されたデータに変換できる。
【００６５】
図９に図示されたシード生成部は、製造固有情報（Ｆａｂ  ＩＤ）とチップ固有情報（Ｃｈｉｐ  ＩＤ）を利用して、一度に１６ビットのシード値（Ｓ[１５：０]）を生成することもできるが、これに限定せず、製造固有情報（Ｆａｂ  ＩＤ）を利用して８ビットのシード値（Ｓ[７：０]）を生成し、チップ固有情報（Ｃｈｉｐ  ＩＤ）を利用し、８ビットのシード値（Ｓ[１５：８]）を各々生成することもできる。
【００６６】
図９から分かるように、本発明による装置は、プログラムコードが同一であっても、不揮発性メモリの製造固有情報とチップ固有情報のうち少なくとも一つが相違するため、不揮発性メモリに暗号化されて格納されるプログラムコードは全て相違し、従って、同一のプログラムコードに対しても固有の暗号化の結果が示されることになる。結果的に、不揮発性メモリに格納された暗号化されたプログラムコードを繰り返し分析しても、互いに異なる暗号化結果によって暗号化されるため、暗号化方式を獲得するのは難しく、よって、プログラムコードが流出されることを防止することができる。
【００６７】
さらに、暗号化部１４０は、固有パターン情報だけでなく、本発明の装置を使用するユーザー情報と時間または日付情報のうち少なくとも一つをさらに考慮し、プログラムコードを暗号化することもできる。
【００６８】
勿論、暗号化部１４０は、不揮発性メモリの製造固有情報、不揮発性メモリのチップ固有情報、ユーザー情報と時間または日付情報を全て考慮し、プログラムコードを暗号化することもできる。
【００６９】
このとき、暗号化部１４０でプログラムコードを暗号化するときに使用される情報は、解読部１８０でプログラムコードを解読するときに使用できるように予め決定された格納領域に格納されなければならないことが自明である。
【００７０】
格納部１５０は、暗号化部１４０により暗号化されたプログラムコードを不揮発性メモリ１６０に格納する。
【００７１】
このとき、格納部１５０は、複数のデータ領域各々に対するデータが暗号化された場合は、複数のデータ領域各々に対して暗号化されたデータを不揮発性メモリ１６０の該当領域に格納することができる。
【００７２】
解読部１８０は、不揮発性メモリ１６０に格納されたプログラムコード、すなわち、暗号化されたプログラムコードを解読する手段であって、プログラムコードを格納するときに使用された情報、例えば、プログラムコードの固有パターン情報、不揮発性メモリの製造固有情報、不揮発性メモリのチップ固有情報、ユーザー情報と時間または日付情報等を利用して、不揮発性メモリ１６０に格納されたプログラムコードを解読する。
【００７３】
このとき、解読部１８０は、暗号化部１４０でプログラムコードを暗号化するときに使用した、暗号化アルゴリズムに対応する解読アルゴリズムとパターン情報格納部１７０に格納されたプログラムコードの固有パターン情報を利用して、不揮発性メモリ１６０に格納されたプログラムコードを解読することができる。もちろん、暗号化部１４０でプログラムコードを暗号化するとき、複数のデータ領域を各々暗号化した場合、解読部１８０はパターン情報格納部１７０に格納された複数の固有データパターン情報を利用し、プログラムコードのデータ領域各々に対するプログラムコードのデータを解読することができる。
【００７４】
読取部１９０は、解読部１８０により解読されたプログラムコードを読み取る。
【００７５】
このように、本発明による装置は、プログラムコードに対するバイナリデータの固有パターン情報、さらに、不揮発性メモリの製造固有情報、不揮発性メモリのチップ固有情報、ユーザー情報と時間または日付情報等を利用してプログラムコードを暗号化するため、同一のプログラムコードが不揮発性メモリに暗号化されても、不揮発性メモリ毎にプログラムコードが相違して暗号化され、よって、複雑な暗号化のハードウェアを使用しなくても、不揮発性メモリのバイナリデータに対する保護水準を向上させることができる。
【００７６】
図３は、本発明の一実施例による不揮発性メモリのバイナリデータの保護方法に関する動作フロー図を示すものであって、図１に図示された装置における動作のフロー図に関するものである。
【００７７】
図３を参照すると、本発明による方法は、不揮発性メモリに格納されるプログラムコードを受信し、受信されたプログラムコードを分析して、プログラムコードに含まれたバイナリデータのバイナリパターンを検出する（Ｓ３１０乃至Ｓ３３０）。
【００７８】
このとき、段階Ｓ３２０は、バイナリデータのビット値「０」と「１」を利用してプログラムコードを分析することができ、段階Ｓ３３０は、プログラムコードの分析を介して獲得されたバイナリデータのビット値、例えば、ビット値「１」または「０」を利用してバイナリパターンを検出することができる。
【００７９】
段階Ｓ３３０によりプログラムコードに対するバイナリパターンが検出されると、検出されたバイナリパターンに基づき、バイナリパターンに該当する固有パターン情報を生成する（Ｓ３４０）。
【００８０】
このとき、固有パターン情報は、バイナリパターンに対応するｍビットの情報であり得、このような固有パターン情報は、予め格納されたバイナリパターンとこれに対する固有パターン情報に対するデータテーブルまたはバイナリパターン情報を変数とする関数を介して生成されたり獲得されることもでき、暗号化キーを生成するアルゴリズムを介して獲得されることもできる。
【００８１】
段階Ｓ３４０により生成された固有パターン情報を予め決定された格納領域に格納し、生成された固有パターン情報を利用してプログラムコードを暗号化する（Ｓ３５０、Ｓ３６０）。
【００８２】
もちろん、固有パターン情報を利用してプログラムコードを暗号化するとき、固有パターン情報を利用して暗号化キーを生成し、生成された暗号化キーを利用してプログラムコードを暗号化することができる。状況によって、固有パターン情報そのものが暗号化キーとして使用されることもできる。
【００８３】
固有パターン情報によって暗号化されたプログラムコードは、不揮発性メモリに格納される（Ｓ３７０）。
【００８４】
前記段階のうち、段階Ｓ３６０のプログラムコードを暗号化するのにおいて、不揮発性メモリ毎に相違して暗号化されたプログラムコードを生成するために、プログラムコードの固有パターン情報だけでなく、付加的な情報を利用して暗号化することができ、これについて、図４と図５を例に挙げて説明する。
【００８５】
図４は、図３に図示された段階Ｓ３６０に対する一実施例の動作のフロー図を示すものである。
【００８６】
図４を参照すると、プログラムコードを暗号化する段階Ｓ３６０は、プログラムコードが格納される不揮発性メモリの製造固有情報とチップ固有情報を確認する（Ｓ４１０）。
【００８７】
ここで、不揮発性メモリの製造固有情報は、該当不揮発性メモリの製造番号であって、ＦＡＢ（ｆａｂｒｉｃａｔｉｏｎ）ＩＤとなることができ、不揮発性メモリのチップ固有情報は、該当不揮発性メモリの製品番号（ＣＨＩＰ  ＩＤ）となることができ、このような製造固有情報とチップ固有情報は、予め決定された格納領域に格納されたり、外部で確認することができないように装置の内部に暗号化されて格納されることができる。
【００８８】
段階Ｓ４１０により不揮発性メモリの製造固有情報とチップ固有情報が確認されると、不揮発性メモリの製造固有情報、チップ固有情報、且つ段階Ｓ３４０により生成された固有パターン情報を利用してプログラムコードを暗号化する（Ｓ４２０）。
【００８９】
同様に、段階Ｓ４２０は、固有パターン情報、製造固有情報、チップ固有情報を利用して暗号化キーを生成し、生成された暗号化キーを利用してプログラムコードを暗号化することができる。
【００９０】
図５は、図３に図示された段階Ｓ３６０に対する他の一実施例の動作のフロー図を示すものである。
【００９１】
図５を参照すると、プログラムコードを暗号化する段階Ｓ３６０は、該当装置を使用したり、不揮発性メモリに格納されたプログラムコードを使用するユーザーのユーザー情報、該当装置での時間または日付情報を確認する（Ｓ５１０）。
【００９２】
ここで、ユーザー情報は、予め決定された格納領域に格納されたり、外部で確認できないように装置の内部に暗号化されて格納されることができ、時間または日付情報は、本発明の装置または本発明の装置が搭載される機器から獲得されることができる。
【００９３】
段階Ｓ５１０によりユーザー情報、時間または日付情報が確認されると、ユーザー情報、時間または日付情報、且つ段階Ｓ３４０により生成された固有パターン情報を利用してプログラムコードを暗号化する（Ｓ５２０）。
【００９４】
同様に、段階Ｓ５２０は、固有パターン情報、ユーザー情報、時間または日付情報を利用して暗号化キーを生成し、生成された暗号化キーを利用してプログラムコードを暗号化することができる。
【００９５】
図６は、図３に図示された段階Ｓ３３０に対する一実施例の動作のフロー図を示すものである。
【００９６】
図６を参照すると、バイナリパターンを検出する段階Ｓ３３０は、プログラムコードのバイナリデータに対するデータ領域を複数のデータ領域に分割する（Ｓ６１０）。
【００９７】
ここで、段階Ｓ６１０は、バイナリデータを予め決定された個数のデータ領域に分割することもでき、プログラムコードのバイナリデータを一定領域の単位に分割することもできる。
【００９８】
段階Ｓ６１０により複数のデータ領域に分割されると、分割された複数のデータ領域各々のデータに対するデータパターンを検出する（Ｓ６２０）。
【００９９】
さらに、本発明による方法は、段階Ｓ６２０により複数のデータ領域各々に対するデータパターンが検出されると、検出された複数のデータパターンを利用してプログラムコードのバイナリパターンを検出することができる。すなわち、複数のデータパターンに対する組み合わせまたは複数のデータパターンに対するテーブルを利用してバイナリパターンを検出することができる。
【０１００】
また、段階Ｓ６２０により検出された複数のデータパターンを直接利用し、図３でのプログラムコードを暗号化することもできる。即ち、段階Ｓ６２０により複数のデータパターンが検出されると、検出された複数のデータパターン各々に基づき、分割された複数のデータ領域各々に対するデータの固有データパターン情報を生成し、生成された複数の固有データパターン情報を利用して、プログラムコードに対する複数の領域各々のデータを暗号化する。
【０１０１】
図７は、図３により格納されたプログラムコードを読み取る方法に関する一実施例の動作のフロー図を示すものである。
【０１０２】
図７を参照すると、不揮発性メモリに格納されたプログラムコードを読み取るために、予め決定された格納領域に格納されたプログラムコードの固有パターン情報を確認し、確認された固有パターン情報を利用し、不揮発性メモリに格納された暗号化されたプログラムコードを解読する（Ｓ７１０、Ｓ７２０）。
【０１０３】
もちろん、プログラムコードが固有パターン情報だけでなく、不揮発性メモリの製造固有情報、チップ固有情報、ユーザー情報、時間または日付情報のうち少なくとも一つ以上を利用して暗号化された場合、段階Ｓ７２０で暗号化されたプログラムコードを解読するとき、プログラムコードを暗号化するのに使用された固有パターン情報及び不揮発性メモリの製造固有情報、チップ固有情報、ユーザー情報、時間または日付情報のうち少なくとも一つ以上を利用し、暗号化されたプログラムコードを解読する。
【０１０４】
不揮発性メモリに格納されたプログラムコードが解読されると、解読されたプログラムコードを読み取る（Ｓ７３０）。
【０１０５】
本発明の一実施例による不揮発性メモリのバイナリデータの保護方法は、多様なコンピュータ手段を介して行えるプログラム命令の形態で具現され、コンピュータ読取可能な媒体に記録されることができる。前記コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造等を単独または組み合わせて含むことができる。前記媒体に記録されるプログラム命令は、本発明のために特別に設計され構成されたものであるか、コンピュータソフトウェアの当業者に公知となって使用可能なものであり得る。コンピュータ読取可能な記録媒体の例では、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体（ｍａｇｎｅｔｉｃ  ｍｅｄｉａ）、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体（ｏｐｔｉｃａｌ  ｍｅｄｉａ）、フロプティカルディスク（ｆｌｏｐｔｉｃａｌ  ｄｉｓｋ）のような磁気−光媒体（ｍａｇｎｅｔｏ−ｏｐｔｉｃａｌ  ｍｅｄｉａ）、及びロム（ＲＯＭ）、ラム（ＲＡＭ）、フラッシュメモリ等のようなプログラム命令を格納して行うように特別に構成されたハードウェア装置が含まれる。プログラム命令の例では、コンパイラによって作られるような機械語のコードだけでなく、インタプリタ等を使用してコンピュータによって実行されることができる高級言語コードを含む。前記したハードウェア装置は本発明の動作を行うために一つ以上のソフトウェアモジュールとして作動するように構成されることができ、その逆も同様である。
【０１０６】
以上のように、本発明では具体的な構成要素等のような特定事項と限定された実施例及び図面により説明されているが、これは本発明のより全般的な理解を助けるために提供されたものであるだけで、本発明は上記の実施例に限定されるわけではなく、本発明が属する分野で通常の知識を有する者であれば、このような記載から多様な修正及び変形が可能である。
【０１０７】
従って、本発明の思想は、説明された実施例に限られ定められてはならず、後述する特許請求範囲だけでなく、この特許請求範囲と均等であったり、等価的変形がある全てのものは本発明の思想の範疇に属するといえる。
【産業上の利用可能性】
【０１０８】
不揮発性メモリのバイナリデータの保護方法及びその装置が開示される。本発明の一実施例による不揮発性メモリのバイナリデータの保護方法は、プログラムコードを受信する段階と、前記受信された前記プログラムコードを分析し、前記プログラムコードを構成するバイナリデータのバイナリパターンを検出する段階と、前記検出された前記バイナリパターンに基づき、前記バイナリパターンに該当する固有パターン情報を生成する段階と、前記生成された前記固有パターン情報を利用して前記プログラムを暗号化する段階と、前記暗号化された前記プログラムコードをメモリに格納する段階とを含み、前記暗号化する段階は、前記メモリの製造固有情報と前記メモリのチップ固有情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化したり、ユーザー情報と時間または日付情報のうち少なくとも一つをさらに考慮し、前記プログラムコードを暗号化することによって、不揮発性メモリ毎にプログラムコードを適応的に（ａｄａｐｔｉｖｅ）暗号化して格納し、これを介して不揮発性メモリのバイナリデータに対する保護水準を向上させることができる。
【図１】
2016508629.tif 000003
【図２】
2016508629.tif 000004
【図３】
2016508629.tif 000005
【図４】
2016508629.tif 000006
【図５】
2016508629.tif 000007
【図６】
2016508629.tif 000008
【図７】
2016508629.tif 000009
【図８】
2016508629.tif 000010
【図９】
2016508629.tif 000011
【国際調査報告】
2016508629.tif 000012
2016508629.tif 000013
2016508629.tif 000014
2016508629.tif 000015