(57)【要約】  ファイルセグメントを並列に解読するための方法および装置が開示される。一実施形態では、記憶デバイスと通信するためのハードウェアインターフェースと、記憶デバイス上に記憶すべきファイルセグメントを暗号化し、記憶デバイスから読み取られたファイルセグメントを解読するための暗号化エンジンと、プロセッサとを備えるコンピューティングデバイスの記憶デバイスとともに集積回路が使用されてもよい。プロセッサは、複数の解読されたファイルセグメントを暗号化エンジンを通じて記憶デバイスから並列に読み取り、複数の解読されたファイルセグメントを記憶するように構成されてもよい。
2018517921.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスの記憶デバイスとともに使用される集積回路であって、
前記記憶デバイスと通信するためのハードウェアインターフェースと、
前記記憶デバイス上に記憶すべきファイルセグメントを暗号化し、かつ前記記憶デバイスから読み取られたファイルセグメントを解読するための暗号化エンジンと、
プロセッサであって、
前記暗号化エンジンを通じて前記記憶デバイスから複数の解読されたファイルセグメントを並列に読み取り、
前記複数の解読されたファイルセグメントを記憶する
ように構成されるプロセッサと
を備える、集積回路。
【請求項２】
前記プロセッサは、以前に暗号化されたファイルセグメントの最後のブロックを読み取るようにさらに構成される、請求項1に記載の集積回路。
【請求項３】
前記プロセッサは、前記以前に読み取られた暗号化されたファイルセグメントの前記最後のブロックと次の解読されたファイルセグメントの第1のブロックとのXORをとり、かつ固定の解読されたファイルセグメントを作成するために前記次の解読されたファイルセグメントの前記第1のブロックを上書きするようにさらに構成される、請求項2に記載の集積回路。
【請求項４】
前記プロセッサは、前記固定の解読されたファイルセグメントをメモリに記憶するようにさらに構成される、請求項3に記載の集積回路。
【請求項５】
前記プロセッサは、解読すべき第1のファイルセグメント用に第1の初期設定ベクトルを利用するようにさらに構成される、請求項3に記載の集積回路。
【請求項６】
前記プロセッサは、解読すべき後続のファイルセグメント用の初期設定ベクトルを既定の数値に設定するようにさらに構成される、請求項5に記載の集積回路。
【請求項７】
前記複数の解読されたファイルセグメントは、アプリケーションに関する安全なブート解読動作を開始するために読み取られる、請求項1に記載の集積回路。
【請求項８】
前記記憶デバイスは、ディスクドライブまたはフラッシュメモリのうちの少なくとも一方を含む、請求項1に記載の集積回路。
【請求項９】
記憶デバイスと、
前記記憶デバイスに結合される集積回路であって、
記憶デバイスと通信するためのハードウェアインターフェースと、
前記記憶デバイス上に記憶すべきファイルセグメントを暗号化し、かつ前記記憶デバイスから読み取られたファイルセグメントを解読するための暗号化エンジンと、
プロセッサであって、
前記暗号化エンジンを通じて前記記憶デバイスから複数の解読されたファイルセグメントを並列に読み取り、
前記複数の解読されたファイルセグメントを記憶する
ように構成されるプロセッサと
を備える集積回路と
を備える、コンピューティングデバイス。
【請求項１０】
前記プロセッサは、以前に暗号化されたファイルセグメントの最後のブロックを読み取るようにさらに構成される、請求項9に記載のコンピューティングデバイス。
【請求項１１】
前記プロセッサは、前記以前に読み取られた暗号化されたファイルセグメントの前記最後のブロックと次の解読されたファイルセグメントの第1のブロックとのXORをとり、かつ固定の解読されたファイルセグメントを作成するために前記次の解読されたファイルセグメントの前記第1のブロックを上書きするようにさらに構成される、請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記プロセッサは、前記固定の解読されたファイルセグメントをメモリに記憶するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記プロセッサは、解読すべき第1のファイルセグメント用に第1の初期設定ベクトルを利用するようにさらに構成される、請求項11に記載のコンピューティングデバイス。
【請求項１４】
前記プロセッサは、解読すべき後続のファイルセグメント用の初期設定ベクトルを既定の数値に設定するようにさらに構成される、請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記複数の解読されたファイルセグメントは、アプリケーションに関する安全なブート解読動作を開始するために読み取られる、請求項9に記載のコンピューティングデバイス。
【請求項１６】
前記記憶デバイスは、ディスクドライブまたはフラッシュメモリのうちの少なくとも一方を含む、請求項9に記載のコンピューティングデバイス。
【請求項１７】
コンピューティングデバイスのプロセッサによって実行されたときに、前記プロセッサに動作を実行させるコードを含む非一時的コンピュータ可読記録媒体であって、前記動作が、
記憶デバイス上に記憶すべき複数のファイルセグメントを暗号化することと、
暗号化エンジンを通じて前記記憶デバイスから前記複数のファイルセグメントを並列に解読することと、
前記複数の解読されたファイルセグメントを記憶することと
を含む、非一時的コンピュータ可読記録媒体。
【請求項１８】
以前に暗号化されたファイルセグメントの最後のブロックを読み取るためのコードをさらに含む、請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項１９】
前記以前に読み取られた暗号化されたファイルセグメントの前記最後のブロックと次の解読されたファイルセグメントの第1のブロックとのXORをとり、かつ固定の解読されたファイルセグメントを作成するために前記次の解読されたファイルセグメントの前記第1のブロックを上書きするためのコードをさらに含む、請求項18に記載の非一時的コンピュータ可読記録媒体。
【請求項２０】
前記固定の解読されたファイルセグメントをメモリに記憶するためのコードをさらに含む、請求項19に記載の非一時的コンピュータ可読記録媒体。
【請求項２１】
解読すべき第1のファイルセグメント用に第1の初期設定ベクトルを利用するためのコードをさらに含む、請求項19に記載の非一時的コンピュータ可読記録媒体。
【請求項２２】
解読すべき後続のファイルセグメント用の初期設定ベクトルを既定の数値に設定するためのコードをさらに含む、請求項21に記載の非一時的コンピュータ可読記録媒体。
【請求項２３】
前記複数の解読されたファイルセグメントは、アプリケーションに関する安全なブート解読動作を開始するために読み取られる、請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項２４】
前記記憶デバイスは、ディスクドライブまたはフラッシュメモリのうちの少なくとも一方を含む、請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項２５】
コンピューティングデバイスであって、
記憶デバイス上に記憶すべき複数のファイルセグメントを暗号化するための手段と、
暗号化エンジンを通じて前記記憶デバイスから前記複数のファイルセグメントを並列に解読するための手段と、
前記複数の解読されたファイルセグメントを記憶するための手段と
を備える、コンピューティングデバイス。
【請求項２６】
以前に暗号化されたファイルセグメントの最後のブロックを読み取るための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記以前に読み取られた暗号化されたファイルセグメントの前記最後のブロックと次の解読されたファイルセグメントの第1のブロックとのXORをとり、かつ固定の解読されたファイルセグメントを作成するために前記次の解読されたファイルセグメントの前記第1のブロックを上書きするための手段をさらに備える、請求項26に記載のコンピューティングデバイス。
【請求項２８】
前記固定の解読されたファイルセグメントをメモリに記憶するための手段をさらに備える、請求項27に記載のコンピューティングデバイス。
【請求項２９】
解読すべき第1のファイルセグメント用に第1の初期設定ベクトルを利用するための手段をさらに備える、請求項27に記載のコンピューティングデバイス。
【請求項３０】
解読すべき後続のファイルセグメント用の初期設定ベクトルを既定の数値に設定するための手段をさらに備える、請求項29に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれる、2015年4月20日に出願された“APPARATUS AND METHOD TO DECRYPT FILE SEGMENTS IN PARALLEL”という名称の米国特許出願第14/691,302の優先権の利益を主張する。
【０００２】
実施形態は概して、ファイルセグメントを並列に解読するための装置および方法に関する。
【背景技術】
【０００３】
従来、ブートファイルは、ファイルシステムによって完全にアセンブルされた後に暗号化エンジンによって解読される。この例には、ドライバおよび暗号化エンジンが純粋にソフトウェア実装され、それによって並列した解読が可能になるUNIX(登録商標)ファイルシステム(UFS)がある。しかし、この実装形態は、ハードウェアベースの暗号化エンジン実装形態と比較してそれほど安全ではない。したがって、純粋にソフトウェア実装される現在のシステムを利用すると、最大スループットが実現のための並列した読取りが可能になる場合があるが、これらの種類のシステムには、ハードウェアベースの暗号化エンジン実装形態の高度の安全性が欠如している。
【０００４】
一方、より安全な種類のハードウェアベースの暗号化エンジンが提案されている。ハードウェアベースの暗号化エンジン(CE)の有利な特徴は速度である。ハードウェアベースのCEはインラインに配置され、すなわち、CEはデータを、それが進むにつれて処理する。
【０００５】
このハードウェアベースのCE実装形態は、暗号化/解読実装形態に関するストレージ仕様によって選択される暗号ブロック連鎖(CBC)モードまたは同様の連鎖モードを必要とするものとして現在定義されている。しかし、ハードウェアベースのCEインラインモードの場合、CBC実装形態ではファイルが連続的に処理されると仮定され、一方、インラインCEは、ストレージ仕様によって定義されるように並列に動作する(たとえば、ファイルの様々なセグメントの並列した読取りおよび解読を行う)場合があるので非常に不都合である。ハードウェアベースの暗号化エンジンによって暗号化されたファイルをはるかに効率的に解読し、読み取ることができる方策が求められている。
【発明の概要】
【課題を解決するための手段】
【０００６】
各態様は、ファイルセグメントを並列に解読するための装置および方法に関する場合がある。一実施形態では、集積回路がコンピューティングデバイスの記憶デバイスとともに使用されてもよく、集積回路は、記憶デバイスと通信するためのハードウェアインターフェースと、記憶デバイス上に記憶すべきファイルセグメントを暗号化し、記憶デバイスから読み取られたファイルセグメントを解読するための暗号化エンジンと、プロセッサとを備える。プロセッサは、複数の解読されたファイルセグメントを暗号化エンジンを通じて記憶デバイスから並列に読み取り、複数の解読されたファイルセグメントを記憶するように構成されてもよい。
【図面の簡単な説明】
【０００７】
【図１】実施形態が実施される場合があるコンピューティングデバイスを示す図である。
【図２】実施形態が実施される場合があるコンピューティングデバイスの記憶デバイスとともに使用できるシステムオンチップ(SOC)を示す図である。
【図３】解読/読取り動作の一例を示す図である。
【図４】ファイルセグメントの一例を示す図である。
【図５】XOR演算を利用して、固定の解読されたファイルセグメントを作成する一例を示す図である。
【図６】固定の解読されたファイルセグメントを作成する詳細な一例を示す図である。
【図７】解読されたファイルセグメントを記憶するための方法を示すフローチャートである。
【発明を実施するための形態】
【０００８】
「例示的な」または「例」という用語は、本明細書では「例、事例、または例示として働く」を意味する語として使用される。「例示的」または「例」として本明細書において説明する任意の態様または実施形態は、必ずしも、他の態様または実施形態よりも好ましいか、または有利であると解釈されるべきでない。
【０００９】
本明細書において使用される「コンピューティングシステムまたはデバイス」という用語は、限定はしないが、ラップトップおよびデスクトップコンピュータ、タブレット、スマートフォン、テレビ、家庭電化製品、セルラー電話、パーソナルテレビデバイス、携帯情報端末(PDA)、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネット対応セルラー電話、全地球測位システム(GPS)レシーバ、ワイヤレスゲームコントローラ、車両(たとえば、自動車)に内蔵されるレシーバ、インタラクティブゲームデバイス、ノートブック、スマートブック、ネットブック、モバイルテレビデバイス、または任意のデータ処理装置を含む、任意の形のプログラマブルコンピュータデバイスを指す。
【００１０】
ファイルセグメントを並列に解読するための方法に適合された例示的なコンピューティングデバイス100が図1に示されている。バス105を介して電気的に結合されることが可能である(または適宜他の方法で通信していてもよい)ハードウェア要素を備える、コンピューティングデバイス100が示されている。ハードウェア要素は、限定はしないが、1つまたは複数の汎用プロセッサならびに/あるいは1つまたは複数の専用プロセッサ(デジタル信号処理チップ、グラフィックスアクセラレーションプロセッサ、システムオンチップ(SOC)など)を含む1つまたは複数のプロセッサ110と、限定はしないが、マウス、キーボード、キーパッド、ジェスチャー入力デバイス、マイクロフォンなどを含む、1つまたは複数のセンサを含むことが可能である1つまたは複数の入力デバイス115と、限定はしないが、表示デバイス、タッチスクリーン、モニタなどを含むことが可能である1つまたは複数の表示デバイス120と、スピーカー、プリンタなどを含むことが可能である1つまたは複数の出力デバイス122とを含んでもよい。
【００１１】
コンピューティングデバイス100は、限定はしないが、ローカルおよび/またはネットワークアクセス可能記憶装置を含むことができ、ならびに/あるいは限定はしないが、ディスクドライブ、ドライブアレイ、光記憶デバイス、プログラム可能、フラッシュ書換え可能などとすることができる、ランダムアクセスメモリ(“RAM”)および/またはリードオンリーメモリ(“ROM”)のような固体記憶デバイスなどを含むことができる、1つまたは複数の非一時的記憶デバイス125をさらに含む(ならびに/あるいは1つまたは複数の非一時的記憶デバイス125と通信する)ことができる。そのような記憶デバイスは、限定はしないが、種々のファイルシステム、データベース構造などを含む、任意の適切なデータストアを実現するように構成される場合がある。
【００１２】
コンピューティングデバイス100は、通信サブシステム130も含んでもよく、通信サブシステム130は、限定はしないが、モデム、ネットワークカード(ワイヤレスもしくは有線)、赤外線通信デバイス、(Bluetooth(登録商標)デバイス、802.11デバイス、Wi-Fiデバイス、WiMaxデバイス、セルラー通信デバイスなどの)ワイヤレス通信デバイスおよび/またはチップセットなどを含むことができる。通信サブシステム130は、ネットワーク、他のコンピューティングデバイス、および/または本明細書で説明される任意の他のデバイスと、データが交換されることを可能にすることがある。一実施形態では、コンピューティングデバイス100はさらに、上述のように、RAMデバイスまたはROMデバイスを含むことが可能であるワーキングメモリ135を備えることがある。コンピューティングデバイス100は、モバイルデバイスであっても、非モバイルデバイスであってもよく、ワイヤレス接続および/または有線接続を有してもよいことを理解されたい。
【００１３】
本明細書において説明するように、コンピューティングデバイス100はまた、オペレーティングシステム140、デバイスドライバ、実行可能ライブラリ、および/または、1つまたは複数のアプリケーションプログラム145などの他のコードを含む、ワーキングメモリ135内に現在位置するものとして示されているソフトウェア要素を備えてよく、1つまたは複数のアプリケーションプログラム145は、実施形態によって提供される方法を備えてよく、あるいは、実施形態によって提供される方法を実施し、ならびに/あるいは実施形態によって提供されるシステムを構成するように設計されてよい。単に例として、以下で論じられる方法に関して説明する1つまたは複数のプロシージャは、コンピューティングデバイス100(および/またはコンピューティングデバイス100内のプロセッサ110)によって実行可能なコードおよび/または命令として実装されることがあり、ある態様では、次いで、そのようなコードおよび/または命令は、前述の方法に従って1つまたは複数の動作を実行するように汎用コンピュータ(または他のデバイス)を構成し、ならびに/あるいは適合させるために使用することが可能である。
【００１４】
これらの命令および/またはコードのセットは、上述の記憶デバイス125などの非一時的コンピュータ可読記憶媒体に記憶されることがある。場合によっては、記憶媒体は、システム100などのコンピュータデバイス内に組み込まれることがある。他の実施形態では、記憶媒体は、コンピューティングデバイスとは別個であることがあり(たとえば、コンパクトディスクなどの取外し可能な媒体)、ならびに/あるいは、インストールパッケージにおいて提供されることがあり、それによって、記憶媒体は、記憶媒体に記憶された命令/コードを用いて汎用コンピュータをプログラムし、構成し、ならびに/あるいは適合させるために使用されることが可能である。これらの命令は、コンピュータ化されたコンピューティングデバイス100によって実行可能である実行可能コードの形をとることがあり、ならびに/あるいは、(たとえば、様々な一般的に入手可能なコンパイラ、インストールプログラム、圧縮/解凍ユーティリティなどのいずれかを使用する)コンピューティングデバイス100上でのコンパイルおよび/またはインストール時に実行可能コードの形をとる、ソースコードおよび/またはインストール可能コードの形をとることがある。
【００１５】
いくつかの実施形態では、暗号化エンジンハードウェアは、複数のセグメントを並列に読み取ることができるが、ストレージ仕様に記載された解読技法が、CBCまたは同様のモードを使用するシリアル化を必要とすることがあり、したがって、解読が有効化された後、暗号化エンジンハードウェア並列読取り機能が有効にならない場合がある。したがって、一実施形態では、態様は、コンピューティングデバイス100の記憶デバイス125とともに使用できる、システムオンチップ(SOC)などの集積回路に関する場合があり、ここで、暗号化エンジンはハードウェアベースであり、SOCは、解読されたファイルセグメントを並列に読み取るためにハードウェアドライバおよび/またはソフトウェアドライバを実装してもよい。たとえば、ドライバは、解読されたファイルセグメントのすべてを並列に読み取りそれらのセグメントをまとめてアタッチするソフトウェアプログラムであってもよい。一例として、各ファイルセグメントは、第1のファイルセグメントを除く任意のファイルセグメントについて、ゼロまたは任意の適切な数の初期設定ベクトルを使用して、ハードウェアドライバインターフェースにおいてハードウェアベースの暗号化エンジンによって解読されてもよい。初期設定ベクトルにゼロを入力すると、基本的に、第1の解読ブロック(たとえば、16バイト)は、あらゆるセグメントについて「誤り」となる。その場合、ドライバは、ファイルセグメントをメモリ135に記憶できるようにまとめてスティッチするとき、各ファイルセグメントの最後のブロックと次のセグメントの第1のブロックとのXORをとり、結果を次のセグメントの第1のブロックに上書きする。このようにして、このプロシージャは「誤った」部分を固定する。このプロシージャを利用することによって、すべてのファイルセグメントが、それらのファイルセグメントを非常に効率的にメモリに記憶することができるように並列に解読され読み取られる。このことは、一例として、アプリケーション145に関する安全なブート解読動作を、ハードウェアドライバインターフェースが実現できる最高速度で利用するのを可能にするために利用されてもよい。初期設定ベクトル(IV)がゼロ、または前のセグメントから読み取られたデータの結果に基づかない任意の既定の数値もしくは適切な数値に設定される場合があることを了解されたい。
【００１６】
図2をさらに参照しながら、コンピューティングデバイス100の記憶デバイス125とともに使用できるシステムオンチップ(SOC)202などの例示的な集積回路について説明する。SOCが以下により詳細に説明する本開示の態様を実施するのに利用される場合がある集積回路の一例として設けられるにすぎず、かつ任意の種類の集積回路が利用されてもよいことを了解されたい。以下に説明する態様を実施するために、SOC202が前述のコンピューティングデバイス100の一部として実装されてもよく、ここで、1つのプロセッサ110にSOC202が実装されることを了解されたい。特に、SOC202は、(SOCの外部または内部の)プロセッサ110と協働して、バス105を通じて記憶デバイス125と通信する場合がある様々なアプリケーション145ならびにソフトウェア/ハードウェアドライバ210、ハードウェアベースの暗号化エンジン212、およびハードウェアインターフェース214を実装してもよい。任意の種類の集積回路、SOC、プロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または任意の種類の論理、あるいはそれらの任意の組合せを利用して、以下に説明する機能を実行してもよいことを了解されたい。
【００１７】
一実施形態では、暗号化エンジン212を使用して、記憶デバイス125上に記憶すべきファイルセグメントを暗号化し、記憶デバイス125から読み取られたファイルセグメントを解読してもよい。さらに、プロセッサと協働してドライバ210を実装するSOC202は、暗号化エンジン212によって並列に解読された複数の解読されたファイルセグメントを記憶デバイス125から読み取り、次いで、複数の解読されたファイルセグメントを、アプリケーション145をブートする際に使用できるようにメモリ135に記憶してもよい。特定の例として、複数の解読されたファイルセグメントをドライバ210によって読み取り、アプリケーション145に関する安全なブート解読動作を開始してアプリケーション145を使用できるようにブートしてもよい。さらに、前述の記憶デバイス125がディスクドライブであっても、フラッシュメモリであっても、またはモバイルコンピューティングデバイスもしくは非モバイルコンピューティングデバイス用の任意の適切な種類の記憶デバイスであってもよいことを了解されたい。さらに、ドライブ210は暗号化エンジン212と並列に通信してもよい。図2を見るとわかるように、以下により詳細に説明するように、複数のファイルセグメント読取りコマンド(たとえば、ファイルセグメント1読取り…ファイルセグメントN読取り)をバス105を介して記憶デバイス125に命じてもよい。
【００１８】
さらに、以下により詳細に説明するように、プロセッサと協働するSOC202は、以前に暗号化されたファイルセグメントの最後のブロックを読み取り、以前に読み取られた暗号化されたファイルセグメントの最後のブロックと次の解読されたファイルセグメントの第1のブロックとのXORをとり、かつ固定の解読されたファイルセグメントを作成するために次の解読されたファイルセグメントの第1のブロックを上書きするようにさらに構成されてもよい。固定の解読されたファイルセグメントは次いで、メモリ135に記憶されてもよい。このことを実現するには、解読すべき第1のファイルセグメント用に第1の初期設定ベクトルを利用してもよく、解読すべき後続のファイルセグメント用の初期設定ベクトルをゼロに設定してもよい。これらの実装形態の例について、以下においてより詳細に説明する。特に、固定の各解読されたファイルセグメントが、まとめてスティッチされ、メモリ135に並列に時間効率的に記憶されてもよく、それによって、アプリケーション145に関する安全なブート動作を迅速に実行してアプリケーションを起動することができる。
【００１９】
さらに図3を簡単に参照して、解読/読取り動作の例について記載する。前述のように、SOC202と協働するアプリケーション145は、複数の解読動作および読取り動作を実行する必要がある安全なブート解読動作を開始することを望む場合がある。ドライバ210は、複数の解読されたファイルセグメントを暗号化エンジン212を通じて記憶デバイスから並列に読み取り、次いで、複数の解読されたファイルセグメントをアプリケーション145に関する安全なブート解読動作において使用できるようにメモリ135に記憶するように構成されてもよい。暗号化エンジン212は、記憶デバイス125によって記憶された暗号化されたファイルセグメントを並列に解読する。一例として、図3を見るとわかるように、ファイルセグメント1 260、ファイルセグメント2 262、およびファイルセグメントN 264が解読され読み取られるように、複数の解読および読取りコマンド258が命じられる。図3に示すように、ファイルセグメント1〜Nの解読および読取りを連鎖させる代わりに、これらの動作が並列に実行されることに留意されたい。さらに、より詳細に説明するように、読み取って解読すべき第1のファイルセグメント260に標準的な第1の初期設定ベクトル(IV)が利用される。しかし、後続のファイルセグメント(たとえば、ファイルセグメント2…ファイルセグメントN 262…264)の初期設定ベクトルはゼロに設定される。
【００２０】
さらに図4を簡単に参照する。初期設定ベクトル(IV)が第1のファイルセグメント260の標準とされ、一方、後続のファイルセグメント2〜N 262、264の初期設定ベクトルはゼロに設定され、それによって、後続のあらゆるファイルセグメントのブロックの(たとえば、最初の16バイトの)桁上げが無効化されることに留意されたい。このことはブロック266によって示すことができる。
【００２１】
さらに図5を簡単に参照して、XOR演算300を利用する一例を示す。具体的には、以前に読み取られた暗号化されたファイルセグメント304の最後のブロック302と次の解読されたファイルセグメント262(たとえば、解読されたファイルセグメント2)の無効化された(broken)/第1のブロック266とのXORがとられ、得られるファイルセグメント2 263が結果となる、XOR演算が実行される。詳細には、解読されたファイルセグメント262の第1の無効化されたブロック266が、固定の解読されたファイルセグメント263を作成するように上書きされ、固定の解読されたファイルセグメント263はその後、アプリケーション用の安全なブート解読動作に利用されてもよい。これらの同じ動作がその後、暗号化されたファイルセグメント2 304に関して同様に利用され、その後後述のように利用されてもよいことを了解されたい。
【００２２】
さらに図6を参照して、前述のプロセスのより詳細な例を提示する。図6を見るとわかるように、複数の暗号化されたファイルセグメントが示されている。図6に示すように、最後の暗号文ブロック(CTブロック)302を有する暗号化されたファイルセグメント1 304が示されており、最後のCTブロック330を有する暗号化されたファイルセグメント2 304が示されており、最後のCTブロック342を有する暗号化されたファイルセグメントN 340が示されている。図を見るとわかるように、動作時には、暗号化されたファイルセグメント1 304が、暗号化エンジン(CE)解読関数309を初期設定ベクトル(IV)とともに利用して解読され、解読されたファイルセグメント1 311が得られる。さらに、暗号化されたファイルセグメント2 304が同時に、入力ベクトルがゼロに設定されたCE解読関数320を介して解読され、無効化されたブロック266を有する解読されたファイルセグメント2 262が得られる。同時に、SW/HWドライバが、以前に読み取られた暗号化されたファイルセグメント1 304の最後のCTブロック302と次の解読されたファイルセグメント2 262の第1の無効化されたブロック266とのXOR 300をとり、この次の解読されたファイルセグメントの第1のブロックを上書きして、固定の解読されたファイルセグメント2 263を作成する。最後のCTブロックが、このCTブロックの解読されたファイルセグメントの終了点にアタッチされるかあるいはこのセグメントに関係する動作ステータスまたはその他のメタデータの一部として供給されてもよいことを了解されたい。図6を見るとわかるように、上記のことは、任意の数の暗号化されたファイルセグメント(1…N)に対して引き続き行われる。一例として、次の暗号化されたファイルセグメントN 340に続き、最後のCTブロック342を有する暗号化されたファイルセグメントN 340が、入力ベクトルがゼロに設定されたCE解読関数346によって解読されてもよく、その結果、第1の無効化されたブロック350を有する解読されたファイルセグメントN 378が得られる。同様にかつ同時に、SW/HWドライバが、前の暗号化されたファイルセグメントNの最後のCTブロック330と次の解読されたファイルセグメント378の第1の無効化されたブロック350とのXORをとり、この次の解読されたファイルセグメントの第1のブロックを上書きして、固定の解読されたファイルセグメント3 354を作成する。この方法が解読すべき任意の数の(N)暗号化されたファイルセグメント用に利用されてもよいことを了解されたい。
【００２３】
さらに図7を簡単に参照する。一実施形態では、各態様は、解読されたファイルセグメントを記憶するための方法に関係する場合がある。一例として、プロセス700は、記憶デバイス上に記憶すべき複数のファイルセグメントを暗号化すること(ブロック702)を含んでもよい。さらに、プロセス700は、暗号化エンジンを通じて記憶デバイスから複数のファイルセグメントを並列に解読すること(ブロック704)を含んでもよい。さらに、プロセス700は、複数の解読されたファイルセグメントをメモリに並列に記憶すること(ブロック706)を含んでもよい。
【００２４】
前述のように、各態様は、コンピューティングデバイス100の記憶デバイス125とともに使用できるシステムオンチップ(SOC)に関する場合があり、ここで、暗号化エンジンはハードウェアベースであり、SOCは、解読されたファイルセグメントを並列に読み取るためにハードウェアドライバおよび/またはソフトウェアドライバを実装してもよい。たとえば、前述のように、ドライバは、固定の解読されたファイルセグメントのすべてを並列に読み取りそれらのセグメントをまとめてアタッチするソフトウェアプログラムであってもよい。この機能は、一例として、アプリケーションに関する安全なブート解読動作を、ハードウェアドライバインターフェースが実現できる最高速度で起動するのを可能にするために利用されてもよい。
【００２５】
前述の本発明の態様は、前述のように、コンピューティングデバイス100のプロセッサ110および/またはSOC202による命令(たとえば、アプリケーション)の実行に関連して実施される場合があることを了解されたい。具体的には、限定はしないがプロセッサおよびSOCを含むデバイスの回路が、アプリケーション、プログラム、ルーチン、または実行される命令の制御下で、前述の実施形態による方法もしくはプロセスを実行するように動作してもよい。たとえば、そのようなプログラムは、(たとえば、メモリおよび/または他の位置に記憶された)ファームウェアまたはソフトウェアに実装されてもよく、プロセッサおよび/またはSOCおよび/またはデバイスの他の回路によって実装されてもよい。さらに、プロセッサ、チップ、マイクロプロセッサ、回路、コントローラなどの用語が、論理、コマンド、命令、ソフトウェア、ファームウェア、機能などを実行することができる任意の種類の論理または回路を指すことを了解されたい。
【００２６】
本明細書の教示は、様々な装置(たとえば、デバイス)に組み込まれてもよい(たとえば、装置内に実装されるか、または装置によって実行されてもよい)。たとえば、本明細書で教示された1つまたは複数の態様は、一般的なコンピューティングデバイス、デスクトップコンピュータ、モバイルコンピュータ、モバイルデバイス、電話(たとえば、携帯電話)、携帯情報端末、タブレット、ラップトップコンピュータ、タブレット、エンターテインメントデバイス(たとえば、音楽デバイスもしくはビデオデバイス)、ヘッドセット(たとえば、ヘッドフォン、イヤピースなど)、医療デバイス(たとえば、生体センサ、心拍数モニタ、歩数計、EKGデバイスなど)、ユーザI/Oデバイス、コンピュータ、サーバ、ポイントオブセールデバイス、エンターテインメントデバイス、セットトップボックス、または任意の他の適切なデバイスに組み込まれることがある。
【００２７】
いくつかの態様では、ワイヤレスデバイスは、通信システムのためのアクセスデバイス(たとえばWi-Fiアクセスポイント)を含んでもよい。そのようなアクセスデバイスは、たとえば、有線通信リンクまたはワイヤレス通信リンクを介して、トランシーバを通じた別のネットワーク(たとえばインターネットまたはセルラーネットワークなどの広域ネットワーク)への接続を可能にすることがある。したがって、アクセスデバイスは、別のデバイス(たとえば、Wi-Fi局)が他のネットワークまたは何らかの他の機能にアクセスすることを可能にすることがある。加えて、デバイスの一方または両方はポータブルであることがあり、または場合によっては、比較的非ポータブルである場合があることを理解されたい。
【００２８】
デバイスがモバイルデバイスまたはワイヤレスデバイスであるとき、それらのデバイスは、任意の適切なワイヤレス通信技術に基づくか、あるいは場合によっては任意の適切なワイヤレス通信技術をサポートするワイヤレスネットワークを通じて、1つまたは複数のワイヤレス通信リンクを介して通信することがあることを了解されたい。たとえば、いくつかの態様では、ワイヤレスデバイスおよび他のデバイスは、ワイヤレスネットワークを含むネットワークに関連することがある。いくつかの態様では、ネットワークは、ボディエリアネットワークまたはパーソナルエリアネットワーク(たとえば超広帯域ネットワーク)を備えることがある。いくつかの態様では、ネットワークは、ローカルエリアネットワークまたはワイドエリアネットワークを備えることがある。ワイヤレスデバイスは、様々なワイヤレス通信技術、プロトコル、またはたとえば3G、LTE、LTE Advanced、4G、CDMA、TDMA、OFDM、OFDMA、WiMAX、およびWiFiなどの規格のうちの1つまたは複数をサポートし、またはそうでなければ使用することがある。同様に、ワイヤレスデバイスは、様々な対応する変調方式または多重化方式のうちの1つまたは複数をサポートするか、または場合によっては使用することがある。したがって、ワイヤレスデバイスは、上のまたは他のワイヤレス通信技術を使用して、1つまたは複数のワイヤレス通信リンクを確立し、その通信リンクを介して通信するのに適したコンポーネント(たとえばエアインターフェース)を含むことがある。たとえば、デバイスは、ワイヤレス媒体を通じた通信を容易にする様々なコンポーネント(たとえば、信号生成器および信号プロセッサ)を含んでもよく、関連するトランスミッタコンポーネントおよびレシーバコンポーネント(たとえば、トランスミッタおよび受信機)を有するワイヤレストランシーバを備えることがある。よく知られているように、モバイルワイヤレスデバイスは、したがって、他のモバイルデバイス、携帯電話、他の有線コンピュータおよびワイヤレスコンピュータ、インターネットウェブサイトなどと、ワイヤレスに通信することがある。
【００２９】
情報および信号が様々な異なる技術および技法のいずれかを使用して表されてもよいことを、当業者は理解するであろう。たとえば、上の説明全体を通して言及されることがあるデータ、命令、指令、情報、信号、ビット、シンボルおよびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表されることがある。
【００３０】
本明細書において開示される実施形態に関して説明した様々な例示的な論理ブロック、モジュール、エンジン、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されることがあることを当業者はさらに理解されよう。ハードウェアとソフトウェアとの、この互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、エンジン、回路、およびステップについて、上では全般にそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、システム全体に課される具体的な適用例および設計制約に依存する。当業者は、特定の適用例ごとに説明した機能を様々な方法で実装してもよいが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００３１】
本明細書において開示される実施形態に関連して説明した種々の例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途用集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書において説明した機能を果たすように設計されたこれらの任意の組合せを用いて、実現されるか、または実行される場合がある。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。また、プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサの組合せ、DSPコアと関連した1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実現されてもよい。
【００３２】
本明細書において開示された実施形態に関連して説明した方法またはアルゴリズムのステップは、直接ハードウェアにおいて具現化されても、プロセッサによって実行されるソフトウェアモジュールにおいて具現化されても、あるいはこれら2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形式の記憶媒体内にあってもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、また記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であることがある。プロセッサおよび記憶媒体は、ASICの中に存在することがある。ASICは、ユーザ端末の中に存在することがある。代替として、プロセッサおよび記憶媒体は、個別コンポーネントとしてユーザ端末の中に存在することがある。
【００３３】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェアとして実装されても、ソフトウェアとして実装されても、ファームウェアとして実装されても、あるいはそれらの任意の組合せとして実装されてもよい。コンピュータプログラム製品としてソフトウェアにおいて実装される場合、機能またはモジュールは、非一時的コンピュータ可読媒体上の1つまたは複数の命令またはコードとして記憶され、または伝送されてもよい。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含むことが可能である。記憶媒体は、コンピュータによってアクセスできる任意の利用可能な媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形態の所望のプログラムコードを搬送もしくは記憶するために使用されコンピュータによってアクセスされることがある任意の他の媒体を備えることが可能である。また、任意の接続をコンピュータ可読媒体と呼ぶことは妥当である。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから伝送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書では、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)は、データをレーザによって光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
【００３４】
開示された実施形態についての上記の説明は、当業者が本発明を作成または使用することを可能にするように提供される。これらの実施形態に対する様々な変更形態が、当業者には容易に明らかとなり、本明細書において規定される一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用されてもよい。したがって、本発明は、本明細書に示される実施形態に限定されるものではなく、本明細書において開示される原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００３５】
100  コンピューティングデバイス
105  バス
110  プロセッサ
115  入力デバイス
120  表示デバイス
122  出力デバイス
125  記憶デバイス
130  通信サブシステム
135  ワーキングメモリ
140  オペレーティングシステム
145  アプリケーション
202  システムオンチップ(SOC)
210  ソフトウェア/ハードウェアドライバ
212  暗号化エンジン
214  ハードウェアインターフェース
258  解読および読取りコマンド
260  ファイルセグメント1
262  ファイルセグメント2
264  ファイルセグメントN
263  固定の解読されたファイルセグメント
266  第1の無効化されたブロック
302、330、342  最後のブロック
304  以前に読み取られた暗号化されたファイルセグメント
309  CE解読関数
311  解読されたファイルセグメント
320  CE解読関数
346  CE解読関数
350  第1の無効化されたブロック
354  固定の解読されたファイルセグメント
378  次の解読されたファイルセグメント
【図１】
2018517921.tif 000003
【図２】
2018517921.tif 000004
【図３】
2018517921.tif 000005
【図４】
2018517921.tif 000006
【図５】
2018517921.tif 000007
【図６】
2018517921.tif 000008
【図７】
2018517921.tif 000009
【国際調査報告】
2018517921.tif 000010
2018517921.tif 000011