説明

半導体装置の利用制限方法、及び半導体装置

【課題】半導体装置の利用の制限を強化することが可能な半導体装置の利用制限方法を提供することである。
【解決手段】本発明にかかる半導体装置の利用制限方法は、利用者が開示するユーザプログラムに基づき提供者が第1のコードを生成し(S22)、提供者が第1のコードを半導体装置に格納し(S23)、提供者が半導体装置を利用者に提供し(S24)、利用者がユーザプログラムに基づき第2のコードを生成し(S25)、第1のコードと第2のコードとを照合する(S36)ことで、利用者が半導体装置を利用できるか否かを判断する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体装置の利用制限方法、及び半導体装置に関し、特にユーザプログラムを用いて半導体装置の利用者を制限することが可能な半導体装置の利用制限方法、及び半導体装置に関する。
【背景技術】
【0002】
半導体装置の一つであるマイクロコンピュータは、多様な市場ニーズに応えるため、必要とする機能をワンチップ化している。また、マイクロコンピュータは、メモリに書き込むプログラムを変えることで多様な機能を発揮することができる。そして、このメモリにはプログラムを電気的に記憶・消去することが可能なフラッシュメモリが用いられている。マイクロコンピュータの提供者は、ユーザの用途に応じた仕様をプログラムとして書き込むための環境を利用者に提供し、利用者はプログラムの内容を書き換えることにより多様な機能を利用することができる。
【0003】
特許文献1には、複数の機能を一つの半導体装置に実装し、機能提供者から許可を得た利用者だけが任意の機能を選択し利用することができる半導体装置が開示されている。図9は特許文献1に開示されている半導体装置のシステム構成を示す図である。図9に示すシステムは、機能利用者が任意の機能を利用可能とするための鍵データを生成する鍵生成部101と、機能利用者が使用する半導体装置102とを有する。半導体装置102は鍵データの認証処理を実施する機能選択部103、演算処理を実施する中央演算処理装置104、複数の機能回路106を格納する機能格納部105を有する。機能回路106は、それぞれ特定の機能を実施する回路であり、図9では任意の数字を示す記号nを用い、n個の機能を実現できる。
【0004】
図10は特許文献1に開示されている半導体装置に係る全体の処理手順を示すフローチャートである。図9と図10を用いて特許文献1にかかる半導体装置の処理手順について説明する。まず、機能利用者から必要な機能が機能提供者に依頼される。このとき、依頼として、機能利用者から利用者を識別する情報である利用者情報と機能利用者が要望する機能の情報である機能選択情報とを含む機能選択/利用者情報を機能提供者に送る(S181)。
【0005】
次に、機能提供者は依頼に応じて、機能選択/利用者情報を鍵生成部101に入力することにより、鍵データを生成する(S182)。次に、機能提供者は生成した鍵データを機能利用者に配布する(S183)。次に、機能利用者は受け取った鍵データを半導体装置102に入力する(S184)。次に、半導体装置は機能選択部103において、入力された鍵データの認証処理を行う。認証に成功すれば次のステップS186に進み、認証に失敗すれば、NGとして終了する(S185)。鍵データが正しい手順で生成されたものであれば、認証に成功する。次に、S185において、認証に成功すれば、機能格納部105に格納されている機能回路106のうち、機能利用者が要望した機能を実現する回路と中央演算処理装置104とを接続することにより、要望した機能を利用可能とする(S186)。この際、選択した機能ごとに、また、選択済みの機能の履歴によって、鍵生成部101において、生成される鍵データが異なるので、例えば、機能利用者が半導体装置を購入する顧客である場合、機能提供者は提供した機能に応じて、鍵データを顧客に配布するときに対価を得るといったビジネスを実施することも可能である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−298159号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1では、機能提供者が生成した鍵データを機能利用者が半導体装置に入力することで、利用者が半導体装置を利用できるか否か、また、利用者が利用する半導体装置の機能の選択を行なっている。
【0008】
しかしながら、特許文献1に開示されている半導体装置では、半導体装置の利用の可否や半導体装置の機能の選択に鍵データを用いているので、本来、このような半導体装置を利用する権利を持たない第三者がこの鍵データを入手することにより、半導体装置が使用されてしまう。つまり、このような問題は、利用者に対して半導体装置の機能の利用許可を与えるコードがそれのみで流用できること、また、利用者はコードである鍵データを複製できることから生じている。
【課題を解決するための手段】
【0009】
本発明にかかる半導体装置の利用制限方法は、利用者が半導体装置上で動作させるユーザプログラムに基づき、提供者が第1のコードを生成し、前記提供者が前記第1のコードを前記半導体装置に格納し、前記提供者が前記半導体装置を前記利用者に提供し、前記利用者が前記ユーザプログラムに基づき第2のコードを生成し、前記ユーザプログラムと前記第2のコードとを前記半導体装置に格納し、前記半導体装置は、起動後、格納されている前記第1のコードと前記第2のコードとを照合し、一致した場合に利用可能となる。
【0010】
本発明では、利用者固有のユーザプログラムに基づき鍵データに相当するコードを生成しているので、コードがそれのみで流用されること、また、コードが複製されることを防止することができ、半導体装置の利用の制限を強化することができる。
【0011】
本発明にかかる半導体装置は、利用者が半導体装置上で動作させるユーザプログラムに基づき生成された第1のコードを予め格納する第1のコード格納部と、前記利用者が書き込む前記ユーザプログラムに基づき生成された第2のコードを格納する第2のコード格納部と、前記利用者が利用する際に前記第1のコードと前記第2のコードとを比較するコード比較部と、前記ユーザプログラムを格納するメモリと、を有する。
【0012】
本発明にかかる半導体装置では、利用者固有のユーザプログラムに基づき鍵データに相当するコードを生成しているので、コードがそれのみで流用されること、また、コードが複製されることを防止することができ、半導体装置の利用の制限を強化することができる。
【発明の効果】
【0013】
本発明により、半導体装置の利用の制限を強化することが可能な半導体装置の利用制限方法、及び半導体装置の提供をすることができる。
【図面の簡単な説明】
【0014】
【図1】実施の形態1にかかる半導体装置を示すブロック図である。
【図2】実施の形態1にかかる半導体装置のコード生成処理を説明するためのフローチャートである。
【図3】実施の形態1にかかる半導体装置のコード照合処理を説明するためのフローチャートである。
【図4】実施の形態1にかかる半導体装置の利用制限方法を説明するためのフローチャートである。
【図5】実施の形態1にかかる半導体装置のコード生成の例を示す図である。(a)は、バイナリ化されたユーザプログラムのバイト数を用いる場合、(b)はバイナリ化されたユーザプログラムの0の数を用いる場合である。
【図6】実施の形態1にかかる半導体装置の利用制限方法の例を示す図である。(a)は、電源回路を遮断する場合、(b)は、アドレス更新処理を遮断する場合である。
【図7】実施の形態2にかかる半導体装置を示すブロック図である。
【図8】実施の形態2にかかる半導体装置のコード生成処理を説明するためのフローチャートである。
【図9】特許文献1にかかる半導体装置を説明するためのブロック図である。
【図10】特許文献1にかかる半導体装置の利用制限方法を説明するためのフローチャートである。
【発明を実施するための形態】
【0015】
実施の形態1
以下、図面を参照して本発明の実施の形態1について説明する。
図1は本実施の形態にかかる半導体装置を示すブロック図である。図1に示す半導体装置(マイクロコンピュータ)1は、CPU3、コード生成部4、コード照合部5、第1のコード格納部6、第2のコード格納部7、フラッシュメモリ8、リセット制御部9、第1の周辺機能10、第2の周辺機能11、各構成要素を互いに接続するバス20を有する。また、本実施の形態にかかる半導体装置1に対してユーザプログラム12を書き込む場合は、ライター2を用いる。第1の周辺機能10、第2の周辺機能11は半導体装置が提供可能な機能を実現することができる回路である。
【0016】
CPU3は、バス20に接続されており、当該バス20を介して、コード生成部4、コード照合部5、第1のコード格納部6、第2のコード格納部7、フラッシュメモリ8、リセット制御部9、第1の周辺機能10、第2の周辺機能11に、それぞれアクセス可能とされている。また、ライター2からのユーザプログラム12はCPU3を経由してコード生成部4、フラッシュメモリ8へ送られる。その他、CPU3は半導体装置1の動作条件等を設定する機能も有する。
【0017】
フラッシュメモリ8は、ライター2を用いて書き込まれたユーザプログラム12を格納する。フラッシュメモリは、例えばフラッシュメモリ制御部を有し、当該フラッシュメモリ制御部を用いてフラッシュメモリへのユーザプログラムの格納を制御することができる。
【0018】
第1のコード格納部6は、第1のコードを格納する。第1のコードは、半導体装置利用者(以下、利用者ともいう)が半導体装置提供者(以下、提供者ともいう)に開示するユーザプログラムに基づき、提供者が生成する。第1のコードを生成する方法としては、例えば図5(a)、図5(b)に示す方法を用いることができる。
【0019】
図5(a)に示す方法では、利用者から開示されたユーザプログラム12をバイナリ化し(S31)、バイナリ化されたユーザプログラムのバイト数を算出する(S32)。そして、このバイナリ化されたユーザプログラムのバイト数を第1のコードとすることができる(S33)。また、図5(b)に示す方法では、利用者から開示されたユーザプログラム12をバイナリ化し(S41)、バイナリ化されたユーザプログラムの0の数をカウントする(S42)。そして、このバイナリ化されたユーザプログラムの0の数を第1のコードとすることができる(S43)。
なお、第1のコードを生成する方法は、図5(a)、図5(b)に示す方法に限定されることはなく、利用者から開示されたユーザプログラムから固有のコードを生成することができ方法であればどのような方法を用いてもよい。
【0020】
コード生成部4はバス20に接続されており、ライター2から転送されてきたユーザプログラム12に基づき第2のコードを生成する。この場合、ライター2から転送されるユーザプログラムは、利用者が半導体装置1を利用する際に書き込まれるプログラムであり、利用者固有のプログラムである。以下、図2を用いてコード生成部4におけるコード生成のフローについて説明する。
【0021】
図2に示すように、まず半導体装置1の利用者がライター2を用いて半導体装置1に対してユーザプログラムの書き込みを開始することで(S1)、半導体装置1へユーザプログラム12が転送される(S2)。その後、半導体装置1のコード生成部4で、転送されてきたユーザプログラム12に基づき第2のコードを生成する(S3)。そして、生成された第2のコードは、第2のコード格納部7に格納される(S4)。
【0022】
また、ユーザプログラム12を用いて第2のコードを生成する場合も、例えば図5(a)、図5(b)に示す方法を用いることができる。図5(a)に示す方法では、コード生成部4は、ライター2から書き込まれたユーザプログラム12をバイナリ化し(S31)、バイナリ化されたユーザプログラムのバイト数を算出する(S32)。そして、このバイナリ化されたユーザプログラムのバイト数を第2のコードとすることができる(S33)。また、図5(b)に示す方法では、コード生成部4は、ライター2から書き込まれたユーザプログラム12をバイナリ化し(S41)、バイナリ化されたユーザプログラムの0の数をカウントする(S42)。そして、このバイナリ化されたユーザプログラムの0の数を第2のコードとすることができる(S43)。なお、第2のコードを生成する方法は、図5(a)、図5(b)に示す方法に限定されることはなく、利用者がライター2から書き込むユーザプログラムから固有のコードを生成することができ方法であればどのような方法を用いてもよい。
【0023】
コード照合部5は、利用者が開示したユーザプログラムに基づき提供者が生成した第1のコードと、利用者がライター2を用いて書き込んだユーザプログラムに基づき生成された第2のコードとを照合する。図3は、本実施の形態にかかる半導体装置のコード照合処理を説明するためのフローチャートである。コード照合処理は、提供者が生成した第1のコードが第1のコード格納部6に格納されていると共に、既にライター2を用いてユーザプログラムが書き込まれ、更に当該ユーザプログラムに基づき生成された第2のコードが第2のコード格納部2に格納されている半導体装置1に対して実施される。
【0024】
図3に示すように、半導体装置の利用者は、半導体装置1に対して電源を投入する(S11)。次に、半導体装置1は、ユーザプログラム書き込みモードであるか否かを判断する(S12)。ユーザプログラム書き込みモードであるか否かについては、例えばフラッシュメモリにユーザプログラムが書き込まれているか、また、第2のコード格納部に第2のコードが格納されているかなどにより判断することができる。そして、ユーザプログラム書き込みモードであると判断された場合は、半導体装置1に対してライター2を用いてユーザプログラムを書き込むユーザプログラム書き込み処理が実行される(S13)。
【0025】
一方、ユーザプログラム書き込みモードではないと判断された場合は、第1のコード格納部に格納された第1のコード(提供者が生成)と、第2のコード格納部に格納された第2のコード(利用者が生成)とを照合する(S14、S15)。その結果、第1のコードと第2のコードが一致していない場合は、半導体装置1が動作しないように、コード照合部5は、リセット制御部9に対してリセット処理を実行するように指令を出す(S17)。また、第1のコードと第2のコードが一致している場合は、コード照合部5はリセット制御部9に対してリセットを解除するように指令を出す(S16)。リセット制御部9がリセットを解除することで、半導体装置においてユーザプログラムの処理が開始される(S18)。
【0026】
図6は、半導体装置の利用制限方法の例を示す図である。図6(a)に示すように、半導体装置の機能を実現する回路ブロックA(14)、回路ブロックB(15)は、電源回路スイッチ13を介して電源電圧VDDと接続されている。また、回路ブロックA(14)、回路ブロックB(15)は、接地電位GNDとも接続されている。そして、コード照合部5からの一致信号により電源回路がONし、各機能回路に電源が供給され動作が可能になる。
【0027】
また、図6(b)に示すように、アドレス生成部16とプログラムカウンタ(PC)18との間にアドレス更新許可回路17を設け、当該アドレス更新許可回路17をリセット制御部9で制御することで、半導体装置のユーザプログラムの実行を制限することができる。つまり、ユーザプログラムの処理は当該プログラムカウンタ18にアドレス値を代入することで実現されることから、アドレス生成部16とプログラムカウンタ18との接続をアドレス更新許可回路17で切断することで、ユーザプログラムの実行を制限することができる。
【0028】
次に、本実施の形態にかかる半導体装置の利用制限方法について、図4を用いて説明する(適宜、図1の半導体装置も用いて説明する)。
図4に示す半導体装置利用者とは、例えば、半導体装置提供者が提供する半導体装置(マイクロコンピュータ)にユーザプログラムを書き込み、当該ユーザプログラムが書き込まれた半導体装置を実装した商品を市場で販売等する者である。一方、半導体装置提供者とは、例えば、半導体装置を生産し、当該半導体装置を利用者に提供する者である。
【0029】
図4に示すように、利用者は、利用者が半導体装置を利用する際に書き込むユーザプログラムを、提供者へ開示する(S21)。利用者からユーザプログラムを開示された提供者は、当該開示されたユーザプログラムに基づき第1のコードを生成する(S22)。第1のコードの生成方法は、例えば図5(a)、図5(b)に示す方法で生成することができる。次に、提供者は生成した第1のコードを半導体装置1の第1のコード格納部6に格納する(S23)。そして、第1のコードを格納した半導体装置を利用者に対して提供する(S24)。
【0030】
半導体装置の提供を受けた利用者は、ライターを用いて半導体装置に対してユーザプログラムを書き込むと共に、当該ユーザプログラムに基づき第2のコードを生成する(S25)。このとき、第2のコードは半導体装置1のコード生成部4で生成される。なお、第2のコードは、半導体装置にユーザプログラムを書き込むライター2で生成されてもよい。ライター2で第2のコードを生成する場合については、実施の形態2で説明する。また、第2のコードは、例えば図5(a)、図5(b)に示す方法で生成することができる。
【0031】
半導体装置は、提供者により生成された第1のコードと、利用者により生成された第2のコードとをコード照合部5で照合する(S26)。そして、第1のコードと第2のコードが一致している場合は、半導体装置の動作が許可される(S27)。一方、第1のコードと第2のコードが一致していない場合は、半導体装置の動作が禁止される(S27)。
【0032】
一般的に、半導体装置は、提供者と利用者との間で、その半導体装置の機能、数量等に基づき価格が決定される。例えば、提供者は、供給数量が多い利用者Aに対して提供する場合は、供給数量が少ない利用者Bに対して供給する場合よりも比較的安価に半導体装置を提供する(いわゆる、ボリュームディスカウント)。しかし、比較的安価に半導体装置を仕入れた利用者Aが第三者に対して半導体装置を再譲渡した場合、第三者は比較的安価に半導体装置を入手できるため、提供者は第三者に対して適切な価格で半導体装置を供給する機会を失うことになる。
【0033】
このようなことを防止するために、特許文献1では、機能提供者が生成した鍵データを用いて半導体装置の利用者を制限していた。しかしながら、特許文献1に開示されている半導体装置では、半導体装置の利用の可否や半導体装置の機能の選択に鍵データを用いているので、本来、このような半導体装置を利用する権利を持たない第三者がこの鍵データを入手することにより、半導体装置が使用されてしまうという問題があった。つまり、このような問題は、利用者に対して半導体装置の機能の利用許可を与えるコードがそれのみで流用できること、また、利用者はコードである鍵データを複製できることから生じていた。
【0034】
これに対して、本実施の形態にかかる半導体装置の利用制限方法では、利用者固有の情報であるユーザプログラムに基づき鍵データに相当するコードを生成しているので、コードがそれのみで流用されること、また、コードが複製されることを防止することができ、半導体装置の利用の制限を強化することができる。
【0035】
また、利用者が書き込むユーザプログラムに基づき提供者がコードを生成し、当該コードを半導体装置に格納しているので、提供者は利用者に対してコードを開示する必要がなく、第三者がコードを流用することを防止することができる。また、利用者が書き込むユーザプログラムは利用者固有のものであるため、仮に利用者が第三者に対して半導体装置を譲渡したとしても、半導体装置に格納されているコードから第三者へ半導体装置を譲渡した利用者を特定することができる。さらに、ユーザプログラムからコードを生成するプロセスは、半導体装置提供者、半導体装置またはライター内部にて行うため第三者に開示する必要がなく、コードの複製を防ぐことができる。
【0036】
実施の形態2
次に、本発明の実施の形態2について説明する。
図7は本実施の形態にかかる半導体装置を示すブロック図である。実施の形態1にかかる半導体装置では、コード生成部4は半導体装置1の内部に設けられていたが、本実施の形態にかかる半導体装置では、コード生成部4はライター2の内部に設けられている。
【0037】
図7に示す半導体装置(マイクロコンピュータ)1は、CPU3、コード照合部5、第1のコード格納部6、第2のコード格納部7、フラッシュメモリ8、リセット制御部9、第1の周辺機能10、第2の周辺機能11、各構成要素を互いに接続するバス20を有する。また、本実施の形態にかかる半導体装置1に対してユーザプログラム12を書き込むライター2は、コード生成部4を有する。
【0038】
図8は本実施の形態にかかる半導体装置のコード生成処理を説明するためのフローチャートである。本実施の形態では、コード生成部4は半導体装置1にユーザプログラム12を書き込むライター2内に設けられている。まず、ライター2によるユーザプログラム書き込み処理が開始されると(S51)、ライター2内のコード生成部4はユーザプログラム12に基づき第2のコードを生成する(S52)。その後、ライター2は半導体装置1に対して、ユーザプログラム12と生成された第2のコードを転送する(S53)。転送されたユーザプログラム12は、半導体装置1のフラッシュメモリ8に格納される。また、転送された第2のコードは、半導体装置1の第2のコード格納部7に格納される(S54)。
【0039】
これ以外の部分については、実施の形態1にかかる半導体装置と同様の構成であるので説明を省略する。また、本実施の形態にかかる半導体装置の利用制限方法および効果についても、実施の形態1で説明した半導体装置の利用制限方法および効果と同様であるので説明を省略する。
【0040】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【0041】
1 半導体装置(マイクロコンピュータ)
2 ライター
3 CPU
4 コード生成部
5 コード照合部
6 第1のコード格納部
7 第2のコード格納部
8 フラッシュメモリ
9 リセット制御部
10 第1の周辺機能
11 第2の周辺機能
12 ユーザプログラム
13 電源回路スイッチ
14 回路ブロックA
15 回路ブロックB
16 アドレス生成部
17 アドレス更新許可回路
18 PC(プログラムカウンタ)
20 バス

