(57)【特許請求の範囲】
【請求項１】
グローバーの検索アルゴリズムを用いて、複数のウイルス定義データの中からコンテンツに含まれるウイルス定義データを検索する検索処理を繰り返し実行し、
前記検索処理の結果に偏りが存在する場合は、最も多く検索されたウイルス定義データと対応するウイルスを前記コンテンツに含まれるウイルスとして端末装置に通知し、前記検索処理の結果に偏りが存在しない場合は、前記コンテンツのデータにウイルスが含まれていない旨を前記端末装置に通知する
ことを特徴とする検出装置。
【請求項２】
予めウイルス定義データに対応する複数の固有状態を重ね合わせ状態で保持し、
前記重ね合わせ状態の固有状態の中に端末装置から受信したコンテンツに含まれるデータに対応する前記ウイルス定義データの固有状態が存在する場合は、前記重ね合わせ状態の中からコンテンツデータに対応する固有状態の確率振幅を反転させるユニタリ演算子を生成し、
前記生成したユニタリ演算子と、各固有状態の確率振幅の平均値を基準として各固有状
態の確率振幅を反転させる拡散変換とを、前記重ね合わせ状態の固有状態に対して繰り返
し適用し、
前記生成したユニタリ演算子と拡散変換とを繰り返し適用した前記重ね合わせ状態の固
有状態を観測し、
前記観測した結果得られた固有状態と対応するウイルス定義データと対応するウイルスを、前記コンテンツに含まれるウイルスとして前記端末に通知する
ことを特徴とする検出装置。
【請求項３】
検出装置が実行する検出方法であって、
検出装置が有する制御部が、
グローバーの検索アルゴリズムを用いて、所定の記憶装置から読み出した複数のウイルス定義データの中からコンテンツに含まれるウイルス定義データを検索する検索処理を繰り返し実行し、
前記検索処理により検索されたウイルス定義データを示す情報を前記所定の記憶装置に登録し、
前記所定の記憶装置に登録された情報が示すウイルス定義データに偏りが存在する場合は、最も多く検索されたウイルス定義データと対応するウイルスを前記コンテンツに含まれるウイルスとして端末装置に通知し、前記所定の記憶装置に登録された情報が示すウイルス定義データに偏りが存在しない場合は、前記コンテンツのデータにウイルスが含まれていない旨を前記端末装置に通知する
処理を実行することを特徴とする検出方法。
【請求項４】
検出装置が有するコンピュータに、
グローバーの検索アルゴリズムを用いて、所定の記憶装置から読み出した複数のウイルス定義データの中からコンテンツに含まれるウイルス定義データを検索する検索処理を繰り返し実行し、
前記検索処理により検索されたウイルス定義データを示す情報を前記所定の記憶装置に登録し、
前記所定の記憶装置に登録された情報が示すウイルス定義データに偏りが存在する場合は、最も多く検索されたウイルス定義データと対応するウイルスを前記コンテンツに含まれるウイルスとして端末装置に通知し、前記所定の記憶装置に登録された情報が示すウイルス定義データに偏りが存在しない場合は、前記コンテンツのデータにウイルスが含まれていない旨を前記端末装置に通知する
処理を実行させるための検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検出装置、検出方法および検出プログラムに関する。
【背景技術】
【０００２】
従来、メールやウェブページ等、配信されたコンテンツに含まれるウイルスを検出するウイルス検出技術が知られている。このようなウイルス検出技術の一例として、ウイルスを検出するためのパターンデータを予め保持し、コンテンツのデータとパターンデータとのマッチング結果に基づいて、ウイルスの検出を行う技術が知られている。しかしながら、コンテンツのデータとパターンデータとをマッチングした場合には、検索対象となるウイルスの数が増大するに従って、処理に要する時間が増大してしまう。
【０００３】
一方で、量子力学的な状態の重ね合わせを用いることで、従来の計算装置では実現できない規模の並列性を実現する量子計算の技術が研究されている。例えば、このような量子計算の技術として、複数の入力を重ね合わせ状態とすることで、所定の条件に対する最適解や入力された情報が有する周期等を従来の計算装置よりも高速に求める技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５３５４２３３号公報
【非特許文献】
【０００５】
【非特許文献１】「量子力学を使った情報処理」、加藤  豪、人工知能  2014年  05月号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ウイルス検出技術を再現する量子計算の手法については、これまで提案されていなかった。このため、コンテンツからウイルスを検出する場合は、多くの時間や計算資源が必要となる。
【０００７】
本願は、上記に鑑みてなされたものであって、検索対象となるウイルスの数が増大した場合にも、処理に要する時間や計算資源の増大を軽減する検出装置、検出方法および検出プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願に係る検出装置は、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、コンテンツに含まれるウイルスのデータに対応する複数の固有状態を重ね合わせ状態で保持し、端末装置からコンテンツを受信した場合は、前記重ね合わせ状態の固有状態のうち、前記コンテンツに含まれるウイルスのデータに対応する固有状態の確率振幅を反転させるユニタリ演算子を生成し、前記生成したユニタリ演算子と、各固有状態の確率振幅の平均値を基準として各固有状態の確率振幅を反転させる拡散変換とを、前記重ね合わせ状態の固有状態に対して繰り返し適用し、前記生成したユニタリ演算子と拡散変換とを繰り返し適用した前記重ね合わせ状態の固有状態を観測し、前記観測した結果得られた固有状態と対応するデータのウイルスを、前記コンテンツに含まれるデータとして前記端末装置に通知することを特徴とする。
【発明の効果】
【０００９】
実施形態の一態様によれば、検索対象となるウイルスの数やコンテンツのデータサイズが増大した場合にも、処理に要する時間や計算資源の増大を軽減できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係る検出処理の一例を示す図である。
【図２】図２は、実施形態に係る検出装置が有する機能構成の一例を示す図である。
【図３】図３は、実施形態に係るウイルス定義データデータベースの一例を示す図である。
【図４】図４は、実施形態に係る検出装置が実行する量子計算の一例を説明する図である。
【図５】図５は、実施形態に係る検出装置が実行する検出処理の流れを説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本願に係る検出装置、検出方法および検出プログラムを実施するための形態（以下、「実施形態」と記載する。）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る検出装置、検出方法および検出プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔実施形態〕
【００１２】
〔１．検出処理〕
まず、図１を用いて、実施形態に係る検出処理の一例について説明する。図１は、実施形態に係る検出処理の一例を示す図である。なお、以下の説明では、検出処理の一例として、端末装置１００から受信したメールやメールに添付された添付ファイルにコンピュータウイルス（以下、ウイルスと記載する。）が含まれているか否かを判定する処理について説明するが、実施形態は、これに限定されるものではない。例えば、検出装置１０は、動画像、画像、実行データ等の任意のコンテンツにウイルスが含まれているか否かを判定してもよい。また、以下の説明では、メールやメールに添付された添付ファイルを単にメールと総称する場合がある。
【００１３】
図１に示すように、検出装置１０は、図示しないネットワーク（例えば、インターネット）を介して、端末装置１００と通信可能に接続されており、端末装置１００からメールのデータであるメールデータを受信すると、受信したメールのデータ（以下、メールデータと記載する）からウイルスの検出を行い、検出結果を端末装置１００へと返送する。
【００１４】
端末装置１００は、検出装置１０と通信可能な情報処理装置であり、例えば、利用者が使用するスマートデバイス等の端末装置であり、図示を省略した移動通信網等を介してメールを取得する。このような場合、端末装置１００は、取得したメールを検出装置１０に送信し、送信したメールにウイルスが含まれている場合は、メールを破棄し、メールにウイルスが含まれていない場合は、メールの表示や添付ファイルの展開等を実行する。
【００１５】
一方、検出装置１０は、端末装置１００からメールを受信すると、受信したメールからウイルスの検出を行い、検出結果を端末装置１００へと送信する。例えば、検出装置１０は、検出対象となるウイルスのデータに含まれるビット列をウイルス定義データとして記憶している。そして、検出装置１０は、メールデータにウイルス定義データが含まれているか否かを判定し、含まれている場合には、ウイルスが検出された旨を端末装置１００に通知する。一方、検出装置１０は、メールデータにウイルス定義データが含まれていない場合は、ウイルスが検出されなかった旨を端末装置１００に通知する。
【００１６】
ここで、検出装置１０は、検出対象となるウイルスごとにウイルス定義データを記憶しており、各ウイルス定義データがメールデータに含まれているか否かを判定する。このため、検出装置１０は、検出対象となるウイルスの数が増加するに従って、ウイルスの検出に要する時間を増大させてしまう。
【００１７】
そこで、検出装置１０は、以下の検出処理を実行する。まず、検出装置１０は、複数の値の重ね合わせ状態を保持することができる量子ビットを操作して、検出対象であるウイルス定義データのそれぞれに対応する固有状態を重ね合わせ状態で保持する。また、検出装置１０は、端末装置１００からメール等のコンテンツを受信した場合は、重ね合わせ状態の固有状態のうち、コンテンツに含まれる固有状態の確率振幅を反転させるユニタリ演算子を生成する。また、検出装置１０は、生成したユニタリ演算子と、各固有状態の確率振幅の平均値を基準として各固有状態の確率振幅を反転させる拡散変換とを、重ね合わせ状態の固有状態に対して繰り返し適用する。すなわち、検出装置１０は、いわゆるＧｒｏｖｅｒ  Ｉｔｅｒａｔｉｏｎを繰り返し適用する。
【００１８】
そして、検出装置１０は、Ｇｒｏｖｅｒ  Ｉｔｅｒａｔｉｏｎを繰り返し適用した重ね合わせ状態の固有状態を観測することで、メール等のコンテンツに含まれる可能性が最も高いウイルス定義データと対応する固有状態を観測値として取得する。その後、検出装置１０は、取得した観測値と対応するウイルス定義データにより検出されるウイルスを端末装置１００に通知する。
【００１９】
以下、図１を用いて、検出処理の一例を流れに沿って説明する。まず、図１に示した例において、検出装置１０は、量子ビットを操作して、ｊ個（ｊ≧２）のウイルス定義データ１〜ｊの重ね合わせ状態を保持する（ステップＳ１）。より具体的には、検出装置１０は、各ウイルス定義データに１〜ｊまでの番号を付与し、各番号を示す固有状態の重ね合わせ状態を生成する。
【００２０】
このような処理を実行した場合、固有状態の重ね合わせ状態は、以下に示す式（１）により示される。ここで、式（１）に示す「｜ψ＞」は、ブラケット表記で表した固有状態の重ね合わせ状態である。また、式（１）に示す「｜ｊ＞」は、ブラケット表記で表した各固有状態である。
【００２１】
【数１】
0006403647.tif 000002
【００２２】
続いて、検出装置１０は、端末装置１００からメールデータを受信する（ステップＳ２）。かかる場合、検出装置１０は、グローバーの検索アルゴリズムを利用して、重ね合わせ状態にした複数の固有状態のうち、メールデータに含まれるウイルス定義データと対応する固有状態の確率振幅を増大させる（ステップＳ３）。
【００２３】
以下ステップＳ３に含まれる処理について具体的に説明する。まず、検出装置１０は、メールデータに含まれるウイルス定義データの確率振幅を反転させるオラクルを生成する（ステップＳ４）。具体的には、検出装置１０は、以下の式（２）により示させるオラクルを生成する。ここで、式（２）に示す「ＩＸ０」は、生成するオラクルを示し、「｜ｘ＞」は、ブラケット表記で表した各固有状態を示し、「｜ｘ０＞」は、メールデータに含まれるウイルス定義データを示す固有状態である。
【００２４】
【数２】
0006403647.tif 000003
【００２５】
すなわち、式（２）に示すオラクルは、メールデータにウイルス定義データを示す固有状態の確率振幅の正負を反転させ、他の固有状態の確率振幅をそのままに保持する演算子である。ここで、オラクルは、検索条件に基づいて各固有状態を評価するサブルーチンとして働くユニタリ演算子により実現される。より具体的には、オラクルは、固有状態の重ね合わせ状態を収束させずに、メールデータに含まれるウイルス定義データと対応する固有状態の確率振幅のみを反転させるユニタリ行列である。
【００２６】
例えば、式（２）に示すオラクルは、以下の式（３）の右辺に示すユニタリ行列により実現される。
【００２７】
【数３】
0006403647.tif 000004
【００２８】
続いて、検出装置１０は、重ね合わせ状態の固有状態に拡散変換を適用する（ステップＳ５）。具体的には、検出装置１０は、以下の式（４）で示される拡散変換「Ｄ」を重ね合わせ状態の固有状態に適用する。なお、以下の説明では、拡散変換「Ｄ」を実現する行列、すなわち、以下の式（４）で示される行列Ｄを拡散行列と記載する場合がある。
【００２９】
【数４】
0006403647.tif 000005
【００３０】
また、検出装置１０は、ステップＳ４、Ｓ５からなる変換「Ｇ」を十分な回数繰り返す（ステップＳ６）。例えば、式（３）で示されるオラクルと、式（４）で示される拡散変換「Ｄ」とを順番に適用する変換「Ｇ」は、以下の式（５）で表される。
【００３１】
【数５】
0006403647.tif 000006
【００３２】
ここで、式（５）に示させる拡散変換は、各固有状態の確率振幅の平均値を基準として、各確率振幅の向きを揃える演算を実現する。この結果、式（４）によって正負が反転されていた固有状態の確率振幅の値が増加し、他の固有状態の確率振幅の値が減少する。そこで、検出装置１０は、式（１）で示す重ね合わせ状態の固有状態に、式（５）に示す変換「Ｇ」を所定の回数だけ適用することで、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅の値を増大させる。
【００３３】
上述した処理の結果、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅の値が他の確率振幅の値よりも大きい値となる。ここで、重ね合わせ状態の固有状態を所定の観測関数に従って観測すると、各固有状態が、確率振幅の絶対値の二乗で示させる確率で観測される。このため、メールデータにウイルスが含まれる場合は、そのウイルスと対応するウイルス定義データを示す固有状態が観測値として観測される可能性が高い。そこで、検出装置１０は、重ね合わせ状態の固有状態の系を観測し、メールデータに含まれる可能性が高いウイルス定義データを検出する（ステップＳ７）。
【００３４】
より具体的には、検出装置１０は、観測の結果得られた観測値と対応するウイルス定義データを特定する。そして、検出装置１０は、特定したウイルス定義データにより検出されるウイルスを検出結果として端末装置１００に通知する（ステップＳ８）。
【００３５】
ここで、式（５）に示す変換「Ｇ」を多く適用しすぎると、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅の値が徐々に低下してしまう。そこで、検出装置１０は、ウイルス定義データの数「ｊ」の平方根と円周率との積を４で除算した値に最も近い整数の値を算出し、算出した値と同じ回数だけ、変換「Ｇ」を適用する。
【００３６】
なお、かかる繰り返しの回数は、メールデータに含まれるウイルスの数が１つである場合の回数であるが、例えば、メールデータにｋ個のウイルスが含まれる場合は、ウイルス定義データの数「ｊ」をｋで除算した値の平方根と円周率との積を４で除算した値に最も近い整数の値を算出し、算出した値と同じ回数だけ、変換「Ｇ」を適用すればよい。また、メールデータに含まれるウイルスの数が不明である場合は、変換「Ｇ」を適用する回数を変更しながら、ステップＳ１〜Ｓ７を繰り返し実行すればよい。
【００３７】
また、保持する各ウイルス定義データがメールデータに含まれない場合、各固有状態の確率振幅の値に差が生じない。そこで、検出装置１０は、ステップＳ１〜Ｓ７に示す処理を複数回実行し、観測する度に得られる観測値にばらつきが存在する場合は、ウイルスが検出されなかった旨を端末装置１００に通知し、一定の観測値が得られた場合は、その観測値に対応するウイルス定義データにより検出されるウイルスを通知してもよい。
【００３８】
例えば、検出装置１０は、ステップＳ１〜Ｓ７に示す処理を１０回実行し、ウイルス定義データｊを示す固有状態「ｊ」が観測値として１０回観測された場合は、ウイルス定義データｊにより検出されるウイルスを端末装置１００に通知する。一方、検出装置１０は、ステップＳ１〜Ｓ７に示す処理を１０回実行し、１０回とも異なる観測値が観測された場合は、ウイルスが検出されなかった旨を端末装置１００に通知する。
【００３９】
上述した処理の結果、検出装置１０は、検出対象となるウイルスが増加した場合にも、処理に要する時間や計算資源の増大を防ぐことができる。すなわち、検出装置１０は、ウイルス定義データを重ね合わせ状態で保持し、メールデータに含まれるウイルス定義データの確率振幅を増大させることで、メールデータに含まれるウイルス定義データの観測確率を増大させる。そして、検出装置１０は、重ね合わせ状態のウイルス定義データを観測することで、メールデータに含まれる可能性が最も大きいウイルス定義データを検出する。このため、検出装置１０は、例えば、グローバーの検索アルゴリズムと同様に、計算時間を削減することができる。
【００４０】
〔２．検出装置の構成〕
次に、図２を用いて、実施形態に係る検出装置１０の構成について説明する。図２は、実施形態に係る検出装置が有する機能構成の一例を示す図である。図２に示すように、検出装置１０は、記憶部１１、受付部１３、生成部１４、出力部１５、量子計算装置１６を有する。また、量子計算装置１６は、操作部１７、観測部１８、状態保持部１９を有する。また、状態保持部１９は、複数の量子ビット１９ａ〜１９ｄを有する。
【００４１】
記憶部１１は、例えば、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。図２に示すように、記憶部１１には、ウイルス定義データデータベース１２が記憶されている。
【００４２】
ウイルス定義データデータベース１２には、ウイルス定義データが格納される。例えば、図３は、実施形態に係るウイルス定義データデータベースの一例を示す図である。図３に示すように、ウイルス定義データデータベース１２には、データ番号とウイルス定義データとが対応付けて登録されている。ここで、データ番号とは、各ウイルス定義データを識別するための番号であり、式（１）に示す「ｊ」の値と対応する。また、ウイルス定義データは、各ウイルスを検出する際に用いるビット列である。なお、図３に示す例では、各ウイルス定義データを「パターン１」、「パターン２」といった概念的な値で示したが、実際には「０１００１・・・」等といったビット列がウイルス定義データとして格納されるものとする。これらのパターンは、量子的に重ねあった状態で保持され、さらに新たなパターンが発見されたときは、重ね合わせ状態に新たなパターンを追加更新できる。
【００４３】
図２に戻り、説明を続ける。受付部１３は、端末装置１００からメールデータを受け付ける。そして、受付部１３は、受け付けたメールデータを生成部１４に出力する。
【００４４】
生成部１４は、重ね合わせ状態の固有状態のうち、メールデータに含まれるウイルス定義データと対応する固有状態の確率振幅を反転させるユニタリ演算子を生成する。より具体的には、生成部１４は、式（３）で示されるオラクルを生成する。そして、生成部１４は、生成したオラクルを量子計算装置１６が有する操作部１７に出力する。
【００４５】
出力部１５は、ウイルスの検出結果を端末装置１００に通知する。例えば、出力部１５は、量子計算装置１６が後述する量子計算の結果観測した観測値の通知を複数回受付ける。かかる場合、出力部１５は、通知された観測値の値が一定である場合は、その観測値が示すウイルス定義データをウイルス定義データをウイルス定義データデータベース１２から特定する。そして、出力部１５は、特定したウイルス定義データにより検出されるウイルスを端末装置１００に通知する。一方、出力部１５は、通知された観測値の値にばらつきが存在する場合は、ウイルスが検出されなかった旨を端末装置１００に通知する。
【００４６】
量子計算装置１６は、量子状態を利用して複数の値を同時に保持することができる量子ビット１９ａ〜１９ｄを用いて、量子計算を実行する。より具体的には、量子計算装置１６は、状態保持部１９が有する量子ビット１９ａ〜１９ｄを用いて、ウイルス定義データを示す固有状態の重ね合わせ状態を保持する。そして、量子計算装置１６は、各量子ビット１９ａ〜１９ｄに対して、上述した式（５）で示される変換「Ｇ」を複数回適用し、その後、状態保持部１９の状態を観測することで、メールデータに含まれる可能性が高いウイルス定義データと対応する固有状態を特定する。
【００４７】
例えば、量子計算装置１６が有する状態保持部１９は、複数の量子ビット１９ａ〜１９ｄを有し、任意の量子状態を保持することができる。なお、各量子ビット１９ａ〜１９ｄは、電子準位、電子スピン、イオン準位、各スピン、若しくは光子等、複数の値の重ね合わせ状態を保持することができるのであれば、任意の物理状態を利用した量子ビットを採用することができる。
【００４８】
操作部１７は、生成部１４からユニタリ演算子を受付けると、状態保持部１９が保持する状態を操作することで、量子計算を実現する。例えば、操作部１７は、ウイルス定義データと同じ数の固有状態を準備し、アダマール変換を各量子ビット１９ａ〜１９ｄに対して適用することで、式（１）に示すように、ウイルス定義データを示す固有状態の重ね合わせ状態を、状態保持部１９に保持させる。
【００４９】
続いて、操作部１７は、生成部１４から受付けたユニタリ演算子を用いて、式（５）に示す変換「Ｇ」を生成する。そして、操作部１７は、状態保持部１９が保持する状態に変換「Ｇ」を複数回適用する。なお、操作部１７は、量子ゲート等の量子回路を用いて状態保持部１９が保持する状態を操作してもよく、磁気や光子の経路を操作することにより状態保持部１９が保持する状態を操作してもよい。
【００５０】
観測部１８は、変換「Ｇ」を繰り返し適用した重ね合わせ状態の固有状態を観測し、観測値を取得する。そして、観測部１８は、観測の結果得られた観測値を出力部１５に通知する。なお、操作部１７および観測部１８は、上述した処理を複数回実行し、実行する度に観測した観測値を出力部１５に通知する。この結果、出力部１５は、メールデータにウイルスが含まれていない場合には、ウイルスが検出されなかった旨を端末装置１００に通知することができる。
【００５１】
〔３．量子計算の一例〕
次に、図４を用いて、上述した量子計算が行われた際に生じる各固有状態の確率振幅の変化の一例を説明する。図４は、実施形態に係る検出装置が実行する量子計算の一例を説明する図である。なお、図４に示す例では、ｊ＝１〜Ｎで示されるＮ個の固有状態のうち、ｊ＝ｉが示される固有状態が示すウイルス定義パターンが、受信したメールデータに含まれているものとする。
【００５２】
まず、検出装置１０は、図４中（Ａ）に示すように、式（１）で示す状態を状態保持部１９に保持させる。この結果、状態保持部１９は、ｊ＝１〜Ｎが示す各固有状態の確率振幅の値を同じにする。続いて、検出装置１０は、図４中（Ｂ）に示すように、式（３）で示されるオラクルを状態保持部１９が保持する状態に適用する。この結果、受信したメールデータに含まれるウイルス定義パターンを示す固有状態、すなわち、ｊ＝ｉで示される固有状態の確率振幅の値が反転する。
【００５３】
続いて、検出装置１０は、図４中（Ｃ）に示すように、式（４）で示される拡散変換「Ｄ」を状態保持部１９が保持する状態に適用する。かかる場合、各固有状態の確率振幅は、各固有状態の確率振幅の平均値を基準として反転される。ここで、オラクルによりｊ＝ｉで示される固有状態の確率振幅の値は、負の値となっているため、各固有状態の確率振幅の平均値は、図４中（Ｄ）に示すように、ｊ＝ｉで示される固有状態以外の固有状態の確率振幅の値よりも低くなる。このため、図４中（Ｅ）に示すように、各固有状態の確率振幅の平均値で各固有状態の確率振幅を反転した場合は、オラクルにより確率振幅の値が反転された固有状態、すなわち、ｊ＝ｉが示す固有状態の確率振幅の値が増加し、他の固有状態の確率振幅の値が低下する。
【００５４】
このように、オラクルを用いて、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅を反転させ、拡散変換を用いて、各固有状態の確率振幅を平均値を基準として反転させた場合には、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅を増大させることができる。このため、検出装置１０は、上述したオラクルと拡散変換とを繰り返し適用することで、すなわち、変換「Ｇ」を繰り返し適用することで、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅を増大させ、かかる固有状態が観測される確率を増大させることができる。
【００５５】
〔４．検出装置が実行する処理の流れ〕
次に、図５を用いて、実施形態に係る検出装置１０が実行する処理の流れについて説明する。図５は、実施形態に係る検出装置が実行する検出処理の流れを説明するフローチャートである。
【００５６】
図５に示すように、検出装置１０は、ウイルス定義データを示す固有状態の重ね合わせ状態を準備する（ステップＳ１０１）。続いて、検出装置１０は、メールデータを受信したか否かを判定し（ステップＳ１０２）、メールデータを受信していない場合は（ステップＳ１０２：Ｎｏ）、メールデータを受信するまで待機する。また、検出装置１０は、メールデータを受信した場合は（ステップＳ１０２：Ｙｅｓ）、メールデータに含まれるウイルス定義データを示す固有状態の確率振幅を反転させるオラクルを生成する（ステップＳ１０３）。
【００５７】
続いて、検出装置１０は、生成したオラクルと、拡散変換を実現するための拡散行列とからなるグローバーの反復、すなわち、変換「Ｇ」を重ね合わせ状態の固有状態に繰り返し適用する（ステップＳ１０４）。そして、検出装置１０は、重ね合わせ状態の固有状態を観測し（ステップＳ１０５）、観測結果、すなわち、観測された固有状態が示すウイルス定義データにより検出されるウイルスの通知を出力し（ステップＳ１０６）、処理を終了する。
【００５８】
〔５．変形例〕
上述した実施形態に係る検出装置１０は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、上記の検出装置１０の他の実施形態について説明する。
【００５９】
〔５−１．抽出するウイルス定義データについて〕
上述した検出装置１０は、ウイルスを検出するためのウイルス定義データを示す固有状態を重ね合わせた。しかしながら、実施形態は、これに限定されるものではない。例えば、検出装置１０は、ウイルスを検出するためのウイルス定義データと、かかるウイルス定義データを類似する他のデータとを重ね合わせ状態で保持し、重ね合わせたデータのうち、メールデータに含まれるデータをグローバーの検索アルゴリズムにより検索してもよい。
【００６０】
このような処理を実行した場合、検出装置１０は、ウイルス以外にも、ウイルスに類似するデータがメールデータに含まれるか否かを判定することができる。この結果、検出装置１０は、例えば、ウイルス定義データが無い未発見のウイルスや、変種のウイルス等がメールデータに含まれる可能性を端末装置１００に通知することができる。また、検出装置１０は、ウイルス定義データと類似する複数のデータを重ね合わせ状態にし、観測された固有状態と対応するデータとウイルス定義データとがどれくらい類似しているかを端末装置１００に通知してもよい。
【００６１】
〔５−２．固有状態の重ね合わせについて〕
上述した説明では、検出装置１０は、式（１）に示すように、ウイルス定義データを示す固有状態の総和を固有状態の重ね合わせ状態とした。しかしながら、実施形態は、これに限定されるものではない。例えば、検出装置１０は、全てのウイルス定義データのテンソル積を用いて、メールデータに含まれるウイルスを検出してもよい。
【００６２】
例えば、検出装置１０は、全てのウイルス定義データのテンソル積を量子ビット１９ａ〜１９ｄに保持させる。また、検出装置１０は、テンソルデータからメールデータに含まれるウイルス定義データを抽出するユニタリ行列を生成する。例えば、検出装置１０は、メールデータに含まれるビット列をテンソルデータから検索するための１つ以上のユニタリ行列（ユニタリ作用素）を生成する。また、検出装置１０は、生成したユニタリ作用素を量子ビット１９ａ〜１９ｄに作用させることで、条件を満たすデータを抽出する。そして、検出装置１０は、抽出したデータ、すなわち、ウイルス定義データにより検出されるウイルスを端末装置１００に通知してもよい。
【００６３】
また例えば、検出装置１０は、全てのウイルス定義データのテンソル積を量子ビット１９ａ〜１９ｄに保持させ、グローバーのアルゴリズムを用いて、メールデータに含まれるビット列をテンソルデータから検索し、検索の結果得られるウイルス定義データにより検出されるウイルスを端末装置１００に通知してもよい。
【００６４】
〔５−３．未知状態の重ね合わせについて〕
例えば、グローバーのアルゴリズムでは、重ね合わせたデータの中から複数の正解データを検索することができる。（例えば、「量子コンピュータの基礎  [第2版]」、細谷暁夫、臨時別冊・数理科学2009年9月、７８ページ参照）。そこで、検出装置１０は、ワイルドカードを用いたグローバーのアルゴリズムを用いて、未知のウイルスを検出してもよい。また、検出装置１０は、観測の結果得られた観測値の値に応じて、各ウイルスがメールデータに含まれる可能性を算出し、算出した可能性を端末装置１００に通知してもよい。
【００６５】
例えば、検出装置１０は、同種のウイルスのデータ中に含まれる特徴的なビット列をウイルス定義データとする。ここで、同種ウイルスのデータ中に含まれる特徴的なビット列とは、同種のウイルスが有するであろうビット列である。そして、検出装置１０は、例えば、ウイルスのデータ中に含まれる特徴的なビット列が「１０１１１００００」といったビット列である場合は、かかるビット列にワイルドカードのビット「＊」を付加した「＊＊＊＊＊１０１１１００００＊＊＊＊」といった所定長のビット列を生成する。なお、ワイルドカードのビット「＊」は、「１」および「０」の重ね合わせ状態を示す。また、検出装置１０は、「１」または「０」が連続するビット列の途中にワイルドカードのビット「＊」を挿入したビット列を生成してもよい。
【００６６】
上述した処理により生成されるビット列は、同じ種別の複数のウイルスを検出するためのウイルス定義データ、すなわち、既知のウイルスと類似する新種のウイルスをメールデータから検出するウイルス定義データとなりうる。そこで、検出装置１０は、上述した処理により生成されたビット列をウイルス定義データとして他のウイルス定義データと共に重ね合わせ状態とし、メールデータに含まれるウイルス定義データをグローバーのアルゴリズムで検索する。
【００６７】
そして、検出装置１０は、ワイルドカードのビットを含むウイルス定義データと対応する観測値を取得した場合は、既知のウイルスと類似する新種のウイルスがメールデータに含まれていると判定し、かかる旨を端末装置１００に通知する。このため、検出装置１０は、既知のウイルスと類似する未知のウイルスをメールデータから検出することができる。
【００６８】
また、検出装置１０は、上述したワイルドカードのビットの数や、同種のウイルスが有するビット列のうち、ウイルス定義データに含めるビット列の長さに応じて、メールデータに未知のウイルスが含まれる可能性を検出してもよい。例えば、検出装置１０は、同種のウイルスが有するビット列とワイルドカードのビット列との比率をそれぞれ変更した複数のウイルス定義データを生成して重ね合わせ状態にする。そして、検出装置１０は、メールデータに含まれるウイルス定義データを検索する。
【００６９】
そして、検出装置１０は、同種のウイルスが有するビット列とワイルドカードのビット列との比率が半々となるウイルス定義データと対応する観測値を取得した場合は、未知のウイルスが５０パーセントの確率でメールデータに含まれていると判定し、かかる旨を端末装置１００に通知する。このため、検出装置１００は、メールデータに未知のウイルスが含まれる可能性を検出することができる。
【００７０】
〔５−４．ハードウェア構成について〕
上述した検出装置１０は、ウイルス定義データを示す固有状態を重ね合わせ状態で保持する量子計算装置１６を有していた。しかしながら、実施形態は、これに限定されるものではない。例えば、検出装置１０は、記憶部１１、受付部１３、生成部１４、出力部１５のみを有し、外部に設置された量子計算装置１６にオラクルやウイルス定義データの数を通知することで、上述した量子計算を実行させてもよい。
【００７１】
また、検出装置１０が有する各機能構成のうち、受付部１３、生成部１４、出力部１５が発揮する処理は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されてもよい。また、受付部１３、生成部１４、出力部１５が発揮する処理は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等のプロセッサによって、検出装置１０内部の記憶装置に記憶されている検出プログラムがＲＡＭ（Random  Access  Memory)を作業領域として実行されることにより実現されてもよい。
【００７２】
〔６．効果〕
このように、検出装置１０は、複数の値の重ね合わせ状態を保持することができる量子ビット１９ａ〜１９ｄを操作して、ウイルス定義データのそれぞれに対応する固有状態を重ね合わせ状態で保持する。また、検出装置１０は、メールデータを受信した場合は、重ね合わせ状態の固有状態のうち、メールデータに含まれる固有状態の確率振幅を反転させるユニタリ演算子を生成する。また、検出装置１０は、生成したユニタリ演算子と拡散変換とを重ね合わせ状態の固有状態に対して繰り返し適用する。そして、検出装置１０は、ユニタリ演算子と拡散変換とを繰り返し適用した重ね合わせ状態の固有状態を観測し、観測した結果得られた固有状態と対応するウイルス定義データによって検出されるウイルスを端末装置１００に通知する。
【００７３】
このため、検出装置１０は、検出対象となるウイルスが増加した場合にも、処理に要する時間や計算資源の増大を防ぐことができる。また、検出装置１０は、ウイルス定義データとウイルス定義データに類似する他のデータとを重ね合わせ状態にし、ユニタリ演算子と拡散変換とを繰り返し適用することで、変形ウイルスや未検出のウイルス等にも対応することができる。
【００７４】
また、検出装置１０は、重ね合わせ状態の固有状態を保持する処理、保持した固有状態にユニタリ演算子と拡散変換とを繰り返し適用する処理、およびユニタリ演算子と拡散変換とを繰り返し適用した重ね合わせ状態の固有状態を観測する処理を複数回実行する。そして、検出装置１０は、観測する度に得られた観測値にばらつきが存在する場合は、データが検出されなかった旨を端末装置１００に通知し、観測する度に得られた観測値が一定である場合は、観測値に対応する固有状態と対応したデータのウイルスを端末装置１００に通知する。このため、検出装置１０は、メールデータにウイルスが検出されなかった旨の検出や通知を実現することができる。
【００７５】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【００７６】
また、上記してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。
【符号の説明】
【００７７】
１０  検出装置
１１  記憶部
１２  ウイルス定義データデータベース
１３  受付部
１４  生成部
１５  出力部
１６  量子計算装置
１７  操作部
１８  観測部
１９  状態保持部
１９ａ〜１９ｄ  量子ビット
１００  端末装置
【図１】
0006403647.tif 000007
【図２】
0006403647.tif 000008
【図３】
0006403647.tif 000009
【図４】
0006403647.tif 000010
【図５】
0006403647.tif 000011