(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023136601
(43)【公開日】2023-09-29
(54)【発明の名称】ソフトウェア管理装置、ソフトウェア管理方法、及びプログラム
(51)【国際特許分類】
G06F 21/12 20130101AFI20230922BHJP
G06F 21/64 20130101ALI20230922BHJP
H04L 9/32 20060101ALI20230922BHJP
【FI】
G06F21/12 330
G06F21/64
H04L9/32 200B
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022042365
(22)【出願日】2022-03-17
(71)【出願人】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】110002044
【氏名又は名称】弁理士法人ブライタス
(72)【発明者】
【氏名】河辺 正仁
(57)【要約】
【課題】ソフトウェアの使用に用いる鍵の漏洩を抑制して、ソフトウェアの不正使用を阻止する。
【解決手段】ソフトウェア管理装置10は、コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定部11と、電子署名が付与されていると判定されると、コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、秘密鍵に対応する公開鍵を取得する、公開鍵取得部12と、公開鍵を用いて、ソフトウェアに付与されている電子署名を復号し、電子署名が正当であるかどうかを判定し、電子署名が正当である場合に、ソフトウェアの起動を許可する、電子署名検証部13と、を備えている。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定部と、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得部と、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証部と、
を備えている、ことを特徴とするソフトウェア管理装置。
【請求項2】
請求項1に記載のソフトウェア管理装置であって、
前記記憶領域が、前記コンピュータに搭載されたセキュリティチップに設けられており、前記セキュリティチップによって前記コンピュータ上での改ざんが検出されていない場合に、前記記憶領域からのデータの読み出しが可能となる、
ことを特徴とするソフトウェア管理装置。
【請求項3】
請求項1または2に記載のソフトウェア管理装置であって、
前記ソフトウェアには、前記秘密鍵によって暗号化されたハードウェア証明書が組み込まれており、
前記電子署名検証部が、前記公開鍵を用いて、前記ハードウェア証明書を復号し、前記ハードウェア証明書が有効であるかどうかを判定し、
前記ハードウェア証明書が有効である場合に、更に、前記ハードウェア証明書に含まれる情報と前記コンピュータのデバイス情報とが整合しているかどうかを判定し、両者が整合しており、且つ、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、
ことを特徴とするソフトウェア管理装置。
【請求項4】
コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定ステップと、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得ステップと、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証ステップと、
を有する、ことを特徴とするソフトウェア管理方法。
【請求項5】
請求項4に記載のソフトウェア管理方法であって、
前記記憶領域が、前記コンピュータに搭載されたセキュリティチップに設けられており、前記セキュリティチップによって前記コンピュータ上での改ざんが検出されていない場合に、前記記憶領域からのデータの読み出しが可能となる、
ことを特徴とするソフトウェア管理方法。
【請求項6】
請求項4または5に記載のソフトウェア管理方法であって、
前記ソフトウェアには、前記秘密鍵によって暗号化されたハードウェア証明書が組み込まれており、
前記電子署名検証ステップにおいて、前記公開鍵を用いて、前記ハードウェア証明書を復号し、前記ハードウェア証明書が有効であるかどうかを判定し、
前記ハードウェア証明書が有効である場合に、更に、前記ハードウェア証明書に含まれる情報と前記コンピュータのデバイス情報とが整合しているかどうかを判定し、両者が整合しており、且つ、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、
ことを特徴とするソフトウェア管理方法。
【請求項7】
コンピュータに、
前記コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定ステップと、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得ステップと、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証ステップと、
を実行させる、プログラム。
【請求項8】
請求項7に記載のプログラムであって、
前記記憶領域が、前記コンピュータに搭載されたセキュリティチップに設けられており、前記セキュリティチップによって前記コンピュータ上での改ざんが検出されていない場合に、前記記憶領域からのデータの読み出しが可能となる、
ことを特徴とするプログラム。
【請求項9】
請求項7または8に記載のプログラムであって、
前記ソフトウェアには、前記秘密鍵によって暗号化されたハードウェア証明書が組み込まれており、
前記電子署名検証ステップにおいて、前記公開鍵を用いて、前記ハードウェア証明書を復号し、前記ハードウェア証明書が有効であるかどうかを判定し、
前記ハードウェア証明書が有効である場合に、更に、前記ハードウェア証明書に含まれる情報と前記コンピュータのデバイス情報とが整合しているかどうかを判定し、両者が整合しており、且つ、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータに搭載されたソフトウェアを管理するための、ソフトウェア管理装置、及びソフトウェア管理方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【0002】
従来から、コンピュータにおいては、正当な権限のない者によるソフトウェアの不正使用を排除することは重要である。このため、例えば、特許文献1は、端末装置のインターフェイスに、ICチップを接続することによって、正当な権限のない者によるソフトウェアの不正使用を阻止する技術を開示している。
【0003】
具体的には、特許文献1に開示された技術では、ICチップには、データを暗号化するための公開鍵と、データを復号するための開錠鍵とが、記録される。そして、このICチップが端末装置に接続されている間だけ、所定のソフトウェアによるファイルのアクセスが可能となる。この結果、正当な権限のない者によるソフトウェアの不正使用が阻止されることになる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ICチップに記録されている公開鍵と開錠鍵とを複製することは、悪意のある第三者にとっては簡単であり、特許文献1に開示された技術では、正当な権限のない者によるソフトウェアの不正使用の阻止に限度がある。
【0006】
本開示の目的の一例は、ソフトウェアの使用に用いる鍵の漏洩を抑制して、ソフトウェアの不正使用を阻止し得る、ソフトウェア管理装置、ソフトウェア管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本開示の一側面におけるソフトウェア管理装置は、
コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定部と、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得部と、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証部と、
を備えている、ことを特徴とする。
【0008】
また、上記目的を達成するため、本開示の一側面におけるソフトウェア管理方法は、
コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定ステップと、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得ステップと、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証ステップと、
を有する、ことを特徴とする。
【0009】
更に、上記目的を達成するため、本開示の一側面におけるプログラムは、
コンピュータに、
前記コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定ステップと、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得ステップと、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証ステップと、
を実行させる、ことを特徴とする。
【発明の効果】
【0010】
以上のように本開示によれば、ソフトウェアの使用に用いる鍵の漏洩を抑制して、ソフトウェアの不正使用を阻止することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施の形態1におけるソフトウェア管理装置の概略構成を示す構成図である。
【
図2】
図2は、実施の形態1におけるソフトウェア管理装置の構成を具体的に示す構成図である。
【
図3】
図3は、実施の形態1においてソフトウェア管理装置における処理を説明する図である。
【
図4】
図4は、実施の形態1におけるソフトウェア管理装置の動作を示すフロー図である。
【
図5】
図5は、実施の形態2においてソフトウェア管理装置における処理を説明する図である。
【
図6】
図6は、実施の形態2におけるソフトウェア管理装置の動作を示すフロー図である。
【
図7】
図7は、実施の形態1及び2におけるソフトウェア管理装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【0012】
(実施の形態1)
以下、実施の形態1における、ソフトウェア管理装置、ソフトウェア管理方法、及びプログラムについて、
図1~
図4を参照しながら説明する。
【0013】
[装置構成]
最初に、実施の形態1におけるソフトウェア管理装置の概略構成について
図1を用いて説明する。
図1は、実施の形態1におけるソフトウェア管理装置の概略構成を示す構成図である。
【0014】
図1に示す実施の形態1におけるソフトウェア管理装置10は、コンピュータに搭載されたソフトウェアを管理するための装置である。
図1に示すように、ソフトウェア管理装置10は、電子署名判定部11と、公開鍵取得部12と、電子署名検証部13と、を備えている。
【0015】
電子署名判定部11は、コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する。公開鍵取得部12は、電子署名判定部11によって電子署名が付与されていると判定されると、コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、秘密鍵に対応する公開鍵を取得する。
【0016】
電子署名検証部13は、まず、公開鍵取得部12によって取得された公開鍵を用いて、ソフトウェアに付与されている電子署名を復号する。続いて、電子署名検証部13は、復号した電子署名が正当であるかどうかを判定し、判定の結果、電子署名が正当である場合に、ソフトウェアの起動を許可する。
【0017】
このように、ソフトウェア管理装置10によれば、ソフトウェアは、電子署名が正当でないと起動されず、更に、電子署名は暗号化されており、それを復号するための公開鍵は、セキュリティ性の高い特定の記憶領域に格納されている。このため、ソフトウェア管理装置10によれば、ソフトウェアの使用に用いる鍵の漏洩を抑制して、ソフトウェアの不正使用を阻止することができる。
【0018】
続いて、
図2及び
図3を用いて、実施の形態1におけるソフトウェア管理装置の構成及び機能について具体的に説明する。
図2は、実施の形態1におけるソフトウェア管理装置の構成を具体的に示す構成図である。
【0019】
図2に示すように、実施の形態1においては、コンピュータ110は、オペレーティングシステム(以下「OS」とも表記する)100を備えている。OS100は、例えば、コンピュータ110のオペレータが指示を入力すると、指示に応じて、ソフトウェア20を起動する。
【0020】
また、実施の形態1においては、ソフトウェア管理装置10は、後述するプログラムによって、OS100上に構築されている。ソフトウェア管理装置10は、OS100が起動するソフトウェア20の起動を管理している。ソフトウェア20は、コンピュータ110の記憶装置に格納されており、起動時が指示されると、OS100によって、メモリに読み出されて起動される。
【0021】
実施の形態1では、上述した公開鍵が格納される記憶領域は、コンピュータ110に搭載されたセキュリティチップ101に設けられている。そして、セキュリティチップ101は、コンピュータ110上での改ざんが検出されていない場合に、記憶領域からのデータの読み出しを可能にする。
【0022】
セキュリティチップ101の例としては、TPM(Trusted Platform Module)が挙げられる。TPMは、コンピュータ110のマザーボードに実装される半導体部品(半導体チップ)であり、セキュリティに関する機能を備えている。セキュリティに関する機能としては、演算、鍵生成、鍵格納、ハッシュ値計算、ハッシュ値格納、乱数生成等が挙げられる。なお、TPMは、ソフトウェアによって構築されたものであっても良い。
【0023】
図3は、実施の形態1においてソフトウェア管理装置における処理を説明する図である。
図3に示すように、ソフトウェア20には、予め、例えば、工場出荷時等において、秘密鍵で署名された電子署名が付与されている。
【0024】
また、
図3に示すように、電子署名判定部11は、コンピュータ110のオペレータがソフトウェア20の起動を指示すると、起動が指示されたソフトウェア20に、暗号化された電子署名が付与されているかどうかを判定する。
【0025】
判定の結果、ソフトウェア20に、暗号化された電子署名が付与されている場合、公開鍵取得部12は、TPMであるセキュリティチップ101から、暗号化に用いられた秘密鍵に対応する公開鍵を取得する。
【0026】
電子署名検証部13は、セキュリティチップ101から取得された公開鍵を用いて、ソフトウェア20に付与されている電子署名を復号し、電子署名が正当であるかどうか判定する。判定の結果、電子署名が正当である場合は、電子署名検証部13は、OS100にソフトウェア20の起動を許可する。一方、判定の結果、電子署名が正当でない場合は、電子署名検証部13は、OS100にソフトウェア20の起動を停止させる。
【0027】
[装置動作]
次に、実施の形態1におけるソフトウェア管理装置10の動作について
図4を用いて説明する。
図4は、実施の形態1におけるソフトウェア管理装置の動作を示すフロー図である。以下の説明においては、適宜
図1~
図3を参照する。また、実施の形態1では、ソフトウェア管理装置10を動作させることによって、ソフトウェア管理方法が実施される。よって、実施の形態におけるソフトウェア管理方法の説明は、以下のソフトウェア管理装置の動作説明に代える。
【0028】
図4においては、前提として、高いセキュリティ性が求められるソフトウェア20には、予め、秘密鍵で署名された電子署名が付与されているとする。また、コンピュータ110のオペレータが、いずれかのソフトウェア20の起動を指示しているとする。
【0029】
図4に示すように、いずれかのソフトウェア20の起動が指示されると、電子署名判定部11は、起動が指示されたソフトウェア20に、暗号化された電子署名が付与されているかどうかを判定する(ステップA1)。
【0030】
ステップA1の判定の結果、ソフトウェア20に、暗号化された電子署名が付与されていない場合は(ステップA1:No)、ソフトウェア管理装置10における処理は終了する。一方、ステップA1の判定の結果、ソフトウェア20に、暗号化された電子署名が付与されている場合は(ステップA1:Yes)、公開鍵取得部12は、TPMであるセキュリティチップ101から、暗号化に用いられた秘密鍵に対応する公開鍵を取得する(ステップA2)。
【0031】
次に、ステップA2が実行されると、電子署名検証部13は、ステップA2で取得された公開鍵を用いて、ソフトウェア20に付与されている電子署名を復号する(ステップA3)。
【0032】
次に、電子署名検証部13は、電子署名が正当であるかどうか判定する(ステップA4)。具体的には、電子署名検証部13は、公開鍵によって電子署名を復号できた場合は、電子署名が正当であると判定し、公開鍵によって電子署名を復号できなかった場合は、電子署名が正当でないと判定する。
【0033】
ステップA4の判定の結果、電子署名が正当である場合は(ステップA4:Yes)、電子署名検証部13は、OS100にソフトウェア20の起動を許可する(ステップA5)。
【0034】
一方、ステップA4の判定の結果、電子署名が正当でない場合は(ステップA4:No)、電子署名検証部13は、OS100にソフトウェア20の起動停止を指示する(ステップA6)。
【0035】
[実施の形態1における効果]
以上のように、実施の形態1では、ソフトウェア20は電子署名が正当でない限り起動されることはない。更に、ソフトウェア20の電子署名を復号するための公開鍵は、対タンパ性の高いTPMといったセキュリティチップ101に格納されている。このため、実施の形態1によれば、ソフトウェア20の使用に用いる鍵の漏洩を抑制して、ソフトウェア20の不正使用を阻止することができる。
【0036】
[プログラム]
実施の形態1におけるプログラムは、コンピュータに、
図4に示すステップA1~A6を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、実施の形態1におけるソフトウェア管理装置10とソフトウェア管理方法とを実現することができる。この場合、コンピュータのプロセッサは、電子署名判定部11、公開鍵取得部12、及び電子署名検証部13として機能し、処理を行なう。
【0037】
また、実施の形態1におけるプログラムを実行するコンピュータは、
図2に示したように、ソフトウェア20を実行するコンピュータであっても良いし、これとは別のコンピュータであっても良い。コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。
【0038】
また、実施の形態1におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、電子署名判定部11、公開鍵取得部12、及び電子署名検証部13のいずれかとして機能しても良い。
【0039】
(実施の形態2)
次に、実施の形態2における、ソフトウェア管理装置、ソフトウェア管理方法、及びプログラムについて、
図5及び
図6を参照しながら説明する。
【0040】
[装置構成]
最初に、実施の形態2におけるソフトウェア管理装置の構成について、上述した
図1及び
図2を参照しながら説明する。まず、実施の形態2におけるソフトウェア管理装置は、
図1及び
図2に示した実施の形態1におけるソフトウェア管理装置と同様の構成を有している。このため、以下の説明では、
図1及び
図2を参照する。
【0041】
但し、実施の形態2においては、実施の形態1と異なり、ソフトウェア20には、秘密鍵によって暗号化されたハードウェア証明書が組み込まれている。また、このため、電子署名検証部13における処理も、実施の形態1と異なっている。以下、実施の形態2と実施の形態1との相違点を中心に説明する。
【0042】
図5は、実施の形態2においてソフトウェア管理装置における処理を説明する図である。
図5に示すように、ソフトウェア20には、予め、例えば、工場出荷時等において、秘密鍵で署名された電子署名が付与されている。また、実施の形態2においては、ソフトウェア20には、ハードウェア証明書が組み込まれている。
【0043】
ハードウェア証明書は、それが組み込まれたソフトウェア20を起動するハードウェアのデバイス情報を含む情報である。デバイス情報としては、ソフトウェアを起動できるコンピュータの識別情報、プロセッサ名、メモリ容量等が挙げられる。
【0044】
また、ハードウェア証明書も、電子署名と同様に、秘密鍵によって暗号化されている。ハードウェア証明書の暗号化に用いる秘密鍵は、電子署名の暗号化に用いる秘密鍵と同一であっても良いし、異なる鍵であっても良い。
【0045】
図5に示すように、電子署名判定部11は、実施の形態2においても、実施の形態1と同様に、コンピュータ110のオペレータがソフトウェア20の起動を指示すると、起動が指示されたソフトウェア20に、暗号化された電子署名が付与されているかどうかを判定する。
【0046】
判定の結果、ソフトウェア20に、暗号化された電子署名が付与されている場合、公開鍵取得部12は、実施の形態2においても、実施の形態1と同様に、TPMであるセキュリティチップ101から、暗号化に用いられた秘密鍵に対応する公開鍵を取得する。
【0047】
電子署名検証部13は、まず、実施の形態1と同様に、セキュリティチップ101から取得された公開鍵を用いて、ソフトウェア20に付与されている電子署名を復号し、電子署名が正当であるかどうか判定する。
【0048】
続いて、実施の形態2では、電子署名検証部13は、セキュリティチップ101から取得された公開鍵を用いて、更に、ハードウェア証明書を復号し、ハードウェア証明書が有効であるかどうかを判定する。
【0049】
また、電子署名検証部13は、ハードウェア証明書が有効である場合は、ハードウェア証明書に含まれる情報とコンピュータ110のデバイス情報とが整合しているかどうかを判定する。なお、コンピュータ110のデバイス情報は、電子署名検証部13によって予め保持されていても良いし、電子署名検証部13によってOS100から取得されても良い。
【0050】
そして、上述の判定の結果、電子署名が正当であり、ハードウェア証明書が有効であり、更に、ハードウェア証明書に含まれる情報とコンピュータ110のデバイス情報とが整合している場合は、電子署名検証部13は、OS100にソフトウェア20の起動を許可する。一方、電子署名が正当でない場合、ハードウェア証明書が有効でない場合、及びハードウェア証明書に含まれる情報とコンピュータ110のデバイス情報とが整合していない場合のうち、少なくとも1つに該当する場合は、電子署名検証部13は、OS100にソフトウェア20の起動を停止させる。
【0051】
[装置動作]
次に、実施の形態2におけるソフトウェア管理装置の動作について
図6を用いて説明する。
図6は、実施の形態2におけるソフトウェア管理装置の動作を示すフロー図である。以下の説明においては、適宜
図1、2、及び5を参照する。また、実施の形態2では、ソフトウェア管理装置を動作させることによって、ソフトウェア管理方法が実施される。よって、実施の形態におけるソフトウェア管理方法の説明は、以下のソフトウェア管理装置の動作説明に代える。
【0052】
図6においては、前提として、高いセキュリティ性が求められるソフトウェア20には、予め、秘密鍵で署名された電子署名が付与され、更に、秘密鍵によって暗号化されたハードウェア証明書が組み込まれているとする。また、コンピュータ110のオペレータが、いずれかのソフトウェア20の起動を指示しているとする。
【0053】
図6に示すように、いずれかのソフトウェア20の起動が指示されると、電子署名判定部11は、起動が指示されたソフトウェア20に、暗号化された電子署名が付与されているかどうかを判定する(ステップB1)。
【0054】
ステップB1の判定の結果、ソフトウェア20に、暗号化された電子署名が付与されていない場合は(ステップB1:No)、ソフトウェア管理装置10における処理は終了する。一方、ステップB1の判定の結果、ソフトウェア20に、暗号化された電子署名が付与されている場合は(ステップA1:Yes)、公開鍵取得部12は、TPMであるセキュリティチップ101から、暗号化に用いられた秘密鍵に対応する公開鍵を取得する(ステップB2)。
【0055】
次に、ステップA2が実行されると、電子署名検証部13は、ステップB2で取得された公開鍵を用いて、ソフトウェア20に付与されている電子署名を復号する(ステップA3)。
【0056】
次に、電子署名検証部13は、電子署名が正当であるかどうか判定する(ステップB4)。具体的には、電子署名検証部13は、公開鍵によって電子署名を復号できた場合は、電子署名が正当であると判定し、公開鍵によって電子署名を復号できなかった場合は、電子署名が正当でないと判定する。
【0057】
一方、ステップB4の判定の結果、電子署名が正当でない場合は(ステップB4:No)、電子署名検証部13は、OS100にソフトウェア20の起動停止を指示する(ステップB9)。
【0058】
ステップB4の判定の結果、電子署名が正当である場合は(ステップB4:Yes)、電子署名検証部13は、ステップB2で取得された公開鍵を用いて、ハードウェア証明書を復号する(ステップB5)。
【0059】
次に、電子署名検証部13は、ハードウェア証明書が有効であるかどうかを判定する(ステップB6)。具体的には、電子署名検証部13は、例えば、ハードウェア証明書の有効期限が切れていない場合は、ハードウェア証明書が有効であると判定し、ハードウェア証明書の有効期限が切れている場合は、ハードウェア証明書が有効でないと判定する。
【0060】
ステップB6の判定の結果、ハードウェア証明書が有効でない場合(ステップB6:No)は、電子署名検証部13は、OS100にソフトウェア20の起動停止を指示する(ステップB9)。
【0061】
一方、ステップB6の判定の結果、ハードウェア証明書が有効である場合(ステップB6:Yes)は、電子署名検証部13は、ハードウェア証明書に含まれる情報とコンピュータ110のデバイス情報とが整合しているかどうかを判定する(ステップB7)。
【0062】
ステップB7の判定の結果、ハードウェア証明書に含まれる情報とコンピュータ110のデバイス情報とが整合している場合は(ステップB7:Yes)、電子署名検証部13は、OS100にソフトウェア20の起動を許可する(ステップB8)。
【0063】
一方、ステップB7の判定の結果、ハードウェア証明書に含まれる情報とコンピュータ110のデバイス情報とが整合していない場合は(ステップB7:No)、電子署名検証部13は、OS100にソフトウェア20の起動停止を指示する(ステップB9)。
【0064】
[実施の形態2における効果]
以上のように、実施の形態2では、ソフトウェア20は、電子署名が正当であり、ハードウェア証明書が有効であり、更に、有効なハードウェア証明書とデバイス情報とが整合する場合にのみ、起動する。更に、ソフトウェア20の電子署名とハードウェア証明書とを復号するための公開鍵は、対タンパ性の高いTPMといったセキュリティチップ101に格納されている。このため、実施の形態2においても、実施の形態1と同様に、ソフトウェア20の使用に用いる鍵の漏洩を抑制して、ソフトウェア20の不正使用を阻止することができる。
【0065】
[プログラム]
実施の形態2におけるプログラムは、コンピュータに、
図6に示すステップB1~B9を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、実施の形態2におけるソフトウェア管理装置とソフトウェア管理方法とを実現することができる。この場合、コンピュータのプロセッサは、電子署名判定部11、公開鍵取得部12、及び電子署名検証部13として機能し、処理を行なう。
【0066】
また、実施の形態2におけるプログラムを実行するコンピュータは、
図2に示したように、ソフトウェア20を実行するコンピュータであっても良いし、これとは別のコンピュータであっても良い。コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。
【0067】
また、実施の形態2におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、電子署名判定部11、公開鍵取得部12、及び電子署名検証部13のいずれかとして機能しても良い。
【0068】
[物理構成]
ここで、実施の形態1及び2におけるプログラムを実行することによって、ソフトウェア管理装置を実現するコンピュータについて
図7を用いて説明する。
図7は、実施の形態1及び2におけるソフトウェア管理装置を実現するコンピュータの一例を示すブロック図である。
【0069】
図7に示すように、コンピュータ110は、CPU(Central Processing Unit)111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117と、セキュリティチップ101と、を備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
【0070】
図7の例では、セキュリティチップ101は、バス121に接続されているが、これは一例である。セキュリティチップ101は、例えば、バス121とは別のバスによってCPU111に接続されていても良いし、CPU111の内部に構築されていても良い。
【0071】
また、コンピュータ110は、CPU111に加えて、又はCPU111に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-Programmable Gate Array)を備えていても良い。この態様では、GPU又はFPGAが、実施の形態におけるプログラムを実行することができる。
【0072】
CPU111は、記憶装置113に格納された、コード群で構成された実施の形態におけるプログラムをメインメモリ112に展開し、各コードを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。
【0073】
また、実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
【0074】
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
【0075】
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0076】
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記録媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体が挙げられる。
【0077】
なお、実施の形態1及び2におけるソフトウェア管理装置は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、ソフトウェア管理装置は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【0078】
上述した実施の形態の一部又は全部は、以下に記載する(付記1)~(付記9)によって表現することができるが、以下の記載に限定されるものではない。
【0079】
(付記1)
コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定部と、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得部と、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証部と、
を備えている、ことを特徴とするソフトウェア管理装置。
【0080】
(付記2)
付記1に記載のソフトウェア管理装置であって、
前記記憶領域が、前記コンピュータに搭載されたセキュリティチップに設けられており、前記セキュリティチップによって前記コンピュータ上での改ざんが検出されていない場合に、前記記憶領域からのデータの読み出しが可能となる、
ことを特徴とするソフトウェア管理装置。
【0081】
(付記3)
付記1または2に記載のソフトウェア管理装置であって、
前記ソフトウェアには、前記秘密鍵によって暗号化されたハードウェア証明書が組み込まれており、
前記電子署名検証部が、前記公開鍵を用いて、前記ハードウェア証明書を復号し、前記ハードウェア証明書が有効であるかどうかを判定し、
前記ハードウェア証明書が有効である場合に、更に、前記ハードウェア証明書に含まれる情報と前記コンピュータのデバイス情報とが整合しているかどうかを判定し、両者が整合しており、且つ、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、
ことを特徴とするソフトウェア管理装置。
【0082】
(付記4)
コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定ステップと、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得ステップと、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証ステップと、
を有する、ことを特徴とするソフトウェア管理方法。
【0083】
(付記5)
付記4に記載のソフトウェア管理方法であって、
前記記憶領域が、前記コンピュータに搭載されたセキュリティチップに設けられており、前記セキュリティチップによって前記コンピュータ上での改ざんが検出されていない場合に、前記記憶領域からのデータの読み出しが可能となる、
ことを特徴とするソフトウェア管理方法。
【0084】
(付記6)
付記4または5に記載のソフトウェア管理方法であって、
前記ソフトウェアには、前記秘密鍵によって暗号化されたハードウェア証明書が組み込まれており、
前記電子署名検証ステップにおいて、前記公開鍵を用いて、前記ハードウェア証明書を復号し、前記ハードウェア証明書が有効であるかどうかを判定し、
前記ハードウェア証明書が有効である場合に、更に、前記ハードウェア証明書に含まれる情報と前記コンピュータのデバイス情報とが整合しているかどうかを判定し、両者が整合しており、且つ、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、
ことを特徴とするソフトウェア管理方法。
【0085】
(付記7)
コンピュータに、
前記コンピュータ上で起動されるソフトウェアに、秘密鍵で署名された電子署名が付与されているかどうかを判定する、電子署名判定ステップと、
前記電子署名が付与されていると判定されると、前記コンピュータが要件を満たす場合にデータの読み出しが可能となる記憶領域から、前記秘密鍵に対応する公開鍵を取得する、公開鍵取得ステップと、
前記公開鍵を用いて、前記ソフトウェアに付与されている前記電子署名を復号し、前記電子署名が正当であるかどうかを判定し、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、電子署名検証ステップと、
を実行させる、プログラム。
【0086】
(付記8)
付記7に記載のプログラムであって、
前記記憶領域が、前記コンピュータに搭載されたセキュリティチップに設けられており、前記セキュリティチップによって前記コンピュータ上での改ざんが検出されていない場合に、前記記憶領域からのデータの読み出しが可能となる、
ことを特徴とするプログラム。
【0087】
(付記9)
付記7または8に記載のプログラムであって、
前記ソフトウェアには、前記秘密鍵によって暗号化されたハードウェア証明書が組み込まれており、
前記電子署名検証ステップにおいて、前記公開鍵を用いて、前記ハードウェア証明書を復号し、前記ハードウェア証明書が有効であるかどうかを判定し、
前記ハードウェア証明書が有効である場合に、更に、前記ハードウェア証明書に含まれる情報と前記コンピュータのデバイス情報とが整合しているかどうかを判定し、両者が整合しており、且つ、前記電子署名が正当である場合に、前記ソフトウェアの起動を許可する、
ことを特徴とするプログラム。
【産業上の利用可能性】
【0088】
以上のように本開示によれば、ソフトウェアの使用に用いる鍵の漏洩を抑制して、ソフトウェアの不正使用を阻止することができる。本開示は、ソフトウェアの不正使用が求められる種々のシステムに有効である。
【符号の説明】
【0089】
10 ソフトウェア管理装置
11 電子署名判定部
12 公開鍵取得部
13 電子署名検証部
20 ソフトウェア
100 オペレーティングシステム
101 セキュリティチップ
110 コンピュータ
111 CPU
112 メインメモリ
113 記憶装置
114 入力インターフェイス
115 表示コントローラ
116 データリーダ/ライタ
117 通信インターフェイス
118 入力機器
119 ディスプレイ装置
120 記録媒体
121 バス