(57)【特許請求の範囲】
【請求項１】
装置自身の識別符号と、通信相手との間でデータを暗号化して相互に通信するための複数の共通鍵とを記憶する記憶手段と、
任意に選択したデータを前記通信相手に送信するダウンロード起動手段と、
前記通信相手から受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定手段と、
前記任意に選択したデータを前記共通鍵特定手段で特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証手段と、
前記検証手段で演算したハッシュ値が、前記通信相手から受信したデータに含まれるハッシュ値に一致する場合に、前記識別符号を含むデータを前記共通鍵特定手段で特定した共通鍵で暗号化して前記通信相手に送信するダウンロード要求手段と、
前記通信相手から受信したダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号する復号手段と、
前記復号手段で復号したデータの中の識別符号と、前記記憶手段が記憶する前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認手段と、
前記復号したデータに含まれるハッシュ値と、前記確認手段で演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更手段と、
を備えることを特徴とするソフトウェア無線通信装置。
【請求項２】
前記記憶手段は、前記複数の共通鍵とは別に第２の共通鍵を記憶し、
前記ダウンロード要求手段は、前記識別符号を含むデータを前記第２の共通鍵で暗号化したのちに、前記共通鍵特定手段で特定した共通鍵で暗号化して前記通信相手に送信し、
前記復号手段は、前記ダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号したのちに、前記第２の共通鍵でさらに復号する、
ことを特徴とする請求項１に記載のソフトウェア無線通信装置。
【請求項３】
ソフトウェア無線通信装置が、任意に選択したデータを含む起動データをダウンロードサーバに送信するダウンロード起動ステップを備え、
前記起動データを受信した前記ダウンロードサーバは、
データを暗号化して相互に通信するための複数の共通鍵のなかから１つの共通鍵を選択する選択ステップと、
前記ソフトウェア無線通信装置から受信した前記起動データに含まれる前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択ステップで選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定ステップと、
を備え、
前記ソフトウェア無線通信装置は、
前記ダウンロードサーバから受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定ステップと、
前記任意に選択したデータを前記共通鍵特定ステップで特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する認証ステップと、
前記認証ステップで演算したハッシュ値が、前記ダウンロードサーバから受信したデータに含まれるハッシュ値に一致する場合に、前記ソフトウェア無線通信装置自身の識別符号を含むデータを前記共通鍵特定ステップで特定した共通鍵で暗号化した識別データを、前記ダウンロードサーバに送信するダウンロード要求ステップと、
を備え、
前記ダウンロードサーバは、前記ソフトウェア無線通信装置から受信した識別データを、前記選択した共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置に送信するダウンロードステップ、を備え、
前記ソフトウェア無線通信装置は、
前記ダウンロードサーバから受信した前記ダウンロードデータを、前記共通鍵特定ステップで特定した共通鍵で復号する復号ステップと、
前記復号ステップで復号したデータの中の識別符号と、該ソフトウェア無線通信装置の前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認ステップと、
前記復号したデータに含まれるハッシュ値と、前記確認ステップで演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更ステップと、
を備えることを特徴とするソフトウェア無線通信装置のソフトウェア更新方法。
【請求項４】
ソフトウェア無線通信装置が、任意に選択したデータを含む起動データを端末装置に送信するダウンロード起動ステップを備え、
前記起動データを受信した前記端末装置は、
データを暗号化して相互に通信するための複数の共通鍵のなかから１つの共通鍵を選択する選択ステップと、
前記ソフトウェア無線通信装置から受信した前記起動データに含まれる前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択ステップで選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定ステップと、
を備え、
前記ソフトウェア無線通信装置は、
前記端末装置から受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定ステップと、
前記任意に選択したデータを前記共通鍵特定ステップで特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証ステップと、
前記検証ステップで演算したハッシュ値が、前記端末装置から受信したデータに含まれるハッシュ値に一致する場合に、前記ソフトウェア無線通信装置自身の識別符号を含むデータを、前記複数の共通鍵とは別の第２の共通鍵で暗号化し、さらに前記共通鍵特定ステップで特定した共通鍵で暗号化した識別データを、前記端末装置に送信するダウンロード要求ステップと、
を備え、
前記端末装置は、前記ソフトウェア無線通信装置から受信した識別データを前記選択した共通鍵で復号したデータを、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバの公開鍵で暗号化した識別中継データを、前記ダウンロードサーバへ送信するダウンロード要求中継ステップ、を備え、
前記ダウンロードサーバは、前記端末装置から受信した識別中継データを秘密鍵で復号し、さらに前記第２の共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記第２の共通鍵で暗号化したダウンロード元データに、前記秘密鍵で電子署名を付与したデータを、前記端末装置に送信する中継ダウンロードステップ、を備え、
前記端末装置は、前記ダウンロードサーバから受信したデータに含まれる電子署名を、前記ダウンロードサーバの公開鍵で検証して、前記ダウンロードサーバから受信したデータが正しいと判断される場合に、前記ダウンロード元データを前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置へ送信するダウンロードステップ、を備え、
前記ソフトウェア無線通信装置は、
前記端末装置から受信した前記ダウンロードデータを、前記共通鍵特定ステップで特定した共通鍵で復号し、さらに前記第２の共通鍵で復号する復号ステップと、
前記復号ステップで復号したデータの中の識別符号と、該ソフトウェア無線通信装置の前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認ステップと、
前記復号したデータに含まれるハッシュ値と、前記確認ステップで演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更ステップと、
を備える、
ことを特徴とするソフトウェア無線通信装置のソフトウェア更新方法。
【請求項５】
ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置と、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバとを備えたソフトウェア無線通信システムであって、
前記ソフトウェア無線通信装置は、
その装置自身の識別符号と、前記ダウンロードサーバとの間でデータを暗号化して相互に通信するための複数の共通鍵とを記憶する記憶手段と、
任意に選択したデータを含む起動データを前記ダウンロードサーバに送信するダウンロード起動手段と、
前記ダウンロードサーバから受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定手段と、
前記任意に選択したデータを前記共通鍵特定手段で特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証手段と、
前記検証手段で演算したハッシュ値が、前記ダウンロードサーバから受信したデータに含まれるハッシュ値に一致する場合に、前記識別符号を含むデータを前記共通鍵特定手段で特定した共通鍵で暗号化した識別データを前記ダウンロードサーバに送信するダウンロード要求手段と、
前記ダウンロードサーバから受信したダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号する復号手段と、
前記復号手段で復号したデータの中の識別符号と、前記記憶手段が記憶する前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認手段と、
前記復号したデータに含まれるハッシュ値と、前記確認手段で演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更手段と、
を備え、
前記ダウンロードサーバは、
前記ソフトウェア無線通信装置との間でデータを暗号化して相互に通信するための前記複数の共通鍵のなかから１つの共通鍵を選択する選択手段と、
前記ソフトウェア無線通信装置から受信した、前記ソフトウェア無線通信装置が前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択手段で選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定手段と、
前記ソフトウェア無線通信装置から受信した識別データを、前記選択した共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置に送信するダウンロード手段と、
を備える、
ことを特徴とするソフトウェア無線通信システム。
【請求項６】
ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置と、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバと、前記ソフトウェア無線通信装置と前記ダウンロードサーバとの間の通信を中継する端末装置を備えたソフトウェア無線通信システムであって、
前記ソフトウェア無線通信装置は、
その装置自身の識別符号と、前記ダウンロードサーバとの間でデータを暗号化して相互に通信するための複数の共通鍵とを記憶する記憶手段と、
任意に選択したデータを含む起動データを前記端末装置に送信するダウンロード起動手段と、
を備え、
前記端末装置は、
前記ソフトウェア無線通信装置との間でデータを暗号化して相互に通信するための前記複数の共通鍵のなかから１つの共通鍵を選択する選択手段と、
前記ソフトウェア無線通信装置から受信した、前記ソフトウェア無線通信装置が前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択手段で選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定手段と、
を備え、
前記ソフトウェア無線通信装置は、
前記端末装置から受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定手段と、
前記任意に選択したデータを前記共通鍵特定手段で特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証手段と、
前記検証手段で演算したハッシュ値が、前記端末装置から受信したデータに含まれるハッシュ値に一致する場合に、前記識別符号を含むデータを、前記複数の共通鍵とは別の第２の共通鍵で暗号化し、さらに前記共通鍵特定手段で特定した共通鍵で暗号化した識別データを前記端末装置に送信するダウンロード要求手段と、
を備え、
前記端末装置は、前記ソフトウェア無線通信装置から受信した識別データを前記選択した共通鍵で復号したデータを前記ダウンロードサーバの公開鍵で暗号化した識別中継データを、前記ダウンロードサーバへ送信するダウンロード要求中継手段、を備え、
前記ダウンロードサーバは、前記端末装置から受信した識別中継データを秘密鍵で復号し、さらに前記複数の共通鍵とは別の第２の共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記第２の共通鍵で暗号化したダウンロード元データに、前記秘密鍵で電子署名を付与したデータを、前記端末装置に送信する中継ダウンロード手段、を備え、
前記端末装置は、さらに、前記ダウンロードサーバから受信したデータに含まれる電子署名を、前記ダウンロードサーバの公開鍵で検証して、前記ダウンロードサーバから受信したデータが正しいと判断される場合に、前記ダウンロード元データを前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置へ送信するダウンロード手段、を備え、
前記ソフトウェア無線通信装置は、さらに、
前記端末装置から受信した前記ダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号し、さらに前記第２の共通鍵で復号する復号手段と、
前記復号手段で復号したデータの中の識別符号と、該ソフトウェア無線通信装置の前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認手段と、
前記復号したデータに含まれるハッシュ値と、前記確認手段で演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更手段と、
を備える、
ことを特徴とするソフトウェア無線通信システム。
【請求項７】
ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置と、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバと、の間の通信を中継する端末装置であって、
前記ソフトウェア無線通信装置からそのソフトウェアデータのダウンロードを起動する起動データを受信したときに、前記ソフトウェア無線通信装置との間でデータを暗号化して相互に通信するための複数の共通鍵のなかから１つの共通鍵を選択する選択手段と、
前記ソフトウェア無線通信装置から受信した起動データの所定の一部を前記選択した共通鍵で暗号化したデータから、さらにハッシュ関数によって演算したハッシュ値と、前記選択手段で選択した共通鍵を特定するデータと、を前記ソフトウェア無線通信装置に送信する共通鍵指定手段と、
前記ソフトウェア無線通信装置からダウンロードを要求するデータを受信したときに、前記ソフトウェア無線通信装置から受信したデータに含まれる識別データを前記選択した共通鍵で復号したデータを前記ダウンロードサーバの公開鍵で暗号化して、前記ダウンロードサーバへ送信するダウンロード要求中継手段と、
前記ダウンロードサーバからダウンロードするデータを受信したときに、前記ダウンロードサーバから受信したデータに含まれる電子署名を、前記ダウンロードサーバの公開鍵で検証して、前記ダウンロードサーバから受信したデータが正しいと判断される場合に、前記ダウンロードするデータを前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置へ送信するダウンロード手段と、
を備えることを特徴とする端末装置。
【請求項８】
前記ダウンロードサーバから、前記複数の共通鍵のうちのいずれかの使用を禁止する指令を受信した場合に、前記使用を禁止する指令の対象の共通鍵を前記複数の共通鍵のなかで前記選択する対象から除外する共通鍵除外手段を備え、
前記選択手段は、前記複数の共通鍵から前記使用を禁止する指令の対象の共通鍵を除外して、前記１つの共通鍵を選択する、
ことを特徴とする請求項７に記載の端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの変更により機能の変更が可能なソフトウェア無線通信装置、及び、ソフトウェアをダウンロードしてソフトウェア無線通信装置の機能を更新するソフトウェア更新方法、並びに、ソフトウェア無線通信装置へソフトウェアをダウンロードさせるソフトウェア無線通信システムに関する。
【背景技術】
【０００２】
ソフトウェア無線通信装置（ＳＤＲ：Software Defined Radio）は、ＦＰＧＡ（Field Programmable Gate Array）のような再構成可能ロジックや、ＤＳＰ（Digital Signal Processor）等の信号処理プロセッサを備え、ダウンロードするソフトウェアを変えることによって種々の通信方式に対応した無線通信機能を実現できるように構成されている。ソフトウェア無線通信装置は、その装置又はその所有者に対して許可されていない不正なソフトウェア、または改ざんされたソフトウェアがダウンロードされると、違法電波を送信する等の不正使用、電波干渉等の障害の発生、または装置の故障等の可能性があり、その防止策が必要である。
【０００３】
従って、改ざんされていないソフトウェアを、正当な供給元から許可されたソフトウェア無線通信装置のみにダウンロードさせる必要がある。さらに、そのソフトウェアの内容を第３者に秘密に保持する必要がある。すなわち、完全性（通信系路上で改ざんされていない事の確認）、正当性（送信者が正当であることの確認）、機密性（盗聴されても中身を読めないこと）を保証する必要がある。
【０００４】
ソフトウェア無線通信装置のソフトウェアを正しくダウンロードする技術には、例えば、「ソフトウェア無線機及びその制御方法」（特許文献１参照）や、「無線通信装置、およびプログラム・ダウンロード方法、並びにコンピュータ・プログラム」（特許文献２参照）がある。
【０００５】
これらの技術では、ソフトウェアの正当性を示す為に、配信側で公開鍵暗号方式の電子署名をソフトウェアに付与して配信し、ソフトウェア無線通信装置内で電子署名を検証して、ソフトウェアの正当性を確認する。また、特許文献２は、ソフトウェアの正当性や秘匿性を高める目的で、ハッシュ関数、鍵、暗号化法等を切り替えて用いる技術が記載されている。
【０００６】
通信の秘密を保持する技術として、例えば、特許文献３には、複数の共通鍵のなかから、通信のつど１つの共通鍵を選択してそのインデックスのみを通知して、通信データを暗号化および復号することが記載されている。特許文献３の技術は、さらに、ハッシュ値を用いて改ざんされていないことを確認する。
【０００７】
そのほか、計算機間で暗号通信する際に、中継装置で一旦暗号を復号して、別の共通鍵で暗号化して通信する技術がある（特許文献４参照）。特許文献４の技術は、さらに、いずれかの通信区間で公開鍵と秘密鍵の組を用いることが記載されている。
【特許文献１】特開２００４−２１３３３９号公報
【特許文献２】特開２００３−３０４２３５号公報
【特許文献３】特開２００５−２６９１２８号公報
【特許文献４】特開平１０−３４１２２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ソフトウェア無線通信装置の通信方式を切り替える為に、ソフトウェアをダウンロードする場合、ソフトウェア無線通信装置での正当性検証処理は、演算量を小さくして短時間で行えることが好ましい。
【０００９】
上述の関連する技術では、公開鍵暗号方式の電子署名を用いて正当性を検証しているが、一般に公開鍵暗号方式の処理は共通鍵暗号方式の処理に比べ処理量が多い。携帯型無線機や組み込み機器のように処理能力に制約がある場合は、処理時間とダウンロードの安全性のトレードオフの問題となる。
【００１０】
また、メモリ容量の限られたソフトウェア無線通信装置では、対応する全ての通信方式のソフトウェアデータをソフトウェア無線通信装置内に保持しておくことができない。そのような場合は頻繁にソフトウェアデータを入れ替える必要が発生する。そのため、ダウンロードしたソフトウェアの正当性を高速に検証できる仕組みが求められている。しかし、単純に公開鍵暗号方式を共通鍵暗号方式に置き換えただけでは、一旦共通鍵が流出すると安全性が守れないという問題があった。
【００１１】
そこで、本発明は、ソフトウェア無線通信装置において、ソフトウェアダウンロードの安全性を維持しながら、ダウンロードしたソフトウェアの正当性を検証する処理量を削減し、高速に検証できるソフトウェア無線通信装置、及びソフトウェア更新方法、並びに、ソフトウェア無線通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の観点にかかるソフトウェア無線通信装置は、
その装置自身の識別符号と、通信相手との間でデータを暗号化して相互に通信するための複数の共通鍵とを記憶する記憶手段と、
任意に選択したデータを前記通信相手に送信するダウンロード起動手段と、
前記通信相手から受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定手段と、
前記任意に選択したデータを前記共通鍵特定手段で特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証手段と、
前記検証手段で演算したハッシュ値が、前記通信相手から受信したデータに含まれるハッシュ値に一致する場合に、前記識別符号を含むデータを前記共通鍵特定手段で特定した共通鍵で暗号化して前記通信相手に送信するダウンロード要求手段と、
前記通信相手から受信したダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号する復号手段と、
前記復号手段で復号したデータの中の識別符号と、前記記憶手段が記憶する前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認手段と、
前記復号したデータに含まれるハッシュ値と、前記確認手段で演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更手段と、
を備えることを特徴とする。
【００１３】
さらに、前記記憶手段は、前記複数の共通鍵とは別に第２の共通鍵を記憶し、
前記ダウンロード要求手段は、前記識別符号を含むデータを前記第２の共通鍵で暗号化したのちに、前記共通鍵特定手段で特定した共通鍵で暗号化して前記通信相手に送信し、
前記復号手段は、前記ダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号したのちに、前記第２の共通鍵でさらに復号する、構成としてもよい。
【００１４】
本発明の第２の観点にかかるソフトウェア無線通信装置のソフトウェア更新方法は、
ソフトウェア無線通信装置が、任意に選択したデータを含む起動データをダウンロードサーバに送信するダウンロード起動ステップを備え、
前記起動データを受信した前記ダウンロードサーバは、
データを暗号化して相互に通信するための複数の共通鍵のなかから１つの共通鍵を選択する選択ステップと、
前記ソフトウェア無線通信装置から受信した前記起動データに含まれる前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択ステップで選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定ステップと、
を備え、
前記ソフトウェア無線通信装置は、
前記ダウンロードサーバから受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定ステップと、
前記任意に選択したデータを前記共通鍵特定ステップで特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する認証ステップと、
前記認証ステップで演算したハッシュ値が、前記ダウンロードサーバから受信したデータに含まれるハッシュ値に一致する場合に、前記ソフトウェア無線通信装置自身の識別符号を含むデータを前記共通鍵特定ステップで特定した共通鍵で暗号化した識別データを、前記ダウンロードサーバに送信するダウンロード要求ステップと、
を備え、
前記ダウンロードサーバは、前記ソフトウェア無線通信装置から受信した識別データを、前記選択した共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置に送信するダウンロードステップ、を備え、
前記ソフトウェア無線通信装置は、
前記ダウンロードサーバから受信した前記ダウンロードデータを、前記共通鍵特定ステップで特定した共通鍵で復号する復号ステップと、
前記復号ステップで復号したデータの中の識別符号と、該ソフトウェア無線通信装置の前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認ステップと、
前記復号したデータに含まれるハッシュ値と、前記確認ステップで演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更ステップと、
を備えることを特徴とする。
【００１５】
本発明の第３の観点にかかるソフトウェア無線通信装置のソフトウェア更新方法は、
ソフトウェア無線通信装置が、任意に選択したデータを含む起動データを端末装置に送信するダウンロード起動ステップを備え、
前記起動データを受信した前記端末装置は、
データを暗号化して相互に通信するための複数の共通鍵のなかから１つの共通鍵を選択する選択ステップと、
前記ソフトウェア無線通信装置から受信した前記起動データに含まれる前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択ステップで選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定ステップと、
を備え、
前記ソフトウェア無線通信装置は、
前記端末装置から受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定ステップと、
前記任意に選択したデータを前記共通鍵特定ステップで特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証ステップと、
前記検証ステップで演算したハッシュ値が、前記端末装置から受信したデータに含まれるハッシュ値に一致する場合に、前記ソフトウェア無線通信装置自身の識別符号を含むデータを、前記複数の共通鍵とは別の第２の共通鍵で暗号化し、さらに前記共通鍵特定ステップで特定した共通鍵で暗号化した識別データを、前記端末装置に送信するダウンロード要求ステップと、
を備え、
前記端末装置は、前記ソフトウェア無線通信装置から受信した識別データを前記選択した共通鍵で復号したデータを、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバの公開鍵で暗号化した識別中継データを、前記ダウンロードサーバへ送信するダウンロード要求中継ステップ、を備え、
前記ダウンロードサーバは、前記端末装置から受信した識別中継データを秘密鍵で復号し、さらに前記第２の共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記第２の共通鍵で暗号化したダウンロード元データに、前記秘密鍵で電子署名を付与したデータを、前記端末装置に送信する中継ダウンロードステップ、を備え、
前記端末装置は、前記ダウンロードサーバから受信したデータに含まれる電子署名を、前記ダウンロードサーバの公開鍵で検証して、前記ダウンロードサーバから受信したデータが正しいと判断される場合に、前記ダウンロード元データを前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置へ送信するダウンロードステップ、を備え、
前記ソフトウェア無線通信装置は、
前記端末装置から受信した前記ダウンロードデータを、前記共通鍵特定ステップで特定した共通鍵で復号し、さらに前記第２の共通鍵で復号する復号ステップと、
前記復号ステップで復号したデータの中の識別符号と、該ソフトウェア無線通信装置の前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認ステップと、
前記復号したデータに含まれるハッシュ値と、前記確認ステップで演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更ステップと、
を備える、
ことを特徴とする。
【００１６】
本発明の第４の観点に係るソフトウェア無線通信システムは、
ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置と、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバとを備えたソフトウェア無線通信システムであって、
前記ソフトウェア無線通信装置は、
その装置自身の識別符号と、前記ダウンロードサーバとの間でデータを暗号化して相互に通信するための複数の共通鍵とを記憶する記憶手段と、
任意に選択したデータを含む起動データを前記ダウンロードサーバに送信するダウンロード起動手段と、
前記ダウンロードサーバから受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定手段と、
前記任意に選択したデータを前記共通鍵特定手段で特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証手段と、
前記検証手段で演算したハッシュ値が、前記ダウンロードサーバから受信したデータに含まれるハッシュ値に一致する場合に、前記識別符号を含むデータを前記共通鍵特定手段で特定した共通鍵で暗号化した識別データを前記ダウンロードサーバに送信するダウンロード要求手段と、
前記ダウンロードサーバから受信したダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号する復号手段と、
前記復号手段で復号したデータの中の識別符号と、前記記憶手段が記憶する前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認手段と、
前記復号したデータに含まれるハッシュ値と、前記確認手段で演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更手段と、
を備え、
前記ダウンロードサーバは、
前記ソフトウェア無線通信装置との間でデータを暗号化して相互に通信するための前記複数の共通鍵のなかから１つの共通鍵を選択する選択手段と、
前記ソフトウェア無線通信装置から受信した、前記ソフトウェア無線通信装置が前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択手段で選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定手段と、
前記ソフトウェア無線通信装置から受信した識別データを、前記選択した共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置に送信するダウンロード手段と、
を備える、
ことを特徴とする。
【００１７】
本発明の第５の観点に係るソフトウェア無線通信システムは、
ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置と、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバと、前記ソフトウェア無線通信装置と前記ダウンロードサーバとの間の通信を中継する端末装置を備えたソフトウェア無線通信システムであって、
前記ソフトウェア無線通信装置は、
その装置自身の識別符号と、前記ダウンロードサーバとの間でデータを暗号化して相互に通信するための複数の共通鍵とを記憶する記憶手段と、
任意に選択したデータを含む起動データを前記端末装置に送信するダウンロード起動手段と、
を備え、
前記端末装置は、
前記ソフトウェア無線通信装置との間でデータを暗号化して相互に通信するための前記複数の共通鍵のなかから１つの共通鍵を選択する選択手段と、
前記ソフトウェア無線通信装置から受信した、前記ソフトウェア無線通信装置が前記任意に選択したデータを、前記選択した共通鍵で暗号化したデータからさらにハッシュ関数によって演算したハッシュ値と、前記選択手段で選択した共通鍵を特定するデータと、を前記起動データを送信した前記ソフトウェア無線通信装置に送信する共通鍵指定手段と、
を備え、
前記ソフトウェア無線通信装置は、
前記端末装置から受信したデータに基づいて、前記複数の共通鍵のなかから１つの共通鍵を特定する共通鍵特定手段と、
前記任意に選択したデータを前記共通鍵特定手段で特定した共通鍵で暗号化したデータから、ハッシュ関数によってハッシュ値を演算する検証手段と、
前記検証手段で演算したハッシュ値が、前記端末装置から受信したデータに含まれるハッシュ値に一致する場合に、前記識別符号を含むデータを、前記複数の共通鍵とは別の第２の共通鍵で暗号化し、さらに前記共通鍵特定手段で特定した共通鍵で暗号化した識別データを前記端末装置に送信するダウンロード要求手段と、
を備え、
前記端末装置は、前記ソフトウェア無線通信装置から受信した識別データを前記選択した共通鍵で復号したデータを前記ダウンロードサーバの公開鍵で暗号化した識別中継データを、前記ダウンロードサーバへ送信するダウンロード要求中継手段、を備え、
前記ダウンロードサーバは、前記端末装置から受信した識別中継データを秘密鍵で復号し、さらに前記複数の共通鍵とは別の第２の共通鍵で復号した識別符号が、予め登録された識別符号の１つに一致する場合に、前記ソフトウェア無線通信装置から要求されたソフトウェアデータと、前記ソフトウェアデータからハッシュ関数によって演算したハッシュ値と、前記識別符号と、を前記第２の共通鍵で暗号化したダウンロード元データに、前記秘密鍵で電子署名を付与したデータを、前記端末装置に送信する中継ダウンロード手段、を備え、
前記端末装置は、さらに、前記ダウンロードサーバから受信したデータに含まれる電子署名を、前記ダウンロードサーバの公開鍵で検証して、前記ダウンロードサーバから受信したデータが正しいと判断される場合に、前記ダウンロード元データを前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置へ送信するダウンロード手段、を備え、
前記ソフトウェア無線通信装置は、さらに、
前記端末装置から受信した前記ダウンロードデータを、前記共通鍵特定手段で特定した共通鍵で復号し、さらに前記第２の共通鍵で復号する復号手段と、
前記復号手段で復号したデータの中の識別符号と、該ソフトウェア無線通信装置の前記識別符号とが一致する場合に、前記復号したデータからハッシュ関数によってハッシュ値を演算する確認手段と、
前記復号したデータに含まれるハッシュ値と、前記確認手段で演算したハッシュ値とが一致する場合に、前記復号したデータに含まれるソフトウェアデータを用いて通信機能を変更する変更手段と、
を備える、
ことを特徴とする。
【００１８】
本発明の第６の観点に係る端末装置は、
ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置と、前記ソフトウェア無線通信装置のソフトウェアデータを格納するダウンロードサーバと、の間の通信を中継する端末装置であって、
前記ソフトウェア無線通信装置からそのソフトウェアデータのダウンロードを起動する起動データを受信したときに、前記ソフトウェア無線通信装置との間でデータを暗号化して相互に通信するための複数の共通鍵のなかから１つの共通鍵を選択する選択手段と、
前記ソフトウェア無線通信装置から受信した起動データの所定の一部を前記選択した共通鍵で暗号化したデータから、さらにハッシュ関数によって演算したハッシュ値と、前記選択手段で選択した共通鍵を特定するデータと、を前記ソフトウェア無線通信装置に送信する共通鍵指定手段と、
前記ソフトウェア無線通信装置からダウンロードを要求するデータを受信したときに、前記ソフトウェア無線通信装置から受信したデータに含まれる識別データを前記選択した共通鍵で復号したデータを前記ダウンロードサーバの公開鍵で暗号化して、前記ダウンロードサーバへ送信するダウンロード要求中継手段と、
前記ダウンロードサーバからダウンロードするデータを受信したときに、前記ダウンロードサーバから受信したデータに含まれる電子署名を、前記ダウンロードサーバの公開鍵で検証して、前記ダウンロードサーバから受信したデータが正しいと判断される場合に、前記ダウンロードするデータを前記選択した共通鍵で暗号化したダウンロードデータを、前記ソフトウェア無線通信装置へ送信するダウンロード手段と、
を備えることを特徴とする。
【００１９】
好ましくは、前記ダウンロードサーバから、前記複数の共通鍵のうちのいずれかの使用を禁止する指令を受信した場合に、前記使用を禁止する指令の対象の共通鍵を前記複数の共通鍵のなかで前記選択する対象から除外する共通鍵除外手段を備え、
前記選択手段は、前記複数の共通鍵から前記使用を禁止する指令の対象の共通鍵を除外して、前記１つの共通鍵を選択する。
【発明の効果】
【００２０】
本発明のソフトウェア無線通信装置、ソフトウェア更新方法およびソフトウェア無線通信システムによれば、ダウンロードサーバの正当性の検証と、ソフトウェアの機密性および完全性の保証を、公開鍵暗号化方式よりも処理量の少ない共通鍵暗号化方式により実現可能である。
【発明を実施するための最良の形態】
【００２１】
本発明の実施の形態について図面を参照して詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００２２】
（実施の形態１）
図１は、本発明の実施の形態１に係るソフトウェア無線通信システムの構成例を示すブロック図である。図１に示すソフトウェア無線通信システム１０は、ソフトウェアの変更により通信機能の変更が可能なソフトウェア無線通信装置（以下、通信装置ともいう）１と、このソフトウェア無線通信装置１に対してソフトウェアの供給を行うダウンロードサーバ２とから構成されている。図１では、通信装置１を代表して１台記載している。ソフトウェア無線通信システム１０には、同構成の通信装置１が複数台あり得る。
【００２３】
ソフトウェア無線通信装置１は、制御回路１１、信号処理回路１６、無線回路１７、および記憶部５から構成される。制御回路１１は、ＣＰＵ、主記憶装置および入出力装置などから構成され、主記憶装置にロードしたプログラムを実行することにより、無線通信機能を実現するソフトウェアデータのダウンロード処理を行う。
【００２４】
信号処理回路１６は、再構成可能なロジックを持つＦＰＧＡ（Field Programmable Gate Array）やＤＳＰ（Digital Signal Processor）等で構成される。ダウンロードしたソフトウェアデータによってＦＰＧＡを設定し、または、ソフトウェアデータをＤＳＰにロードして実行することによって、無線通信機能を実現する。ソフトウェアデータを変えて、信号処理回路１６の機能を変更することができる。
【００２５】
無線回路１７は、アンテナやＲＦ回路、ＡＤ／ＤＡ変換器等から構成される。無線回路１７から変調した電波を放射し、また、電波を捉えて復調して、通信相手との送受信を行う。図１では理解を容易にするために、ネットワークを省略しているが、例えば、無線の基地局および基地局を接続する通信網などを含むネットワークを介して、ダウンロードサーバ２と通信する。
【００２６】
記憶部５は、耐タンパデバイス（不正アクセスや改ざんに備えるための機能を有するデバイス）や、ＳＤメモリカードに代表されるフラッシュメモリ等のメモリから構成される。記憶部５には、装置の識別符号（装置ＩＤ５１）と、共通鍵データ５２と、ソフトウェアデータ５３が記憶される。装置ＩＤ５１は、ソフトウェア無線通信システム１０で通信装置１に固有に割り当てられたユニークな符号である。なお、装置ＩＤ５１は、共通鍵データ５２に含まれる複数の共通鍵のそれぞれで、予め暗号化したものを記憶しておいてもよい。
【００２７】
共通鍵データ５２は、ダウンロードサーバ２との認証と暗号通信に用いる予め定められた複数の共通鍵と、それぞれの共通鍵を特定して指定するための番号または符号から構成される。図２は、共通鍵データ５２の例を示す。共通鍵データ５２は、例えば、複数の共通鍵Ｋａ、Ｋｂ、Ｋｃ．．．と、それらに対応して、共通鍵を特定できる番号で構成される。
【００２８】
ソフトウェアデータ５３は、上述の信号処理回路１６の機能を設定して無線通信機能を実現するためのダウンロードしたソフトウェアデータである。ソフトウェアデータ５３は、出荷直後などにおいて格納されていない場合もある。
【００２９】
制御回路１１は、認証部１２、ダウンロード処理部１３、ソフトウェア検証部１４およびソフトウェア実行部１５を含む。それらは、制御回路１１のＣＰＵ、主記憶装置および入出力装置等と、それらの上で実行されるプログラムで実現される。制御回路１１は、汎用または専用の論理回路を含んで構成されてもよい。例えば、後述する暗号化および復号の処理、またはハッシュ関数によるハッシュ値の演算などが、論理回路で実現されてもよい。
【００３０】
認証部１２は、任意のデータ、例えば乱数を発生して、その任意のデータを含む起動データをダウンロードサーバ２へ送信し、ダウンロードサーバ２から後述する認証データを受信する。認証データに含まれる鍵パラメータにより、記憶部５に記憶している共通鍵データ５２の中から使用する共通鍵Ａを特定する。ダウンロードサーバ２に送信した任意のデータを、特定した共通鍵Ａで暗号化したものから、所定のハッシュ関数でハッシュ値を求め、認証データに含まれるハッシュ値と比較する。両者のハッシュ値が一致した場合は、認証データを送信した通信相手を正当なダウンロードサーバ２と判断する。
【００３１】
ダウンロード処理部１３は、ダウンロードサーバ２が正当である場合に、共通鍵Ａで暗号化した装置ＩＤを含むダウンロード要求を、ダウンロードサーバ２へ送信する。ダウンロード要求には、装置ＩＤの情報に加えて、ダウンロードするソフトウェアデータを特定する情報を含んでいてもよい。そして、ダウンロードサーバ２から要求したソフトウェアデータを含むダウンロードデータを受信する。
【００３２】
ソフトウェア検証部１４は、ダウンロードデータを共通鍵Ａで復号する。復号したデータから取り出した装置ＩＤが、記憶部５に記憶している装置ＩＤ５１と一致すれば、ダウンロードデータに含まれるソフトウェアデータを、要求したソフトウェアデータであると判断する。そして、復号したソフトウェアデータから所定のハッシュ関数でハッシュ値を求め、復号したデータに含まれるハッシュ値と比較する。両者のハッシュ値が一致した場合に、ソフトウェアデータは改ざん等されていない完全なものであると判断する。
【００３３】
ソフトウェア実行部１５は、ダウンロードしたソフトウェアデータの完全性が確認された場合に、そのソフトウェアデータを実行し、信号処理回路１６を変更する。
【００３４】
一方、ダウンロードサーバ２は、制御部２１と、通信部２４と、記憶部６とから構成される。制御部２１は、ＣＰＵ、主記憶装置および入出力装置などから構成され、主記憶装置にロードしたプログラムを実行することにより、ソフトウェア無線通信装置１にソフトウェアデータをダウンロードするための処理を行う。通信部２４は、ソフトウェア無線通信装置１の無線回路１７と通信し、データの送受信を行う。
【００３５】
記憶部６は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、登録装置ＩＤ６１、共通鍵データ６２およびソフトウェアＤＢ（データベース）６３を格納する。
【００３６】
登録装置ＩＤ６１は、ソフトウェア無線通信システム１０に登録されたソフトウェア無線通信装置１の識別符号を格納する。登録装置ＩＤ６１に装置ＩＤが登録されたソフトウェア無線通信装置１は、ソフトウェア無線通信システム１０でソフトウェアデータをダウンロードすることが許可される。登録装置ＩＤ６１に装置ＩＤが登録されていなければ、ソフトウェアデータのダウンロードが許可されない。
【００３７】
共通鍵データ６２は、ソフトウェア無線通信装置１との認証と暗号通信に用いる、予め定めた複数の共通鍵と、それぞれの共通鍵を特定して指定するための番号または符号から構成される。共通鍵データ６２は、ソフトウェア無線通信装置１の共通鍵データ５２と同じか、または、その部分集合である。ダウンロードサーバ２の共通鍵データ６２は、ソフトウェア無線通信装置１ごと、またはソフトウェア無線通信装置１の群ごとに、異なるセットであってもよい。
【００３８】
ソフトウェアＤＢ６３は、ソフトウェア無線通信装置１の無線通信機能を実現する１または２以上のソフトウェアデータを格納する。ソフトウェア無線通信装置１ごと、またはソフトウェア無線通信装置１の群ごとに、装置ＩＤごとにダウンロード可能なソフトウェアの対応情報を記憶しておく。これにより、ソフトウェア無線通信装置１用のソフトウェアデータを送ることが可能となる。また、ソフトウェアデータからハッシュ関数で求めたハッシュ値を、ソフトウェアデータと一緒に記憶しておいてもよい。ソフトウェアＤＢ６３は、登録装置ＩＤ６１を兼ねてもよい。ダウンロード可能なソフトウェアデータの対応情報は、各ソフトウェアに対する支払い情報が確認できるようになっていてもよい。
【００３９】
制御部２１は、ソフトウェア無線通信装置認証部２２と、ダウンロード処理部２３を含む。ソフトウェア無線通信装置認証部２２およびダウンロード処理部２３は、制御部２１のＣＰＵ、主記憶装置および入出力装置等と、それらの上で実行されるプログラムで実現される。
【００４０】
ソフトウェア無線通信装置認証部（以下、装置認証部ともいう）２２は、ソフトウェア無線通信装置１からダウンロードを起動する起動データを受信すると、例えば乱数を発生してその乱数で任意に、ソフトウェア無線通信装置１とのダウンロード通信を暗号化する共通鍵Ａを選択し、共通鍵Ａに対応する鍵パラメータ（番号）を決定する。装置認証部２２は、起動データに含まれる任意のデータを選択した共通鍵Ａで暗号化したデータから、所定のハッシュ関数でハッシュ値を演算する。そのハッシュ値と、共通鍵Ａに対応する鍵パラメータとを含む認証データを、起動データを送信したソフトウェア無線通信装置１に送信する。
【００４１】
ダウンロード処理部２３は、ソフトウェア無線通信装置１からダウンロード要求を受信すると、ソフトウェア無線通信装置認証部２２で選択した共通鍵Ａで復号する。復号したダウンロード要求に含まれる装置ＩＤが、記憶部６の登録装置ＩＤ６１に記憶されている装置ＩＤのいずれかに一致する場合、ダウンロード要求を送信したソフトウェア無線通信装置１を登録された有効な装置と判断する。次に、要求されたソフトウェア無線通信装置１がダウンロード可能なソフトウェアデータからハッシュ関数でハッシュ値を演算する。そして、ダウンロードするソフトウェアデータと、そのハッシュ値と、ダウンロード要求に含まれる装置ＩＤとを、共通鍵Ａで暗号化してダウンロードデータとしたものを、ソフトウェア無線通信装置１へ送信する。
【００４２】
次に、本実施の形態１に係るソフトウェア無線通信システム１０の動作について説明する。図３は、実施の形態１に係るソフトウェア無線通信システム１０によるソフトウェアダウンロードの動作の一例を示すフローチャートである。図３の右側のソフトウェア変更は、ソフトウェア無線通信装置１の動作を示す。左側のダウンロード処理は、ダウンロードサーバ２の動作を示す。
【００４３】
ソフトウェア無線通信装置１でソフトウェア変更処理を開始すると、まず、制御回路１１の認証部１２が任意のデータとしてランダム数を発生させ（ステップＴ１）、ランダム数を含む起動データをダウンロードサーバ２へ送信する（ステップＴ２）。
【００４４】
ダウンロードサーバ２の装置認証部２２は、通信装置１が送信した起動データを受信すると（ステップＳ１）、認証データを生成する（ステップＳ２）。図４Ａは、認証データ生成処理の動作の一例を示すフローチャートである。
【００４５】
装置認証部２２は、複数の共通鍵の中から通信装置１とのダウンロード通信を暗号化するための、任意の一つの共通鍵（共通鍵Ａとする）を選択し、共通鍵Ａに対応する鍵パラメータ（番号）を決定する（ステップＡ１）。装置認証部２２は、起動データに含まれるランダム数を、選択した共通鍵Ａで暗号化する（ステップＡ２）。そして、暗号化したデータから、所定のハッシュ関数でハッシュ値を演算する（ステップＡ３）。そのハッシュ値と、共通鍵Ａに対応する鍵パラメータとを認証データとする。
【００４６】
図３のフローチャートに戻って、装置認証部２２は、認証データを通信装置１へ送信する（ステップＳ３）。
【００４７】
通信装置１は、認証データを受信すると（ステップＴ３）、認証処理を行う（ステップＴ４）。図４Ｂは、認証処理の動作の一例を示す。制御回路１１の認証部１２は、認証データに含まれる鍵パラメータに基づいて、記憶部５に記憶されているダウンロードサーバ２との複数の共通鍵の中から一つ（共通鍵Ａである）を特定する（ステップＢ１）。通信装置１自身がステップＴ２でダウンロードサーバ２へ送信したランダム数を、その共通鍵Ａで暗号化する（ステップＢ２）。暗号化したデータから、ダウンロードサーバ２と同じハッシュ関数によりハッシュ値を計算する（ステップＢ３）。
【００４８】
図３のフローチャートに戻って、認証部１２は、認証処理（ステップＴ４）で演算したハッシュ値と、認証データに含まれているハッシュ値とを比較し（ステップＴ５）、異なっていれば（ステップＴ５；異なる）、ソフトウェアダウンロード処理を終了する。ハッシュ値が同じであれば（ステップＴ５；等しい）、前記ダウンロードサーバ２は正しいとみなし、ダウンロード処理部１３が、装置ＩＤ５１を共通鍵Ａで暗号化したデータをダウンロード要求としてダウンロードサーバ２へ送信する（ステップＴ６）。この場合、ソフトウェア無線通信装置１がダウンロード可能なソフトウェアデータの一覧を、予めダウンロードサーバ２からソフトウェア無線通信装置１に送信しておいてもよい。ソフトウェア無線通信装置１は、その一覧の中からダウンロードしたいソフトウェアデータを特定する情報に装置ＩＤ５１を加えたものを、共通鍵Ａで暗号化したデータを、ダウンロード要求としてダウンロードサーバ２へ送信してもよい。
【００４９】
ダウンロードサーバ２は、ダウンロード要求を受信すると（ステップＳ４）、ダウンロード処理部２３は、ダウンロード要求に含まれる暗号化された装置ＩＤを、装置認証部２２で選択した共通鍵Ａで復号する（ステップＳ５）。復号した装置ＩＤが記憶部６に記憶している有効な装置ＩＤであるかを確認し（ステップＳ６）、装置ＩＤがダウンロード可能なソフトウェアの対応情報に登録されていなければ（ステップＳ６；ＮＯ）、エラー通知データを生成する（ステップＳ８）。
【００５０】
装置ＩＤが登録されていれば（ステップＳ６；ＹＥＳ）、ダウンロードデータを生成する（ステップＳ７）。図４Ｃは、ダウンロードデータ生成処理の動作の一例を示す。ダウンロード処理部２３は、通信装置１がダウンロード可能な要求されたソフトウェアデータからハッシュ関数でハッシュ値を演算する（ステップＣ１）。ダウンロードするソフトウェアデータとそのハッシュ値に、ダウンロード要求に含まれる装置ＩＤを付加する（ステップＣ２）。そして、共通鍵Ａで暗号化してダウンロードデータとする（ステップＣ３）。
【００５１】
図３に戻って、ダウンロード処理部２３は、生成されたダウンロードデータ（ステップＳ７）、またはエラー通知データ（ステップＳ８）を、通信装置１に送信する（ステップＳ９）。通信装置１は、データを受信すると（ステップＴ７）、ソフトウェアの正当性を検証する（ステップＴ８）。
【００５２】
図４Ｄは、ソフトウェア正当性検証の動作の一例を示す。まず、受信したデータがダウンロードデータか否かを判断する（ステップＤ１）。ダウンロードデータでない場合（エラー通知データの場合）（ステップＤ１；ＮＯ）、エラー通知を受信したことをセットして（ステップＤ２）リターンする。
【００５３】
受信したデータがダウンロードデータの場合は（ステップＤ１；ＹＥＳ）、ダウンロードデータを共通鍵Ａで復号する（ステップＤ３）。復号結果から取り出した装置ＩＤを記憶部５に記憶している装置ＩＤ５１と比較する（ステップＤ４）。装置ＩＤが一致しなければ（ステップＤ４；異なる）、ダウンロードデータが正当でない（非正当）ことをセットして（ステップＤ７）リターンする。
【００５４】
装置ＩＤが一致すれば（ステップＤ４；等しい）、ソフトウェアデータからダウンロードサーバ２と同じハッシュ関数でハッシュ値を演算する（ステップＤ５）。ダウンロードデータに含まれるハッシュ値と、演算したハッシュ値が異なる場合は（ステップＤ６；異なる）、非正当をセットして（ステップＤ７）リターンする。ハッシュ値が同じであれば（ステップＤ６；等しい）、改ざんされていないソフトウェアとみなし、ダウンロードデータが正当であることをセットして（ステップＤ８）リターンする。
【００５５】
図３に戻って、ソフトウェア正当性検証の結果が正当ならば（ステップＴ９；ＹＥＳ）、復号したソフトウェアデータを記憶部５のソフトウェアデータ５３に格納する。そして、ソフトウェア実行部１５がソフトウェアデータを実行し、信号処理回路１６を設定して通信方式を変更する（ステップＴ１０）。ソフトウェア正当性検証の結果が正当以外の場合（ステップＴ９；ＮＯ）、ソフトウェアデータを実行することなく終了する。
【００５６】
以上のように、本実施の形態１によれば、ソフトウェア無線通信装置１とダウンロードサーバ２の双方で複数の共通鍵を保持し、ダウンロードごとに共通鍵をランダムに選択して、その番号のみを通知して共通鍵を使用するので、共通鍵の流出する可能性が小さくなる。そして、共通の知識を保持していなければ、ダウンロードサーバ２とソフトウェア無線通信装置１いずれにもなりすましができないし、通信相手の正当性を確認できない。
【００５７】
たとえ共通鍵の１つが流出した場合でも、ダウンロードサーバ２で流出した共通鍵を使用禁止にすれば、ソフトウェアデータが盗聴または改ざんされることを防止できる。ソフトウェア無線通信システム１０では、共通鍵を用いて暗号化および復号するので、ソフトウェア無線通信装置１において、ダウンロードサーバ２の正当性の検証と、ソフトウェアの機密性、完全性の保証を、公開鍵暗号方式よりも少ない処理量で安全に実現することができる。
【００５８】
また、本実施の形態１によれば、ソフトウェア無線通信装置１では処理量の少ない共通鍵暗号方式しか用いなくとも、ダウンロードサーバ２の正当性が検証でき、且つ、ソフトウェアの機密性・完全性を保証でき、ソフトウェア無線通信装置１におけるソフトウェア検証処理量を削減できるため、処理能力の低いソフトウェア無線通信装置１であっても、高速にソフトウェアを切り替える事が可能であり、すなわち通信方式の切り替えを高速に行うことができる。
【００５９】
これにより、ソフトウェア無線通信装置１は、正当性を確認したダウンロードサーバ２が発信した、ソフトウェア無線通信装置１向けの完全性を確認したソフトウェアを、機密性を保持してダウンロードできる。そして、公開鍵暗号方式よりも処理量の少ない共通鍵暗号化方式によって行うことができ、ソフトウェア無線通信装置１の処理量を削減することができる。
【００６０】
（実施の形態２）
次に、ソフトウェア無線通信装置の処理量は少ないが、公開鍵暗号方式を用いてより安全性を高め、ダウンロードサーバの正当性を検証したい場合のシステムの一例を説明する。
【００６１】
図５は、本発明の実施の形態２に係るソフトウェア無線通信システムの構成例を示すブロック図である。図５に示すソフトウェア無線通信システム２０は、ソフトウェア無線通信装置１とダウンロードサーバ３との間に、ダウンロード通信を中継する端末装置４を備える。図５では、ソフトウェア無線通信装置１と端末装置４を代表してそれぞれ１台ずつ記載している。ソフトウェア無線通信システム２０において、同構成のソフトウェア無線通信装置１と端末装置４が複数台あり得る。図５において、図１と同等の部分には同じ番号を付与している。
【００６２】
ソフトウェア無線通信装置１は、実施の形態１のソフトウェア無線通信装置１の構成に加えて、ローカル通信部１８を備える。ローカル通信部１８は、シリアル通信やＵＳＢ（Universal Serial Bus）、ＬＡＮ（Local Area Network）、または無線ＬＡＮ等の通信インタフェースを備えて、それらのネットワークを経由して端末装置４と通信する。認証部１２およびダウンロード処理部１３における通信は、ローカル通信部１８を介して端末装置４と行う。
【００６３】
記憶部５は、装置ＩＤ５１、共通鍵データ５２、ソフトウェアデータ５３に加えて、ダウンロードサーバ３との認証と暗号通信に用いる共通鍵であるサーバ共通鍵５４を記憶している。共通鍵データ５２は実施の形態１と同様の構成であるが、複数の共通鍵は、端末装置４と通信するデータの暗号化と復号に用いる。装置ＩＤ５１は予めサーバ共通鍵５４で暗号化したものを記憶しておいてもよい。
【００６４】
実施の形態２では、認証部１２は実施の形態１と同様の処理を行うが、端末装置４と通信して、端末装置４の認証と共通鍵（共通鍵Ｂとする）の特定を行う。
【００６５】
ダウンロード処理部１３は、サーバ共通鍵５４で暗号化した装置ＩＤを、認証部１２で実施の形態１と同様の方法で特定した端末装置４との共通鍵Ｂでさらに暗号化したデータを、ダウンロード要求としてローカル通信部１８を介して端末装置４へ送信する。そして、端末装置４からダウンロードデータを受信する。
【００６６】
ソフトウェア検証部１４は、ダウンロードデータを共通鍵Ｂで復号した後、サーバ共通鍵５４で復号する。復号したデータから取り出した装置ＩＤが、記憶部５に記憶している装置ＩＤ５１と一致すれば、ダウンロードデータに含まれるソフトウェアデータを、要求したソフトウェアデータであると判断する。そして、復号したソフトウェアデータから所定のハッシュ関数でハッシュ値を求め、復号したデータに含まれるハッシュ値と比較する。両者のハッシュ値が一致した場合に、ソフトウェアデータは改ざん等されていない完全なものであると判断する。ソフトウェア実行部１５は、実施の形態１と同様である。
【００６７】
前記端末装置４は、制御部４１と、通信部４４と、記憶部８と、ローカル通信部４５とから構成される。制御部４１は、ＣＰＵ、主記憶装置および入出力装置などから構成され、主記憶装置にロードしたプログラムを実行することにより、ソフトウェア無線通信装置１とダウンロードサーバ３との間で、ダウンロード通信を中継するための処理を行う。通信部４４は、インターネットまたは専用線網などのネットワークを介して、ダウンロードサーバ３の通信部３４と通信し、データの送受信を行う。
【００６８】
記憶部８は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、公開鍵８１および共通鍵データ８２を格納する。
【００６９】
公開鍵８１は、ダウンロードサーバ３に送信するデータを暗号化するのに用いる。また、ダウンロードサーバ３が通信データに付けた署名を、公開鍵８１で復号して、ダウンロードサーバ３の正当性を確認する。
【００７０】
共通鍵データ８２は、ソフトウェア無線通信装置１との認証と暗号通信に用いる、予め定めた複数の共通鍵と、それぞれの共通鍵を特定して指定するための番号または符号から構成される。共通鍵データ８２は、実施の形態１のダウンロードサーバ２が記憶する共通鍵データ６２と同様のものである。
【００７１】
ローカル通信部４５は、シリアル通信やＵＳＢ（Universal Serial Bus）、ＬＡＮ（Local Area Network）、または無線ＬＡＮ等の通信インタフェースを備えて、それらのネットワークを経由してソフトウェア無線通信装置１と通信する。ローカル通信部４５は通信部４４を兼ねていてもよい。
【００７２】
制御部４１は、ソフトウェア無線通信装置認証部４２と、ダウンロード中継処理部４３を含む。ソフトウェア無線通信装置認証部４２およびダウンロード中継処理部４３は、制御部４１のＣＰＵ、主記憶装置および入出力装置等と、それらの上で実行されるプログラムで実現される。
【００７３】
ソフトウェア無線通信装置認証部（以下、装置認証部ともいう）４２は、ソフトウェア無線通信装置１からダウンロードを起動する起動データを受信すると、例えば乱数を発生してその乱数で任意に、ソフトウェア無線通信装置１とのダウンロード通信を暗号化する共通鍵Ｂを選択し、共通鍵Ｂに対応する鍵パラメータ（番号）を決定する。装置認証部４２は、起動データに含まれる任意のデータを選択した共通鍵Ｂで暗号化したデータから、所定のハッシュ関数でハッシュ値を演算する。そのハッシュ値と、共通鍵Ｂに対応する鍵パラメータとを含む認証データを、ダウンロード起動信号を送信したソフトウェア無線通信装置１に送信する。
【００７４】
ダウンロード中継処理部（以下、中継処理部ともいう）４３は、ソフトウェア無線通信装置１からダウンロード要求を受信すると、ソフトウェア無線通信装置認証部４２で選択した共通鍵Ｂで復号する。復号したデータを、記憶部８の公開鍵８１で暗号化した識別中継データを、通信部４４を介してダウンロードサーバ３へ送信する。
【００７５】
中継処理部４３は、ダウンロードサーバ３から受信したデータに含まれる電子署名を、記憶部８の公開鍵８１で検証する。そして、ダウンロードサーバ３から受信したデータが正しいと判断される場合に、ダウンロード元データを選択した共通鍵Ｂで暗号化したダウンロードデータを、ローカル通信部４５を介してソフトウェア無線通信装置１へ送信する。
【００７６】
ダウンロードサーバ３は、制御部３１と、通信部３４と、記憶部７とから構成される。制御部３１は、ＣＰＵ、主記憶装置および入出力装置などから構成され、主記憶装置にロードしたプログラムを実行することにより、ソフトウェア無線通信装置１にソフトウェアデータをダウンロードするための処理を行う。通信部３４は、インターネットまたは専用線網などのネットワークを介して、端末装置４の通信部４４と通信し、データの送受信を行う。
【００７７】
記憶部７は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、登録装置ＩＤ７１、秘密鍵７２、サーバ共通鍵７３およびソフトウェアＤＢ（データベース）７４を格納する。
【００７８】
登録装置ＩＤ７１は、ソフトウェア無線通信システム２０に登録されたソフトウェア無線通信装置１の識別符号を格納する。登録装置ＩＤ７１に装置ＩＤが登録されたソフトウェア無線通信装置１は、ソフトウェア無線通信システム２０でソフトウェアデータをダウンロードすることが許可される。登録装置ＩＤ７１に装置ＩＤが登録されていなければ、ソフトウェアデータのダウンロードが許可されない。
【００７９】
秘密鍵７２は、端末装置４から受信したデータを復号するのに用いる。また、ダウンロード元データに電子署名を付与するのに秘密鍵７２を用いる。サーバ共通鍵７３は、ソフトウェア無線通信装置１との認証と暗号通信に用いる。
【００８０】
ソフトウェアＤＢ７４は、実施の形態１と同様であって、ソフトウェア無線通信装置１の無線通信機能を実現する１または２以上のソフトウェアデータを格納する。ソフトウェア無線通信装置１ごと、またはソフトウェア無線通信装置１の群ごとに、装置ＩＤごとにダウンロード可能なソフトウェアの対応情報を記憶しておく。これにより、ソフトウェア無線通信装置１用のソフトウェアデータを送ることが可能となる。また、ソフトウェアデータからハッシュ関数で求めたハッシュ値を、ソフトウェアデータと一緒に記憶してもよい。ソフトウェアＤＢ７４は、登録装置ＩＤ７１を兼ねてもよい。なお、ダウンロード可能なソフトウェアデータの対応情報は、各ソフトウェアに対する支払い情報が確認できるようになっていてもよい。
【００８１】
制御部３１は、ソフトウェア無線通信装置認証部３２と、ダウンロード処理部３３を含む。ソフトウェア無線通信装置認証部３２およびダウンロード処理部３３は、制御部３１のＣＰＵ、主記憶装置および入出力装置等と、それらの上で実行されるプログラムで実現される。
【００８２】
ソフトウェア無線通信装置認証部（以下、装置認証部ともいう）３２は、端末装置４から受信した識別中継データを秘密鍵７２で復号し、さらにサーバ共通鍵７３で復号する。復号した装置ＩＤが、登録されている場合、例えば、予め登録された装置ＩＤの１つに一致する場合に、ソフトウェア無線通信装置１から要求されたソフトウェアデータのダウンロード処理を行う。
【００８３】
ダウンロード処理部３３は、ソフトウェア無線通信装置１が登録されている場合、ソフトウェアＤＢ７４からダウンロードするソフトウェアデータを読み出して、所定のハッシュ関数によってハッシュ値を演算する。そして、ソフトウェアデータと、演算したハッシュ値と、装置ＩＤとをサーバ共通鍵７３で暗号化したダウンロード元データに、秘密鍵７２で電子署名を付与したデータを、通信部３４を介して端末装置４に送信する。
【００８４】
次に、本実施の形態２に係るソフトウェア無線通信システム２０の動作について説明する。図６ないし図８Ｃは、実施の形態２に係るソフトウェア無線通信システム２０によるソフトウェアダウンロードの動作の一例を示すフローチャートである。図６は、ソフトウェア無線通信装置１および端末装置４の動作の一例を示す。図７は、ダウンロードサーバ３の動作の一例を示す。
【００８５】
図６の右側のソフトウェア変更は、ソフトウェア無線通信装置１の動作を示す。左側のダウンロード中継処理は、端末装置４の動作を示す。なお、図６および図７は、図３のフローチャートと同等のステップに同じ符号を付している。
【００８６】
ソフトウェアのダウンロード処理を開始してから（ステップＴ１）、通信装置１で認証処理（ステップＴ４）のハッシュ値の比較（ステップＴ５）を行うまでは、実施の形態１と同様である。通信装置１は、ダウンロードサーバ２への代わりに、端末装置４に起動データを送信し、端末装置４から認証データを受信する。端末装置４の起動データ受信（ステップＲ１）から認証データ送信（ステップＲ３）は、実施の形態１のダウンロードサーバ２のステップＳ１〜Ｓ３の動作と同じである。ここでは、通信装置１と端末装置４とで選択した共通鍵を共通鍵Ｂとして説明する。
【００８７】
通信装置１の認証部１２は、認証処理（ステップＴ４）で演算したハッシュ値と、認証データに含まれているハッシュ値とを比較し（ステップＴ５）、異なっていれば（ステップＴ５；異なる）、ソフトウェアダウンロード処理を終了する。ハッシュ値が同じであれば（ステップＴ５；等しい）、端末装置４は正しいとみなし、ダウンロード処理部１３が、装置ＩＤ５１をサーバ共通鍵５４で暗号化し、さらに共通鍵Ｂで暗号化したデータをダウンロード要求として端末装置４へ送信する（ステップＴ６ａ）。
【００８８】
端末装置４は、ダウンロード要求を受信するとダウンロード要求中継処理を行う（ステップＲ４）。図８Ａは、ダウンロード要求中継処理の動作の一例を示す。端末装置４のダウンロード中継処理部４３は、ダウンロード要求を受信すると（ステップＡ１１）、選択した共通鍵Ｂで復号する（ステップＡ１２）。復号したデータ（装置ＩＤがサーバ共通鍵５４で暗号化されたもの）と、復号データからダウンロードサーバ３と同じハッシュ関数で演算したハッシュ値を、記憶部８の公開鍵８１で暗号化して識別中継データを生成する（ステップＡ１４）。そして、識別中継データをダウンロードサーバ３へ送信する（ステップＡ１５）。この場合、ソフトウェア無線通信装置１がダウンロード可能なソフトウェアデータの一覧を、予めダウンロードサーバ３から端末装置４へ送信しておいてもよい。端末装置４はその一覧の中からダウンロードしたいソフトウェアデータを特定する情報を、復元したデータ（装置ＩＤがサーバ共通鍵５４で暗号化されたもの）に加えて、それをダウンロードサーバ３と同じハッシュ関数で求めたハッシュ値をさらに追加し、共通鍵Ｂで暗号化したデータを中継識別データとしてダウンロードサーバ３へ送信してもよい。
【００８９】
図６のステップＲ４から、図７に移る。ダウンロードサーバ３のソフトウェア無線通信装置認証部（以下、装置認証部という）３２は、ダウンロード要求として中継識別データを受信すると（ステップＳ１１）、受信したデータを秘密鍵７２で復号する（ステップＳ１２）。復号したデータに含まれる（サーバ共通鍵５４で暗号化された）装置ＩＤから、端末装置４と同じハッシュ関数でハッシュ値を演算する（ステップＳ１３）。
【００９０】
演算したハッシュ値と、復号したデータに含まれるハッシュ値が異なる場合は（ステップＳ１４；異なる）、不正なデータと判断して、エラー通知データを生成する（ステップＳ１８）。両者のハッシュ値が等しい場合は（ステップＳ１４；等しい）、装置ＩＤをサーバ共通鍵７３で復号する（ステップＳ１５）。復号した装置ＩＤが記憶部７に記憶している有効な装置ＩＤであるかを確認し（ステップＳ１６）、装置ＩＤがダウンロード可能なソフトウェアの対応情報に登録されていなければ（ステップＳ１６；ＮＯ）、エラー通知データを生成する（ステップＳ１８）。
【００９１】
装置ＩＤが登録されていれば（ステップＳ１６；ＹＥＳ）、ダウンロード処理部３３は、通信装置１がダウンロード可能な要求されたソフトウェアデータから、ソフトウェア無線通信装置１と同じハッシュ関数でハッシュ値を演算する（ステップＳ１７）。ダウンロードするソフトウェアデータとそのハッシュ値に、ダウンロード要求に含まれる装置ＩＤを付加する（ステップＳ１９）。そして、サーバ共通鍵７３で暗号化する（ステップＳ２０）。さらに、秘密鍵７２で電子署名を付与してダウンロードデータとする（ステップＳ２１）。
【００９２】
ダウンロード処理部３３は、生成されたダウンロードデータ（ステップＳ２１）、またはエラー通知データ（ステップＳ１８）を、端末装置４に送信する（ステップＳ２２）。
【００９３】
図６に戻って、端末装置４は、ダウンロードサーバ３からデータを受信すると（ステップＲ５）、受信したデータがソフトウェアデータを含むか否かを判断する（ステップＲ６）。ソフトウェアデータを含まない、例えば、エラー通知データの場合（ステップＲ６；ＮＯ）、エラー通知データを生成する（ステップＲ８）。受信したデータにソフトウェアデータが含まれる場合（ステップＲ６；ＹＥＳ）、ダウンロード中継処理部４３は、通信装置１へのダウンロードデータを生成する（ステップＲ７）。
【００９４】
図８Ｂは、ダウンロードデータ生成処理の動作の一例を示すフローチャートである。ダウンロード中継処理部４３は、受信したデータに含まれる電子署名を、記憶部８の公開鍵８１で検証する（ステップＢ１１）。ダウンロードサーバ３が正当であると判断される場合に（ステップＢ１２；ＯＫ）、ダウンロード元データを選択した共通鍵Ｂで暗号化してダウンロードデータを生成する（ステップＢ１３）。電子署名を検証した結果、ダウンロードサーバ３が正当でないと判断された場合は（ステップＢ１２；ＮＧ）、エラー通知データを生成する（ステップＢ１４）。
【００９５】
図６に戻って、ダウンロード中継処理部４３は、生成したダウンロードデータ（ステップＢ１３）、またはエラー通知データ（ステップＲ８またはステップＢ１４）を、ソフトウェア無線通信装置１へ送信する（ステップＲ９）。
【００９６】
通信装置１は、端末装置４からデータを受信すると（ステップＴ７ａ）、ソフトウェアの正当性を検証する（ステップＴ８ａ）。
【００９７】
図８Ｃは、ソフトウェア正当性検証の動作の一例を示す。まず、受信したデータがダウンロードデータか否かを判断する（ステップＣ１１）。ダウンロードデータでない場合（エラー通知データの場合）（ステップＣ１１；ＮＯ）、エラー通知を受信したことをセットして（ステップＣ１２）リターンする。
【００９８】
受信したデータがダウンロードデータの場合は（ステップＣ１１；ＹＥＳ）、ダウンロードデータを共通鍵Ｂで復号し（ステップＣ１３）、さらにサーバ共通鍵５４で復号する（ステップＣ１４）。復号結果から取り出した装置ＩＤを記憶部５に記憶している装置ＩＤ５１と比較する（ステップＣ１５）。装置ＩＤが一致しなければ（ステップＣ１５；異なる）、ダウンロードデータが正当でない（非正当）ことをセットして（ステップＣ１８）リターンする。
【００９９】
装置ＩＤが一致すれば（ステップＣ１５；等しい）、ソフトウェアデータからダウンロードサーバ３と同じハッシュ関数でハッシュ値を演算する（ステップＣ１６）。ダウンロードデータに含まれるハッシュ値と、演算したハッシュ値が異なる場合は（ステップＣ１７；異なる）、非正当をセットして（ステップＣ１８）リターンする。ハッシュ値が同じであれば（ステップＣ１７；等しい）、改ざんされていないソフトウェアとみなし、ダウンロードデータが正当であることをセットして（ステップＣ１９）リターンする。
【０１００】
図６に戻って、ソフトウェア正当性検証の結果が正当ならば（ステップＴ９；ＹＥＳ）、復号したソフトウェアデータを記憶部５のソフトウェアデータに格納する。そして、ソフトウェア実行部１５がソフトウェアデータを実行し、信号処理回路１６を設定して通信方式を変更する（ステップＴ１０）。ソフトウェア正当性検証の結果が正当以外の場合（ステップＴ９；ＮＯ）、ソフトウェアデータを実行することなく終了する。
【０１０１】
以上のように、本実施の形態２によれば、共通鍵の流出を困難にした本認証方式により、正当性を確認した端末装置４が、ソフトウェア無線通信装置１に代わって、公開鍵暗号方式を用いてダウンロードサーバ３の正当性を確認するため、オープンなネットワークで接続される部分はセキュリティ強度の高い公開鍵暗号方式によって正当性を検証しながら、ソフトウェア無線通信装置１では共通鍵暗号方式を用いて、処理量を抑えることができる。
【０１０２】
（実施の形態２の変形例）
複数の共通鍵のうち、ある共通鍵の流出が判明した場合の処置について説明する。この変形例では、ダウンロードサーバ３から端末装置４へ、ある共通鍵の使用を禁止する指令を送信する。
【０１０３】
図９は、端末装置４の共通鍵データ８２の例を示す。端末装置４の共通鍵データ８２に、共通鍵ごとに使用許可／禁止を示すデータを付与する。例えば、図９の右欄の×印はその行の共通鍵が使用禁止であることを表す。
【０１０４】
図１０は、共通鍵使用禁止処理の動作の一例を示す。ダウンロードサーバ３からデータを受信すると（ステップＲ１１）、ソフトウェア無線通信装置認証部４２は、そのデータが共通鍵使用禁止情報か否かを判断する（ステップＲ１２）。使用禁止情報の場合は（ステップＲ１２；ＹＥＳ）、その情報で指定された共通鍵を使用禁止に設定する。使用禁止情報でなければ（ステップＲ１２；ＮＯ）、ここでは、何もしない。
【０１０５】
ダウンロード中継処理の、認証データ生成処理では、共通鍵データ８２のうち、使用禁止でない共通鍵から選択する。これにより、ある共通鍵が流出した場合でも、正しいソフトウェアを安全にダウンロードすることができる。
【０１０６】
本発明による第１の効果は、ソフトウェア無線通信装置１において、ダウンロードサーバ３の正当性の検証と、ソフトウェアの機密性、完全性の保証を、公開鍵暗号化方式よりも処理量の少ない共通鍵暗号化方式を用いながら安全に実現可能である。
その理由は、ソフトウェア無線通信装置１とダウンロードサーバ３の双方で、複数の共通鍵を保持し、ダウンロードごとにランダムに使用することで、共通の知識を保持していなければ処理できないようにし、共通鍵の流出を困難にしているからである。また、たとえ鍵が流出した場合でも、使用禁止にできるからである。
【０１０７】
本発明による第２の効果は、オープンなネットワークで接続される部分はセキュリティ強度の高い公開鍵暗号方式により正当性を検証しながらも、ソフトウェア無線通信装置１では共通鍵暗号方式を用いて、処理量を抑えることができる。
その理由は、上述の複数の共通鍵をランダムに用いる認証方式により、正当性を確認した端末装置４が、ソフトウェア無線通信装置１に代わって、公開鍵暗号方式を用いてダウンロードサーバ３の正当性を確認するからである。
【０１０８】
本発明による第３の効果は、ソフトウェア無線通信装置１における、ソフトウェア検証処理量を削減できるため、低能力のソフトウェア無線通信装置１であっても、高速にソフトウェアを切り替える事が可能であり、すなわち通信方式の切り替えを高速に行うことができる。
その理由は、ソフトウェア無線通信装置１では処理量の少ない共通鍵暗号方式しか用いなくとも、ダウンロードサーバ３の正当性が検証でき、且つ、ソフトウェアの完全性・機密性を保証できるシステムであるからである。
【０１０９】
その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更及び修正が可能である。
【０１１０】
制御回路１１、制御部２１、３１、４１、記憶部５、６、７、８、ローカル通信部１８、４５、通信部３４、４４などから構成されるダウンロード処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読みとり可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行するソフトウェア無線通信装置１、ダウンロードサーバ２、３、および端末装置４を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することでソフトウェア無線通信装置１、ダウンロードサーバ２、３、および端末装置４を構成してもよい。
【０１１１】
また、ソフトウェア無線通信装置１、ダウンロードサーバ２、３、および端末装置４の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【０１１２】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【０１１３】
［産業上の利用可能性］
本発明は、ソフトウェアの変更により通信方式の変更が可能なソフトウェア無線通信装置に有用であり、ソフトウェアを正しくダウンロードする際に適用可能である。
【図面の簡単な説明】
【０１１４】
【図１】本発明の実施の形態１に係るソフトウェア無線通信システムの構成例を示すブロック図である。
【図２】共通鍵データの例を示す図である。
【図３】本発明の実施の形態１に係るソフトウェア無線通信システムの動作一例を示すフローチャートである。
【図４Ａ】認証データ生成処理の動作の一例を示すフローチャートである。
【図４Ｂ】認証処理の動作の一例を示すフローチャートである。
【図４Ｃ】ダウンロードデータ生成処理の動作の一例を示すフローチャートである。
【図４Ｄ】ソフトウェア正当性検証の動作の一例を示すフローチャートである。
【図５】本発明の実施の形態２に係るソフトウェア無線通信システムの構成例を示すブロック図である。
【図６】本発明の実施の形態２に係るソフトウェア無線通信装置および端末装置の動作の一例を示すフローチャートである。
【図７】本発明の実施の形態２に係るダウンロードサーバの動作の一例を示すフローチャートである。
【図８Ａ】ダウンロード要求中継処理の動作の一例を示すフローチャートである。
【図８Ｂ】ダウンロードデータ生成処理の動作の一例を示すフローチャートである。
【図８Ｃ】ソフトウェア正当性検証の動作の一例を示すフローチャートである。
【図９】端末装置の共通鍵データの例を示す図である。
【図１０】共通鍵使用禁止処理の動作の一例を示すフローチャートである。
【符号の説明】
【０１１５】
１  ソフトウェア無線通信装置
２  ダウンロードサーバ
３  ダウンロードサーバ
４  端末装置
５  記憶部
６  記憶部（ダウンロードサーバ）
７  記憶部（ダウンロードサーバ）
８  記憶部（端末装置）
１２  認証部
１３  ダウンロード処理部
１４  ソフトウェア検証部
１５  ソフトウェア実行部
１６  信号処理回路
１７  無線回路
１８  ローカル通信部
２２  ソフトウェア無線通信装置認証部
２３  ダウンロード処理部
２４  通信部
３２  ソフトウェア無線通信装置認証部
３３  ダウンロード処理部
３４  通信部
４２  ソフトウェア無線通信装置認証部
４３  ダウンロード中継処理部
４４  通信部
４５  ローカル通信部
５１  装置ＩＤ
５２  共通鍵データ
５３  ソフトウェアデータ
５４  サーバ共通鍵
６１  登録装置ＩＤ
６２  共通鍵データ
６３  ソフトウェアＤＢ
７１  登録装置ＩＤ
７２  秘密鍵
７３  サーバ共通鍵（ダウンロードサーバ）
７４  ソフトウェアＤＢ
８１  公開鍵
８２  共通鍵データ
【図１】
0004392672.tif 000002
【図２】
0004392672.tif 000003
【図３】
0004392672.tif 000004
【図４Ａ】
0004392672.tif 000005
【図４Ｂ】
0004392672.tif 000006
【図４Ｃ】
0004392672.tif 000007
【図４Ｄ】
0004392672.tif 000008
【図５】
0004392672.tif 000009
【図６】
0004392672.tif 000010
【図７】
0004392672.tif 000011
【図８Ａ】
0004392672.tif 000012
【図８Ｂ】
0004392672.tif 000013
【図８Ｃ】
0004392672.tif 000014
【図９】
0004392672.tif 000015
【図１０】
0004392672.tif 000016