(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-04
(54)【発明の名称】部分ブロックのセキュアな暗号化
(51)【国際特許分類】
G09C 1/00 20060101AFI20240927BHJP
【FI】
G09C1/00 610A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024504203
(86)(22)【出願日】2022-08-31
(85)【翻訳文提出日】2024-01-23
(86)【国際出願番号】 IB2022058148
(87)【国際公開番号】W WO2023052869
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ジャケット、グレン
(72)【発明者】
【氏名】ハルニック、ダニー
(57)【要約】
圧縮データのブロックを受信することと、圧縮データのバイト単位のサイズを決定することと、圧縮データのバイト単位のサイズに関連付けられているトレイラを圧縮データに付加すること、圧縮データおよびトレイラを暗号化し、暗号化データを作り出すことであって、暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、暗号化することと、暗号化データをユーザに提供することとによって、データ・ブロックを暗号化する。
【特許請求の範囲】
【請求項1】
データ・ブロックを暗号化するためのコンピュータ実施方法であって、
1つまたは複数のコンピュータ・プロセッサによって、圧縮データのブロックを受信することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データのバイト単位のサイズを決定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データにトレイラを付加することであって、前記トレイラが、前記圧縮データのバイト単位のサイズに関連付けられている、前記付加することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データおよびトレイラを暗号化し、暗号化データを作り出すことであって、前記暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、前記暗号化することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記暗号化データをユーザに提供することと
を含む、コンピュータ実施方法。
【請求項2】
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データのバイト単位のサイズに従って、部分的に平文で埋められた第一のストレージ・ブロックを識別することと、
前記1つまたは複数のコンピュータ・プロセッサによって、部分的に平文で埋められた前記第一のストレージ・ブロックを、
前記第一のストレージ・ブロック内の平文データのバイト数を表すブロック内長フィールド、前記平文、前記第一のストレージ・ブロックを埋めるのに十分な非ゼロ・パディング
を含むように修正することと、
前記第一のストレージ・ブロックおよび前記トレイラを暗号化することであって、前記トレイラが前記平文の長さに関連付けられている、前記暗号化することと
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記非ゼロ・パディングが非決定論的データを含む、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記非ゼロ・パディングが、前記圧縮データの少なくとも一部分に関連付けられた決定論的データを含む、請求項2に記載のコンピュータ実施方法。
【請求項5】
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データにデータの少なくとも1つのブロックを付加することをさらに含み、前記少なくとも1つのブロックが前記トレイラを含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記1つまたは複数のコンピュータ・プロセッサによって、データ・ブロック閾値を満たすのに十分なデータのブロックを付加することをさらに含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
前記第一のストレージ・ブロックを暗号化することが、ワイド・ブロック暗号化関数を使用して、前記第一のストレージ・ブロックおよび前記第一のストレージ・ブロックに関連付けられたすべてのストレージ・ブロックを暗号化することを含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
データ・ブロックを暗号化するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、1つまたは複数のコンピュータ可読記憶デバイスと、前記1つまたは複数のコンピュータ可読記憶デバイス上に集合的に記憶されたプログラム命令とを備え、記憶された前記プログラム命令が、
圧縮データのブロックを受信するためのプログラム命令と、
前記圧縮データのバイト単位のサイズを決定するためのプログラム命令と、
前記圧縮データにトレイラを付加するためのプログラム命令であって、前記トレイラが、前記圧縮データのバイト単位のサイズに関連付けられている、前記プログラム命令と、
前記圧縮データおよびトレイラを暗号化し、暗号化データを作り出すためのプログラム命令であって、前記暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、前記プログラム命令と、
前記暗号化データをユーザに提供するためのプログラム命令と
を含む、コンピュータ・プログラム製品。
【請求項9】
記憶された前記プログラム命令が、
部分的に平文で埋められた第一のストレージ・ブロックを識別するためのプログラム命令と、
部分的に平文で埋められた前記第一のストレージ・ブロックを、前記第一のストレージ・ブロック内の平文データのバイト数を表すブロック内長フィールド、前記平文、および前記第一のストレージ・ブロックを埋めるのに十分な非ゼロ・パディングを含むように修正するためのプログラム命令と、
前記第一のストレージ・ブロックを暗号化するためのプログラム命令と
をさらに含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項10】
前記非ゼロ・パディングが、生成された乱数を含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
前記非ゼロ・パディングが、前記圧縮データの少なくとも一部分に関連付けられた決定論的データを含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項12】
記憶された前記プログラム命令が、前記圧縮データにデータの少なくとも1つのブロックを付加するためのプログラム命令をさらに含み、前記少なくとも1つのブロックが前記トレイラを含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項13】
記憶された前記プログラム命令が、データ・ブロック閾値を満たすのに十分なデータのブロックを付加するためのプログラム命令をさらに含む、請求項12に記載のコンピュータ・プログラム製品。
【請求項14】
前記第一のストレージ・ブロックを暗号化することが、ワイド・ブロック暗号化関数を使用して、前記第一のストレージ・ブロックおよび前記第一のストレージ・ブロックに関連付けられたすべてのストレージ・ブロックを暗号化することを含む、請求項8に記載のコンピュータ・プログラム製品。
【請求項15】
データ・ブロックを暗号化するためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、1つまたは複数のコンピュータ可読記憶デバイスと、前記1つまたは複数のコンピュータ・プロセッサによる実行のために、前記1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたプログラム命令とを含み、記憶された前記プログラム命令が、
圧縮データのブロックを受信するためのプログラム命令と、
前記圧縮データのバイト単位のサイズを決定するためのプログラム命令と、
前記圧縮データにトレイラを付加するためのプログラム命令であって、前記トレイラが、前記圧縮データのバイト単位のサイズに関連付けられている、前記プログラム命令と、
前記圧縮データおよびトレイラを暗号化し、暗号化データを作り出すためのプログラム命令であって、前記暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、前記プログラム命令と、
前記暗号化データをユーザに提供するためのプログラム命令と
を含む、コンピュータ・システム。
【請求項16】
記憶された前記プログラム命令が、
部分的に平文で埋められた第一のストレージ・ブロックを識別するためのプログラム命令と、
部分的に平文で埋められた前記第一のストレージ・ブロックを、前記第一のストレージ・ブロック内の平文データのバイト数を表すブロック内長フィールド、前記平文、および前記第一のストレージ・ブロックを埋めるのに十分な非ゼロ・パディングを含むように修正するためのプログラム命令と、
前記第一のストレージ・ブロックを暗号化するためのプログラム命令と
をさらに含む、請求項15に記載のコンピュータ・システム。
【請求項17】
前記非ゼロ・パディングが、生成された乱数を含む、請求項16に記載のコンピュータ・システム。
【請求項18】
前記非ゼロ・パディングが、前記圧縮データの少なくとも一部分に関連付けられた決定論的データを含む、請求項16に記載のコンピュータ・システム。
【請求項19】
記憶された前記プログラム命令が、前記圧縮データにデータの少なくとも1つのブロックを付加するためのプログラム命令をさらに含み、前記少なくとも1つのブロックが前記トレイラを含む、請求項15に記載のコンピュータ・システム。
【請求項20】
前記第一のストレージ・ブロックを暗号化することが、ワイド・ブロック暗号化関数を使用して、前記第一のストレージ・ブロックおよび前記第一のストレージ・ブロックに関連付けられたすべてのストレージ・ブロックを暗号化することを含む、請求項15に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、デジタル・データの暗号化に関する。本開示は、より詳細には、部分データ・ブロックの暗号化に関する。
【背景技術】
【0002】
ブロック・データ暗号化方法は、対象となる平文データを一定サイズのデータ・ブロックに分割し、次いで、各ブロックに暗号化アルゴリズムを適用する。平文は完全数(complete number)のデータ・ブロックを含まない場合があるため、平文の残余が生じる。典型的なブロック暗号化方法は、最後のデータ・ブロックを、その残余と必要な数のゼロとで埋めて、ブロックを完成させる。
【発明の概要】
【0003】
本開示の1つまたは複数の実施形態の基本的な理解を提供するために、以下に概要を提示する。この概要は、重要な要素または必須の要素を識別することも、特定の実施形態のいかなる範囲または特許請求の範囲のいかなる範囲を線引きすることも意図していない。その唯一の目的は、後述するさらに詳細な説明の前置きとして、簡略化した形式で概念を提示することである。本明細書に記載の1つまたは複数の実施形態では、デバイス、システム、コンピュータ実施方法、装置、またはコンピュータ・プログラム製品あるいはその組合せは、部分的に平文で埋められたストレージ・ブロックのセキュアな暗号化を可能にする。
【0004】
本発明の態様は、圧縮データのブロックを受信することと、圧縮データのバイト単位のサイズを決定することと、圧縮データにトレイラを付加することであって、トレイラが圧縮データのバイト単位のサイズに関連付けられている、付加することと、圧縮データおよびトレイラを暗号化し、暗号化データを作り出すことであって、暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、暗号化することと、暗号化データをユーザに提供することとによってデータ・ブロックを暗号化することに関連する、方法、システム、ならびにコンピュータ可読媒体を開示する。
【0005】
添付の図面における本開示のいくつかの実施形態に関するより詳細な説明を通じて、本開示の上記および他の目的、特徴、ならびに利点がより明らかになるであろう。本開示の実施形態において、同じ参照符号は一般に、同じ構成要素を指す。
【図面の簡単な説明】
【0006】
【
図1】本発明の一実施形態によるコンピューティング環境の概略図である。
【
図2】本発明の一実施形態による動作シーケンスを示すフローチャートである。
【
図3】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
【
図4】本発明の一実施形態による抽象化モデル層を示す図である。
【発明を実施するための形態】
【0007】
本開示の実施形態が例示されている添付図面を参照しながら、いくつかの実施形態についてより詳細に説明する。しかしながら、本開示は、様々な形態で実装されることが可能であり、したがって、本明細書に開示された実施形態に限定されると解釈されるべきではない。
【0008】
決定論的暗号化は、低エントロピーの平文を保護する能力が低い。開示された実施形態は、低エントロピーの平文入力を保護するための方法を提供する。低エントロピーの平文の一例は、データを固定長セクタ(例えば、512バイトまたは4096バイト)で記憶する固定ブロック・ストレージ・システムにN+1バイト長のファイルを記憶するファイル・システムによって作成される。Nがセクタ長で均等に割り切れる場合、これは、ファイルの最終バイトが、そのファイルを記録するために必要な最終セクタに入っていること、すなわち、最後のセクタが1バイトのみを含むことを意味する。
【0009】
高度暗号化標準(AES:Advanced Encryption Standard)は、一度に16バイト(すなわち、AESブロック)を暗号化するブロック暗号化技術である。AESの多くの暗号化モード(例えば、ECB、CBC、CFB、OFB、XEXなど)は常に、何らかの整数の16バイト・ブロックの暗号文を作成する。暗号化モードXTSは、任意の整数(16以上)のバイトを同じ数の暗号文バイトに暗号化することを可能にする暗号文盗用を使用する。XTSを効率的に復号するには、復号すべき暗号文の正確な長さを知らなければならない。XTS-AESの決定論的使用などの暗号化モードは、所与の鍵および16バイトのAESブロック入力に対して固定暗号文ブロック出力を作成するものであり、攻撃者が暗号化オラクルにアクセスできる(すなわち、鍵を用いて暗号化を行うことができ、結果として得られる暗号文出力を収集することができる)場合、弱い可能性がある。
【0010】
「漏洩される」圧縮率情報の粒度を低減するために、開示された実施形態は、暗号化の前に受信データにバイトを付加する。正確なバイト数を知っている場合、圧縮された固定ブロック・セクタ(例えば、4KB)は、16を法として切り上げられたバイト数だけを知っている場合(例えば、最終AESブロックが1、2、…16バイトを含む場合)よりも明らかに流出しやすい状態である。
【0011】
例えば、AESブロック内に1バイトの「コンテンツ」が存在し得ること、またその場合にそのAESブロックの残りの15バイトが既知の値(例えば、ゼロ・パッド)で埋められることを攻撃者が知っている場合、暗号化オラクルにアクセスできる攻撃者は、その1バイトの256個の可能な値すべてに対して作成される暗号文を作成することができ、これにより、256個の暗号文出力(それぞれ16バイト長)が作成される。攻撃者が256個の暗号文値のうちの1つ(結果として得られる暗号文への予想されるオフセット)を見た場合、攻撃者はどの平文バイトが暗号化されたかを知ることになる。
【0012】
決定論的暗号化を必要とする使用例の1つは、データ重複排除を可能にするための長さ保存圧縮(LPC:Length Preserving Compression)を想定した拡張である。このような拡張の1つは、日和見重複排除(opportunistic deduplication)と呼ばれるものであり、十分に圧縮可能なデータの収束暗号化(決定論的暗号化の一形式)の使用を必要とする。LPCの最も基本的な形式では、最後のブロックのすべてのパッドにゼロを用いることで、下流の圧縮エンジンの能力を最大化し、可能な最大圧縮率を達成する(これは事実上ゼロを除去するだけである)。暗号化される圧縮平文が、暗号化すべき最後のAESブロックに入る1バイト(または数バイトのみ)を含む場合、その最後のバイトは、上記の攻撃を使用して容易に特定される可能性がある。開示された実施形態は、最後の部分データ・ブロック内の平文データのバイトを暗号化するセキュリティの改善を可能にする。
【0013】
開示された実施形態は、ブロックの暗号化の前に部分データ・ブロックをブロック内長値および非ゼロ・パッド(NZP:non-zero-pad)で埋めることによって、暗号化データのセキュリティを強化する。部分ブロックを埋めるこの方式は、部分データ・ブロックの平文を把握することを目的とした攻撃の有効性を低減する。
【0014】
一実施形態では、方法は、圧縮データのブロックを受信することと、圧縮データのバイト・サイズ、すなわちバイト単位のサイズを決定することと、圧縮データにトレイラ(トレイラは圧縮データの決定されたバイト・サイズに関連付けられている)を付加することとによって、暗号化データのセキュリティを強化する。この実施形態では、方法はさらに、圧縮データおよび付加されたトレイラを暗号化し、暗号化データを作り出す。暗号化データのヘッダは、暗号化データの完全な暗号化データ・ブロックの数を含む。
【0015】
本発明の態様は、データ暗号化の技術分野における改善を提供する。従来の暗号化は、データ圧縮タスクを容易にするために、最後の部分データ・ブロックをゼロでパディングする。最後の部分ブロックを埋めるこの方式は、最後のデータ・ブロックに含まれる平文のセキュリティを低下させる。ブロック内長値および非ゼロ・パッドを追加すると、平文の不完全なブロックおよびゼロ・パディングの残余ではなく、フル・ブロックが暗号化用に提供される。NZPを含むフル・ブロックの暗号化は、攻撃を受けにくい暗号文を作り出す。
【0016】
本発明の態様はまた、コンピュータ機能に対する改善も提供する。詳細には、本発明の実装は、AES暗号化などの暗号化システムの動作方法に対する特定の改善を対象としている。開示された実施形態は、部分データ・ブロックをパディングするためにすべてゼロを使用することから生じる暗号文アーティファクトを除去することによって、暗号化された平文のセキュリティを強化する。
【0017】
一実施形態では、システムの1つまたは複数の構成要素は、ハードウェアまたはソフトウェアあるいはその両方を採用して、本質的に非常に技術的な問題を解決する(例えば、ブロック内長値、平文の部分ブロック、および非ゼロ・パッドを含むように部分データ・ブロックを修正すること、埋められたデータ・ブロックを暗号化することなど)。これらの解決策は、抽象的なものではなく、部分データ・ブロックのセキュアな暗号化を容易にするために必要な処理能力であるため、人間による一連の知的な行為として実行することはできない。さらに、実行されるプロセスのいくつかは、暗号化方法に関連する定義済みのタスクを実施するための特殊化されたコンピュータによって実行されてもよい。例えば、特殊化されたコンピュータを使用して、部分データ・ブロックを埋めることおよび暗号化することなどに関連するタスクを実施することができる。
【0018】
一実施形態では、方法は、圧縮暗号文データを受信するか、非圧縮暗号文データを受信し、続いてその暗号文データを圧縮してもよい。圧縮後、方法は、圧縮データのバイト数、圧縮データのバイト・サイズを決定し、圧縮データの最後のブロックのバイト数、0~15を決定する。この実施形態では、暗号化ブロック長で等しく割り切れる圧縮データ長を有するデータの場合、方法は、圧縮データの最後のブロック内のゼロ・バイトが暗号文の一部であることを示す単一バイトのトレイラを圧縮データに付加し、トレイラの4ビットは0000に設定される。ブロック長で割り切れないCDLを有するデータの場合、方法は、最後のブロックを完成させるために、追加のバイトおよび単一バイトのトレイラを追加する。圧縮データの一部である最後のブロックのバイト数を示すために、トレイラの4ビットは、0001から1111までの値に設定される。
【0019】
一実施形態では、パディング・データは、M個未満のブロックのCDLを有する圧縮データ・ストリームの非決定論的(不規則な)データを含む。M個を超えるブロックのCDLを有する圧縮データの場合、パディングは、暗号化初期ベクトル(IV:initiation vector)として使用される鍵付きハッシュ関数出力の一部分などの決定論的データを含む。
【0020】
一実施形態では、方法は、データ・ブロックの総数がM個のAESブロックの定義されたブロック閾値に等しくなるように、トレイラに加えて、非決定論的データの1つまたは複数のブロックを圧縮データに付加する。この実施形態では、最後に付加されたブロックは、15バイトの非決定論的データおよび上述の単一バイトのトレイラを含む。この実施形態では、トレイラの4ビットは、圧縮データに追加される追加のパディング・ブロックの数を示す。この実施形態では、トレイラの残りの4ビットは、圧縮データを構成する追加のパディングされたブロックの前の最後のブロックのバイト数を示す。
【0021】
次いで、圧縮データ、パディング・ブロック(存在する場合)、およびトレイラを有する最終ブロックは、選択された暗号化関数を使用して暗号化される。方法は、暗号化されるブロックの数を決定する。次いで、このブロック・カウントは、暗号化初期ベクトルとともに暗号文のブロックに付加される2バイトのヘッダの一部として提供される。次いで、方法は、暗号文、ヘッダ、およびIVをユーザに提供する。
【0022】
一実施形態では、方法は、最後のAESブロックが部分的にしか埋められていない場合についてセキュリティ保護するために、単純な形式の長さ保存圧縮(LPC)から逸脱する。具体的には、圧縮データの実際の長さが、記録されるべき最後の16バイトのAESブロックの15バイト以下しか埋められていない場合は常に、方法はそのブロックを異なる方法で扱う。一例として、LPCの長さ(L)フィールドはN+1に設定され、ここで、Nは全体的に埋められたAESブロックの整数であり、「1」は事実上、最後のAESブロックが部分的にしか埋められていないことを示すフラグである。本発明は、この最後のAESブロックが次のようにフォーマットされるようにLPCを拡張する:1)このAESブロックに入力された圧縮データ・バイトの正確な数(1から15)を表すブロック内長(IBL)フィールド。このIBLの最も単純な形式は1バイト長のIBLフィールドを使用することであるが、IBLは、4ビット程度とすることができる(この場合、16個の値を表すことができる)。2)次いで、IBLフィールドの後には15バイト以下の平文(P)フィールドが続く。3)Pバイトの後には、0~14バイトの非ゼロ・パディング(NZP)が続く。異なる実施形態は、以下で説明されるように、NZPバイトの内容について異なる可能性を利用する。
【0023】
一実施形態では、データを暗号化するための方法は、N+1バイトのデータをデータ・ブロックに分割することを含み、ここで、Nはブロックサイズで等しく割り切れる。長さ保存圧縮(LPC)の使用を含む実施形態の場合、方法は、4KBの固定ブロック記憶セクタ内に最大4KBのデータ・チャンクを記憶することを必要とする。方法は、4KBセクタをLで埋め、Lは暗号化すべき圧縮平文(CPT:compressed plaintext)の長さを表すまたは示す2バイトのフィールドであり、圧縮平文は1~4094-Tバイト長の範囲内であり、ここで、Tはセクタを埋めるゼロ・パッドの最小長を表す。一実施形態では、CPTは、1~4096-Tバイトの範囲内であり、ここで、TはLの2バイトとセクタ・ゼロ・パッドの16バイトとの組合せを表す。一実施形態では、平文は、定義されたCPT範囲内であるかまたはZPに十分なスペースを残せるほど、十分に圧縮可能ではない可能性がある。この実施形態では、方法は、暗号化された暗号文がセクタ内に収まるように、平文を拡張しない暗号化モードを使用して、平文を直接(すなわち、中間データ圧縮なしで)暗号化する。
【0024】
一実施形態では、1から4094-Tの間の任意の値について、セクタの最後の16バイト・ブロックは、通常(15/16の確率で)部分的にのみ平文で埋められる。次いで、方法は、この最後のブロックの残余をNZPで埋める。一実施形態では、方法は、CPT値を評価して、平文を含む最後のブロックが全体的に埋められるか部分的に埋められるかを判定する。一実施形態では、方法は、平文データを含む最後のブロックを評価して、そのブロックが平文データで全体的に埋められるかまたは部分的に埋められるかを判定する。
【0025】
開示された実施形態では、LPCスキームを使用する敵(foe)AESの最後の平文ブロックは、1から15バイトの間のNZPを含む。一実施形態では、方法は、必要なバイト数を有する乱数を生成し、最後のAESブロックを不規則に生成された値で埋める。この実施形態では、NZPは、NZP値の不規則な性質によりセキュリティを提供する。同一の平文データが、不規則に生成された異なるNZP値を有する可能性が非常に高いので、このような不規則なNZP値はデータ重複排除の機会をもたらすことはほとんどまたは全くない。
【0026】
一実施形態では、方法は、現在の記憶セクタのフル・ブロックの平文の鍵付きハッシュから、NZPに必要な1~15バイトを導出する。方法は、平文の暗号化に使用される予定の同じ鍵をSHA256などの適切なハッシュ関数とともに使用して、ハッシュ値を導出する。一実施形態では、鍵は、公開秘密鍵ペアの公開鍵を構成し、受信者は、受信したAES暗号化データ・セクタを復号するために使用される秘密鍵を保持する。次いで、方法は、ハッシュ値を、部分的に埋められた最後のデータ・ブロックをNZPで埋めるのに必要なバイト数まで切り捨てる。この実施形態では、方法は、現在のセクタのすべてのフル・ブロック(すなわち、最後に部分的に埋められたブロックに関連付けられたそれらのブロック)の鍵付きハッシュを生成してもよい。この実施形態では、方法は、1からNまでの任意の数の関連ブロックを使用して鍵付きハッシュ値を生成してもよく、ここで、Nは、部分的に埋められた最後のブロックに関連付けられている埋められたデータ・ブロックの完全数を表す。
【0027】
一実施形態では、方法は、暗号化鍵を使用して生成された鍵付きハッシュ値と、最後の部分ブロックに関連付けられたフル・ブロックを暗号化することによって生成された暗号文の一部分とから、NZPを導出する。この実施形態では、方法は、暗号文の1個からN個のフル・ブロックから任意の場所を使用して鍵付きハッシュ値を生成してもよく、ここで、Nは、部分的に埋められた最後のブロックに関連付けられているフル・ブロックの完全数を表す。この実施形態では、方法は、生成された鍵付きハッシュ値を、部分的に埋められた最後のデータ・ブロックをNZPで完全に埋めるのに必要なバイト数まで切り捨てる。
【0028】
一実施形態では、方法は、現在のセクタのすべての平文(すなわち、セクタのフル・ブロックからの平文、および部分的に埋められた最後のブロックからの平文)の鍵付きハッシュ値から、NZPを生成する。この実施形態では、方法は、最後の部分ブロックからの平文と、セクタの1個からN個のブロック間の任意の場所からの平文とを使用してもよく、ここで、Nは、セクタのフル・データ・ブロックの完全数を表す。方法は、最初のフル・ブロックで開始し前方に継続するブロックまたは最後のフル・ブロックで開始し後方に継続するブロックを使用して、鍵付きハッシュ値を生成してもよい。例えば、方法は、最初のフル・ブロックおよび追加のM個のフル・ブロック(Mは0からN-1の間)からの平文と、最後のブロックの部分的な平文とを使用してもよい。別の例として、方法は、部分的に埋められた最後のデータ・ブロックと、その部分的に埋められたデータ・ブロックの前の最後のフル・データ・ブロックと、最後のフル・ブロックから逆算してM個の追加のデータ・ブロックとによる平文から、鍵付きハッシュ値を生成してもよく、ここで、Mの範囲は0からN-1の間である。この実施形態では、方法は、最後に部分的に埋められたデータ・ブロックを埋めるために、必要に応じて鍵付きハッシュ値を切り捨てる。
【0029】
一実施形態では、方法は、AES暗号化のための初期化ベクトル(IV:initialization vector)として生成された鍵付きハッシュ値の残余部分を使用する。一例として、IV=hk=hash(Kd||P)であり、ここで、Kdは鍵を構成し、PはIVを生成する際に使用される平文を構成する。この実施形態では、方法は、生成された値の12バイトをIVとして使用し、一方、SHA256などのハッシュ関数は32バイトの出力値を生成する。この実施形態では、方法は、部分的な最後のフル・データ・ブロックを埋めるために必要なだけ、生成された値の残りの20バイトを使用する。
【0030】
一実施形態では、セクタの部分的に埋められた最後のデータ・ブロックを適切なNZPで埋めた後、方法は、AESおよび上記のように生成されたIVを使用して最後のデータ・ブロックを暗号化する。この実施形態では、方法は、最後のデータ・ブロックを暗号化することによって生成される暗号文を、セクタの他のデータ・ブロックを暗号化することによって生成される暗号文のセットに提供する。方法は、暗号化データの1人または複数人の受信者への配布のために、暗号文の完全なセットを提供する。この実施形態では、1人または複数人の受信者は、暗号文のセットを受信し、公開秘密鍵ペアの秘密鍵を使用して暗号文を復号する。
【0031】
一実施形態では、部分データ・ブロックをIBL長値およびNXPで埋めた後、方法はデータ・ブロックの暗号化に進む。一実施形態では、方法は、部分ブロックを埋める前に部分ブロックに関連付けられたデータ・ブロックを暗号化し、NZPの生成においてこれらのブロックの暗号文の少なくとも一部分を使用する。
【0032】
一実施形態では、方法は、ワイド・ブロック暗号化を使用して、セクタのすべてのデータ・ブロックを全体として暗号化し、平文の一部分のみを含む最終データ・ブロックに基づく攻撃の有効性を低減する。この実施形態では、方法は、データ・ブロックのセットを暗号化するために、encrypt mix encrypt 2(EME2)などのワイド・ブロック暗号化などの暗号化を使用する。
【0033】
図1は、開示された発明の実施に関連する例示的なネットワーク・リソースの概略図を提供する。本発明は、命令ストリームを処理する開示された要素のいずれかのプロセッサにおいて実施されてもよい。図に示すように、ネットワーク化されたクライアント・デバイス110は、サーバ・サブシステム102に無線で接続する。クライアント・デバイス104は、ネットワーク114を介してサーバ・サブシステム102に無線で接続する。クライアント・デバイス104および110は、時系列データ暗号化プログラム(図示せず)とともに、そのプログラムを実行するのに十分なコンピューティング・リソース(プロセッサ、メモリ、ネットワーク通信ハードウェア)を備える。
図1に示すように、サーバ・サブシステム102はサーバ・コンピュータ150を備える。
図1は、本発明の一実施形態による、ネットワーク化されたコンピュータ・システム1000内のサーバ・コンピュータ150の構成要素のブロック図を示す。
図1は単に一実装形態の例示を提供するものであり、異なる実施形態が実装され得る環境に関していかなる制限も示唆するものではないことが理解されるべきである。図示された環境に対して多くの変更を加えることができる。
【0034】
サーバ・コンピュータ150は、プロセッサ154、メモリ158、永続ストレージ170、通信ユニット152、入力/出力(I/O)インターフェース156、および通信ファブリック140を含むことができる。通信ファブリック140は、キャッシュ162と、メモリ158と、永続ストレージ170と、通信ユニット152と、入力/出力(I/O)インターフェース156との間の通信を提供する。通信ファブリック140は、プロセッサ(マイクロプロセッサ、通信およびネットワーク・プロセッサなど)と、システム・メモリと、周辺デバイスと、システム内の任意の他のハードウェア構成要素との間でデータまたは制御情報あるいはその両方を渡すように設計された任意のアーキテクチャを用いて実装され得る。例えば、通信ファブリック140は、1つまたは複数のバスを用いて実装され得る。
【0035】
メモリ158および永続ストレージ170は、コンピュータ可読記憶媒体である。この実施形態では、メモリ158は、ランダム・アクセス・メモリ(RAM)160を含む。一般に、メモリ158は、任意の好適な揮発性または不揮発性のコンピュータ可読記憶媒体を含むことができる。キャッシュ162は、メモリ158から最近アクセスされたデータ、および最近アクセスされたデータに近いデータを保持することによってプロセッサ154の性能を向上させる高速メモリである。
【0036】
本発明の実施形態を実施するために使用されるプログラム命令およびデータ、例えばデータ暗号化プログラム175は、サーバ・コンピュータ150のそれぞれのプロセッサ154のうちの1つもしくは複数によるキャッシュ162を介した実行またはアクセスあるいはその両方のために、永続ストレージ170に記憶される。この実施形態では、永続ストレージ170は磁気ハード・ディスク・ドライブを含む。磁気ハード・ディスク・ドライブの代替または追加として、永続ストレージ170は、ソリッドステート・ハード・ドライブ、半導体記憶デバイス、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、フラッシュ・メモリ、またはプログラム命令もしくはデジタル情報を記憶することが可能な任意の他のコンピュータ可読記憶媒体を含むことができる。
【0037】
永続ストレージ170によって使用される媒体はまた、取り外し可能であってもよい。例えば、取り外し可能ハード・ドライブが、永続ストレージ170のために使用されてもよい。他の例には、光学ディスクおよび磁気ディスク、サム・ドライブ、ならびに永続ストレージ170の一部でもある別のコンピュータ可読記憶媒体に転送するためにドライブに挿入されるスマート・カードが含まれる。
【0038】
これらの例では、通信ユニット152は、クライアント・コンピューティング・デバイス104および110のリソースを含む、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット152は、1つまたは複数のネットワーク・インターフェース・カードを含む。通信ユニット152は、物理通信リンクおよび無線通信リンクのいずれかまたは両方を使用して通信を提供してもよい。ソフトウェア配布プログラム、ならびに本発明の実装に使用される他のプログラムおよびデータは、通信ユニット152を介してサーバ・コンピュータ150の永続ストレージ170にダウンロードされてもよい。
【0039】
I/Oインターフェース156は、サーバ・コンピュータ150に接続され得る他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインターフェース156は、キーボード、キーパッド、タッチ・スクリーン、マイクロフォン、デジタル・カメラ、または何らかの他の好適な入力デバイスあるいはその組合せなどの外部デバイス190への接続を提供してもよい。外部デバイス190は、例えば、サム・ドライブ、携帯型の光学ディスクまたは磁気ディスク、およびメモリカードなどの携帯型コンピュータ可読記憶媒体を含むこともできる。本発明の実施形態を実施するために使用されるソフトウェアおよびデータ、例えば、サーバ・コンピュータ150上のデータ暗号化プログラム175は、そのような携帯型コンピュータ可読記憶媒体に記憶され、I/Oインターフェース156を介して永続ストレージ170にロードされ得る。I/Oインターフェース156は、ディスプレイ180にも接続する。
【0040】
ディスプレイ180は、データをユーザに表示するためのメカニズムを提供し、例えば、コンピュータ・モニタであってもよい。ディスプレイ180は、タブレット・コンピュータのディスプレイなどのタッチ・スクリーンとしても機能することができる。
【0041】
図2は、本開示の実施に関連する例示的なアクティビティを示すフローチャート200を提供する。プログラムの開始後、ブロック210において、
図1に示されたプロセッサなどの1つまたは複数のプロセッサ上で実行されるデータ暗号化プログラム175は、圧縮または非圧縮平文データを受信する。非圧縮平文データの場合、方法は、データ圧縮ルーチンを実行して、圧縮平文データを作り出す。ブロック220において、方法は、圧縮データのバイト・サイズを決定し、この決定は、圧縮データの最後のブロックに存在する圧縮データのバイト数を決定することを含む。一例として、方法は、圧縮データの総数をブロック・バイト・サイズで除算して、圧縮データの完全なブロックの数および圧縮データの最終の部分ブロックのバイト数を決定する。ブロック230において、方法は、部分データ・ブロックのバイト数を示すトレイラを部分データ・ブロックの平文に追加することによって、部分データ・ブロックを修正する。
【0042】
一実施形態では、方法は、ブロック内長値を付加し、ブロック内長値は平文長に対し2バイト値を構成する。ブロック内長フィールドおよび平文に加えて、方法は、部分ブロックの残余を非ゼロ・パディングで埋める。非ゼロ・パディングは、生成された乱数、部分ブロックに関連付けられたセクタの他のブロックからの平文の鍵付きハッシュ、部分ブロックに関連付けられたセクタの他のブロックの暗号文の鍵付きハッシュ、または方法によって使用される暗号化関数の初期化ベクトルとして生成された鍵付きハッシュ値の残余を構成してもよい。
【0043】
ブロック240において、方法は、圧縮データと付加されたトレイラとの組合せを暗号化する。一実施形態では、方法は、暗号化アルゴリズムの最小データ・ブロック閾値要件を満たすように、圧縮データに追加のデータ・ブロックを付加する。一実施形態では、方法は、ブロック暗号化プログラムを使用して、セクタの各ブロックを個別に暗号化する。一実施形態では、方法は、ワイド・ブロック暗号化プログラムを使用して、セクタのすべてのブロックをセットとして暗号化する。
【0044】
ブロック250において、方法は、暗号化されたブロックの総数の指示を含む外部ヘッダと暗号化初期ベクトルとを加えて、暗号化データをユーザに提供する。例として、提供される暗号化データは、ヘッダ、IV、暗号文、ゼロ・パッドによるフォーマットを含み、ゼロ・パッドは、暗号化アルゴリズムの出力サイズを満たすのに十分なデータのブロックを構成する。
【0045】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境と併せて実装されることが可能である。
【0046】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限の対話で迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便なオンデマンドによるネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0047】
特徴は、次の通りである。
【0048】
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダと人間との対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
【0049】
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0050】
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数の消費者にサービス提供するようにプール化され、要求に応じて、異なる物理リソースおよび仮想リソースが動的に割当ておよび再割当てされる。消費者は一般に、提供されたリソースの正確な位置について制御も知識も有していないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)で位置を特定することが可能であり得るという点で、位置の独立性があるといえる。
【0051】
迅速な柔軟性:機能を迅速かつ柔軟に、場合によっては自動的にプロビジョニングして、急速にスケール・アウトし、迅速に解放して急速にスケール・インすることができる。消費者にとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
【0052】
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダと消費者との両方に透明性がもたらされる。
【0053】
サービス・モデルは、次の通りである。
【0054】
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、消費者に提供される機能である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定の想定される例外として、消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
【0055】
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、消費者に提供される機能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションを制御する。
【0056】
インフラストラクチャ・アズ・ア・サービス(IaaS):オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行することができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、消費者に提供される機能である。消費者は、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーク構成要素(例えば、ホスト・ファイアウォール)を限定的に制御する。
【0057】
展開モデルは、次の通りである。
【0058】
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
【0059】
コミュニティ・クラウド:クラウド・インフラストラクチャは、複数の組織によって共有され、関心事項(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
【0060】
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループにとって利用可能であり、クラウド・サービスを販売する組織によって所有される。
【0061】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる。
【0062】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0063】
次に
図3を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA:personal digital assistant)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなどのクラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信してもよい。これらは、本明細書で上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組合せなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ化されてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することが可能になる。
図3に示すコンピューティング・デバイス54A~54Nのタイプが例示のみを意図していること、およびコンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を介して(例えば、ウェブ・ブラウザを使用して)、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【0064】
次に
図4を参照すると、クラウド・コンピューティング環境50(
図3)によって提供される一組の機能抽象化層が示されている。
図4に示す構成要素、層、および機能は、例示のみを意図しており、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示のように、以下の層および対応する機能が提供される。
【0065】
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング構成要素66が含まれる。いくつかの実施形態では、ソフトウェア構成要素には、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が含まれる。
【0066】
仮想化層70は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供されてもよい。
【0067】
一例では、管理層80は、以下に記載の機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド消費者およびタスクのための本人確認、ならびにデータおよび他のリソースのための保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるようなクラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA)の計画および履行85は、SLAに従って将来要求されることが予想されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0068】
ワークロード層90は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、ならびにデータ暗号化プログラム175が含まれる。
【0069】
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。本発明は、命令ストリームを処理する単一または並列の任意のシステムで有利に実施されてもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含んでもよい。
【0070】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の好適な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ(R)・ディスク、パンチカードまたは命令が記録された溝内の隆起構造体などの機械的に符号化されたデバイス、および上記の任意の好適な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体またはコンピュータ可読記憶デバイスは、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
【0071】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【0072】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続されてもよい。いくつかの実施形態では、本発明の態様を実行するために、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行してもよい。
【0073】
本明細書では、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら、本発明の態様を説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0074】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令はまた、命令が集合的に記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
【0075】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0076】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、ならびに動作を示す。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、実際には、関与する機能性に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは、場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能または作用を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【0077】
本明細書における「一実施形態」、「実施形態」、「例示的な実施形態」などについての言及は、説明される実施形態が特定の特徴、構造、または特性を含み得ることを示すが、それぞれの実施形態が必ずしも特定の特徴、構造、または特性を含むとは限らない。また、このような語句は、必ずしも同じ実施形態を指すとは限らない。さらに、特定の特徴、構造、または特性が、ある実施形態と関連して説明されるとき、明示的に説明されているかどうかに関係なく、他の実施形態と関連するそのような特徴、構造、または特性に影響を与えることは、当業者の知識の範囲内であると考えられる。
【0078】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図するものではない。単数形「a」、「an」および「the」は、本明細書で使用される場合、文脈上特に明記されていない限り、複数形も含むことを意図している。「備える(comprises)」または「備える(comprising)」という用語あるいはその両方は、本明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素、または構成要素あるいはその組合せの存在を示すが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはこれらのグループ、あるいはその組合せの存在または追加を除外するものではないことがさらに理解されよう。
【0079】
本発明の様々な実施形態の説明は、例示を目的として提示されたものであり、網羅的であること、または開示された実施形態に限定されることを意図したものではない。本発明の範囲および趣旨から逸脱することなく、当業者には多くの修正形態および変形形態が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用例、もしくは市場で見られる技術に対する技術的改善を最もよく説明するために、または本明細書に開示された実施形態を当業者が理解できるように、選択されたものである。
【手続補正書】
【提出日】2024-08-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データ・ブロックを暗号化するためのコンピュータ実施方法であって、
1つまたは複数のコンピュータ・プロセッサによって、圧縮データのブロックを受信することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データのバイト単位のサイズを決定することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データにトレイラを付加することであって、前記トレイラが、前記圧縮データのバイト単位のサイズに関連付けられている、前記付加することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データおよびトレイラを暗号化し、暗号化データを作り出すことであって、前記暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、前記暗号化することと、
前記1つまたは複数のコンピュータ・プロセッサによって、前記暗号化データをユーザに提供することと
を含む、コンピュータ実施方法。
【請求項2】
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データのバイト単位のサイズに従って、部分的に平文で埋められた第一のストレージ・ブロックを識別することと、
前記1つまたは複数のコンピュータ・プロセッサによって、部分的に平文で埋められた前記第一のストレージ・ブロックを、
前記第一のストレージ・ブロック内の平文データのバイト数を表すブロック内長フィールド、前記平文、前記第一のストレージ・ブロックを埋めるのに十分な非ゼロ・パディング
を含むように修正することと、
前記第一のストレージ・ブロックおよび前記トレイラを暗号化することであって、前記トレイラが前記平文の長さに関連付けられている、前記暗号化することと
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記非ゼロ・パディングが非決定論的データを含む、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記非ゼロ・パディングが、前記圧縮データの少なくとも一部分に関連付けられた決定論的データを含む、請求項2に記載のコンピュータ実施方法。
【請求項5】
前記1つまたは複数のコンピュータ・プロセッサによって、前記圧縮データにデータの少なくとも1つのブロックを付加することをさらに含み、前記少なくとも1つのブロックが前記トレイラを含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記1つまたは複数のコンピュータ・プロセッサによって、データ・ブロック閾値を満たすのに十分なデータのブロックを付加することをさらに含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
前記第一のストレージ・ブロックを暗号化することが、ワイド・ブロック暗号化関数を使用して、前記第一のストレージ・ブロックおよび前記第一のストレージ・ブロックに関連付けられたすべてのストレージ・ブロックを暗号化することを含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
データ・ブロックを暗号化するためのコンピュータ・プログラ
ムであって、前記コンピュータ・プログラム
は1または複数のコンピュータ・プロセッサに、
圧縮データのブロックを受信する
ことと、
前記圧縮データのバイト単位のサイズを決定する
ことと、
前記圧縮データにトレイラを付加する
ことであって、前記トレイラが、前記圧縮データのバイト単位のサイズに関連付けられている、
前記付加することと、
前記圧縮データおよびトレイラを暗号化し、暗号化データを作り出す
ことであって、前記暗号化データのヘッダが完全な暗号化データ・ブロックの数を含む、前記
作り出すことと、
前記暗号化データをユーザに提供する
ことと
を
実行させる、コンピュータ・プログラ
ム。
【請求項9】
前記コンピュータ・プログラムは前記1または複数のコンピュータ・プロセッサ
に、
部分的に平文で埋められた第一のストレージ・ブロックを識別する
ことと、
部分的に平文で埋められた前記第一のストレージ・ブロックを、前記第一のストレージ・ブロック内の平文データのバイト数を表すブロック内長フィールド、前記平文、および前記第一のストレージ・ブロックを埋めるのに十分な非ゼロ・パディングを含むように修正する
ことと、
前記第一のストレージ・ブロックを暗号化する
ことと
をさらに
実行させる、請求項8に記載のコンピュータ・プログラ
ム。
【請求項10】
前記非ゼロ・パディングが、生成された乱数を含む、請求項9に記載のコンピュータ・プログラ
ム。
【請求項11】
前記非ゼロ・パディングが、前記圧縮データの少なくとも一部分に関連付けられた決定論的データを含む、請求項9に記載のコンピュータ・プログラ
ム。
【請求項12】
前記コンピュータ・プログラムは前記1または複数のコンピュータ・プロセッサに、前記圧縮データにデータの少なくとも1つのブロックを付加する
ことをさらに実行させ、前記少なくとも1つのブロックが前記トレイラを含む、請求項8に記載のコンピュータ・プログラ
ム。
【請求項13】
前記コンピュータ・プログラムは前記1または複数のコンピュータ・プロセッサに、データ・ブロック閾値を満たすのに十分なデータのブロックを付加する
ことをさらに実行させる、請求項12に記載のコンピュータ・プログラ
ム。
【請求項14】
前記第一のストレージ・ブロックを暗号化することが、ワイド・ブロック暗号化関数を使用して、前記第一のストレージ・ブロックおよび前記第一のストレージ・ブロックに関連付けられたすべてのストレージ・ブロックを暗号化することを含む、請求項8に記載のコンピュータ・プログラ
ム。
【請求項15】
データ・ブロックを暗号化するためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、1つまたは複数のコンピュータ可読記憶デバイスと、前記1つまたは複数のコンピュータ・プロセッサによる実行のために、前記1つまたは複数のコンピュータ可読記憶デバイス上に記憶された請求項8ないし14のいずれかに記載のコンピュータ・プログラムと、
を含む、コンピュータ・システム。
【国際調査報告】