JP7287079B2 - 変換プログラム、変換装置及び変換方法 - Google Patents

変換プログラム、変換装置及び変換方法 Download PDF

Info

Publication number
JP7287079B2
JP7287079B2 JP2019075535A JP2019075535A JP7287079B2 JP 7287079 B2 JP7287079 B2 JP 7287079B2 JP 2019075535 A JP2019075535 A JP 2019075535A JP 2019075535 A JP2019075535 A JP 2019075535A JP 7287079 B2 JP7287079 B2 JP 7287079B2
Authority
JP
Japan
Prior art keywords
apdu
command
footer
header
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019075535A
Other languages
English (en)
Other versions
JP2020173642A (ja
Inventor
遼 若宮
哲夫 神力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2019075535A priority Critical patent/JP7287079B2/ja
Publication of JP2020173642A publication Critical patent/JP2020173642A/ja
Application granted granted Critical
Publication of JP7287079B2 publication Critical patent/JP7287079B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephone Function (AREA)

Description

情報処理端末と通信モジュール間のデータ変換に関するプログラム等の技術分野に関する。
集積回路(IC(integrated circuit))を備えるICカードは、アプリケーションプログラム(「アプリケーション」)を実行することにより、様々なサービスをユーザに提供する。
一方で、インターネットに接続されたパーソナルコンピュータのウェブブラウザを用いて、電子メールや動画配信など様々なサービスをユーザは享受することができるようになっている。つまり、ユーザはインターネットに接続され、且つ、ウェブブラウザがインストールされたコンピュータであれば、任意のコンピュータからこれらのサービスを利用することができる。
その一方でウェブブラウザは、プライベートアカウントが不正に使用されたり、個人情報やプライベートデータが盗まれたりするなどの可能性があり、セキュリティ対策を施されたコンピュータにおいて利用することが重要である。また、ユーザの証明書を安全に記憶することができ、ログインプロセスに不可欠なコンポーネントとして使用されて、二要素認証を行うことができるICカードを利用することにより、セキュリティを強化することができる。そうした中、特許文献1には、ウェブブラウザでサービスを享受する際に、ICカードによるユーザ認証等を行うための技術が開示されている。
特開2016-144111号公報
ところで、ICカードは一般的に情報処理端末に接続されたリーダ・ライタ(R/W(Reader/Writer))と通信することにより、サービスを提供する。このときの情報処理端末のアプリケーションとICカード間の通信方式について図1(A)を用いて説明する。情報処理端末にインストールされているアプリケーションは、ICカードとのコマンド・レスポンスのやりとり(「トランザクション」)を介してユーザにサービスを提供する。PC/SC(Personal Computer/Smart Card)は、Windows(登録商標)環境でICカードを利用するための標準API(Application Programming Interface)である。R/Wは、ICカードへのデータの読み出し及び書き込みを行う。なお、ICカード内にもアプリケーションがインストールされており、コマンドに応じた処理を実行し、コマンドの送信元にレスポンスを返信する。
国際標準規格であるISO/IEC7816が適用されるICカードは、情報処理端末のアプリケーションからコマンドを含むAPDU(Application protocol data unit)であるC-APDU(Command-APDU)を受信し、コマンドに応じた処理をICカード内にインストールされたアプリケーションにより実行する。そして、ICカードは、当該処理の実行結果に応じた2バイトからなるSW(Status Word)を含むAPDUであるR-APDU(Response-APDU)を情報処理端末のアプリケーションへ送信(返信)する。このように情報処理端末のアプリケーションとICカードの間では、コマンドとレスポンスをやりとりするトランザクションによりユーザにサービスを提供する。具体的には、図2(A)に示すように、C-APDUは、情報処理端末のアプリケーションから送信されて、PC/SC及びR/Wを介してICカードに到達する。一方、R-APDUはICカードから送信されて、R/W及びPC/SCを介して情報処理端末のアプリケーションに到達する。
その一方で、ICカードは通信事業者が加入者を特定するためのSIM(Subscriber Identity Module)としても利用されている。そのSIMは、IoT機器がIoTサーバと通信する時に、通信事業者及びIoTサーバがIoT機器を認証するために利用されている。ここで、IoT機器のアプリケーションとSIM間の通信方式について図1(B)を用いて説明する。IoT機器にインストールされているアプリケーションは、SIMとのコマンド・レスポンスのやりとり(トランザクション)を実行する。LTE通信モジュール(LTEモデム)は、SIMと通信を行ったり、通信事業者(図示しない)との通信に関する処理を行ったりする。なお、SIMにもアプリケーションがインストールされており、アプリケーションによりコマンドに応じた処理を実行し、コマンドの送信元にレスポンスを返信する。
ICカードの一種であるSIMは、ISO/IEC7816が適用されるため、IoT機器(アプリケーション)からC-APDUを受信し、コマンドに応じた処理を実行し、R-APDUをIoT機器(アプリケーション)へ送信(返信)する。但し、IoT機器のアプリケーションがLTE通信モジュールとC-APDU及びR-APDUを送受信する際には、ATコマンドの形式に従う必要がある(LTE通信モジュールのように、ATコマンドに従って通信する必要がある機器を「ATコマンド機器」という場合がある)。具体的には、図2(B)に示すように、IoT機器にインストールされたアプリケーションはATコマンドのヘッダ及びフッタを付加したC-APDUをLTE通信モジュールに送信する。これを受信したLTE通信モジュールはATコマンドのヘッダ及びフッタを除いたC-APDUをSIMへ送信する。一方、SIMはコマンドに応じた処理を実行し、R-APDUをLTE通信モジュールに送信する。これを受信したLTE通信モジュールはATコマンドのヘッダ及びフッタを付加してR-APDUをアプリケーションへ送信する。つまり、アプリケーションとLTE通信モジュール間ではATコマンドのヘッダ及びフッタが付加されたデータが送受信される。
すなわち、IoT機器のアプリケーションからみてC-APDUの送信先がPC/SCの場合にはATコマンドのヘッダ及びフッタを付加せずにそのまま送信することとなる(図2(A))一方、送信先がATコマンド機器の場合にはATコマンドのヘッダ及びフッタを付加して送信することとなる(図2(B))。同様に、IoT機器のアプリケーションからみてR-APDUを受信する際、送信元がPC/SCの場合にはATコマンドのヘッダ及びフッタを削除せずにすむ一方、送信元がATコマンド機器の場合にはATコマンドのヘッダ及びフッタを削除して処理することとなる。よって、アプリケーションの開発者は、APDUの授受を行う直接的な相手がPC/SCであるか、ATコマンド機器であるかに応じてアプリケーションを開発する必要があり、大きな負担となるという問題がある。
そこで、本発明は、アプリケーションがATコマンド機器に接続されたICカードとAPDUを通信する場合であっても、アプリケーションがAPDUの授受を行う直接的な相手をPC/SCとすることにより、アプリケーションの開発者がATコマンドを意識することなくアプリケーションを開発することができる変換プログラム等を提供することを目的とする。
上記課題を解決するために、請求項1に記載の発明は、コンピュータを、C-APDUの入力を受け付ける第1受付手段、前記第1受付手段が受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加する付加手段、前記ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する第1出力手段、として機能させることを特徴とする。
請求項2に記載の発明は、請求項1に記載の変換プログラムであって、前記コンピュータを、ATコマンドのヘッダ及びフッタが付加されたR-APDUの入力を受け付ける第2受付手段、前記第2受付手段が受け付けた前記ATコマンドのヘッダ及びフッタが付加されたR-APDUからATコマンドのヘッダ及びフッタを削除する削除手段、前記ATコマンドのヘッダ及びフッタを削除したR-APDUを出力する第2出力手段、として更に機能させることを特徴とする。
請求項3に記載の発明は、請求項1に記載の変換プログラムであって、前記付加手段は、前記第1受付手段が受け付けたC-APDUの送信先が通信モジュールである場合に、当該C-APDUにATコマンドのヘッダ及びフッタを付加し、前記第1出力手段は、前記ATコマンドのヘッダ及びフッタを付加したC-APDUを前記通信モジュールに出力することを特徴とする。
請求項4に記載の発明は、請求項2に記載の変換プログラムであって、前記削除手段は、前記第2受付手段が受け付けた前記ATコマンドのヘッダ及びフッタが付加されたR-APDUの送信元が通信モジュールである場合に、当該-APDUからATコマンドのヘッダ及びフッタを削除し、前記第2出力手段は、前記ATコマンドのヘッダ及びフッタを削除したR-APDUを、前記C-APDUの入力元に出力することを特徴とする。
請求項5に記載の発明は、請求項4に記載の変換プログラムであって、前記コンピュータを、前記第2受付手段が受け付けたR-APDUに含まれるSWの1バイト目が「0x61」である場合に、当該SWとともに受け付けたデータを保持する保持手段、前記第2受付手段が受け付けたR-APDUに含まれるSWの1バイト目が「0x61」である場合に、[GET RESPONSE]コマンドを含むC-APDUにATコマンドのヘッダ及びフッタを付加して、前記通信モジュールに出力する第3出力手段、として更に機能させ、前記[GET RESPONSE]コマンドの応答として受け付けた前記ATコマンドのヘッダ及びフッタが付加されたR-APDUに含まれるSWが「0x9000」である場合に、前記削除手段は、当該ATコマンドのヘッダ及びフッタが付加されたR-APDUから当該ATコマンドのヘッダ及びフッタを削除し、前記第2出力手段は、当該ATコマンドのヘッダ及びフッタが削除されたR-APDUに前記保持手段が保持したデータを付加した上で、前記第1受付手段の受け付けたC-APDUの送信元に出力することを特徴とする。
請求項6に記載の発明は、C-APDUの入力を受け付ける第1受付手段と、前記第1受付手段が受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加する付加手段と、前記ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する第1出力手段と、を備えることを特徴とする。
請求項7に記載の発明は、変換装置による変換方法であって、C-APDUの入力を受け付ける第1受付工程と、前記第1受付工程により受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加する付加工程と、前記ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する第1出力工程と、を含むことを特徴とする。
本発明によれば、C-APDUを入力することによりATコマンドのヘッダ及びフッタが付加されて出力されることから、PC/SCとATコマンド機器の間で動作させることにより、PC/SCが出力したC-APDUをATコマンド機器に受信させることができる。したがって、アプリケーションがATコマンド機器に接続されたICカードとAPDUを通信する場合であっても、アプリケーションがAPDUの授受を行う直接的な相手をPC/SCとすることができ、アプリケーションの開発者はATコマンドを意識することなくアプリケーションを開発することができる。
(A)は、情報処理端末のアプリケーションとICカード間の通信方式の一例を示す図であり、(B)は、情報処理端末のアプリケーションとSIM間の通信方式の一例を示す図である。 (A)は、情報処理端末のアプリケーションとICカード間におけるAPDUの送受信の一例を示す図であり、(B)は、情報処理端末のアプリケーションとSIM間におけるAPDUの送受信の一例を示す図である。 本実施形態に係るIoT通信システムSの概要構成例を示す図である。 本実施形態に係るマイコン11の概要構成例を示すブロック図である。 は本実施形態に係るマイコン11のアプリケーションとSIM間の通信方式の一例を示す図である。 本実施形態に係るマイコン11のアプリケーションとSIM間におけるAPDUの送受信の一例を示す図である。 本実施形態に係る変換プログラムに基づくCPU111による変換処理の一例を示すフローチャートである。 本実施形態に係るIoT通信システムSの動作例を示すシーケンス図である。 本実施形態に係るIoT通信システムSの動作例を示すシーケンス図である。 変形例に係るマイコン11のアプリケーションとSIM間におけるAPDUの送受信の一例を示す図である。 変形例に係る変換プログラムに基づくCPU111による変換処理の一例を示すフローチャートである。
まず、本発明の実施形態について説明する。なお、本実施形態は、本願発明をIoT機器1におけるマイコン11における変換プログラムに適用した場合の実施例である。
[1.IoTシステムSの構成]
図3を用いて、IoT通信システムSの構成及び機能概要を説明する。図3は、本実施例に係るIoT通信システムSの概要構成例を示すブロック図である。IoT通信システムSは、IoT機器1とIoTサーバ2を含んで構成され、IoT機器1とIoTサーバ2は、ネットワークNWを介して相互にデータの送受信が可能になっている。なお、ネットワークNWは、例えば、LAN(Local Area Network)、インターネット、移動体通信網(基地局等を含む)、及びゲートウェイ等により構築されている。
IoT機器1は、温度センサー(図示しない)を備えており、周囲の温度を測定して得た温度データを記録する。IoTサーバ2は、IoT機器1から送信された温度データを管理したり、IoT機器1に記憶されているプログラムや情報等の更新を行ったりする。なお、IoT機器1とIoTサーバ2間で送受信されるデータは、セキュリティ確保のため、それぞれが管理する鍵データにより暗号化された上で通信される。
[2.IoT機器1の構成]
IoT機器1は、IoT機器1の通信に関する処理を行うLTE通信モジュール10(「通信モジュール」の一例)と、IoT機器1全体を制御するマイコン11と、LTE通信モジュール10に接続されたSIM12とを含んで構成される。
LTE通信モジュール10は、SIM12と通信を行ったり、通信事業者との通信に関する処理を行ったりする。LTE通信モジュール10は、ATコマンドに従ってデータの送受信を行う。つまり、LTE通信モジュール10にC-APDU等のデータを送信する場合にはATコマンドのヘッダ及びフッタを付加する必要がある。一方、LTE通信モジュール10から送信されるR-APDU等のデータを受信する場合にはATコマンドのヘッダ及びフッタを削除してデータを取り扱う必要がある。
SIM12は、通信事業者がSIM12を認証するために使用する契約者情報(IMSI等)、IoTサーバ2とIoT機器1間で通信される通信データを暗号/復号するための鍵を記憶する。また、SIM12は、IoTサーバ2がIoT機器1を認証するために使用する情報やデータを暗号/復号するための鍵を記憶する。なお、通信事業者やIoTサーバ2が認証を行う場合におけるSIM12とのAPDUによるコマンド・レスポンスは、IoT機器1のマイコン11のアプリケーションが担う。
[3.マイコン11の構成]
図4は、本実施例に係るマイコン11の概要構成例を示すブロック図である。図4に示すように、マイコン11は、CPU(Central Processing Unit)111、RAM(Random Access Memory)112、ROM(Read Only Memory)113、I/O部114及び不揮発性メモリ115を含んで構成され、IoT機器1全体を制御する。
RAM112には、例えばOS(Operating System)や各種アプリケーションが機能する上で一時的に必要となるデータが記憶される。不揮発性メモリ115には、例えばフラッシュメモリ又は「Electrically Erasable Programmable Read-Only Memory」などを適用することができる。ROM113及び不揮発性メモリ115には、OS、各種アプリケーション、後述する変換プログラム等が記憶される。I/O部114は、LTE通信モジュール10との通信インターフェースを担う。
[4.変換プログラム]
次に、図5-図7を用いて、マイコン11にインストールされているアプリケーションとSIM12間の通信方式と、変換プログラムについて説明する。図5に示すように、マイコン11にインストールされたアプリケーション301とSIM12間で、PC/SC302、変換プログラム303及びLTE通信モジュール10(「ATコマンド機器」の一例)を介してAPDUの受け渡しが行われる。なお、変換プログラム303は、マイコン11のCPU111により実行されることにより、OS300とLTE通信モジュール10間のデバイスドライバとして機能する。
以下、図6を用いて具体的に説明する。まず、アプリケーション301は、PC/SC302にC-APDUを受け渡す(ステップS1)。次いで、PC/SC302は変換プログラム303にC-APDUを入力する(ステップS2)。変換プログラム303は、C-APDUの入力を受け付けるとATコマンドのヘッダ及びフッタを付加するヘッダ・フッタ付加処理を行い(ステップS3)、ATコマンドのヘッダ及びフッタが付加されたC-APDUをLTE通信モジュール10に出力する(ステップS4)。LTE通信モジュール10は、これを受け取るとATコマンドのヘッダ及びフッタを解釈した上でC-APDUをSIM12に受け渡す(ステップS5)。
SIM12にインストールされたアプリケーションは、C-APDUに含まれるコマンドに応じて処理を実行し、レスポンスを含むR-APDUをLTE通信モジュール10に受け渡す(ステップS6)。LTE通信モジュール10は、これを受け取るとR-APDUにATコマンドのヘッダ及びフッタを付加して変換プログラム303に受け渡す(ステップS7)。変換プログラム303はLTE通信モジュール10によりATコマンドのヘッダ及びフッタが付加されたR-APDUの入力を受け付けると、当該ATコマンドのヘッダ及びフッタを削除するヘッダ・フッタ削除処理を行い(ステップS8)、R-APDUをPC/SC302に出力する(ステップS9)。PC/SC302は、変換プログラム303からR-APDUを受け付けるとアプリケーション301に受け渡す(ステップS10)。
つまり、変換プログラム303は、PC/SC302からC-APDUの入力を受け付けた場合に、C-APDUにATコマンドのヘッダ及びフッタを付加し、LTE通信モジュール10に出力する。また、変換プログラム303は、LTE通信モジュール10からATコマンドのヘッダ及びフッタが付加されたR-APDUの入力を受け付けた場合に、ATコマンドのヘッダ及びフッタを削除して、R-APDUをPC/SC302に出力する。
ここで、図7を用いて、変換プログラム303に基づくマイコン11のCPU111による変換処理について説明する。図7は、マイコン111による変換処理の一例を示すフローチャートである。
まず、マイコン11のCPU111は、PC/SC302からデータ(例えば、C-APDU)の入力を受け付けたか否かを判定する(ステップS101)。CPU111は、PC/SC302からデータを受け付けたと判定した場合には(ステップS101:YES)、当該受け付けたデータにATコマンドのヘッダ及びフッタを付加して、送信データを生成する(ステップS102)。
具体的には、CPU111は、送信データとしてATコマンド(Generic UICC logical channel access +CGLA)を生成する。例えば、ATコマンド(AT+CGLA)は、
<sessionid>,<length>,<command><CR>
により構成される。CPU111は、<sessionid>に、セッション開始時に送るATコマンド(Open logical channel +CCHO)のレスポンスとして得られる整数値を記述し、<length>に、C-APDUの長さを記述し、<command>に、C-APDUを記述する。<CR>は改行コードである。
なお、
<sessionid>,<length>,<command><CR>
において、
<command>より前にある
<sessionid>,<length>
がATコマンドのヘッダであり、
<command>より後ろにある
<CR>
がATコマンドのフッタである。
次いで、CPU111は、ステップS102の処理で生成した送信データをLTE通信モジュール10に出力し(ステップS103)、ステップS101の処理に移行する。
一方、CPU111は、PC/SC302からデータを受け付けていないと判定した場合には(ステップS101:NO)、次いで、LTE通信モジュール10からデータ(例えば、R-APDU)の入力を受け付けたか否かを判定する(ステップS104)。CPU111は、LTE通信モジュール10からデータを受け付けたと判定した場合には(ステップS104:YES)、当該受け付けたデータからATコマンドのヘッダ及びフッタを削除して、送信データを生成する(ステップS105)。
例えば、CPU111は、上記ATコマンド(AT+CGLA)に対応するレスポンスとして、
<CR><LF>+CGLA: <length>,<response><CR><LF>
<CR><LF>OK<CR><LF>
を受け付ける。
<length>には、<response>の長さが記述されている。<response>には、R-APDUが記述されている。<LF>は改行コードである。CPU111は、当該レスポンスを受信した場合にはATコマンドのヘッダ及びフッタを削除する。いいかえれば、CPU111は、<response>部分を残して他の部分を削除する。
なお、
<length>,<response><CR><LF>
<CR><LF>OK<CR><LF>
において、
<response>より前にある
<length>
がATコマンドのヘッダであり、
<response>より後ろにある
<CR><LF>
<CR><LF>OK<CR><LF>
がATコマンドのフッタである。
次いで、CPU111は、ステップS105の処理で生成した送信データをPC/SC302に出力し(ステップS106)、ステップS101の処理に移行する。他方、CPU111は、LTE通信モジュール10からデータを受け付けていないと判定した場合には(ステップS104:NO)、ステップS101の処理に移行する。
なお、ステップS104を削除するとともに、ステップS101の処理において、「入力を受け付けたデータにATコマンドのヘッダ及びフッタが付加されているか否か」について判定することとし、「YES」である場合にステップS105の処理に移行し、「NO」である場合にステップS102の処理に移行することとしてもよい。また、変換プログラム303は、ATコマンドのヘッダ及びフッタについて付加処理と削除処理の双方を実行可能なプログラムとしたが、それぞれの処理を実行可能な付加プログラムと削除プログラムに分割することとし、ATコマンドのヘッダ及びフッタを付加すべき場合に付加プログラムを実行し、ATコマンドのヘッダ及びフッタを削除すべき場合に削除プログラムを実行することとしてもよい。
[5.IoTシステムSの通信]
次に、図8及び図9を用いて、IoTシステムSにおける通信の一例について説明する。
まず、図8を用いて、マイコン11にインストールされているアプリケーション301が送信データをIoTサーバ2に送信する場合の通信の一例について説明する。
図8に示すように、マイコン11のCPU111(アプリケーション301)は、IoTサーバ2に送信する送信データ(例えば、温度データ)をSIM12に受け渡す(ステップS201)。具体的には、CPU111(アプリケーション301)は、SIM12にインストールされている暗号・復号用のアプリケーションを選択した上で、送信データと、当該アプリケーションに送信データを暗号化させるコマンドを含むC-APDUを送信する。
SIM12は、送信データを受け取ると、選択されたアプリケーションに基づいて、送信データを暗号鍵により暗号化する(ステップS202)。次いで、SIM12は、暗号化した送信データをマイコン11(アプリケーション301)に受け渡す(ステップS203)。具体的には、SIM12は暗号化した送信データと暗号処理の処理結果を示すSWからなるレスポンスを含むR-APDUを送信する。
なお、CPU111(アプリケーション301)とSIM12間では、図6を用いて説明したように、PC/SC302、変換プログラム303及びLTE通信モジュール10を介して送信データ(APDU)が送受信される。
マイコン11のCPU111(アプリケーション301)は、暗号化された送信データを受け取ると、これをIoTサーバ2に送信する(ステップS204)。
IoTサーバ2は、暗号化された送信データを受信すると、これを復号鍵により復号する(ステップS205)。
次に、図9を用いて、IoTサーバ2が送信データをマイコン11にインストールされているアプリケーション301に送信する場合の通信の一例について説明する。
図9に示すように、IoTサーバ2は、IoT機器1へ送信するデータ(例えば、温度センサーの設定変更用のデータ)を暗号鍵により暗号化する(ステップS251)。次いで、IoTサーバ2は、暗号化した送信データをIoT機器1に送信する(ステップS252)。
マイコン11のCPU111(アプリケーション301)は、受け取った、暗号化された送信データをSIM12に受け渡す(ステップS253)。具体的には、CPU111(アプリケーション301)は、SIM12にインストールされている暗号・復号用のアプリケーションを選択した上で、暗号化された送信データと、当該アプリケーションに当該暗号化された送信データを復号させるコマンドを含むC-APDUを送信する。
SIM12は、暗号化された送信データを受け取ると、選択されたアプリケーションに基づいて、復号鍵により復号する(ステップS254)。次いで、SIM12は、復号した送信データをマイコン11(アプリケーション301)に受け渡す(ステップS255)。具体的には、SIM12は復号した送信データと復号処理の処理結果を示すSWからなるレスポンスを含むR-APDUを送信する。
なお、CPU111(アプリケーション301)とSIM12間では、図6を用いて説明したように、PC/SC302、変換プログラム303及びLTE通信モジュール10を介して送信データ(APDU)が送受信される。
これにより、マイコン11のCPU111(アプリケーション301)は、復号された送信データを受け取る。
以上説明したように、本実施形態のCPU111(「第1受付手段」、「付加手段」、「第1出力手段」の一例)は、変換プログラム303に基づいて、C-APDUの入力を受け付け、当該受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加し、当該ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する。
したがって、本実施形態の変換プログラム303によれば、C-APDUを入力することによりATコマンドのヘッダ及びフッタが付加されて出力されることから、PC/SCとLTE通信モジュール10の間で動作させることにより、PC/SC302が出力したC-APDUをLTE通信モジュール10に受信させることができる。したがって、アプリケーション301がLTE通信モジュール10に接続されたSIM(「ICカード」の一例)とAPDUを通信する場合であっても、アプリケーション301がAPDUの授受を行う直接的な相手をPC/SC302とすることができ、アプリケーション301の開発者はATコマンドを意識することなくアプリケーション301を開発することができる。
また、本実施形態のCPU111(「第2受付手段」、「削除手段」、「第2出力手段」の一例)は、変換プログラム303に基づいて、ATコマンドのヘッダ及びフッタが付加されたR-APDUの入力を受け付け、当該受け付けたATコマンドのヘッダ及びフッタが付加されたR-APDUからATコマンドのヘッダ及びフッタを削除し、当該ATコマンドのヘッダ及びフッタを削除したR-APDUを出力する。
したがって、本実施形態の変換プログラム303によれば、ATコマンドのヘッダ及びフッタが付加されたR-APDUを入力することによりATコマンドのヘッダ及びフッタが削除されて出力されることから、変換プログラム303をPC/SC302とLTE通信モジュール10の間で動作させることにより、LTE通信モジュール10が出力したATコマンドのヘッダ及びフッタが付加されたR-APDUを受信した場合にATコマンドのヘッダ及びフッタを削除したR-APDUをPC/SC302に受信させることができる。したがって、アプリケーション301がLTE通信モジュール10に接続されたSIM(「ICカード」の一例)とAPDUを通信する場合であっても、アプリケーション301がAPDUの授受を行う直接的な相手をPC/SC302とすることができ、アプリケーション301の開発者はATコマンドを意識することなくアプリケーション301を開発することができる。
[6.変形例]
マイコン11のアプリケーション301がSIM12にデータの送信を命令するコマンドを送信して、これに対してSIM12がデータをレスポンスとしてアプリケーション301に送信する場合がある。このとき、一度のレスポンスで送信すべきデータを送信できない場合に、SIM12はレスポンスとして当該送信すべきデータの一部と、特定のSWをアプリケーション301に送信する。このとき、特定のSWにおけるSW1(SWの1バイト目)には「0x61」が設定され、SW2(SWの2バイト目)に残りのデータサイズを示す値が設定される。アプリケーション301は、SW1が「0x61」であるレスポンスを受信した場合に、残りのデータの送信を命令する[GET RESPONSE]コマンドをSIM12に送信し、SIM12は当該コマンドに対して、残りのデータ及びSWを含むレスポンスを送信する。このとき、一度の[GET RESPONSE]コマンドに対するレスポンスで送信すべきデータを送信しきれない場合には、これらの処理を繰り返すことにより、SIM12からアプリケーション301に送信すべきデータを分割して送信することができる。
そこで、本変形例における変換プログラム303は、SIM12からのレスポンスにSW1が「0x61」であるSWが含まれる場合に、当該レスポンスをPC/SC302(アプリケーション301)に送信せずに、自らが[GET RESPONSE]コマンドをSIM12に送信して、SIM12がアプリケーション301に送信すべきデータを全て受信して、一括して送信すべきデータをPC/SC302(アプリケーション301)に送信することとする。以下、図10及び図11を用いて、本変形例におけるマイコン11にインストールされているアプリケーション301とSIM12間の通信方式と、変換プログラム303に基づく変換処理について説明する。
図10におけるステップS31からステップS35までは、図6におけるステップS1からステップS5までは同様であるので説明を省略する。但し、マイコン11(アプリケーション301)から送信されるコマンドは、SIM12に何らかのデータの送信を命令するコマンドであることとする。これに対してSIM12は、マイコン11(アプリケーション301)に送信すべきデータを一度に送信できない場合に、R-Data1とR-Data2に分割して送信する(ここでは、2つのデータに分割して送信する場合について説明するが、データをR-Data1~R-DataNのN個に分割した上で、N回に分けて送信することもできる)。具体的には、SIM12は、まず、R-Data1とSW1が「0x61」であるSWからなるレスポンスを含むR-APDUをLTE通信モジュール10に受け渡す(ステップS36)。LTE通信モジュール10は、これを受け取るとR-APDUにATコマンドのヘッダ及びフッタを付加して変換プログラム303に受け渡す(ステップS37)。
これに対して変換プログラム303は、LTE通信モジュール10から受け付けたATコマンドのヘッダ及びフッタが付加されたR-APDUに含まれるSW1が「0x61」であると判定すると、R-Data1を一時保持するとともに、[GET RESPONSE]コマンドを生成し、これにATコマンドのヘッダ及びフッタを付加した上でLTE通信モジュール10に送信する自動送信処理を実行する(ステップ38、ステップS39)。LTE通信モジュール10は、これを受け取るとATコマンドのヘッダ及びフッタを削除してC-APDUをSIM12に受け渡す(ステップS40)。これに対してSIM12は、R-Data2とSW「0x9000」(正常終了を示す)からなるレスポンスを含むR-APDUをLTE通信モジュール10に受け渡す(ステップS41)。LTE通信モジュール10は、これを受け取るとR-APDUにATコマンドのヘッダ及びフッタを付加して変換プログラム303に受け渡す(ステップS42)。
変換プログラム303は、ステップS39で送信した[GET RESPONSE]コマンドのレスポンスとして、LTE通信モジュール10からATコマンドのヘッダ及びフッタが付加されたR-APDUの入力を受け付けると、これに含まれるSWが「0x9000」であることを確認して、ヘッダ・フッタ削除処理を行う(ステップS43)。ヘッダ・フッタ削除処理では、R-APDUに付加されているATコマンドのヘッダ及びフッタを削除するとともに、当該R-APDUに対してそれまでに一時保持したR-Data1を加えたR-APDU(すなわち、R-Data1とR-Data12とSW「0x9000」を含むR-APDU)を生成する。次いで、変換プログラム303は、当該R-APDUをPC/SC302に出力する(ステップS44)。PC/SC302は、変換プログラム303からR-APDUを受け付けるとアプリケーション301に受け渡す(ステップS45)。
つまり、変換プログラム303は、LTE通信モジュール10を介してSIM12からSW1が「0x61」であるSWを含むR-APDUの入力を受け付けた場合には、SWが「0x9000」であるSWを含むR-APDUの入力を受け付けるまで、[GET RESPONSE]コマンドを含むC-APDUの送信と、これに対する応答であるR-APDUに含まれる分割データの一時保持を繰り返す。そして、SWが「0x9000」であるSWを含むR-APDU(R-DataN)の入力を受け付けた場合には、これに一時保持した全ての分割データ(R-Data1~R-DataN-1)を加えたR-APDUをPC/SC302に出力する。
次に、図11を用いて、変形例における変換プログラム303に基づくマイコン11のCPU111による変換処理について説明する。図11は、変形例におけるマイコン111による変換処理の一例を示すフローチャートである。なお、図11では、図7のステップS104の処理とステップS105の処理の間に、ステップS151の処理からステップ158の処理を追加しており、ここでは、当該追加した部分を中心に説明する。
まず、図11のステップS104において、マイコン11のCPU111は、LTE通信モジュール10からデータを受け付けていないと判定した場合には(ステップS104:NO)、ステップS101の処理に移行する。一方、CPU111は、LTE通信モジュール10からデータを受け付けたと判定した場合には(ステップS104:YES)、当該受け付けたデータであるR-APDUに含まれるSWが「0x61XX」(すなわち、SW1が「0x61」)であるか否かを判定する(ステップS151)。
CPU111は、SWが「0x61XX」であると判定した場合には(ステップS151:YES)、R-APDUに含まれる分割されたR―Datan(nは1からN-1の自然数)を不揮発性メモリ115又はRAM112に一時保持する(ステップS152)。次いで、CPU111は、[GET RESPONSE]コマンドを含むC-APDUを用意し、これにATコマンドのヘッダ及びフッタを付加して送信データを生成する(ステップS153)。次いで、CPU111は、ステップS153の処理で生成した送信データをLTE通信モジュール10に出力し(ステップS154)、一時保持フラグをオンに設定し(ステップS155)、ステップS101の処理に移行する。なお、一時保持フラグは、SW「0x61XX」を含むR-APDUに含まれるR-Dataを変換プログラム303が一時保持している場合にオンに設定される。
一方、CPU111は、SWが「0x61XX」ではない(例えば、「0x9000」である)と判定した場合には(ステップS151:NO)、次いで、一時保持フラグがオンであるか否かを判定する(ステップS156)。CPU111は、一時保持フラグがオンではないと判定した場合には(ステップS156:NO)、ステップS105の処理に移行する。
他方、CPU111は、一時保持フラグがオンであると判定した場合には(ステップS156:YES)、受信したデータ(R-DataN及びSW「0x9000」を含むR-APDU)からATコマンドのヘッダ及びフッタを削除した上で、当該R-APDU(R-DataN及びSW「0x9000」を含むR-APDU)に対して、ステップS152の処理で一時保持した全てのデータ(R-Data1~R-Data(N-1))を加えたR-APDU((R-Data1~R-DataN及びSW「0x9000」を含むR-APDU)を送信データとして生成する(ステップS157)。次いで、CPU111は、一時保持フラグをオフに設定し(ステップS158)、ステップS106の処理に移行する。
以上説明したように、本変形例のCPU111(「保持手段」、「第3出力手段」の一例)は、変換プログラム303に基づいて、受け付けたR-APDUに含まれるSWの1バイト目が「0x61」である場合に、当該SWとともに受け付けたR-Dataを保持するとともに、[GET RESPONSE]コマンドを含むC-APDUにATコマンドを付加した送信データをLTE通信モジュール10に出力し、[GET RESPONSE]コマンドの応答として受け付けたATコマンドのヘッダ及びフッタが付加されたR-APDUに含まれるSWが「0x9000」である場合に、当該ATコマンドのヘッダ及びフッタが付加されたR-APDUから当該ATコマンドのヘッダ及びフッタを削除し、当該ATコマンドのヘッダ及びフッタが削除されたR-APDUに先に保持したR-Dataを付加した上で、C-APDUの送信元に出力する。
すなわち、SIM12からSW「0x61XX」を含むレスポンスを含むR-APDUが送信された場合において、変換プログラム303は、マイコン11(アプリケーション301)に当該R-APDUを戻すことなく、SIM12がマイコン11(アプリケーション301)に送信すべき全てのデータを取得した上で、一括してマイコン11(アプリケーション301)に送信する。これにより、マイコン11(アプリケーション301)と変換プログラム303間での通信回数を削減することができ、延いてはトランザクションに係る処理時間を短縮することができる。
1 IoT機器
10 LTE通信モジュール
11 マイコン
111 CPU
112 RAM
113 ROM
114 I/O部
115 不揮発性メモリ
12 SIM
2 IoTサーバ
300 OS
301 アプリケーション
302 PC/SC
303 変換プログラム

Claims (7)

  1. コンピュータを、
    C-APDUの入力を受け付ける第1受付手段、
    前記第1受付手段が受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加する付加手段、
    前記ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する第1出力手段、
    として機能させることを特徴とする変換プログラム。
  2. 請求項1に記載の変換プログラムであって、
    前記コンピュータを、
    ATコマンドのヘッダ及びフッタが付加されたR-APDUの入力を受け付ける第2受付手段、
    前記第2受付手段が受け付けた前記ATコマンドのヘッダ及びフッタが付加されたR-APDUからATコマンドのヘッダ及びフッタを削除する削除手段、
    前記ATコマンドのヘッダ及びフッタを削除したR-APDUを出力する第2出力手段、
    として更に機能させることを特徴とする変換プログラム。
  3. 請求項1に記載の変換プログラムであって、
    前記付加手段は、前記第1受付手段が受け付けたC-APDUの送信先が通信モジュールである場合に、当該C-APDUにATコマンドのヘッダ及びフッタを付加し、
    前記第1出力手段は、前記ATコマンドのヘッダ及びフッタを付加したC-APDUを前記通信モジュールに出力することを特徴とする変換プログラム。
  4. 請求項2に記載の変換プログラムであって、
    前記削除手段は、前記第2受付手段が受け付けた前記ATコマンドのヘッダ及びフッタが付加されたR-APDUの送信元が通信モジュールである場合に、当該-APDUからATコマンドのヘッダ及びフッタを削除し、
    前記第2出力手段は、前記ATコマンドのヘッダ及びフッタを削除したR-APDUを、前記C-APDUの入力元に出力することを特徴とする変換プログラム。
  5. 請求項4に記載の変換プログラムであって、
    前記コンピュータを、
    前記第2受付手段が受け付けたR-APDUに含まれるSWの1バイト目が「0x61」である場合に、当該SWとともに受け付けたデータを保持する保持手段、
    前記第2受付手段が受け付けたR-APDUに含まれるSWの1バイト目が「0x61」である場合に、[GET RESPONSE]コマンドを含むC-APDUにATコマンドのヘッダ及びフッタを付加して、前記通信モジュールに出力する第3出力手段、
    として更に機能させ、
    前記[GET RESPONSE]コマンドの応答として受け付けた前記ATコマンドのヘッダ及びフッタが付加されたR-APDUに含まれるSWが「0x9000」である場合に、
    前記削除手段は、当該ATコマンドのヘッダ及びフッタが付加されたR-APDUから当該ATコマンドのヘッダ及びフッタを削除し、
    前記第2出力手段は、当該ATコマンドのヘッダ及びフッタが削除されたR-APDUに前記保持手段が保持したデータを付加した上で、前記第1受付手段の受け付けたC-APDUの送信元に出力することを特徴とする変換プログラム。
  6. C-APDUの入力を受け付ける第1受付手段と、
    前記第1受付手段が受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加する付加手段と、
    前記ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する第1出力手段と、
    を備えることを特徴とする変換装置。
  7. 変換装置による変換方法であって、
    C-APDUの入力を受け付ける第1受付工程と、
    前記第1受付工程により受け付けたC-APDUにATコマンドのヘッダ及びフッタを付加する付加工程と、
    前記ATコマンドのヘッダ及びフッタを付加したC-APDUを出力する第1出力工程と、
    を含むことを特徴とする変換方法。
JP2019075535A 2019-04-11 2019-04-11 変換プログラム、変換装置及び変換方法 Active JP7287079B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019075535A JP7287079B2 (ja) 2019-04-11 2019-04-11 変換プログラム、変換装置及び変換方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019075535A JP7287079B2 (ja) 2019-04-11 2019-04-11 変換プログラム、変換装置及び変換方法

Publications (2)

Publication Number Publication Date
JP2020173642A JP2020173642A (ja) 2020-10-22
JP7287079B2 true JP7287079B2 (ja) 2023-06-06

Family

ID=72831490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019075535A Active JP7287079B2 (ja) 2019-04-11 2019-04-11 変換プログラム、変換装置及び変換方法

Country Status (1)

Country Link
JP (1) JP7287079B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002304602A (ja) 2001-04-06 2002-10-18 Dainippon Printing Co Ltd カード情報更新システム
JP2007206902A (ja) 2006-01-31 2007-08-16 Dainippon Printing Co Ltd Icカードのプログラム修正システム、プログラム、及びicカード

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002304602A (ja) 2001-04-06 2002-10-18 Dainippon Printing Co Ltd カード情報更新システム
JP2007206902A (ja) 2006-01-31 2007-08-16 Dainippon Printing Co Ltd Icカードのプログラム修正システム、プログラム、及びicカード

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吉田 愼介,ICカードの最新技術と利用動向 第9回,BUSINESS COMMUNICATION,日本,株式会社ビジネスコミュニケーション社,2001年12月01日,第38巻 第12号 ,pp.90-93

Also Published As

Publication number Publication date
JP2020173642A (ja) 2020-10-22

Similar Documents

Publication Publication Date Title
US10986487B2 (en) Apparatus and method for profile installation in communication system
US9817993B2 (en) UICCs embedded in terminals or removable therefrom
ES2708696T3 (es) Método para el cambio del operador de red móvil en una SIM integrada basado en un privilegio especial
KR100996768B1 (ko) 휴대형 통신 객체 내의 대용량 기억부 및 보안 기억부를 원격 액세스하기 위한 시스템
CN102752375B (zh) 实现智能卡远程操作的方法及***
US10057759B2 (en) Method for personalising a secure element
US9497620B2 (en) Method and system for implementing smart card remote operation based on smart card web server
JP2010259074A (ja) ワイヤレスアプリケーションプロトコルに基づく機密セッションの設定
JP2009500696A (ja) トランザクションの円滑化および認証
CN108141744A (zh) 多个电子订户身份模块(eSIM)实例的实例化
US9055605B2 (en) Method for establishing a secure logical connection between an integrated circuit card and a memory card through a terminal equipment
US10097553B2 (en) Installation of a secure-element-related service application in a secure element in a communication device, system and telecommunications
CN106412887B (zh) 一种虚拟sim卡的快速鉴权方法、***、服务器及终端
Urien Cloud of secure elements: An infrastructure for the trust of mobile NFC services
Klee et al. {NFCGate}: Opening the Door for {NFC} Security Research with a {Smartphone-Based} Toolkit
JP2024054260A (ja) 耐量子simカード
JP7287079B2 (ja) 変換プログラム、変換装置及び変換方法
Urien et al. A new cooperative architecture for sharing services managed by secure elements controlled by android phones with IP objects
US20180007492A1 (en) Methods for providing a response to a command requesting the execution of a proactive command
CN106055989B (zh) 一种数据传递方法及终端
Sabt et al. Over-the-internet: efficient remote content management for secure elements in mobile devices
Urien et al. Introducing Smartcard in Wireless LAN Security
KR100867002B1 (ko) 이종 무선 네트워크 환경에서의 통합 인증 기능을 구비한스마트 카드 및 이를 구비한 무선 단말
WO2002045446A1 (en) Method and device to transfer a software application written in high level language between the subscribers of a telecommunication network
KR20100136326A (ko) 인덱스 교환을 통해 생성되는 씨드 조합 방식 네트워크 형 오티피 인증을 통한 휴대폰 결제 방법 및 시스템과 이를 위한 기록매체

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230508

R150 Certificate of patent or registration of utility model

Ref document number: 7287079

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150