【特許請求の範囲】
【請求項1】
利用者が半導体装置上で動作させるユーザプログラムに基づき、提供者が第1のコードを生成し、
前記提供者が前記第1のコードを前記半導体装置に格納し、
前記提供者が前記半導体装置を前記利用者に提供し、
前記利用者が前記ユーザプログラムに基づき第2のコードを生成し、前記ユーザプログラムと前記第2のコードとを前記半導体装置に格納し、
前記半導体装置は、起動後、格納されている前記第1のコードと前記第2のコードとを照合し、一致した場合に利用可能となる、半導体装置の利用制限方法。
【請求項2】
前記第2のコードは前記半導体装置で生成される、請求項1に記載の半導体装置の利用制限方法。
【請求項3】
前記第2のコードは、前記半導体装置に前記ユーザプログラムを書き込むライターにより生成される、請求項1に記載の半導体装置の利用制限方法。
【請求項4】
前記第1及び第2のコードは、バイナリ化された前記ユーザプログラムのバイト数に基づき生成される、請求項1乃至3のいずれか一項に記載の半導体装置の利用制限方法。
【請求項5】
前記第1及び第2のコードは、バイナリ化された前記ユーザプログラムの0の数に基づき生成される、請求項1乃至3のいずれか一項に記載の半導体装置の利用制限方法。
【請求項6】
前記半導体装置の使用が不可であると判断された場合、前記半導体装置の機能回路の電源をオフにする、請求項1乃至5のいずれか一項に記載の半導体装置の利用制限方法。
【請求項7】
前記半導体装置の使用が不可であると判断された場合、プログラムカウンタへのアドレス値の書き込みを停止する、請求項1乃至5のいずれか一項に記載の半導体装置の利用制限方法。
【請求項8】
半導体装置上で動作させるユーザプログラムに基づき生成された第1のコードを当該半導体装置の製造時に格納し、
前記半導体装置の利用時に前記ユーザプログラムに基づき生成された第2のコードと、前記ユーザプログラムとを前記半導体装置に格納し、
前記半導体装置は、起動後、格納されている前記第1のコードと前記第2のコードとを照合し、一致した場合に利用可能となる、半導体装置の利用制限方法。
【請求項9】
利用者が半導体装置上で動作させるユーザプログラムに基づき生成された第1のコードを予め格納する第1のコード格納部と、
前記利用者が書き込む前記ユーザプログラムに基づき生成された第2のコードを格納する第2のコード格納部と、
前記利用者が利用する際に前記第1のコードと前記第2のコードとを比較するコード比較部と、
前記ユーザプログラムを格納するメモリと、を有する半導体装置。
【請求項10】
前記利用者が書き込む前記ユーザプログラムに基づき前記第2のコードを生成するコード生成部を更に有する、請求項9に記載の半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate