(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-21
(45)【発行日】2023-06-29
(54)【発明の名称】CAN BUSでの攻撃を探知する方法および装置
(51)【国際特許分類】
G06F 21/55 20130101AFI20230622BHJP
G06N 3/02 20060101ALI20230622BHJP
【FI】
G06F21/55 320
G06N3/02
(21)【出願番号】P 2022096200
(22)【出願日】2022-06-15
【審査請求日】2022-06-15
(31)【優先権主張番号】10-2021-0078080
(32)【優先日】2021-06-16
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0062705
(32)【優先日】2022-05-23
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】522238745
【氏名又は名称】アウトクリプト カンパニー リミテッド
【氏名又は名称原語表記】Autocrypt Co.,Ltd.,
【住所又は居所原語表記】7F-8F.,115,Yeouigongwon-ro,Yeongdeungpo-gu,Seoul,07241,Korea
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジュ,キホ
(72)【発明者】
【氏名】パク,スンヨン
(72)【発明者】
【氏名】シム,サンギュ
(72)【発明者】
【氏名】キム,ウィソク
(72)【発明者】
【氏名】キム,ドクス
(72)【発明者】
【氏名】イ,ソクウ
(72)【発明者】
【氏名】イ,ジョンウォン
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2021-34043(JP,A)
【文献】Hyun Min SONG,Huy Kang KIM,Self-Supervised Anomaly Detection for In-Vehicle Network Using Noised Pseudo Normal Data,IEEE Transactions on Vehicular Technology,2021年02月,Volume 70,No.2,p.1098-p.1108,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9320546
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
プロセッサ(processor)によって実行される、CAN BUSでの攻撃を探知する方法において、
発生順の通りにCAN IDを収集する段階;
前記収集されたCAN IDから予め定められた個数L(Lは1以上の整数)だけのCAN IDで構成されたシーケンスを生成する段階;および
前記シーケンスを両方向GPT2ネットワークに入力して前記シーケンスに対応する損失関数(loss function)の値を計算する段階を含み、
許容されたCAN IDの個数がK(Kは1以上の整数)である場合、前記シーケンス内の許容されたCAN IDは大きさ順で整列されて0~K-1値に変換され、前記シーケンス内の許容されていないCAN IDはKに変換されて前記両方向GPT2ネットワークに入力されることを特徴とする、CAN BUSでの攻撃探知方法。
【請求項2】
前記両方向GPT2ネットワークはフォワード(forward)GPTモジュール、バックワード(backward)GPTモジュール、および完全連結階層(fully-connected layer)を含む、請求項1に記載のCAN BUSでの攻撃探知方法。
【請求項3】
前記損失関数の値を計算する段階で、前記シーケンスは本来の順序で前記フォワードGPTモジュールに入力され、前記シーケンスは逆の順序で前記バックワードGPTモジュールに入力される、請求項2に記載のCAN BUSでの攻撃探知方法。
【請求項4】
前記損失関数の値を計算する段階で、前記フォワードGPTモジュールに前記シーケンスに属する0番目のCAN IDからL-2番目のCAN IDまでのCAN IDに対応するエンベッディング(embedding)ベクトルが入力され、前記フォワードGPTモジュールは1番目のCAN IDからL-1番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力する、請求項3に記載のCAN BUSでの攻撃探知方法。
【請求項5】
前記損失関数の値を計算する段階で、前記バックワードGPTモジュールに前記シーケンスに属するL-1番目のCAN IDから1番目のCAN IDまでのCAN IDに対応するエンベッディングベクトルが入力され、前記バックワードGPTモジュールはL-2番目のCAN IDから0番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力する、請求項3に記載のCAN BUSでの攻撃探知方法。
【請求項6】
前記損失関数の値を計算する段階で、前記フォワードGPTの出力と前記バックワードGPTの出力が連接されて2E×L大きさの行列が生成され、前記2E×L大きさの行列は前記完全連結階層によって(K+1)×L大きさの行列に変換され、(K+1)×L大きさの行列はソフトマックスレイヤによって確率行列に変換される、請求項4に記載のCAN BUSでの攻撃探知方法。
【請求項7】
前記損失関数(loss function)は
【数28】
で定義され、前記フォワードGPTモジュール、前記バックワードGPTモジュール、および前記完全連結階層は前記損失関数の値を最小化するように訓練され、
【数29】
は訓練に使われるn番目の正常CAN ID sequenceのl番目の変数であり、
【数30】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)である、請求項2に記載のCAN BUSでの攻撃探知方法。
【請求項8】
前記損失関数の値をしきい値と比較する段階;および
前記損失関数の値が前記しきい値以上である場合、前記シーケンスに対応する区間を攻撃が存在する区間と判断する段階をさらに含み、
前記損失関数(loss function)は
【数31】
で定義され、
【数32】
は探知対象シーケンスに該当するm番目のCAN ID sequenceのl番目の変数であり、
【数33】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)である、請求項1に記載のCAN BUSでの攻撃探知方法。
【請求項9】
CAN BUSでの攻撃を探知する装置であって、
プロセッサ(processor);
プロセッサを通じて実行される少なくとも一つの命令が保存されたメモリ(memory);および
前記CAN BUSに連結されて通信を遂行する送受信機を含み、
前記少なくとも一つの命令は、前記プロセッサが:
前記送受信機を利用して前記CAN BUSから発生順の通りにCAN IDを収集する段階;
前記収集されたCAN IDから予め定められた個数L(Lは1以上の整数)だけのCAN IDで構成されたシーケンスを生成する段階;および
前記シーケンスを両方向GPT2ネットワークに入力して前記シーケンスに対応する損失関数(loss function)の値を計算する段階を遂行するようにし、
許容されたCAN IDの個数がK(Kは1以上の整数)である場合、前記シーケンス内の許容されたCAN IDは大きさ順で整列されて0~K-1値に変換され、前記シーケンス内の許容されていないCAN IDはKに変換されて前記両方向GPT2ネットワークに入力されることを特徴とする、CAN BUSでの攻撃探知装置。
【請求項10】
前記両方向GPT2ネットワークはフォワード(forward)GPTモジュール、バックワード(backward)GPTモジュール、および完全連結階層(fully-connected layer)を含む、請求項9に記載のCAN BUSでの攻撃探知装置。
【請求項11】
前記損失関数の値を計算する段階で、前記シーケンスは本来の順序で前記フォワードGPTモジュールに入力され、前記シーケンスは逆の順序で前記バックワードGPTモジュールに入力される、請求項10に記載のCAN BUSでの攻撃探知装置。
【請求項12】
前記損失関数の値を計算する段階で、前記フォワードGPTモジュールに前記シーケンスに属する0番目のCAN IDからL-2番目のCAN IDまでのCAN IDに対応するエンベッディング(embedding)ベクトルが入力され、前記フォワードGPTモジュールは1番目のCAN IDからL-1番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力する、請求項11に記載のCAN BUSでの攻撃探知装置。
【請求項13】
前記損失関数の値を計算する段階で、前記バックワードGPTモジュールに前記シーケンスに属するL-1番目のCAN IDから1番目のCAN IDまでのCAN IDに対応するエンベッディングベクトルが入力され、前記バックワードGPTモジュールはL-2番目のCAN IDから0番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力する、請求項11に記載のCAN BUSでの攻撃探知装置。
【請求項14】
前記損失関数の値を計算する段階で、前記フォワードGPTの出力と前記バックワードGPTの出力が連接されて2E×L大きさの行列が生成され、前記2E×L大きさの行列は前記完全連結階層によって(K+1)×L大きさの行列に変換され、(K+1)×L大きさの行列はソフトマックスレイヤによって確率行列に変換される、請求項11に記載のCAN BUSでの攻撃探知装置。
【請求項15】
前記損失関数(loss function)は
【数34】
で定義され、前記フォワードGPTモジュール、前記バックワードGPTモジュール、および前記完全連結階層は前記損失関数の値を最小化するように訓練され、
【数35】
は訓練に使われるn番目の正常CAN ID sequenceのl番目の変数であり、
【数36】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)である、請求項10に記載のCAN BUSでの攻撃探知装置。
【請求項16】
前記少なくとも一つの命令は、前記プロセッサが:前記損失関数の値をしきい値と比較する段階;および前記損失関数の値が前記しきい値以上である場合、前記シーケンスに対応する区間を攻撃が存在する区間と判断する段階を追加で遂行するようにし、
前記損失関数(loss function)は
【数37】
で定義され、
【数38】
は探知対象シーケンスに該当するm番目のCAN ID sequenceのl番目の変数であり、
【数39】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)である、請求項9に記載のCAN BUSでの攻撃探知装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は車両ネットワーク(in-vehicle network)での攻撃探知方法および装置に関し、より具体的には、GPT(generative pretrained transformer 2)ディープラーニングネットワークを利用してCAN(controller area network)バス(bus)での攻撃を探知する方法および装置に関する。
【背景技術】
【0002】
Controller area network(CAN)busプロトコルは、一つの共有されたbusを利用して車両内の多様なコントローラ(controller)間の通信を支援するために導入された。しかし、CANはセキュリティを考慮せずに設計されたため、多様な攻撃の威嚇に露出されている。正常な車両運行状況でCAN busに連結されたコントローラは周期的な信号と非周期的な信号を伝送するため、CAN信号のidentifier(ID)を発生順の通りに収集してCAN IDのシーケンス(sequence)が構成されるのであれば、シーケンスは一定のパターンを有するであろう。したがって、正常な運行状況でのCAN IDシーケンスのパターンが学習されると、攻撃の発生によるCAN IDシーケンスパターンの変化が探知され得る。しかし、探知対象CAN IDシーケンスに非常に少ない数の攻撃IDのみが含まれている場合、これに対する探知は非常に困難であり得る。したがって、CANバス上での攻撃を探知するためには既存とは異なる探知技法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0003】
前記のような問題点を解決するための本発明の目的は、GPTディープラーニングネットワークを利用してCANバスでの攻撃を探知する方法および装置を提供することである。
【課題を解決するための手段】
【0004】
前述した本発明の目的を達成するための本発明の一実施例は、プロセッサ(processor)によって実行されるCAN BUSでの攻撃を探知する方法であって、発生順の通りにCAN IDを収集する段階;前記収集されたCAN IDから予め定められた個数L(Lは1以上の整数)だけのCAN IDで構成されたシーケンスを生成する段階;および前記シーケンスを両方向GPT2ネットワークに入力して前記シーケンスに対応する損失関数(loss function)の値を計算する段階を含み、許容されたCAN IDの個数がK(Kは1以上の整数)である場合、前記シーケンス内の許容されたCAN IDは大きさ順で整列されて0~K-1値に変換され、前記シーケンス内の許容されていないCAN IDはKに変換されて前記両方向GPT2ネットワークに入力され得る。
【0005】
前記両方向GPT2ネットワークはフォワード(forward)GPTモジュール、バックワード(backward)GPTモジュール、および完全連結階層(fully-connected layer)を含むことができる。
前記損失関数の値を計算する段階で、前記シーケンスは本来の順序で前記フォワードGPTモジュールに入力され、前記シーケンスは逆の順序で前記バックワードGPTモジュールに入力され得る。
【0006】
前記損失関数の値を計算する段階で、前記フォワードGPTモジュールに前記シーケンスに属する0番目のCAN IDからL-2番目のCAN IDまでのCAN IDに対応するエンベッディング(embedding)ベクトルが入力され、前記フォワードGPTモジュールは1番目のCAN IDからL-1番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力することができる。
前記損失関数の値を計算する段階で、前記バックワードGPTモジュールに前記シーケンスに属するL-1番目のCAN IDから1番目のCAN IDまでのCAN IDに対応するエンベッディングベクトルが入力され、前記バックワードGPTモジュールはL-2番目のCAN IDから0番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力することができる。
【0007】
前記損失関数の値を計算する段階で、前記フォワードGPTの出力と前記バックワードGPTの出力が連接されて2E×L大きさの行列が生成され、前記2E×L大きさの行列は前記完全連結階層によって(K+1)×L大きさの行列に変換され、(K+1)×L大きさの行列はソフトマックスレイヤによって確率行列に変換され得る。
【0008】
前記損失関数(loss function)は
【0009】
【数1】
で定義され、前記フォワードGPTモジュール、前記バックワードGPTモジュール、および前記完全連結階層は前記損失関数の値を最小化するように訓練され、
【0010】
【数2】
は訓練に使われるn番目の正常CAN ID sequenceのl番目の変数であり、
【0011】
【数3】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)であり得る。
【0012】
前記方法は前記損失関数の値をしきい値と比較する段階;および前記損失関数の値が前記しきい値以上である場合、前記シーケンスに対応する区間を攻撃が存在する区間と判断する段階をさらに含み、前記損失関数(loss function)は
【0013】
【0014】
【数5】
は探知対象シーケンスに該当するm番目のCAN ID sequenceのl番目の変数であり、
【0015】
【数6】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)であり得る。
【0016】
前述した本発明の目的を達成するための本発明の他の実施例は、CAN BUSでの攻撃を探知する装置であって、プロセッサ(processor);プロセッサを通じて実行される少なくとも一つの命令が保存されたメモリ(memory);および前記CAN BUSに連結されて通信を遂行する送受信機を含み、前記少なくとも一つの命令は、前記プロセッサが:前記送受信機を利用して前記CAN BUSから発生順の通りにCAN IDを収集する段階;前記収集されたCAN IDから予め定められた個数L(Lは1以上の整数)だけのCAN IDで構成されたシーケンスを生成する段階;および前記シーケンスを両方向GPT2ネットワークに入力して前記シーケンスに対応する損失関数(loss function)の値を計算する段階を遂行するようにし、許容されたCAN IDの個数がK(Kは1以上の整数)である場合、前記シーケンス内の許容されたCAN IDは大きさ順で整列されて0~K-1値に変換され、前記シーケンス内の許容されていないCAN IDはKに変換されて前記アンバンヒャンGPT2ネットワークに入力され得る。
【0017】
前記両方向GPT2ネットワークはフォワード(forward)GPTモジュール、バックワード(backward)GPTモジュール、および完全連結階層(fully-connected layer)を含むことができる。
【0018】
前記損失関数の値を計算する段階で、前記シーケンスは本来の順序で前記フォワードGPTモジュールに入力され、前記シーケンスは逆の順序で前記バックワードGPTモジュールに入力され得る。
【0019】
前記損失関数の値を計算する段階で、前記フォワードGPTモジュールに前記シーケンスに属する0番目のCAN IDからL-2番目のCAN IDまでのCAN IDに対応するエンベッディング(embedding)ベクトルが入力され、前記フォワードGPTモジュールは1番目のCAN IDからL-1番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力することができる。
【0020】
前記損失関数の値を計算する段階で、前記バックワードGPTモジュールに前記シーケンスに属するL-1番目のCAN IDから1番目のCAN IDまでのCAN IDに対応するエンベッディングベクトルが入力され、前記バックワードGPTモジュールはL-2番目のCAN IDから0番目のCAN IDに対応する前記エンベッディングベクトルと同一の次元を有するE次元のベクトルを出力することができる。
【0021】
前記損失関数の値を計算する段階で、前記フォワードGPTの出力と前記バックワードGPTの出力が連接されて2E×L大きさの行列が生成され、前記2E×L大きさの行列は前記完全連結階層によって(K+1)×L大きさの行列に変換され、(K+1)×L大きさの行列はソフトマックスレイヤによって確率行列に変換され得る。
【0022】
前記損失関数(loss function)は
【0023】
【数7】
で定義され、前記フォワードGPTモジュール、前記バックワードGPTモジュール、および前記完全連結階層は前記損失関数の値を最小化するように訓練され、
【0024】
【数8】
は訓練に使われるn番目の正常CAN ID sequenceのl番目の変数であり、
【0025】
【数9】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)であり得る。
【0026】
前記少なくとも一つの命令は、前記プロセッサが:前記損失関数の値をしきい値と比較する段階;および前記損失関数の値が前記しきい値以上である場合、前記シーケンスに対応する区間を攻撃が存在する区間と判断する段階を追加で遂行するようにし、前記損失関数(loss function)は
【0027】
【0028】
【数11】
は探知対象シーケンスに該当するm番目のCAN ID sequenceのl番目の変数であり、
【0029】
【数12】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)であり得る。
【発明の効果】
【0030】
本発明で提案された両方向GPT2ネットワークを利用したCANバスでの攻撃を探知する方法および装置を利用する場合、CAN IDシーケンス内に小さい数の攻撃IDが含まれる場合にも効果的に攻撃が探知され得る。したがって、CANバスが搭載された車両ネットワークのセキュリティが向上し得る。
【図面の簡単な説明】
【0031】
【
図1】一般的なCANデータフレーム(data frame)の構造を図示した概念図である。
【
図2】CANの現在の連結構造の問題点を説明するための概念図である。
【
図3】CAN IDを2進数に変換してこれを2進イメージ(binary image)と見なして探知を遂行する従来の方法を図示した概念図である。
【
図4】GPTネットワークで信号の流れを図示した概念図である。
【
図5】GPTネットワークに適用されるマスクセルフアテンション(Masked self-attention)の概念を説明するための概念図である。
【
図6】本発明の一実施例に係る両方向GPTネットワークの構造を説明するためのブロック図である。
【
図7】本発明の一実施例に係るCAN busでの攻撃探知のための両方向GPTネットワークの訓練手続きを説明するためのフローチャートである。
【
図8】本発明の一実施例に係る両方向GPTネットワークによる損失関数値の計算手続きを説明するためのフローチャートである。
【
図9】本発明の一実施例に係るCAN busでの攻撃探知のための両方向GPTネットワークを利用した攻撃探知手続きを説明するためのフローチャートである。
【
図10】本発明の一実施例に係るCAN busでの攻撃探知装置の構成を説明するためのブロック図である。
【
図11】攻撃CAN IDの注入間隔に対するempirical cumulative density function(ECDF)を図示したグラフである。
【
図12】CAN ID sequence内の攻撃IDの個数に対する経験的ECDFを図示したグラフである( L =256)。
【
図13】提案の技法で Lによるspoofing攻撃に対するreceiver operating characteristic(ROC)性能を示すグラフである。
【
図14】256個のCAN ID sequenceの長さに対して攻撃によるNLL値に対するECDFを示すグラフである( L =256)。
【
図15】攻撃探知技法によるspoofing攻撃に対するROC性能比較を図示したグラフである。
【発明を実施するための形態】
【0032】
本発明は多様な変更を加えることができ、多様な実施例を有することができるところ、特定実施例を図面に例示して詳細に説明しようとする。しかし、これは本発明を特定の実施形態に対して限定しようとするものではなく、本発明の思想および技術範囲に含まれるすべての変更、均等物乃至代替物を含むものと理解されるべきである。
【0033】
第1、第2等の用語は多様な構成要素を説明するのに使われ得るが、前記構成要素は前記用語によって限定されてはならない。前記用語は一つの構成要素を他の構成要素から区別する目的でのみ使われる。例えば、本発明の権利範囲を逸脱することなく第1構成要素は第2構成要素と命名され得、同様に第2構成要素も第1構成要素と命名され得る。および/またはという用語は複数の関連した記載された項目の組み合わせまたは複数の関連した記載された項目のうちいずれかの項目を含む。
【0034】
本出願の実施例で、「AおよびBのうち少なくとも一つ」は「AまたはBのうち少なくとも一つ」または「AおよびBのうち一つ以上の組み合わせのうち少なくとも一つ」を意味し得る。また、本出願の実施例で、「AおよびBのうち一つ以上」は「AまたはBのうち一つ以上」または「AおよびBのうち一つ以上の組み合わせのうち一つ以上」を意味し得る。
【0035】
或る構成要素が他の構成要素に「連結されて」いるとか「接続されて」いると言及された時には、その他の構成要素に直接的に連結されていたりまたは接続されていてもよいが、中間に他の構成要素が存在してもよいと理解されるべきである。反面、或る構成要素が他の構成要素に「直接連結されて」いるとか「直接接続されて」いると言及された時には、中間に他の構成要素が存在しないものと理解されるべきである。
【0036】
本出願で使った用語は単に特定の実施例を説明するために使われたものであり、本発明を限定しようとする意図ではない。単数の表現は文脈上明白に異なって意味しない限り、複数の表現を含む。本出願で、「含む」または「有する」等の用語は明細書上に記載された特徴、数字、段階、動作、構成要素、部品またはこれらを組み合わせたものが存在することを指定しようとするものであって、一つまたはそれ以上の他の特徴や数字、段階、動作、構成要素、部品またはこれらを組み合わせたものなどの存在または付加の可能性を予め排除しないものと理解されるべきである。
【0037】
異なって定義されない限り、技術的または科学的な用語を含んでここで使われるすべての用語は本発明が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有している。一般的に使われる辞書に定義されているような用語は、関連技術の文脈上有する意味と一致する意味を有するものと解釈されるべきであり、本出願で明白に定義しない限り、理想的または過度に形式的な意味で解釈されない。
【0038】
以下、添付した図面を参照して、本発明の好ましい実施例をより詳細に説明しようとする。本発明の説明において、全体的な理解を容易にするために図面上の同一の構成要素に対しては同一の参照符号を使用し、同一の構成要素に対して重複した説明は省略する。
【0039】
CAN bus通信は、車両内でホストコンピュータなしにECU(electronic control unit)間に効率的な通信が可能であるように設計された標準通信規格である。1983年Bosch社によって開発されたCAN bus通信は単純かつ効率的な構造を有しているため、1993年にISO 11898標準に制定された。CAN busは一つの装置からメッセージを伝送する場合、バスに連結されているすべての装置が受信できるbroadcasting通信方式で動作する。この時、CAN IDとメッセージで構成されたCANデータフレーム(data frame)が伝送され、CAN busに連結された任意の装置は自身に必要な特定CAN IDに該当するCANデータフレームのみを受信することができる。
【0040】
図1は一般的なCANデータフレーム(data frame)の構造を図示した概念図である。
【0041】
図1を参照すると、CANの通信プロトコルで使われるフレーム構造は、start of frame(SOF)、identifier(ID)field、remote transmission request(RTR)、control field、data field、cyclic redundancy check(CRC)、acknowledgement(ACK)、およびend of frame(EOF)で構成される。IDフィールドは11ビットを使うので、0x000から0x7FFまで最大2,048個のCAN IDが支援され得る。また、データフレームのCAN ID値によって伝送の優先順位が決定されるが、ID値が低いほど高い伝送優先権を有する。具体的には、互いに異なるCAN IDを使うECUが同時にメッセージを伝送する場合、自身が伝送するCAN IDと異なるECUが伝送するCAN IDをビット単位でモニタリングして相手方が自身より優先順位が高いメッセージを伝送するかどうかを確認することができる。これを通じて、優先順位が低いCANデータフレームを伝送するECUはCAN IDが伝送される区間の間優先順位が高いCANデータフレームが伝送されていることを感知することができ、該当CANデータフレームの伝送が完了するまで待機した後に自身のメッセージを伝送することによって衝突なしに伝送が可能である。
【0042】
CAN busプロトコルが開発される当時にはセキュリティに対する考慮が全くなされていながったため、暗号化や認証のような機能が全く含まれずに開発された。CAN busにはECUだけでなく、bluetooth、3G/4G、Wi-Fi、無線通信センサ、GPS、車両制御装置などの多くの装置が並列に連結される。すなわち、安全とは関係のない外部装置と安全に直結されたECUがセキュリティが全く考慮されていない一つの物理的なbusに連結されるため、外部からのCAN bus攻撃がさらに容易である。
【0043】
図2は、CANの現在の連結構造の問題点を説明するための概念図である。
図2を参照すると、速度と方向を制御する安全に直結されたECUがUSBとWi-Fiを制御する装置と一つのCAN busを通じて連結されている状況が例示される。もし外部通信を担当する装置を攻撃してCAN busに接近することができるのであれば、これを通じてbusに連結された他の装置に悪意のメッセージを伝送したり、正常なフレームを保存した後、これを再び再伝送して他の装置の正常な動作を邪魔することができるであろう。また、反復的なエラーメッセージを送ってCAN busシステムをshut-downさせたり、busを通じて車両を構成するそれぞれのECUに接近して車両の運転方向、速度などに対する情報を変えて故意に事故を誘発することもできるであろう。このような攻撃が可能な理由は、CANデータフレームに発信者情報が含まれないため承認を受けた装置のように装ってシステムに接近することが容易であるためである。
【0044】
正常な状況ではCAN busでは特定の順序でCAN IDが発生し、特定の順序で発生したCAN IDが付与されたCANデータフレームが伝送される。もし外部からの攻撃が存在する場合、非常に高い確率でCAN IDの発生順序に変化が発生するであろう。既存の研究ではCAN IDのシーケンス(sequence)をイメージに変換し、GAN(generative adversarial network)構造基盤の教師なし(unsupervised)学習を適用するか、CNN(convolutional neural network)構造基盤の教師あり(supervised)学習を適用する攻撃探知方法が提案された。しかし、既存の研究は次のような問題がある。CAN IDのシーケンス(Sequence)は整数値からなる順列であるにもかかわらず、既存の研究はイメージへの変換を通じての間接的な方式でCAN IDの発生順序の変化を感知する。例えば、従来技術では、存在しない(すなわち、許容されていない)CAN IDが既存のCAN IDとイメージ上ではほぼ類似するように見えるのであれば、これを探知できないこともある。
【0045】
図3は、CAN IDを2進数に変換してこれを2進イメージ(binary image)と見なして探知を遂行する従来の方法を図示した概念図である。
【0046】
図3を参照すると、従来の技術ではCAN IDを2進数に変換し、変換された2進数を2進イメージ(binary image)として認識して攻撃を探知する。しかし、この場合、CAN IDの発生順序の変化によってのみ攻撃が探知される。CAN IDを構成するビットのうち一つだけを変換しても許容されたCAN IDではないこともあるが、これに対する探知がよくできないこともあり得る。
【0047】
このような問題を解決するために本発明では、自然語学習を通じて文章を生成するGPT2(Generative Pretrained Transformer 2)ディープラーニング構造を利用してCAN busでの攻撃を探知する方法および装置が提案される。特に、探知時点を基準として過去と未来のCAN IDをすべて利用できるように、両方向(bi-directional)方式で結合された2個のGPT2モジュール(module)を利用する方法および装置が提案される。
【0048】
GPT2は自然語学習を通じて文章を生成するディープラーニング構造である。GPT2の訓練過程で、文章が与えられると、文章を構成する各単語は予め生成された単語帳から検索されたそれに該当する整数値に変換される。変換された整数はエンベッディングベクトル(embedding vector)に変換された後、トランスフォーマー(transformer)に順次入力され、トランスフォーマーは入力された単語の次の単語を予測する。予測された単語と実際の単語間のクロスエントロピー(cross entropy)を最小化するようにGPT2は訓練され得る。前述した訓練過程を経たGPT2は、入力された単語に対して単語帳に存在する単語のうち最も高い確率で登場する次の単語を予測することができる。また、予測された単語が再びGPT2に入力されるとその次の単語の予測が可能であるので、文章の生成が可能となる。このような文章生成機能を利用して記事の作成などにGPT2が活用され得る。
【0049】
図4は、GPT2ネットワークで信号の流れを図示した概念図である。
図4を参照すると、エンベッディングベクトルE
iに変換された単語トークン(token)が順次トランスフォーマー(transformer)に入力されると、最終レイヤ(layer)で該当単語の次に登場する単語に対する確率を出力する。
【0050】
図5は、GPT2ネットワークに適用されるマスクセルフアテンション(Masked self-attention)の概念を説明するための概念図である。
図5を参照すると、GPT2は一度に入力されたすべての単語を並列で処理するので、何の措置も取らない場合、後で登場する単語に対する情報が次の単語を予測するために使われ得る。このような問題を解決するために、マスクセルフアテンション(masked self-attention)技法が使われる。すなわち、次の単語を予測するために、直前まで入力された単語に対する情報を使うためにマスク(mask)を使う。このようなmasked self-attention技法は後述されるGPT2モジュールにCAN IDのシーケンスが入力される過程で適用され得る。
【0051】
攻撃探知のための訓練(training)手続き
以下では、本発明の一実施例に係る両方向GPT2ネットワークを利用したCANバスでの攻撃探知方法を遂行するための両方向GPT2ネットワークの構造とこれを利用した攻撃探知のための訓練手続きが説明される。
【0052】
図6は、本発明の一実施例に係る両方向GPT2ネットワークの構造を説明するためのブロック図である。
図6を参照すると、両方向GPT2ネットワークはフォワード(forward)GPTモジュール610、バックワード(backward)GPTモジュール620、連接部630、完全連結階層(fully-connected layer)の線形レイヤ(linear layer)640、ソフトマックス(softmax)関数(または階層)650で構成され得る。前記両方向GPTネットワークは本発明のCANバス攻撃探知装置に搭載される前に訓練(trained)され得る。以下では、両方向GPT2ネットワークの訓練手続きが後述される。
【0053】
図7は、本発明の一実施例に係るCAN busでの攻撃探知のための両方向GPTネットワークの訓練手続きを説明するためのフローチャートである。
【0054】
まず、CAN BUS上で受信されるCANデータフレームのCAN IDが発生順の通りに収集され得る(S710)。前記収集されたCAN IDから予め定められた個数L(Lは1以上の整数)のCAN IDで構成されたCAN IDシーケンスが生成され得る(S720)。
【0055】
この場合、許容されたCAN IDの個数がK(Kは1以上の整数)である場合、前記シーケンス内の許容されたCAN IDは大きさ順で整列されて0~K-1値に変換され、前記シーケンス内の許容されていないCAN IDはすべてKに変換され得る。
【0056】
例えば、K=4であるとき許容されたCAN IDが0x003、0x008、0x010、0x013であれば、これらはそれぞれ0、1、2、3に変換され得る。したがって、段階(S710)で収集されたCAN IDの中で許容されたCAN IDそれぞれは0~K-1値の中の一つの値に変換され得る。一方、段階(S710)で収集されたCAN IDの中で許容されていないCAN IDはすべて整数値Kに変換され得る。例えば、シーケンス内に含まれた許容されていないCAN ID(例えば、0x000、0x015)はすべて4に変換され得る。
【0057】
次に、前記CAN IDシーケンスが両方向GPT2ネットワークに入力されて前記シーケンスに対応する損失関数(loss function)の値が計算され得る(S730)。
【0058】
図8は、本発明の一実施例に係る両方向GPT2ネットワークによる損失関数値の計算手続きを説明するためのフローチャートである。
【0059】
図8を参照すると、段階(S720)のシーケンスは本来の順序で前記フォワードGPTモジュール610に入力され、逆の順序で前記バックワードGPTモジュール620に入力され得る(S810)。
【0060】
具体的には、L個のCAN IDのシーケンスが本来の順序でフォワードGPTモジュール610に入力され得る。また、L個のCAN IDのシーケンスは逆の順序でバックワードGPTモジュール620に入力され得る。より具体的には、下記の数学式(1)のように、前記フォワードGPTモジュール610に前記シーケンスに属する0番目のCAN IDからL-2番目のCAN IDまでのCAN IDに対応するエンベッディングベクトルが入力され、1番目のCAN IDからL-1番目のCAN IDに対応するE次元のベクトルが出力され得る(S820)。
【0061】
【数13】
また、下記の数学式(2)のように、バックワードGPTモジュール620に前記シーケンスに属するL-1番目のCAN IDから1番目のCAN IDまでのCAN IDに対応するエンベッディングベクトルが発生の逆の順序で入力され、L-2番目のCAN IDから0番目のCAN IDに対応するE次元のベクトルが出力され得る(S8730)。
【0062】
【0063】
【0064】
【数16】
はエンベッディングベクトルの次元と同一のE次元を有するベクトルである。したがって、フォワードGPTモジュールの出力とバックワードGPTモジュールの出力はそれぞれE×(L-1)大きさの行列である。
【0065】
フォワードGPTモジュール610の出力とバックワードGPTモジュール620の出力は、連接部630を通じて連接されて下記の数学式(3)のような2E×L大きさの行列が生成され得る(S840)。
【0066】
【数17】
ここで、バックワードGPTモジュール620の出力は再び逆順で変換されてフォワードGPTモジュール610の出力順序と一致され、2E×L大きさの行列生成のためにゼロベクトル(zero-vector)0が挿入され得る。
【0067】
前記数学式(3)の行列は完全連結階層640に入力されて(K+1)×L大きさの行列に変換され、ソフトマックスレイヤ(softmax layer)を経て下記の数学式(4)の確率行列として出力され得る(S850)。ここで、確率行列はシーケンスを構成するCAN IDそれぞれが0、整数値で変換された許容されたCAN IDのうち一つ(すなわち、0~K-1)、または許容されていないCAN IDのうち一つ(すなわち、K)である確率を表現する行列である。
【0068】
【数18】
前記確率行列を利用して下記の数学式(5)の損失関数が計算され得る(S860)。再び
図7を参照すると、前記フォワードGPT610、前記バックワードGPT620、および前記完全連結階層630に対する訓練が下記の数学式(5)(損失関数)を最小化するように進行され得る(S740)。
【0069】
【0070】
【数20】
は訓練に使われるn番目の正常CAN ID sequenceのl番目の変数であり、
【0071】
【数21】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)である。
【0072】
攻撃探知手続き
以下では、本発明の一実施例に係る両方向GPT2ネットワークを利用したCAN BUSでの攻撃探知手続きが説明される。攻撃探知では、前述された訓練手続きによって訓練された両方向GPT2ネットワークが利用され得る。基本的に、両方向GPT2ネットワークを利用した攻撃探知手続きは前述された訓練手続きに類似している。
【0073】
図9は、本発明の一実施例に係るCAN busでの攻撃探知のための両方向GPT2ネットワークを利用した攻撃探知手続きを説明するためのフローチャートである。
【0074】
下記の数学式(6)のように定義された予め設定されたL個のCAN IDを含み、探知対象区間に対応するm番目のCAN IDシーケンス(Sequence)が訓練された両方向GPT2ネットワークに入力され得る(S910)。
【0075】
【数22】
この場合、前述された訓練手続きでと同様に、許容されたCAN IDの個数がK(Kは1以上の整数)である場合、前記シーケンス内の許容されたCAN IDは大きさ順で整列されて0~K-1値に変換され、前記シーケンス内の許容されていないCAN IDはKに変換されて前記両方向GPT2ネットワークに入力され得る。
【0076】
例えば、K=4であるとき許容されたCAN IDが0x003、0x008、0x010、0x013であれば、これらはそれぞれ0、1、2、3に変換され得る。したがって、シーケンスに含まれたCAN IDの中で許容されたCAN IDそれぞれは0~K-1値の中の一つの値に変換され得る。一方、シーケンスに含まれたCAN IDの中で許容されていないCAN IDはすべて整数値Kに変換され得る。例えば、シーケンス内に含まれた許容されていないCAN ID(例えば、0x000、0x015)はすべて4に変換され得る。
【0077】
訓練された両方向GPT2ネットワークでは前述された段階(S810~S860)を経て下記の数学式(7)の損失関数の値が計算され得る。ここで、数学式(7)で定義される損失関数の値は、入力されたシーケンスの異常の有無を判断するという点で異常値スコア(anomaly score)と指称され得る。
【0078】
【0079】
【数24】
は探知対象区間に対応するm番目のCAN ID sequenceのl番目の変数であり、
【0080】
【数25】
に対する実際に発生したCAN ID(すなわち、グランドトゥルース(ground truth値)である。
【0081】
計算された異常値スコアがしきい値Tを比較して探知対象シーケンスの正常の有無が判定され得る(S930)。具体的には、異常値スコアがしきい値Tより大きければ探知対象シーケンスに対応する区間は攻撃が存在する区間と判定され、異常値スコアがしきい値Tより低ければ探知対象シーケンスに対応する区間は正常区間と判定され得る。
【0082】
追加的に、判定された区間に対する和集合を通じて下記の数学式(8)~数学式(10)のように最終攻撃区間I*が決定され得る。
【0083】
【数26】
攻撃探知装置の構成
本発明の一実施例に係るCAN busでの攻撃探知装置は車両内でCAN BUSに連結された装置であり得る。例えば、車両のヘッドユニット(head unit)または車両ネットワーク(in-vehicle network)のゲートウェイ(gateway)が前記攻撃探知装置として動作することができる。または車両のヘッドユニットまたはゲートウェイが前記攻撃探知装置を含むように構成され得る。一方、前記攻撃探知装置は車両の内部または外部に存在する診断(diagnostic)装置として具現されたり診断装置に含まれ得る。
【0084】
図10は、本発明の一実施例に係るCAN busでの攻撃探知装置の構成を説明するためのブロック図である。
図10を参照すると、攻撃探知装置1000は少なくとも一つのプロセッサ1010、メモリ1020およびCAN busと連結されて通信を遂行する送受信装置1030を含むことができる。また、攻撃探知装置1000は入力インターフェース装置1040、出力インターフェース装置1050、保存装置1060等をさらに含むことができる。攻撃探知装置1000に含まれたそれぞれの構成要素は装置内のバス(bus)1070により連結されて通信を遂行できる。ただし、攻撃探知装置1000に含まれたそれぞれの構成要素は共通バス1070ではなく、プロセッサ1010を中心に個別インターフェースまたは個別バスを通じて連結されてもよい。例えば、プロセッサ1010はメモリ1020、送受信装置1030、入力インターフェース装置1040、出力インターフェース装置1050および保存装置1060の中で少なくとも一つと専用インターフェースを通じて連結されてもよい。
【0085】
プロセッサ1010はメモリ1020および保存装置1060のうち少なくとも一つに保存されたプログラム命令(program command)を実行することができる。プロセッサ1010は中央処理装置(central processing unit、CPU)、グラフィック処理装置(graphics processing unit、GPU)、または本発明の実施例に係る方法が実行される専用のプロセッサを意味し得る。メモリ1020および保存装置1060それぞれは揮発性保存媒体および不揮発性保存媒体のうち少なくとも一つで構成され得る。例えば、メモリ1020は読み取り専用メモリ(read only memory、ROM)およびランダムアクセスメモリ(random access memory、RAM)のうち少なくとも一つで構成され得る。
【0086】
前述された両方向GPT2ネットワークは訓練された状態で前記メモリ1020および/または保存装置1060に保存され得る。または前述された両方向GPT2ネットワークは攻撃探知装置1000に搭載された状態で訓練されてもよい。
【0087】
前述された両方向GPT2ネットワークは攻撃探知装置1000に搭載された状態で訓練される場合、前記プロセッサ1010は
図7および
図8を参照して説明された段階を遂行するための命令語を実行して両方向GPT2ネットワークを訓練させることができる。
【0088】
また、前記プロセッサ1010は訓練された両方向GPTネットワークを利用してCAN IDシーケンスに対する正常の有無を
図7および
図8を参照して説明された段階を遂行するための命令語を実行して判定することができる。
【0089】
提案された方法の性能検証
提案された探知方法の性能検証のために、2020年式Hyundai Avante CN7車両のCAN bus信号を収集して使った。正常CAN bus信号の有効なCAN IDの個数は総90個である。訓練のために約1.8時間の間市内を走行して約15,900,000個のCAN ID sequenceを収集したし、評価のために約0.34時間の間攻撃を遂行して約3,300,000個のCAN ID sequenceを収集した。評価データを収集する過程で対象車両に対する攻撃として、flooding、spoofing、replay、そしてfuzzingの攻撃を施行した。具体的な攻撃遂行方式は次の通りである。Flooding攻撃では最も高い優先順位を有するCAN ID 0x000をCAN busに約154,200個を注入した。Spoofing攻撃では許容されたCAN ID中、0x366と0x553を選定して約7,800個を注入した。Replay攻撃では正常CAN bus信号を一定時間の間約47,600個を記録した後、これを再び注入した。Fuzzing攻撃では無作為でCAN IDを生成して約89,900個を注入した。表1は訓練および評価データの構成を要約した。
【0090】
【表1】
提案された方法は別途の言及がない限り、CAN ID sequence長さL=256、word embeddingベクトルの次元E=128、forwardおよびbackward GPTのmulti-head個数H=8、layer個数G=6、各layerに0.1のdropout確率を適用した。訓練は前述した正常CAN bus信号で構成された訓練データのみを利用して遂行した。この時、mini-batch大きさ32を使ったし、Adam最適化アルゴリズムを利用して10 epoch間訓練を遂行した。評価過程では長さがLであるCAN ID sequence内に一つ以上の攻撃CAN IDが存在する場合、これを攻撃と判定した。表2は提案技法のhyperparameterを要約した。
【0091】
【表2】
性能評価のための性能指標として、true positive rate(TPR)とfalse positive rate(FPR)を使う。TPRはすべての攻撃CAN ID sequenceの中で攻撃(i.e.、true positives)であると正しく判定した比率であり、FPRはすべての正常CAN ID sequenceの中で攻撃(i.e.、false positive)であると誤判定した比率である。また、このような性能指標に基づいて種々のthreshold値を使う異常探知システムの性能を視覚的に見せるためにreceiver operating characteristics(ROC)曲線を使う。ROC曲線は任意のthreshold値に該当するFPR値とTPR値をそれぞれ2次元グラフの横軸と縦軸に表示する。互いに異なる技法のROC性能を比較するために、area under the curve(AUC)値を利用する。AUCの値は、与えられたROC曲線で下記の領域を正規化して計算するため完ぺきな性能に対するAUC値は1が出ることになり、一般的な性能の探知機は0から1の間の多様なAUC値を有することになる。したがって、比較する探知機のAUC値が高いほどより高い性能を有するものと考えることができる。因みに、下記の数学式(11)のように定義される精密度(precision)と再現率(recall)(すなわち、TPR)の調和平均であるF-measure)を性能評価指標として使う。
【0092】
【数27】
ここで、精密度は攻撃であると判定されたCAN ID sequenceの中で実際の攻撃CAN ID sequenceの比率である。F-measureはその値が大きいほど探知性能が高いと評価する。
【0093】
図11は、攻撃CAN IDの注入間隔に対するempirical cumulative density function(ECDF)を図示したグラフである。
【0094】
例えば、flooding攻撃の場合、注入間隔が3であり、これはCAN busを通じて伝送されるCAN data frame 3個のうち1個がflooding攻撃によるものであるという意味である。Flooding、fuzzing、replay攻撃の場合、攻撃の特性上、攻撃CAN IDの注入間隔が10以下であることを確認することができる。したがって、攻撃判定のためのCAN ID sequenceの長さであるLが大きくなくても十分に多数の攻撃IDが存在するであろうため、該当攻撃に対する探知性能は減少しないものと予想される。それに反して、spoofing攻撃は2個の有効CAN IDのみを使って攻撃を遂行するので、攻撃IDの注入間隔が相対的に非常に大きい。具体的には、約12%程度のspoofing攻撃の注入間隔が100以上であることを見ることができる。したがって、L=100である場合、約12%程度のspoofing攻撃は該当CAN ID sequence内にただ一つの攻撃IDが存在する。
【0095】
図12は、CAN ID sequence内の攻撃IDの個数に対する経験的ECDFを図示したグラフである(L=256)。
【0096】
Spoofing攻撃は、CAN ID sequence内に少なくとも1個~最大11個程度の非常に少ない数の攻撃IDが存在することが分かる。特に、全体spoofing CAN ID sequenceのうち5%程度において2個以下のspoofing攻撃が含まれていることが分かる。すなわち、無視できない程度に多いspoofing CAN ID sequenceで過度に少ない数のspoofing攻撃が含まれているため、その探知性能が劣化されるものと予想される。
【0097】
適切なCAN ID sequence長さLを決定するために、
図13は提案の技法でLによるspoofing攻撃に対するreceiver operating characteristic(ROC)性能を示すグラフである。前期にて予想したように、L=64と128である場合、該当sequence内にspoofing攻撃の個数が過度に少ないため、探知性能が劣化されることが分かる。それに反して、L=256である場合、ほとんど2個以上のspoofing攻撃が存在するので探知性能が向上することが分かる。また、L=256でのAUC性能はL=64とL=128に比べて、それぞれ約6.9%と約1.5%向上した。特に言及しない限り、以降の結果ではL=256を適用する。
【0098】
図14は、256個のCAN ID sequenceの長さに対して攻撃によるNLL値に対するECDFを示すグラフである(L=256)。
【0099】
Flooding、fuzzing、replay攻撃の場合、正常に比べてNLL値が非常に大きい傾向を有するが、これはCAN ID sequence内に非常に多くの攻撃IDが存在するためである。しかし、spoofing攻撃は相対的に少ない数の攻撃IDを含むため、NLL値が相対的に低いことが分かる。
【0100】
以下では、提案された方法と既存の攻撃探知技法との性能を比較する。比較する最初の攻撃探知技法として2nd order Markov-chainmodelをbi-directionalに結合したbi-Markov modelを考慮する。この技法では、訓練データを利用してCAN ID sequenceに対するforwardおよびbackwardに対する2nd order transition probabilityを推定し、これを利用して評価sequenceに対するlog probabilityを計算して攻撃の有無を判定する。2番目の比較技法は、提案技法とは異なってGPT moduleをforward方向にのみ適用した技法を考慮する。この技法は、単一方向GPT moduleのみを使うため、提案技法との複雑度を同様に維持するためにGPT networkのlayer数Gを12として使う。3番目の比較技法は提案技法に使われたGPT moduleの代わりにLSTM moduleを使ったbi-directional LSTM技法を考慮する。この技法では、forwardおよびbackward LSTM moduleに提案技法と同一の次元(E=128)のword embeddingベクトルを適用し、各LSTM moduleはhidden stateおよびcell state次元が128であるLSTM cell6個を積層して使った。
【0101】
図15は、攻撃探知技法によるspoofing攻撃に対するROC性能比較を図示したグラフである。
【0102】
AUC性能は予想した通り、提案技法の性能が最小約1.0%~最大約10%程度向上することが分かる。すなわち、既存のGPT networkを適用する技法に比べて、提案技法のようにforwardおよびbackward両方向にGPT moduleを結合すると、同一の複雑度を維持しながらも性能を向上させることができるという意味である。また、LSTM moduleに比べてGPT moduleを両方向に結合するものの性能がさらに優秀であることが分かる。
【0103】
表3は攻撃探知技法によるspoofing攻撃に対するTPR性能を比較する。提案技法はFPR=0.5%から、比較技法に比べてTPRが最小約44.3%~最大約207.4%まで向上することが分かる。
【0104】
【表3】
表4はFPR=0.5%から、攻撃探知技法によるfalse negative rate(FNR)(すなわち、1-TPR)性能を示す。
【0105】
【表4】
ここで、FNRは実際の攻撃の中で正常であると誤って判断した比率を示すが、低いほど性能がよいことを意味する。Spoofing攻撃に対するFNR性能は、他の比較技法に比べて最小約9%~最大約17.9%まで減少することが分かる。F-measureの場合、spoofing攻撃に対して最小約23.2%~最大約108.6%まで性能が向上することが分かる。
【0106】
本発明に係る方法は、多様なコンピュータ手段を通じて実行され得るプログラム命令の形態で具現されてコンピュータ読み取り可能媒体に記録され得る。コンピュータ読み取り可能媒体はプログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含むことができる。コンピュータ読み取り可能媒体に記録されるプログラム命令は本発明のために特別に設計されて構成されたものであるか、コンピュータソフトウェア当業者に公知となっていて使用可能なものであってもよい。
【0107】
コンピュータ読み取り可能媒体の例には、ロム(rom)、ラム(ram)、フラッシュメモリ(flash memory)等のようにプログラム命令を保存し遂行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラ(compiler)により作られるような機械語コードだけでなく、インタープリタ(interpreter)等を使ってコンピュータによって実行され得る高級な言語コードを含む。前述したハードウェア装置は本発明の動作を遂行するために少なくとも一つのソフトウェアモジュールで作動するように構成され得、その逆も同一である。
【0108】
以上、実施例を参照して説明したが、該当技術分野の熟練した当業者は、下記の特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で本発明を多様に修正および変更できることが理解できるであろう。