(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-04
(54)【発明の名称】平文を暗号化する方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20240927BHJP
【FI】
G09C1/00 610A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024520659
(86)(22)【出願日】2022-10-07
(85)【翻訳文提出日】2024-04-03
(86)【国際出願番号】 EP2022077966
(87)【国際公開番号】W WO2023066689
(87)【国際公開日】2023-04-27
(31)【優先権主張番号】102021005213.7
(32)【優先日】2021-10-19
(33)【優先権主張国・地域又は機関】DE
(81)【指定国・地域】
(71)【出願人】
【識別番号】598051819
【氏名又は名称】メルセデス・ベンツ グループ アクチェンゲゼルシャフト
【氏名又は名称原語表記】Mercedes-Benz Group AG
【住所又は居所原語表記】Mercedesstrasse 120,70372 Stuttgart,Germany
(74)【代理人】
【識別番号】100101856
【氏名又は名称】赤澤 日出夫
(72)【発明者】
【氏名】フリーセン,ヴィクター
(57)【要約】
本発明は、対称鍵Kを使用してブロックサイズLEのブロック暗号Eにより平文を暗号化する方法に関する。本発明は、2つの要求を満たすフィンガプリント関数(FPu)が使用され、2つの要求は、2つの不等のビットシーケンス(BF1≠BF2)から、適用のために十分に高い確率で、ビットシーケンスへのフィンガプリント関数(FPu)の適用の結果も不等の(FPu(BF1)≠FPu(BF2))という結果になること、及びフィンガプリント関数(FPu)に対してフィンガプリント逆関数(FPu
-1)が存在し、それにより常にFPu
-1(FPu(BF)||BF[u+1..L(BF)])=BF[1..u]であり、ここで、uとLEは必ずしも同じである必要はなく、平文の最初の完全なuビットPBu
1と残りの平文の選択された、又はすべてのビットFPInputの連結にフィンガプリント関数が適用されることにより、一般的な暗号EGenが使用され、続いて、暗号文CB1の最初のブロックが、uビット長の結果FPu(PBu
1||FPInput)のEGen暗号化、すなわちCB1:=EGen(FPu(PBu
1||FPInput))によって計算され、このように生成された平文CB1の最初のuビットの暗号化が、残りの平文の一部又は全部をブロック暗号Eにより暗号化するための初期化ベクトルIV:=CB1として使用され、そのために、初期化ベクトル(IV)を必要とする任意の動作モードが利用される。
【特許請求の範囲】
【請求項1】
対称鍵Kを使用してブロックサイズL
Eのブロック暗号Eにより平文を暗号化する方法において、
2つの要求を満たすフィンガプリント関数(FP
u)が使用され、前記2つの要求は、
2つの不等のビットシーケンス(BF1≠BF2)から、適用のために十分に高い確率で、前記ビットシーケンスへの前記フィンガプリント関数(FP
u)の適用の結果が不等(FP
u(BF1)≠FP
u(BF2))となること、及び
前記フィンガプリント関数(FP
u)に対してフィンガプリント逆関数(FP
u
-1)が存在し、それにより常にFP
u
-1(FP
u(BF)||BF[u+1..L(BF)])=BF[1..u]となる、ということであり、
ここで、uとL
Eは必ずしも同じである必要はなく、一般的な暗号EGenは、平文の最初の完全なuビットPB
u
1と残りの平文の選択された、又はすべてのビットFPInputの連結に前記フィンガプリント関数を適用し、続いて、暗号文CB
1の前記最初のブロックを、uビット長の結果FP
u(PB
u
1||FPInput)のEGen暗号化、すなわちCB
1:=EGen(FP
u(PB
u
1||FPInput))によって計算することによって使用され、このように生成された前記平文CB
1の前記最初のuビットの前記暗号化が、残りの平文の一部又は全部をブロック暗号Eにより暗号化するための初期化ベクトルIV:=CB
1として使用され、そのために、初期化ベクトル(IV)を必要とする任意の動作モードが利用される
ことを特徴とする方法。
【請求項2】
フィンガプリント関数FP
uとして、フィンガプリント関数FP
Tag_u,Scramble_u(BF):=Scramble
u(BF[1..u])@Tag
u(BF[u+1..L(BF)])が利用され、ここで、Tag
uは、任意の長さのビットシーケンスBFに対して意図される適用のために十分に高い確率で長さuの一意の値を計算する関数であり、ここで、Scramble
uは、前記長さuの前記ビットシーケンス(BF)を前記長さuのビットシーケンス(BF)にマッピングする可逆関数であり、@は、同じ長さの2つのビットシーケンス(BF)のビットごとのXOR結合を表す
ことを特徴とする、
請求項1に記載の方法。
【請求項3】
前記関数Tag
Uとして、暗号ハッシュ関数が利用され、前記暗号ハッシュ関数のハッシュ値が安全な方法で前記長さuに適合される
ことを特徴とする、
請求項2に記載の方法。
【請求項4】
前記関数Tag
uは、非可逆性の特性を有し及び/又は少なくとも1つの点で衝突耐性がある
ことを特徴とする、
請求項2又は3に記載の方法。
【請求項5】
前記関数Tag
uとして、鍵なし又は鍵依存の暗号ハッシュ関数HASH
(K_H)が利用される
ことを特徴とする、
請求項2~4のいずれか一項に記載の方法。
【請求項6】
PB
u
1,PT
OM
1,PT
OM
2,ADからなる平文メッセージM
P=PB
u
1||PT
OM
1||PT
OM
2||ADの暗号化M
Cは、前記メッセージに属さない2つの明示的に含まれていないビットシーケンスImplADとImpl
uに依存して、一般的な等長暗号EGen及びブロック暗号Eを使用して、以下のように定義され、すなわち
E
FP,EGen,OM,OM-NB
K(PB
u
1,PT
OM
1,PT
OM
2,AD,ImplAD,Impl
u):=
CB
u
1||E
OM
K(OM-NB(CB
u
1),PT
OM
1||PT
OM
2)であり、
ここでCB
u
1:=EGen(FP
u(PB
u
1||PT
OM
2||AD||ImplAD)@Impl
u)であり、CB
u
1’,CT
OM’,AD’からなる暗号文メッセージM
C’=CB
u
1’||CT
OM’||AD’の復号化M
P’は、前記メッセージに属さない前記2つの明示的に含まれていないビットシーケンスImplAD’とImpl
u’に依存して、以下のように定義され、すなわち
D
FP,DGen,OM,OM-NB
K(CB
u
1’,CT
OM’,AD’,L
PT1,ImplAD’,Impl
u’):=
FP
u
-1((DGen(CB
u
1’)@Impl
u’)||PT
OM’[L
PT1+1..L(PT
OM’)]||AD||ImplAD’)||PT
OM’であり、
ここでPT
OM’:=D
OM
K(OM-NB(CB
u
1’),CT
OM’)であることを特徴とする、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記暗号化法では、フィンガプリント関数FP
uとして、フィンガプリント関数FP
u
HASH(K_H),ID又はFP
HASH(K_H),E-K_Sのうちの1つが使用される
ことを特徴とする、
請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記暗号化法では、一般的な暗号EGenとして、対称L
Eビット長鍵Kを使用した前記ブロックサイズL
E=uのブロック暗号EのE-Raw暗号化、すなわちE
RAW
Kが使用される
ことを特徴とする、
請求項1~7のいずれか一項に記載の方法。
【請求項9】
PB
1,PT
OM
1,PT
OM
2,ADからなり、L(PB
1)=L
Eである平文メッセージM
P=PB
1||PT
OM
1||PT
OM
2||ADの暗号化M
Cは、前記メッセージに属さない2つの明示的に含まれていないビットシーケンスImplADとImpl
uに依存して、ブロックサイズL
E=uのブロック暗号を使用して、以下のように定義され、すなわち
E
FP,E-Raw,OM,OM-NB
K(PB
1,PT
OM
1,PT
OM
2,AD,ImplAD,Impl
u):=
CB
1||E
OM
K(OM-NB(CB
1),PT
OM
1||PT
OM
2)であり、
ここでCB
1:=E
RAW
K(FP(PB
1||PT
OM
2||AD||ImplAD)@Impl
u)であり、CB
1’,CT
OM’,AD’からなり、L(CB
1’)=L
Eである暗号文メッセージM
C’=CB
1’||CT
OM’||AD’の復号化M
P’は、L
PT1と前記メッセージに属さない2つの明示的に含まれていないビットシーケンスImplAD’とImpl
u’とに依存して、ブロックサイズL
E=uのブロック暗号を使用して以下のように定義され、すなわち
D
FP,D-Raw,OM,OM-NB
K(CB
1’,CT
OM’,AD’,L
PT1,ImplAD’,Impl
u’):=
FP
-1((D
RAW
K(CB
1’)@Impl
u’)||PT
OM’[L
PT1+1..L(PT
OM’)]||AD||ImplAD’)||PT
OM’であり、
ここでPT
OM’:=D
OM
K(OM-NB(CB
u
1’),CT
OM’)である
ことを特徴とする、
請求項6~8のいずれか一項に記載の方法。
【請求項10】
CBC動作モードはOMオペレーションモードとして使用され、前記最初のブロックの外側にあるブロックのパディングが省略され、その代わりに前記CTS動作モードがCBC動作モードと組み合わせて適用される
ことを特徴とする、
請求項8又は9に記載の方法。
【請求項11】
L(CB
1)=L
E,の場合、前記メッセージM
Cを送信する前に、前記最初のブロックCB
1が再度暗号化される
ことを特徴とする、
請求項1~10のいずれか一項に記載の方法。
【請求項12】
対称鍵Kを使用してブロックサイズL
Eのブロック暗号Eにより平文を暗号化する方法において、
フィンガプリント関数(FP
u)として、フィンガプリント関数FP
Tag_u,Scramble_u(BF):=Scramble
u(BF[1..u])@Tag
u(BF[u+1..L(BF)])が利用され、ここで、Tag
uは、任意の長さのビットシーケンスBFに対して意図される適用のために十分に高い確率で長さuの一意の値を計算する関数であり、ここで、Scramble
uは、前記長さuの前記ビットシーケンス(BF)を前記長さuのビットシーケンス(BF)にマッピングする可逆関数であり、@は、同じ長さの2つのビットシーケンス(BF)のビットごとのXOR結合を表し、
フィンガプリント関数FP
Tag_u,Scramble_uの前記Tag
u関数に含まれるビットシーケンスの新規性を保証するために、新メッセージごとに、安全な鍵依存ハッシュ関数HASH
K_Hがフィンガプリント関数FP
u
K_HのTag
u
K_H関数の基礎として使用され、EGenによる平文の最初のuビットの追加の暗号化が省略され、その代わりに、最初のuビットCB
u
1の暗号化としてFP
u
K_Hフィンガプリントが直接使用される
ことを特徴とする、方法。
【請求項13】
前記平文PTのフォーマットは、前記最初の平文ブロックPB
1が可能な限り予測可能な、特に強い一貫性ルールに従う、可能な最大限の冗長性を有する情報を含むように形成され、前記一貫性ルールの遵守が前記メッセージの復号化後に受信者により検査され、前記一貫性ルールの違反が確認された場合、例外処理が開始される
ことを特徴とする、
請求項1~12のいずれか1項に記載の方法。
【請求項14】
関数Scramble
uとして、恒等関数又は等長暗号化関数が利用され、暗号化の場合、暗号化に適合する復号化関数が逆関数として利用される
ことを特徴とする、
請求項1~13のいずれか一項に記載の方法。
【請求項15】
ブロックサイズL
E=uのブロック暗号EとL
Eビット長さの対称鍵K_Sには、前記関数Scramble
uとして、K_SによるE-Raw暗号化、すなわちE
RAW
K_Sが利用される
ことを特徴とする、
請求項14に記載の方法。
【請求項16】
初期化ベクトルIVの長さは、選択された動作モードに依存して、及び/又はCB
1の長さに依存して適合される
ことを特徴とする、
請求項14又は15のいずれか一項に記載の方法。
【請求項17】
前記暗号化は、少なくとも(u+1)ビット長の平文に使用される
ことを特徴とする、
請求項1~16のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、対称鍵Kを使用して、ブロックサイズLEのブロック暗号Eにより平文を暗号化する方法に関する。
【背景技術】
【0002】
短メッセージの高頻度の送受信は、車両エコシステム内のいくつかのアプリケーションにおいて非常に重要であり、これについては、例えば特許文献1に見出される。その場合、この刊行物に示されているように、多くの場合、メッセージの長さをそれほど長くすることなく、これらのメッセージに暗号の完全性保護及び/又は暗号リプレイ保護を提供することが不可欠であり、上記の公開公報に記載されるように、この目的には効率の理由から対称法のみが考慮の対象になり得る。ただし、場合によっては、例えば秘密の有効データを保護する、及び/又は潜在的な攻撃者が共に読み、解釈し、それによりメッセージ及び利用されたプロトコルをリバースエンジニアリングすることを妨げるために、メッセージ全体、又は有効データなど少なくともその一部を暗号化することが重要になり得る。
【0003】
特許文献1において完全性保護及びリプレイ保護についてなされたのと類似の考察が暗号化にも当てはまる。基本的に、特に短メッセージは、例えばRSAベースの方法により非対称的に暗号化できる。ただし、平文のRSA暗号文は、暗号化に使用される鍵と少なくとも同じ長さ、すなわち、例えばRSAー2048を使用した場合は2048ビットである。これにより、例えば20バイト、すなわち160ビット長の暗号化されていないメッセージから、少なくとも2048ビット長の暗号化された転送メッセージになるが、これは、短メッセージを使用する必要性と完全に矛盾する。更に、非対称復号化は、対称暗号化又は復号化に比べて何倍も時間がかかる。したがって、これは、短い高頻度のメッセージの効率的な暗号化については、対称法のみが考慮の対象になる。
【0004】
現在、対称暗号化には、例えばAESなどのブロック暗号が主に使用される。本明細書中で、ブロック暗号EのブロックサイズはLE又はL_Eで示される。ブロックサイズLEのブロック暗号EによるRaw暗号化では、正確にLEビット長の平文、いわゆる平文ブロックが対称鍵を用いて正確にLEビット長の暗号文、いわゆる暗号文ブロックに暗号化される。それに対応して、ブロックサイズLEのブロック暗号Eに属する復号化関数DによるRaw復号化では、(正確にLEビット長の)暗号文ブロックが対称鍵を用いて(正確にLEビット長の)平文ブロックに復号化される。すなわち、どちらの場合も、常に正確に1つの完全なブロックが処理され、異なる長さの入力は受け入れられない。本明細書中で、E-Raw暗号化とD-Raw復号化は、ERAW若しくはDRAWで示される。対称鍵KによるE-Raw暗号化は、ERAW
Kで示され、対称鍵にKによるD-Raw復号化はDRAW
Kで示される。
【0005】
ブロック暗号Eにより暗号化する場合、LEビットより長い平文を暗号ブロックサイズLE相当するブロックに分割し、次いで、これらが個別に対称鍵を用いて暗号化される。個々の平文ブロックの互いに完全に独立した暗号化は、ECBモード(ブロック暗号)と呼ばれる。Raw暗号化とは異なり、ECBモードで動作する暗号は、任意の長さの入力を扱うことができる。その場合、最後の平文ブロックがブロック暗号のブロックサイズより短い場合、この最後の平文ブロックを規定の方法で埋める、いわゆるパディングが適用される。ECBはブロック暗号の最も単純な動作モードであるが、これには、同じ鍵を使用すると、同じ平文ブロックが同じ暗号文ブロックに暗号化され、それによって攻撃者が対応する平文ブロックに関して推論できるという欠点がある。
【0006】
このECBの弱点に対する対策として、より複雑な動作モード(CBC,CFB,OFB,CTRなど)が開発されており、これらのモードでは、ECBモードのように個々の平文ブロックを互いに独立して直接暗号化する代わりに、個々の平文ブロックの暗号化が多少なりとも互いに密接に関わり合い、それにより次の平文ブロックの暗号化に、平文ブロック自体及び鍵に加えて、その先行ブロックの暗号化中に生成された、通常は1ブロックサイズの長さの更なるデータが含まれ、その際、次の平文ブロックの暗号化に含まれるこれらのデータが先行平文ブロックに依存し得る(CBC,CFB)か、又はそれに依存し得ない(OFB,CTR)。
【0007】
このようにして、大まかに言えば、通常、同じ平文ブロックが様々な暗号文ブロックに暗号化されるが、最初の平文ブロックには追加の入力データを受け取ることができる先行ブロックがないため、これは当てはまらない。これに対処するために、通常は最初のブロックを暗号化するときにこの追加のデータとして利用される1ブロックサイズ長の初期化ベクトルが使用される。その場合、初期化ベクトルはそれぞれ1回のみ、すなわち1つの平文に対してのみ使用することが許され、それ以外の場合は(同じ鍵で)また同じ平文ブロックに対して同じ暗号文ブロックが生成され、すなわち、同じ鍵を使用する間は初期化ベクトルはノンスでなければならない。その場合、初期化ベクトルは新規であるということ、すなわちノンスであることのみが必要であり、秘密にしておく必要はない。むしろ、暗号化に使用される初期化ベクトルは復号化にも必要であり、すなわち、初期化ベクトルは送信者と受信者の両方に知られている必要がある。初期化ベクトルは秘密にしておく必要がないため、メッセージの暗号化されない明示的な部分として転送することができ、これは例えばTLSで行われる。これに当たる場合、平文ブロックとして存在する初期化ベクトルがなければ、受信者は暗号化されたメッセージを復号化できないため、初期化ベクトルを暗号化された形式で転送することが許されない。
【0008】
ただし、特に短メッセージの一部としての初期化ベクトルの明示的な転送は、初期化ベクトルが、通常1ブロックの長さ、例えばAESの場合は128ビットであるため、リソースを大量に消費する。同じ鍵で暗号化されるメッセージの数が事前に知られている場合、送信者の側で、新しいメッセージごとに1つずつインクリメントするカウンタを使うことができる。その場合、このカウンタから、例えば送信者と受信者の間で調整された適切なパディング法によって、カウンタビットをこのパディング法を用いて追加のビットで補完するか、又は暗号学的ハッシュ関数を用いて、続いて、場合によっては必要な長さの適応を行ない、新しいメッセージごとに、カウンタのインクリメントがその前に行われたために新しい、通常は1ブロック長の初期化ベクトルを送信者により生成し、メッセージの暗号化のために使用することができる。その場合、初期化ベクトル全体を各メッセージと一緒に送信する代わりに、カウンタのみ、すなわちカウンタを表す、それぞれのメッセージの数を表すカウンタビットのみが一緒に送信される。これにより、メッセージにおいて必要とされるスペースを、例えば128ビットから、例えば、32ビット長のカウンタの場合は32ビットに低減できる。
【0009】
最初に送信者と受信者が共通の開始初期化ベクトルと、現在の初期化ベクトルから新規の次の初期化ベクトルを生成するための規則とに合意し、次いで、新しいメッセージごとに、両者の側で同期して、前もって合意した規則を用いて、この次の新しい初期化ベクトルを生成することにより、暗黙的に共有される初期化ベクトルを使用することが特に省スペース的であろう。この場合の問題は、メッセージが失われるか、又は誤った順番で到着する可能性があり、それによって送信者及び受信者によって使用される初期化ベクトルの同期性が失われるということである。
【0010】
送信者と受信者の間で初期化ベクトルを暗黙的に同期するための、同様に省スペース的な別の方法は、いずれにしても転送される必要のあるメッセージ自体から初期化ベクトルを安全な方法で導出することであり、送信者と受信者はこれを互いに独立して行うことができる。この場合の問題は、初期化ベクトルが一方では暗号化プロセスの前に送信者に既知であり、したがって平文メッセージから導出可能でなければならないが、他方で、復号化プロセスの前に受信者に既知であり、したがって、暗号化されたメッセージから導出可能でなければならず、これは(一見したところ)矛盾する要求である。
【0011】
特別なAEAD法(「Authenticated Encryption with Associated Data」)、すなわち暗号化と認証の両方を可能にする方式で使用される、いわゆる合成初期化ベクトル(SIV)は、メッセージから一意の認証スタンプ(タグ)が生成され、次いでこれがメッセージ又はメッセージの一部を初期化するときに初期化ベクトルとして使用されることにより、暗号化に使用される初期化ベクトルをメッセージ自体から生成することを特徴とする。例えばCMACとCTR (SIV-AES)の組み合わせ、AES-GCM (AES-GCM-SIV)、又はCCM (CCM-SIV)などの様々なAEAD動作モードに、合成初期化ベクトルに基づくAEADの変形形態が開発されている(特許文献2も参照)。しかし初期化ベクトル、すなわち暗号化されていないメッセージから生成された認証スタンプは、メッセージを復号化するときにも必要とされるが、初期化ベクトルは、暗号化されたメッセージから受信者によって直接導出することができないため、初期化ベクトルは、暗号化されたメッセージと一緒に受信者に暗号化されずに送信される必要があり、それにより、上述した方法で合成初期化ベクトルを使用することによってメッセージ内のスペースが節約されない。
【0012】
これに関連して、基本的に特許文献3を参照することができる。
【0013】
特許文献4では、ブロック暗号に基づくCBC-MACに類似の認証方法が定義されており、この方法は、例えばCBC-MACの場合のようにメッセージ自体のみを介する代わりに、メッセージのハッシュ値を含む接頭辞の分だけ拡張したメッセージを介して計算する。
【0014】
前述したように、ECBモードの主要な弱点は、同じ鍵を使用すると、同じ平文が同じ暗号文に暗号化されるという事実である。この問題は同じ鍵を使用するという文脈においてのみ存在し、鍵を取り替えた場合には問題がある程度リセットされるため、ドキュメントの残りの部分には固定の共有対称鍵Kが想定される。
【0015】
すべての新しい平文を暗号化するために新規の初期化ベクトルを利用するという一般に広く普及している要求は、上記の弱点を解消するために十分ではあるが必ずしも必要ではない。すなわち平文の最初のブロックが常に新規であることを確保できる場合、ブロックを連結する際に先行ブロック、特に先行暗号文ブロックを共に含める(例えばCBC,CFB)動作モードにおいて、新規の初期化ベクトルを利用するという要求を省略することができる。すなわち、特定の場合には、固定鍵については、初期化ベクトルと最初の平文ブロックとの組み合わせが新規であることで十分である。最初の平文ブロックが常に新規である場合、これらの特定の場合には、初期化ベクトルの使用を完全に省略することさえできる。
【0016】
例えば、スペース上の理由から、暗号化されるべき各平文について保証された新規の(明示的又は明示的に含まれていない)初期化ベクトルを省略したいか、又は省略しなければならない場合、平文の最初のブロックが常に新規である確率が最大化されるように平文のフォーマットを設計することが有意義である。
【0017】
個々の平文が「新規」である確率、すなわちペアで異なる確率は、それぞれの平文の最初のブロックが新規、すなわちペアで異なる確率より大きいので、可能な限り最大の確率で新規の最初のブロックを達成するために、平文全体の「新規性」を最初のブロックに集めること、すなわち最初のブロックが2つの異なった平文とも常に異なるようにそれぞれの平文の最初のブロックを設計することが有意である。
【0018】
ここで、2つの平文間の差異は、平文対に応じて平文の様々な箇所に現れる可能性があり、すなわち「新規性」は平文のビットポジション全体に分散され得る。したがって、一般的な場合、それぞれの平文ビットを単純に再ソートすることによってでは、最大限可能な新規の最初の平文ブロックを保証する平文フォーマットを見つけることはできない。しかし、平文に含まれる「新規性」は、その組み合わせが新規である可能性のある選択された特定のビットのシーケンスに暗号ハッシュ関数HASHを適用することによって非常に良好に蓄積することができる。その場合、2つの異なる平文に属し、ハッシュ値の形成に使用される2つのビットシーケンスBF1及びBF2に、ビットのうちの少なくとも1つに違いが現れた場合、非常に高い確率で、この異なるビットを含む2つのビットシーケンスのハッシュ値HashTag1:=HASH(BF1)及びHashTag2:=HASH(BF2)も異なる。
【0019】
次いで、このようにして計算されたハッシュ値HashTag:=HASH(BF)を初期化ベクトルとして直接使用できるか、又はそこから、ハッシュ値の計算に含まれる平文ビットシーケンスBFがある場合は常に新規である初期化ベクトルを導出することができる。上記の合成初期化ベクトル(SIV)の場合、例えばこのように行われる。その場合、問題は、上で既に説明したように、受信者が完全に、又は部分的に暗号化された平文を復号化できるようにするために、受信者が初期化ベクトルを知っていなければならないということである。スペース節約の理由から望ましくないが、初期化ベクトルを平文の一部として暗号化せずに明示的に転送したくない場合、これは、ハッシュ値HashTagを形成するために使用されるビットシーケンスBFの一部が暗号化されてはならないことを意味する。なぜなら、そうでなければ受信者は、送信者によって暗号化の際に使用された初期化ベクトルを、受信した、部分的又は完全に暗号化された平文から導き出すことができないからである。
【先行技術文献】
【特許文献】
【0020】
【特許文献1】独国特許出願公開第102021001095号明細書
【特許文献2】独国特許出願公開第102019113026号明細書
【特許文献3】米国特許出願公開第2015/0349950号明細書
【特許文献4】国際公開第2009/013420号
【発明の概要】
【発明が解決しようとする課題】
【0021】
したがって、本発明の課題は、対称鍵Kを使用してブロック暗号により平文を暗号化するための改良された方法、及びこのために必要なメカニズムを提供することである。
【課題を解決するための手段】
【0022】
本発明によれば、上記課題は、請求項1に記載の特徴により解決される。有利な実施形態は、請求項1に従属する従属請求項から明らかになる。上記課題は更に、請求項12に記載の特徴によって解決される。この場合も有利な発展形態は、請求項12に従属する従属請求項から明らかになる。
【0023】
最初に、平文の最初のブロックにおける平文の新規性全体をコーディングし、それにより第1のブロックを含めた平文全体における任意の変更が第1の平文ブロックの変更として作用するようにする方法が必要である。
【0024】
本発明による対称鍵Kを使用して、ブロックサイズLEのブロック暗号Eにより平文、殊に少なくとも(u+1)ビット長の平文を暗号化するための本発明による方法は、フィンガプリント関数(FPu)を平文の完全な最初のuビットと、残りの平文の選択された、又はすべてのビットの連結に適用した結果を、初期化ベクトルと平文の最初のuビットの組み合わせの代用として利用する。その場合フィンガプリント関数は、2つの不等のビットシーケンス(BF1≠BF2)の結果として、適用のために十分に高い確率で、上記で定義した意味において、2つのビットシーケンスのフィンガプリントも不等である(FPu(BF1)≠FPu(BF2))ということ、及び1つのフィンガプリント関数(FPu)に対して1つのフィンガプリント逆関数(FPu
-1)が存在し、それにより常にFPu
-1(FPu(BF)||BF[u+1..L(BF)])=BF[1..u]となるということの2つの要求が満たされさえすればよい。
【0025】
その場合、uとLEとは必ずしも同じである必要はない。平文の最初のuビットPBu
1の暗号化には、上述のように、FPuが平文の完全な最初のuビットPBu
1と残りの平文の選択された、又はすべてのビットFPInputの連結に適用され、続いて、暗号文CB1の最初のブロックがuビット長の結果FPu(PBu
1||FPInput)のEGen暗号化によって計算されることにより、一般に初期化ベクトルを要求しない暗号EGenが使用される。その場合、記号||は2つのビットシーケンスの連結を表す。すなわちその場合、CB1:=EGen(FP(PBu
1||FPInput))となる。その場合、基本的に、EGenが等長であること、すなわち、実際にたいていはそうなるとしても、CB1もuビット長である必要はない。
【0026】
したがって、このようにして生成された平文CB1の最初のuビットの暗号化は、ブロック暗号Eを用いて平文の一部又は残りのすべての平文の一部を暗号化するための初期化ベクトルIV:=CB1として使用でき、そのために、初期化ベクトル(IV)を要求する任意の動作モードを利用することができる。
【0027】
EGenにより暗号化する前にフィンガプリント関数FPuを使用することによって、新規の平文が非常に高い確率で暗号EGenへの新規の入力をもたらし、そのことがまた非常に高い確率で新規の暗号文CB1をもたらし、したがって新規の初期化ベクトルIVをもたらす。例えば、フィンガプリント関数FPTag,_u,Scramble_uをFPuとして使用する場合、疑似ランダムなCB1の計算に、平文PBu
1の最初のuビット(Scrambleu経由)と平文の残り(Tagu経由)の両方が等しく含められ、したがって、最初の平文全体も新規である場合、FPTag、_u、Scramble_u、及びEGenによって暗号化された最初のuビットCBu1から導出される初期化ベクトルIVが新規であることが、非常に高い確率で保証される。
【0028】
本発明による解決策の非常に有利な実施形態によれば、長さがuより大きいビットシーケンスBFのuビット長のフィンガプリントを生成するために、フィンガプリントは関数FPu(BF)若しくはFPTag_u、Scramble_u(BF)の結果として実現されることが企図され、これはScrambleu(BF[1..u])@(図においては○内に+)Tagu(BF[u+1..L(BF)])として定義され、Taguは任意の長さのビットシーケンスについて、適用のために十分に高い確率で一意の、長さの例えば疑似ランダムな値を計算する関数であり、ここで、Scrambleuは、長さuのビットシーケンス(BF)を長さuのビットシーケンスにマッピングする可逆関数であり、@は、2つのビットシーケンス(BF)のビット単位のXOR結合を表す。
【0029】
すなわち、平文全体の新規性を平文の最初のuビットにコーディングし、この事実を暗号化に利用できるようにするために、自然数u>0について関数FPu(「フィンガプリント」)が検索され、これは、ビットシーケンスBF、だしL(BF)>u(L(BF)はこのドキュメントにおいてビットシーケンスBFのビット長を示す)の場合、長さuのビットシーケンスFPu(BF)を次のように決定する。
-2ビットシーケンスBF1≠BF2)から、アプリケーションのために十分に高い確率でFPu(BF1)≠FPu(BF2)という結果になること、
-FPuに対してFP逆関数FPu
-1が存在し、それにより常にFPu
-1(FPu(BF)||BF[u+1..L(BF)])=BF[1..u]となり、
ここで、ビットシーケンスBFと自然数i、j、ただし1≦i≦j≦L(BF)の場合、BF[i..j]はビットi~jからなるBFの部分シーケンスを示し、すなわち例えばBF=BF[1..L(BF)]であり、||は、2つのビットシーケンス又はバイトシーケンスの連結を示す。
【0030】
その場合、「適用のために十分に高い確率で」とは、2つのビットシーケンスBF1、BF2、ただしBF1≠BF2、の所定の適用の場合に、とりわけuのサイズに基づいてFPu(BF1)≠FPu(BF2)という結果を十分確実にもたらす確率と理解できる。この場合、原理により、関数Tagは(u+x)長のビットシーケンスBFのu長さのビットシーケンスへのマッピングであるため、正確な値を示すことができず、それにより2つの異なるビットシーケンスBF1、BF2では、それらのタグは、「できるだけ」異なり、すなわちBF1≠BF2から「可能な限り」Tag(BF1)≠Tag(BF2)となる。
【0031】
ただし、実際には、Tag(BF)は常にuビット長であり、したがって「たいていの」ビットシーケンスより短いため、すべてのBF1、BF2に対してこれを100%保証する関数Tagはない。例えば、u=2を選択した場合、00、01、10、11という4つの異なるタグのみがある。したがって、5つの任意の異なるビットシーケンスBF1..BF5の場合、100%の確率で少なくとも1つの衝突、すなわち、5つのタグ Tag(BF1)...Tag(BF5)のうちの少なくとも2つが重複する。更に、u=2の場合、ランダムに選択された2つのビットシーケンスBF1、BF2の場合、すなわちTag(BF1)=Tag(BF2)では衝突の確率が少なくとも25%である。したがって、関数Taguの「質」(すなわち、(BF1≠BF2→Tag(BF1)≠Tag(BF2)の品質又は確率)は、最大でもuのサイズと同程度である。
【0032】
その一方で、Taguとして使用し、十分な大きさのuを前提として、この望ましい特性(BF1≠BF2→Tag(BF1)≠Tag(BF2))を「ほぼ100%」で保証する衝突耐性のある暗号ハッシュ関数がある。ただし、これらのハッシュ関数は、これを100%保証することはできない、上記の考慮事項を参照。ただし、衝突耐性のある暗号ハッシュ関数をタグとして使用する場合(BF1≠BF2→Tag(BF1)≠Tag(BF2))となる確率が非常に高いと考えられているため、安全であると考えられている多くの暗号メカニズムのセキュリティはこれに基づいている。前述の確率の原理は、例えば法的にも耐えられるデジタル署名などにも基づく。
【0033】
例えば、SHA-256がそうするように、ハッシュ関数が例えば256ビットの値(ハッシュタグ)を提供することもある。本発明による関数Tagは、u=20の値を利用するものとする。その場合、SHA-256によって提供されるハッシュタグの最初の20ビットをタグとして使用できる。これにより、SHA-256によって提供される「ほぼ100%」の質が得られるが、u=20の利用によりこれは大幅に低下する。その場合、uと関数Tagの有意義な選択は、それぞれの個別ケース若しくは使用ケースに依存する。例えば、u=128と、タグとして、SHA-256によって提供される値の最初の128ビットとを選択した場合、現在の認識によれば、すべてのアプリケーションに対して「安全サイドにある」とみなされる。ただし、特定のアプリケーションについては、実際には例えばu=80ビットで絶対的に十分であり、したがって、BF1≠BF2の場合、この適用のために十分に高いFPu(BF1)≠FPu(BF2)の確率が保証される場合も断じてあり得る。確率の値を数字にする必要がある場合、実際には、ほぼすべてのケースでu>=80が選択され、それによって適切なタグを用いて(1-2-20)をはるかに超える確率が得られる。
【0034】
その場合、本発明による解決策のこの有利な実施形態では、関数FPuに対して、一般的形式FPu(BF)bzw.FPTag_u,Scramble_u:=Scrambleu(BF[1..u])@Tagu(BF[u+1..L(BF)])を使用することが提案され、ここで
-Taguは、任意の長さのビットシーケンスに対して、適用のために十分に高い確率で長さuの一意の、例えば疑似ランダム値を計算する関数、例えば暗号ハッシュ関数であり、暗号ハッシュ関数のハッシュ値は、必要な場合に安全な方法で、すなわち、例えば過度に長いハッシュ値の場合、このハッシュ値の最後のuビットがTagu(BF)として利用されるか、又はハッシュ値が過度に短い場合、これが例えば暗号キーストレッチング法を用いて長さuへと引き伸ばされることにより長さuに適合される。
oTaguを適切に選択することで、弱-弱及び弱-強FP衝突耐性を達成できる他、後から更に説明されるように、非可逆性、強-弱FP衝突耐性、及び強-強FP衝突耐性も可能にすることができる。
-Scrambleuは、長さuのビットシーケンスを長さuのビットシーケンスにマッピングする可逆関数、例えば、等長暗号化(関連する復号化を逆転関数として伴う)であり、
oScrambleuの適切な選択により、同時にTagu関数を適切に選択した場合、後から更に説明するように、攻撃者にのみ関連する非可逆性、強-弱FP衝突耐性、及び強-強FP衝突耐性の特性を達成できる。
【0035】
-@は、同じ長さの2つのビットシーケンスのビットごとのXOR結合を示す。
【0036】
その場合、FPTag_u,Scramble_uFのFP逆関数は、(FPTag_u,Scramble_u)-1(BF)=Scrambleu
-1(BF[1..u]@Tagu(BF[u+1..L(BF)])によって求められる。関数FPuが上述の一般的形式を有する場合、この関数は、2つの関数TaguとScrambleuによって一意に決定される。
【0037】
したがって、このフィンガプリント関数FPTag_u、Scramble_uにより、セキュリティをそれほど損なうことなく、新規の平文の対称暗号化において初期化ベクトルの使用を省略し、その際、平文を完全に暗号化することが可能になる。
【0038】
その場合、非常に有利な発展形態によれば、暗号ハッシュ関数が関数Taguとして利用され、このハッシュ関数のハッシュ値が安全な方法で長さuに適合されることを企図することができる。
【0039】
更に、本発明による方法の有利な発展形態では、関数Taguが非可逆性の特性を有し、及び/又は少なくとも1つの種類で耐衝突性であることを企図することもできる。
【0040】
その場合、非可逆性は、攻撃者が、BF1=FPu(BF2)||BF1[u+1..L(BF)]となるような、与えられたビットシーケンスBF1に対するビットシーケンスBF2を見つけることを事実上不可能にする。その場合、攻撃者とは、本明細書の意味において、「非攻撃者」とは対照的に、FPuを定義若しくは決定するときに利用される(秘密の)鍵を知らない者と理解することができる。
【0041】
衝突耐性に関しては、4つの異なる種類が考えられ、これらはここではそれぞれ(r1,r2)∈{strong,weak}×{strong,weak}の形式の2つのタプルと呼ばれ、ここでは第1の要素r1は本来のFP衝突耐性を示し、第2の要素r2の意味は、暗号ハッシュ関数から既知の衝突耐性項に基づいている。
-[弱-弱FP衝突耐性]与えられたビットシーケンスBF1に対して、BF1[1..u]=BF2[1..u]、BF1[u+1..L(BF1)]≠BF2[u+1..L(BF2)]及びFPu(BF1)=FPu(BF2)となるようなビットシーケンスBF2を見つけることは事実上不可能である。
-[強-弱FP衝突耐性]攻撃者が与えられたビットシーケンスBF1に対してBF1≠BF2及びFPu(BF1)=FPu(BF2)となるようなビットシーケンスBF2を見つけることは事実上不可能である。
-[弱-強FP衝突耐性]BF1[1..u]=BF2[1..u]、BF1[u+1..L(BF1)]≠BF2[u+1..L(BF2)]及びFPu(BF1)=FPu(BF2)となるような2つのビットシーケンスBF1及びBF2を見つけることは事実上不可能である。
【0042】
-[強-強FP衝突耐性]攻撃者が、BF1≠BF2及びFPu(BF1)=FPu(BF2)となるような2つのビットシーケンスBF1と及びBF2を見つけることは事実上不可能である。
【0043】
その場合、非可逆性とすべての種類の衝突耐性は、十分な大きさのuの場合にのみ達成できることは明らかである。
【0044】
この方法の非常に有利な発展形態は、鍵なし又は鍵依存の暗号ハッシュ関数HASH(K_H)が関数Taguとして利用されることを更に企図することができ、ここで、K_HはHASHが場合によっては依存し、かつ括弧により示される鍵を示し、HASHはK_Hに依存し得るか、又は依存しない。
【0045】
更に、方法の非常に有利な実施形態は、恒等関数又は等長暗号化関数が関数Scrambleuとして利用されることも企図することができ、暗号化する場合、暗号化に適合する復号化関数が逆関数として利用される。これの有利な発展形態によれば、ブロックサイズLE=uを有するブロック暗号及びLEビット長の対称鍵K_Sに対して、K_Sを用いるE-Raw暗号化、すなわちERAW
K_Sが、関数Scrambleuとして利用されることを更に企図することができる。
【0046】
有利な実施形態では、このようにして生成された平文CB1の最初のuビットの暗号化を、ブロック暗号Eにより残りの平文の一部又は全部を暗号化するための初期化ベクトルIV:=CB1として使用することが更に提案され、そのために、任意の1つの初期化ベクトルを要求する動作モードを利用でき、その前に、場合によってはCB1の長さに依存して、かつ選択した動作モードに応じて、それぞれの動作モードにより要求される初期化ベクトルの長さへの安全な方法での初期化ベクトルIVの適合、例えばL(CB1)=LEでは、IVをCTR動作モードのノンスとして使用する場合に短縮が行われる。
【0047】
本発明の別の有利な実施形態によれば、対称鍵Kを使用してブロックサイズLEのブロック暗号Eにより平文を暗号化する場合、上記の種類のFP関数、すなわちFPTag_u,Scramble_uを利用すること、ここで一般的な場合、u≠LEであり得、かつ初期化ベクトルを要求しない一般的な暗号EGenを使用することが提案され、その際、FPTag,_u,Scramble_uが平文(「平文ブロック」)及び残りの平文のすべてのビットFPInputの完全な最初のuビットPBu
1の連結に適用され、続いて暗号文の最初のブロックCB1が、uビット長の結果FPTag_u,Scramble_u(PBu
1||FPInput)のEGen暗号化により計算され、すなわち、CB1:=EGen(FPTag_u,Scramble_u(PBu
1||FPInput))になる。
【0048】
この方法の1つの目標は、できるだけ短いメッセージを生成することであるため、等長暗号を一般暗号EGenとして選択することが提案され、それにより例えば、常にL(CB1)=uとなる。暗号文CB1はCBu
1で表される。
【0049】
その際、残りの平文を暗号化するための動作モードを選択する場合に、そのように計算された初期化ベクトルの実際の新規性がどの程度保証されるのかを推定することができる。例えばビットシーケンスBFに完全な非反復カウンタを取り込むことによって、初期化ベクトルの新規性が保証されている場合、新規の初期化ベクトルを必要とする各動作モードを安全に使用できる。これに対して、初期化ベクトルの新規性が平文自体の新規性に依存してのみ保証され、しかしこの新規性が平文の新規性が、例えば可能性が高いが、確実ではない場合、比較的高いリスクは、例えばOFB若しくはCTR、しかし更にCFBの使用と関係があり、好ましくは、例えばCBCを利用しなければならない。
【0050】
それによって、多くの場合、セキュリティを損なわないか、又はそれほど損なわずに、最初のブロックを暗号化する際に初期化ベクトルの使用を省略することができる。したがって、新規の平文に新規な暗号化された最初のブロックを残りのブロックの暗号化の初期化ベクトルとして使用することにより、残りのブロックの暗号化のために、CBC、CFB、OFB、CTRなどの初期化ベクトルを必要とする動作モードを利用できる。
【0051】
その場合、本発明による方法の有利な発展形態によれば、初期化ベクトルIVの長さは、選択された動作モードに応じて、及び/又はCB1の長さに依存して適合される。
【0052】
請求項12に記載の本発明による方法の代替的解決策は、対称鍵Kを使用したブロックサイズLEのブロック暗号Eによる、平文、殊に少なくとも(U+1)ビット長の平文の暗号化を企図し、フィンガプリント関数(FPu)としてフィンガプリント関数FPTag_u,Scramble_u(BF):=Scrambleu(BF[1..u])@Tagu(BF[u+1..L(BF)])が利用される。その場合、Taguは、意図される適用のために十分に高い確率で長さuの一意の値を計算する関数であり、ここで、Scrambleuは、長さuのビットシーケンス(BF)を長さuのビットシーケンス(BF)にマッピングする可逆関数であり、@は、同じ長さの2つのビットシーケンスBF)のビットごとのXOR結合を表す。新しいメッセージごとにフィンガプリント関数FPTag_u、Scramble_uのTagu関数に含まれるビットシーケンスの新規性を保証する場合、安全な鍵依存ハッシュ関数HASHK_Hがフィンガプリント関数FPu
K_HのTaguK_H関数の基礎として使用され、EGenによる平文の最初のuビットの追加の暗号化が省略され、代わりに最初のuビットCBu
1の暗号化としてFPu
K_Hフィンガプリントが直接使用される。
【0053】
したがって、FPTag_u,Scramble_u(BF):=Scrambleu(BF[1..u])@Tagu(BF[u+1..L(BF)])によって定義される、形式FPTag_u,Scramble_uのフィンガプリント関数が使用され、ここで、Taguは安全な鍵依存のハッシュ関数HASHK_Hによって実現され、このハッシュ関数の出力長はuに適切に適合され、ここで、Scrambleuは、長さuのビットシーケンス(BF)を長さuのビットシーケンス(BF)にマッピングする可逆関数であり、ここで、@は同じ長さの2つのビットシーケンス(BF)のビットごとのXOR結合を表し、u及びLEは、必ずしも同じでなくてよく、その際、フィンガプリント関数FPTag_u,Scramble_uは、平文及び残りの平文の選択された又はすべてのビットFPInputの完全な最初のuビットPBu
1への連結に適用され、かつフィンガプリント関数FPTag_u,Scramble_uのTagu関数に含まれるビットシーケンスFPInputの新規性が、新しいメッセージごとに保証されている場合、最初のuビットCBu
1の暗号化として、FPTag_u,Scramble_uフィンガプリントが直接使用され、すなわちCB1:=FPTag_u,Scramble_u(PBu
1||FPInput)であり、そのように生成された平文,CB1の最初のuビットの暗号化が、ブロック暗号Eにより残りの平文又はすべての残りの平文の一部を暗号化するために初期化ベクトルIV:=CB1として使用され、そのために、初期化ベクトル(IV)を要求する任意の動作モードが利用される。
【0054】
本発明による方法の他の有利な改良形態及び様々な実施形態は、請求項1及び12に従属する更なる従属請求項から明らかになり、かつ図面を参照しながら以下で詳しく説明される例示的な実施形態から明確になる。
【図面の簡単な説明】
【0055】
【
図1】フィンガプリント(FP)関数をその反転と共に示す概略図である。
【
図2】独立したコンポーネントとしての2つの一般的なFP関数を使用した暗号化及び復号化の動作原理を示す図である。
【
図3】構成要素に分解されたFP関数FP
Tag,_u,Scramble_u及び(FP
Tag,_u,Scramble_u)
-1を使用した暗号化及び復号化の動作原理を示す図である。
【
図4】2つのFP関数FP
u
HASH(K_H),ID(furu=L
E)及びFP
HASH(K_H),E-K_Sの動作原理を要約した形で示す図である。
【
図5】独立したコンポーネントとしての2つのFP関数を使用した暗号化及び復号化(u=L
EのときのFP
u
HASH(K_H),ID及びFP
HASH(K_H),E-K_Sの場合)の動作原理を示す図である。
【
図6】構成要素に分解されたFP関数としての2つのFP関数を使用した暗号化及び復号化(u=L
EのときのFP
u
HASH(K_H),ID及びFP
HASH(K_H),E-K_Sの場合)の動作原理を示す図である。
【
図7】代替的暗号化及び復号化方法の手順を示す図である。
【
図8】代替的暗号化及び復号化方法の手順を示す図である。
【
図9】本発明による方法の補足としての特許文献1の方法の概略図である。
【発明を実施するための形態】
【0056】
暗号化する方法の第1の関連する態様は、ビットシーケンスのuビット長のフィンガプリント(FPu)を生成する方法である。その場合、この態様は、平文全体の新規性を平文の最初のuビットでコーディングし、この事実を暗号化に利用できるようにするために用いられ、すなわち自然数u>0の場合に関数FPu(「フィンガプリント」)が求められ、この関数は、L(BF)>u(このドキュメントにおいてL(BF)はビットシーケンスBFのビット長を示す)の場合、長さuのビットシーケンスFPu(BF)を次のように決定し、すなわち
-BF1≠BF2から、非常に高い確率でFPu(BF1)FPu(BF2)になり、
-FPuに対してFP逆関数FPu
-1が存在し、それにより常にFPu
-1(FPu(BF)||BF[u+1..L(BF)])=BF[1..u]となり、
ここで、ビットシーケンスBF及び自然数i、j、ただし1≦i≦j≦L(BF)の場合、BF[i..j]はビットi~jからなるBFの部分シーケンスを示し、すなわち例えばBF=BF[1..L(BF)]であり、||は、2つのビットシーケンス又はバイトシーケンスの連結を示し、
-任意的に、非可逆性の条件が満たされ、すなわち、与えられたビットシーケンスBF1に対して、攻撃者が、BF1=FPu(BF2)||BF1[u+1..L(BF)]となるようなビットシーケンスBF2を見つけることは事実上不可能である。
-任意的にFPuも衝突耐性がある。
【0057】
関数FPuには、一般的形式FPu(BF)=Scrambleu(BF[1..u])@Tagu(BF[u+1..L(BF)])を使用することが提案され、ここで
-Taguは、任意の長さのビットシーケンスに対して高い確率で長さuの一意の、例えば疑似ランダムの値、例えば暗号ハッシュ関数を計算し、この暗号ハッシュ関数のハッシュ値は、必要な場合に安全な方法で、すなわち、例えばハッシュ値が過度に長い場合、その最後のuビットがTagu(BF)として利用されるか、又はハッシュ値が過度に短い場合、このハッシュ値は、例えば暗号キーストレッチング法を用いて長さuに引き伸ばされることにより長さuに適合される。
oTaguの適切な選択によって、弱-弱、弱-強のFP衝突耐性を達成でき、非可逆性、強-弱FP衝突耐性、及び強-強FP衝突耐性を可能にすることができる。
-Scrambleuは、長さuのビットシーケンスを長さuのビットシーケンスにマッピングする可逆関数、例えば、等長暗号化(関連する復号化を逆転関数として伴う)であり、
oScrambleuの適切な選択によって、Tagu関数を適切に選択した場合に、非可逆性、強-弱FP衝突耐性、及び強-強FP衝突耐性という攻撃者にのみ関連する特性を達成できる。
-@は、同じ長さの2つのビットシーケンスのビットごとのXOR結合を示す。
【0058】
その場合、FP
uのFP逆関数は、FP
u
-1(BF)=Scramble
u
-1(BF[1..u]@Tag
u(BF[u+1..L(BF)])によって与えられる。関数FP
uが上述の一般的形式を有する場合、この関数は、2つの関数Tag
uとScramble
uによって一意に決定される。これら2つの関数によって記述されるFP関数は、ここではFP
Tag_u、Scramble_uで示される。これらは、
図1のフローチャートに認識できる。
【0059】
一般的な暗号EGen(Encryption)、これに関連する復号化関数DGen(Decryption)、及びビットシーケンスBFの場合、EGen(BF)はEGenによりBFを暗号化した結果を示し、DGen(BF)はDGenによりBFを復号化することを示し、すなわち常に(EGen(BF))=BFである。
【0060】
ブロック暗号E(Encryption)、及びこれに関連する復号化関数D(Decryption)と、初期化ベクトルを必要とする動作モードOM(「Operation Mode」)の場合、EOM
K(IV、PT)は、初期化ベクトルIVを使用して動作モードOMで鍵Kを用いる、EOMに適合する長さの平文PT(「plaintext」)のE暗号化の結果を示し、DOM
K(IV,CT)は、初期化ベクトルIVを使用して動作モードOMで鍵Kを用いる、EOMに適合する長さの暗号文CTのD復号化の結果を示す。
【0061】
提案される暗号化方法は、メッセージMPのいくつかの構成要素を入力として受け取り、その一部を鍵Kで暗号化する。暗号化方法の以下の説明は、その方法が使用するコンポーネントの説明、入力フォーマットの説明、及び平文メッセージMPの構成要素からなるコンポーネントを使用して完全に、又は部分的に暗号化されたメッセージMCを生成する本来の方法の説明からなる。
【0062】
暗号化システムのコンポーネントには次のものが含まれる。すなわち
-一般的な、等長で安全な暗号EGen
-ブロックサイズLEのブロック暗号E
-EOM、長さLOM-IVの初期化ベクトルを必要とする動作モードOMで動作するブロック暗号E
-以下にFPと略されるフィンガプリント関数FPu、
-長さuのビットシーケンスから疑似ランダムなOM初期化ベクトルを安全な方法で、例えばビットシーケンスがまず対称的に暗号化され、続いて確立された方法でLOM-IVへの長さの適合が行われることにより生成する、任意的に動作モードOMに適合させた後処理関数OM-NB。
【0063】
入力フォーマット:
-長さLEの対称鍵K、
-暗号化される平文部分PTと後続の関連部分AD(「Associated Data」)からなるメッセージMP、すなわちMP=PT||ADであり、ここでL(PT)>uであり、すなわちPTはuより長い。関連部分ADは暗号化されないが、OM初期化ベクトルの形成、したがってその新規性に寄与する。
平文部分PTは3つの部分PBu
1、PTOM
1、及びPTOM
2からなり、すなわちPT=PBu
1||PTOM
1||PTOM
2であり、ここでPBu
1とPTOM
2はOM初期化ベクトルの形成に寄与し、PTOM
1はOM初期化ベクトルの形成に寄与せず、ここで
・L(PBu
1)=u,PBu
1、すなわち正確にuビット長であり、
・PTOM
1||PTOM
2はEOMに適合する長さを有するため、EOMのPTOM
1||PTOM
2は暗号化できる。
-OM初期化ベクトルの新規性の確率を高めるのに寄与することができ、かつ送信者と受信者に同様に知られており、それによってメッセージMPの一部ではない、例えば両方の側に知られたカウンタ又はそのようなカウンタのハッシュ値若しくは暗号化である2つの明示的に含まれていないビットシーケンス。
oフィンガプリント関数FPの追加入力として用いられる任意の長さのビットシーケンスImplAD(「implicit additional data」)。
・ImplADの使用を省略する場合、空のビットシーケンスをImplADとして選択できる。
oFPフィンガプリントXOR結合するために用いられる長さuのビットシーケンスImplu。
・Impluの使用を省略する場合、u0ビットからなるビットシーケンスをImpluとして選択できる(0ビットはXORに関して中立の要素である)。
【0064】
鍵Kによる暗号化EFP、EGen、OM、OM-NB、すなわちEFP、EGen、OM、OM-NB
K:
-入力:
1.PBu
1,PTOM
1,PTOM
2,ADmitMP=PBu
1||PTOM
1||PTOM
2||AD
2.ImplAD,Implu
-MCの暗号化された部分MCの決定:
1.FPB:=FP(PBu
1||PTOM
2||AD||ImplAD)
2.CBu
1:=EGen(FPB@Implu)
3.OM-IV:=OM-NB(CBu
1)
4.CTOM:=EOM
K(OM-IV,PTOM
1||PTOM
2)
-出力:
1.CBu
1,CTOM,この場合、
MC:=CBu
1||CTOM||ADである
-要約するとPBu
1,PTOM
1,PTOM
2,ADからなる平文メッセージMP=PBu
1||PTOM
1||PTOM
2||ADの暗号化MCを以下のように決定することが提案される。
EFP,EGen,OM,OM-NB
K(PBu
1,PTOM
1,PTOM
2,AD,ImplAD,Implu):=
CBu
1||EOM
K(OM-NB(CBu
1),PTOM
1||PTOM
2)であり、
ここでCBu
1:=EGen(FP(PBu
1||PTOM
2||AD||ImplAD)@Implu)である。
【0065】
復号化システムのコンポーネントには次のものが含まれる。
-一般的に安全な等長暗号EGenに属する復号化関数DGen
-ブロック暗号Eに属する復号化関数D
-EOMに属する復号化関数DOM
-暗号化の場合のようにFP,OM-NB,FP-1 FPに対する逆関数
【0066】
入力フォーマット:
-暗号化の場合のように対称鍵K
-暗号文CT’と後続の暗号化されない関連部分AD’とからなるメッセージMC’、すなわちMC’=CT’||AD’,ここでL(CT’)>u。
o暗号文部分CT’もまた2つの部分、すなわち暗号化された最初のブロックCBu
1’と後続の暗号文CTOM’、すなわちCT’=CBu
1’||CTOM’及びMC’=CBu
1’||CTOM’||AD’,とからなり、ここで
・L(CBu
1’)=u,CBu
1’、すなわち正確にuビット長であり
・CTOM’はDOMに適合する長さを有し、それによりCTOM’をDOMにより復号化することができる。
-暗号化の場合にようにImplAD’,Implu’
【0067】
鍵Kによる復号化DFP,DGen,OM,OM-NB,すなわちDFP,DGen,OM,OM-NB
K:
-入力:
1.CBu
1’,CTOM’,AD’、ここで
MC’=CBu
1’||CTOM’||AD’
2.LPT1,平文部分PTOM
1の長さ
3.ImplAD’,Implu’
-MP’の復号化された部分の決定:
1.OM-IV’:=OM-NB(CBu
1’)
2.PTOM’:=DOM
K(OM-IV’,CTOM’)
3.PTOM
1’:=PTOM’[1..LPT1]及び
PTOM
2’:=PTOM’[LPT1+1..L(PTOM’)]
4.PBu
1’:=FP-1((DGen(CBu
1’)@Implu’)||PTOM
2’||AD||ImplAD’)
-出力:
1.PBu
1’,PTOM’,この場合
MP’:=PBu
1’||PTOM’||AD’
【0068】
要約すると、CBu
1’,CTOM’,AD’からなる暗号文メッセージ
MC’=CBu
1’||CTOM’||AD’の復号化 MP’を次のように定義することが提案される。
DFP,DGen,OM,OM-NB
K(CBu
1’,CTOM’,AD’,LPT1,ImplAD’,Implu’):=
FP-1((DGen(CBu
1’)@Implu’)||PTOM’[LPT1+1..L(PTOM’)]||
AD||ImplAD’)||PTOM’であり、
ここでPTOM’:=DOM
K(OM-NB(CBu
1’),CTOM’)である。
【0069】
2つの
図2及び
図3は、一方は独立したコンポーネントとして2つの一般的なFP関数を使用し、もう一方は構成要素に分解されたFP関数FP
Tag,_u,Scramble_u及び(FP
Tag,_u,Scramble_u)
-1を用いた暗号化及び復号化の動作原理を示す。
【0070】
その場合、FP部分関数Taguには、例えばSHA-256やSHA-512などの鍵なしの、或いは例えばHMAC、CBC-MAC、又はCMACなどの鍵依存の暗号ハッシュ関数を基礎として使用することができる。鍵のない暗号ハッシュ関数の使用には、鍵を知っているかどうかに関係なく、暗号ハッシュ関数の一方向性と、場合によっては弱若しくは強衝突耐性が適用されるという利点があるが、鍵依存の暗号ハッシュ関数の場合、使用される鍵が知られている場合には、これらの特性がいつも与えられるとは限らない。鍵依存の暗号ハッシュ関数の使用には、潜在的な攻撃者が鍵を知ることなしにはこの攻撃者が知るビットシーケンスからハッシュ値を計算できないという利点がある。HMAC又は鍵導出関数(KDF)は、2つの手法の組み合わせ、したがって2つのクラスのハッシュ関数の利点を兼ね備える。本明細書では、鍵レス暗号ハッシュ関数をHASHで示し、鍵K_Hを使用する鍵依存暗号ハッシュ関数をHASHK_Hで示し、鍵なし暗号ハッシュ関数又は鍵K_Hを使用する鍵依存暗号ハッシュ関数のどちらかをHASH(K_H)で示す。Tagu
K_Hという名称は、Taguが鍵K_Hに依存するハッシュ関数HASHK_Hを基礎として使用する場合に利用され、FPu
K_Hは、これに関連するTagu関数が鍵K_Hに依存するハッシュ関数HASHK_Hを基礎として使用することを示す。FPuがTaguの基礎として、弱(強)ハッシュ衝突耐性の条件を満たす暗号ハッシュ関数を使用する場合、FPuは弱-弱(弱-強)FP衝突耐性の特性を有する。更に、Taguの基礎として暗号ハッシュ関数を使用することによって、非可逆性、FPuの強-弱若しくは強-強のFP衝突耐性の前提条件が形成される。
【0071】
HASH(K_H)がuとは異なる長さのハッシュ値を生成する場合は、長さ適合関数LAuを用いてHASH(K_H)によって生成されたハッシュ値をuに適合させ、その結果得られる合成LAu○HASH(K_H)をTaguとして使用することが提案され、ここで、LAuは、暗号学で知られている方法を用いて、例えば、出力ビットシーケンスPZBFが過度に長い場合、PZBFの最後のuビットがLAu(PZBF)として利用されるか、又はビットシーケンスPZBFが過度に短い場合、これが例えばキーストレッチング法を用いて長さuに引き伸ばされることにより任意の長さの擬似ランダムビットシーケンスPZBFから長さuの擬似ランダムビットシーケンスを生成する関数である。
【0072】
更に、関数Scrambleuの場合、ビットシーケンスをそのまま変えない恒等関数IDを使用することも提案され、これは、Scrambleu関数の省略と同等である。恒等関数の逆関数は恒等関数ID自体である。この特に単純なScrambleuの変形形態もまた、例えばFPu関数の非可逆性及び強-弱若しくは強-弱のFP衝突耐性が要求されない場合に有利に利用できる単純なFPu関数をもたらす。
【0073】
鍵なし又は鍵依存の暗号ハッシュ関数HASH(K_H)の場合、FPu
HASH(K_H),IDは、HASH(K_H)をTagu関数として、恒等関数IDをScrambleu関数として利用するFPu関数を示し、対応する長さ適合関数LAuの適用が考えられる。したがって、FPu
HASH(K_H)、IDは、最初の平文ブロックの外側にある平文のビットのHASH(K_H)ハッシュ値を形成し、これを、LAuによる長さ適合後、@を使用して平文ブロックの変更されていない最初のuビットに追加する。FPu
HASH(K_H)、IDは、HASH(K_H)自体に弱若しくは強衝突耐性がある場合、弱-弱若しくは弱-強のFP衝突耐性をもつ。
【0074】
ただし、FPu関数の非可逆性、及び/又はその強-弱及び/又は強-強のFP衝突耐性が有利であるコンステレーションがある可能性がある。例えば、このような場合、関数Scrambleuに等長暗号化を使用することが提案される。Scrambleuの結果は公開されず、更にEGenにより暗号化されるため、この暗号化は必ずしも強である必要はないが、対応するFPu関数の、攻撃者に関連する特性の強度は、使用されるScrambleuの暗号化の強度に直接依存することに注意しなければならない。
【0075】
ブロック暗号Eについてu=LEの場合、ERAW暗号化は、攻撃者が計算できない、若しくは元に戻すことができない、初期化ベクトルを必要としない等長暗号化として有利に使用できる。uが対称暗号Eのブロックサイズに等しい場合、すなわちu=LEの場合、E-Raw暗号化を、Scrambleu関数として、すなわち、対称鍵K_SにScrambleu:=ERAW
K_Sを使用することが提案される。ERAW
K_Sの逆関数は、これに関連する復号化関数DRAW
K_Sである。E-Raw暗号化をScrambleuとして使用し、同時に暗号ハッシュ関数HASH(K_H)をTaguとして使用することによって、FPu関数の非可逆性、強-弱FP衝突耐性若しくは強-強FP衝突耐性という攻撃者のみに関連する特性も達成される。
【0076】
鍵なし又は鍵依存の暗号ハッシュ関数HASH(K_H)と、一致する対称鍵K_Sを有するブロック暗号Eについては、FPHASH(K_H)E-K_Sは、HASH(K_H)をTagu関数として、及びERAW
K_SをScrambleu関数として利用するFPu関数を示し、ここでu=LEであり、対応する長さ適合関数LAL_Eの適用が考えられる。すなわち、FPHASH(K_H)、E-K_Sは、最初の平文ブロックの外側にある平文のビットのHASH(K_H)ハッシュ値を形成し、これを、LAL_Eによる長さ適合後、@により最初の平文ブロックのE-Raw暗号化に追加する。HASH(K_H)が弱若しくは強突耐性をもつ場合、FPHASH(K_H)、E-K_Sは非可逆性の特性をもち、かつ強-弱若しくは強-強FP衝突耐性をもつ。
【0077】
図4は、2つのFP関数FP
u
HASH(K_H),ID(u=L
Eの場合)及びFP
HASH(K_H),E-K_Sの動作原理をまとめた形で示し、ここで、FP
HASH(K_H),(E-K_S)はこれらのFP関数の両方を表し、(E
RAW
K_S)は恒等関数ID又はE-Raw暗号化E
RAW
K_Sを示し、(D
RAW
K_S)は恒等関数ID又はE-Raw復号化D
RAW
K_Sを示す。
【0078】
その場合、上述した暗号化方法、例えばEFP,EGen,OM,OM-NB
KではFP関数として、FPu
HASH(K_H),ID又はFPHASH(K_H),E-K_Sを使用することができる。
【0079】
両方の
図5及び
図6は、一方は独立したコンポーネントとして2つのFP関数を使用し、もう一方はその構成要素に分解されたFP関数を用いる暗号化と復号化(u=L
Eの場合)の動作原理を示す。
【0080】
上述した本発明による暗号化方法、例えばEFP,EGen,OM,OM-NBの別の有利な実施形態は、一般的な暗号EGenとして、対称のLEビット長の鍵K、すなわちERAW
Kを使用して、ブロックサイズLE=uのブロック暗号EのE-Raw暗号化を使用することである。
【0081】
EGenとしてERAW
Kを使用すると、PB1,PTOM
1,PTOM
2,ADからなる平文メッセージMP=PB1||PTOM
1||PTOM
2||AD、ただしL(PB1)=LEの暗号化MCはメッセージに属さない2つの明示的に含まれていないビットシーケンスImplAD及びImpluに依存して次のように定義でき、
EFP,E-Raw,OM,OM-NB
K(PB1,PTOM
1,PTOM
2,AD,ImplAD,Implu):=
CB1||EOM
K(OM-NB(CB1),PTOM
1||PTOM
2)であり、
ここでCB1:=ERAW
K(FPu(PB1||PTOM
2||AD||ImplAD)@Implu)であり、CB1’,CTOM’,AD’からなる、L(CB1’)=LEである暗号文メッセージMC’=CB1’||CTOM’||AD’の復号化MP’がLPT1と、メッセージに属さない2つの明示的に含まれていないビットシーケンスImplAD’及びImplu’とに依存して次のように定義される。
DFP,D-Raw,OM,OM-NB
K(CB1’,CTOM’,AD’,LPT1,ImplAD’,Implu’):=FPu
-1((DRAW
K(CB1’)@Implu’)||PTOM’[LPT1+1..L(PTOM’)]||AD||ImplAD’)||
PTOM’
ここで、PTOM’:=DOM
K(OM-NB(CBu
1’),CTOM’)である。
【0082】
任意の十分な大きさのuの場合に、安全な鍵依存ハッシュ関数HASHK_H、例えば鍵K_Hを使用する安全な鍵導出関数が、FP関数FPu
K_HのTagu
K_H関数の基礎として使用される場合、攻撃者は、鍵K_Hを知ることなしには、指定されたビットシーケンスBFに対して値Tagu
K_H(BF)を決定することができない。更に、値Tagu
K_H(BF)の計算に含まれるビットシーケンスBFが新しいメッセージごとに新規であることが保証される場合、Tagu
K_Hを用いて計算された値Tagu
K_H(BF)も新しいメッセージごとに新規である。これら2つの条件が満たされる場合、平文の最初のuビットへのu関数の適用のuビット長の結果を同様にuビット長の(新規かつ秘密の)値Tagu
K_H(BF)にXOR結合することによって求められるuビット長のフィンガプリントを、uビット長さの新規の鍵Tagu
K_H(BF)を用いた平文の最初のuビットの暗号化とみなすことができる。
【0083】
したがって、フィンガプリント関数FP
uのTag
u関数に含まれるビットシーケンスの新規性が保証される場合、新しいメッセージごとに安全な鍵依存ハッシュ関数HASH
K_HをFP関数FP
u
K_HのTag
u
K_H関数の基礎として使用すること、EGenによる平文の最初のuビットの追加の暗号化を省略すること、その代わりに、最初のuビットCB
u
1の暗号化としてFP
u
K_Hフィンガプリントを直接使用すること、すなわち、例えば上述の暗号化方法E
FP,EGen,OM,OM-NBの場合、CB
u
1として、値FP
u
K_H(PB
u
1||PT
OM
2||AD||ImplAD)、すなわち、CB
u
1:=FP
u
K_H(PB
u
1||PT
OM
2||AD||ImplAD)を使用することが提案される。このようにE
FP,EGen,OM,OM-NBから導出される暗号化方法は、E
FP-K_H,OM,OM-NBで示される。次の2つの
図7及び
図8は、そのような方法の手順を示す。その場合、CB
u
1新規性は(PT
OM
2||AD||ImplAD)の新規性によって既に保証されているため、暗黙の値Impl
u使用は省略できる。最初のuビットの暗号化のためにE
FP-K_H,OM,OM-NBを適用する場合、鍵K_Hのみが使用され、その場合、特に鍵Kは使用されないことに注意しなければならない。更に、この方法はFP
u
K_HのScramble
uに対して特別な要件を課さないことにも注意しなければならない。
【0084】
提案される方法は、受信メッセージの特定の弱い完全性検査を可能にする。その理由は、暗号ハッシュ関数HASH(K_H)を用いて生成されたハッシュ値が、最初の平文ブロックPB1の暗号化に含まれており、復号化の際にここから再び「引かれ」るためである。したがって、暗号化されたメッセージMC’、すなわち暗号文CT’又は追加データAD’の各変更は、特にこの変更が行われたブロックに関係なく、元の平文ブロックPB1からの復号化時に取得された最初の平文ブロックPB1’との差違をもたらす(このことは、メッセージの他の部分、特に暗号文CT’の他のブロックには通常該当しない)。したがって、最初の平文ブロックPB1が可能な限り予測可能な、すなわちエントロピがほとんど含まれない、特に強い一貫性ルールに従う、すなわち最大限可能な冗長性を有する情報を含むように平文PTのフォーマットを形成し、それにより一貫性検査によって、例えばその受信者が最初の平文ブロックの変更を高い確率で、例えばそれを解析して認識できる見込みが高くなるようにすることが提案される。受信者が復号化後に一貫性ルールの1つが違反されていることを確認した場合、それにより受信者は、メッセージMCが操作されたことを認識し、場合によっては例外処理を開始できる。このような冗長性を含む情報の例としては、受信者ID、送信者ID、利用されるプロトコルバージョンなどであり得る。
【0085】
例えばCBCなどのいくつかの動作モードでは、完全な平文ブロックのみを暗号化できる。最後の平文ブロックが不完全な場合は、パディング法を使用してそれを埋める。パディングが使用され、かつ短いデータグラムのようなメッセージではよくあるが、平文が送信者と受信者に知られた固定長である場合、この場合どの平文でも同じ数Lpadの使用されないパディングビットを最初の平文ブロックPB1の固定位置、例えばその末尾に挿入すること、及びそれに対応して平文の残部をLpadビットの分だけ平文の末尾へシフトさせることが提案される。このようにして、最後の平文ブロックが完了し、パディングの必要がなくなるが、暗号化された平文CTの長さがそれによって変化することはない。更に、このようにして第1の平文ブロックPB1に追加されたビットをメッセージの認証を強化することが提案され、その際、これらのLpadビットが受信者によって検査可能な値PADで、例えば固定値、例えば0ビットのシーケンスで、或いは、平文メッセージから導出可能な値、例えば当初の完全な平文メッセージ、すなわちPADビットが挿入されない完全な平文メッセージのHASHK_Hを用いて形成されたハッシュ値の最後のLpadビットで占められる。その場合、復号化後、復号化されたメッセージ内の既知の位置にあるビットシーケンスのPAD値が、受信者に知られているか、又はPAD’ビットが暗号化された後に復号化されたメッセージから導出される予想PAD値に相当するかどうかを確認することができる。それに当たらない場合、メッセージが操作されていると考えることができる。
【0086】
提案される暗号化法の欠点は、最初の平文ブロックが一方では復号化プロセスの最後に初めて復号化され、したがって最初の平文ブロックに含まれる情報も全部の復号化プロセスが終わって初めて使用できるということである。その一方で、このブロックがなければ暗号文の残部の復号化ができないため、このブロックが最初に転送される必要がある。したがって、最初に転送される平文ブロックPB1に含まれる情報は、復号化プロセスの完了後に初めて使用することができ、これは、欠点であるかもしれないが、意図された短メッセージであるためそれほど重要ではない。この欠点を更に軽減するためには、最初のブロックは、可能な限り、復号化プロセス中に必要とされない情報を含まなければならない。したがって、最初の平文ブロックに属する情報の選択は、「最小エントロピ」の要求と「緊急でない使用」の要求という、場合によっては互いに緊張関係にある2つの要求によって決定される。
【0087】
既に何度か示唆したように、場合によっては新規ではない初期化ベクトルを使用する場合、CBC動作モードは多くの状況で、例えば等長CFB、OFB、及びCTR動作モードより安全である。なぜなら、CBC動作モードで繰り返し使用される初期化ベクトルは、通常、暗号文の公開につながらないが、例えばCTRでは一般的なしばしば起こるコンステレーションはこれに当てはまるからである。したがって提案される方法について、この方法が初期化ベクトルの新規性についての確率を高めることができるが、この確率は、一般的な場合、ブロック暗号Eの動作モードOMとしてCBCを使用することを保証しないものと考えられる。従来のCBC動作モードの大きな欠点は、この動作モードがブロック全体しか暗号化できないということであり、これにより、不完全なブロックはパディングで完全にされる必要があり、このことが生成される暗号文の長さ、ひいては転送されるメッセージの長さに不都合に作用する。
【0088】
しかしながら、CBC動作モードは、CTSモード(「Ciphertext Stealing」)と既知の方法で組み合わせることができ、それにより、CBC動作モードを使用する場合でも、平文長と等しい暗号文長が達成される。CTSモードは、使用されるブロック暗号Eのブロックサイズより長い、すなわちLEより長い平文にのみ適用できる。暗号化される平文PTの長さがLEより大きい場合、上述の暗号化法をCBC-CTSモードと組み合わせることができる。CBCを使用することによって、上述の方法は、場合によっては新規でない初期化ベクトルに対してロバストになり、CTSを使用することによって、暗号文の長さが平文の長さを超えなくなる。したがって、上述の方法で、CBC-CTS動作モードを動作モードOMとして利用することが提案される。
【0089】
状況によっては、例えば、攻撃者が傍受したメッセージを解析するのを困難にするために、転送される初期化ベクトルを暗号化することが有意義である。メッセージMCを送信する前に、最初のブロックCB1をもう一度暗号化すること、すなわち、例えばメッセージMC=CB1||CTOM||ADの代わりに、メッセージMCC=CCB1||CTOM||ADを送信することが提案され、ここで、CCB1:=ERAW
K_IV(CB1)は、送信者と受信者に同様に知られているビット長LEの秘密対称鍵K_IVを表す。メッセージMCC’=CCB1’||CTOM’||AD’を受信した後、第1のステップにおいて、最初のブロックCCB1’がK_IV、すなわちCB1’:=DRAW
K_IV(CCB1’)で復号化され、続いて、メッセージMC’:=CB1’||CTOM’||AD’が上記の方法で復号化される。
【0090】
特許文献1において、抜け落ちて再び取り戻された短メッセージを認識し、リプレイ攻撃から保護するためのカウンタベースの方法が提案される。その場合、特に、送信者(S)と受信者(E)により、各新しいメッセージMを送信若しくは受信する場合に1ずつインクリメントされる固定ビット長の同期カウンタS.TotCounter若しくはE.TotCounterを用いること、及びこのカウンタを固定長の2つの部分、本体カウンタTrunkCounterと後続の転送カウンタTransCounterとに分割することが提案され、それによりS.TotCounter=S.TrunkCounter || S.TransCounter及びE.TotCounter = E.TrunkCounter || E.TransCounterとなり、ここでTransCounterのビット長はTransCounterで示される。更に、その中で、TransCounter部分のみを各メッセージMと共にM.TransCounterとして転送すること、及び受信者の側で特許文献1に記載される方法に従いE.TrunkCounter及びM’.TransCounterからトータルカウンタE.TotCounterを再構築することが提案される。(
図9を参照)
【0091】
次に、M.TransCounterを含むメッセージMの特定の部分を暗号化する場合、メッセージごとに新規の初期化ベクトルを取得しながらメッセージにおけるスペースを節約するために、トータルカウンタS.TotCounterを使用して初期化ベクトルを形成するべく、例えばS.TotCounterから疑似ランダムな初期化ベクトルを、例えば1ブロックサイズ長さの値S.IV:=LA(HASH(K_H)(S.TotCounter))が送信者により暗号化のための初期化ベクトルとして使用されることによって安全な方法で導出することが考えられる。送信者がS.TransCounterをメッセージMの一部として、すなわちM.TransCounterとして共に送信した場合、受信者はメッセージを受信した後、S.TrunkCounter=E.TrunkCounterが両方の側で暗黙的に存在するため、暗号化に使用された初期化ベクトルをE.IV:=LA(HASH(K_H)(E.TrunkCounter||M’.TransCounter))として再構築できる。ただし、この手順はM.TransCounterが平文で転送される場合にしか機能しない。これに対して、M.TransCounterが暗号化されて転送されるべきときには、受信者はメッセージの転送カウンタの値を直接、特にM’が復号化される前に読み取ることができないため、従来の手法はもはや機能しない。
【0092】
この場合、本明細書に提案される方法は、このようにして、初期化ベクトルと暗号化される平文の最初のブロックとの組み合わせが高い確率で新規であり、M.TransCounterがメッセージMの暗号化された部分の一部として転送され、それでも送信者により暗号文CTの復号化を行うことができるということを達成できるため、有利に用いることができる。このために、S.TransCounterはメッセージMの最初の平文ブロックPB1に取り込まれ、このことは実際にはTranCounter長<LEが常に有効であるため、常に可能であるはずであり、両方の側で既知のカウンタ部分S.TrunkCounter = E.TrunkCounterから安全な方法で、例えばS.Implu := LA(HASHK_H(S.TrunkCounter)),によって、S.TransCounterを含む最初の平文ブロックPB1と組み合わせてユニークな、特に新規の組み合わせを形成するS.Impluのための疑似ランダム値が決定される。最後に、提案される方法によれば、メッセージMは、S.Impluを使用して対称鍵Kにより暗号化される。その場合、トータルカウンタS.TotalCounter = S.TrunkCounter ||の新規性は、S.TrunkCounteから導出された値S.Impluとカウンタ部分S.TransCounterを含む最初の平文ブロックPB1との組み合わせが、非常に高い確率でユニークな、すなわち新規であることを保証する。
【手続補正書】
【提出日】2024-04-03
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
対称鍵Kを使用してブロックサイズL
Eのブロック暗号Eにより平文を暗号化する方法において、
2つの要求を満たすフィンガプリント関数(FP
u)が使用され、前記2つの要求は、
2つの不等のビットシーケンス(BF1≠BF2)から、適用のために十分に高い確率で、前記ビットシーケンスへの前記フィンガプリント関数(FP
u)の適用の結果が不等(FP
u(BF1)≠FP
u(BF2))となること、及び
前記フィンガプリント関数(FP
u)に対してフィンガプリント逆関数(FP
u
-1)が存在し、それにより常にFP
u
-1(FP
u(BF)||BF[u+1..L(BF)])=BF[1..u]となる、ということであり、
ここで、uとL
Eは必ずしも同じである必要はなく、一般的な暗号EGenは、平文の最初の完全なuビットPB
u
1と残りの平文の選択された、又はすべてのビットFPInputの連結に前記フィンガプリント関数を適用し、続いて、暗号文CB
1の前記最初のブロックを、uビット長の結果FP
u(PB
u
1||FPInput)のEGen暗号化、すなわちCB
1:=EGen(FP
u(PB
u
1||FPInput))によって計算することによって使用され、このように生成された前記平文CB
1の前記最初のuビットの前記暗号化が、残りの平文の一部又は全部をブロック暗号Eにより暗号化するための初期化ベクトルIV:=CB
1として使用され、そのために、初期化ベクトル(IV)を必要とする任意の動作モードが利用される
ことを特徴とする方法。
【請求項2】
フィンガプリント関数FP
uとして、フィンガプリント関数FP
Tag_u,Scramble_u(BF):=Scramble
u(BF[1..u])@Tag
u(BF[u+1..L(BF)])が利用され、ここで、Tag
uは、任意の長さのビットシーケンスBFに対して意図される適用のために十分に高い確率で長さuの一意の値を計算する関数であり、ここで、Scramble
uは、前記長さuの前記ビットシーケンス(BF)を前記長さuのビットシーケンス(BF)にマッピングする可逆関数であり、@は、同じ長さの2つのビットシーケンス(BF)のビットごとのXOR結合を表す
ことを特徴とする、
請求項1に記載の方法。
【請求項3】
前記関数Tag
Uとして、暗号ハッシュ関数が利用され、前記暗号ハッシュ関数のハッシュ値が安全な方法で前記長さuに適合される
ことを特徴とする、
請求項2に記載の方法。
【請求項4】
前記関数Tag
uは、非可逆性の特性を有し及び/又は少なくとも1つの点で衝突耐性がある
ことを特徴とする、
請求項2又は3に記載の方法。
【請求項5】
前記関数Tag
uとして、鍵なし又は鍵依存の暗号ハッシュ関数HASH
(K_H)が利用される
ことを特徴とする、
請求項
2に記載の方法。
【請求項6】
PB
u
1,PT
OM
1,PT
OM
2,ADからなる平文メッセージM
P=PB
u
1||PT
OM
1||PT
OM
2||ADの暗号化M
Cは、前記メッセージに属さない2つの明示的に含まれていないビットシーケンスImplADとImpl
uに依存して、一般的な等長暗号EGen及びブロック暗号Eを使用して、以下のように定義され、すなわち
E
FP,EGen,OM,OM-NB
K(PB
u
1,PT
OM
1,PT
OM
2,AD,ImplAD,Impl
u):=
CB
u
1||E
OM
K(OM-NB(CB
u
1),PT
OM
1||PT
OM
2)であり、
ここでCB
u
1:=EGen(FP
u(PB
u
1||PT
OM
2||AD||ImplAD)@Impl
u)であり、CB
u
1’,CT
OM’,AD’からなる暗号文メッセージM
C’=CB
u
1’||CT
OM’||AD’の復号化M
P’は、前記メッセージに属さない前記2つの明示的に含まれていないビットシーケンスImplAD’とImpl
u’に依存して、以下のように定義され、すなわち
D
FP,DGen,OM,OM-NB
K(CB
u
1’,CT
OM’,AD’,L
PT1,ImplAD’,Impl
u’):=
FP
u
-1((DGen(CB
u
1’)@Impl
u’)||PT
OM’[L
PT1+1..L(PT
OM’)]||AD||ImplAD’)||PT
OM’であり、
ここでPT
OM’:=D
OM
K(OM-NB(CB
u
1’),CT
OM’)であることを特徴とする、請求項
1に記載の方法。
【請求項7】
前記暗号化法では、フィンガプリント関数FP
uとして、フィンガプリント関数FP
u
HASH(K_H),ID又はFP
HASH(K_H),E-K_Sのうちの1つが使用される
ことを特徴とする、
請求項
1に記載の方法。
【請求項8】
前記暗号化法では、一般的な暗号EGenとして、対称L
Eビット長鍵Kを使用した前記ブロックサイズL
E=uのブロック暗号EのE-Raw暗号化、すなわちE
RAW
Kが使用される
ことを特徴とする、
請求項
1に記載の方法。
【請求項9】
PB
1,PT
OM
1,PT
OM
2,ADからなり、L(PB
1)=L
Eである平文メッセージM
P=PB
1||PT
OM
1||PT
OM
2||ADの暗号化M
Cは、前記メッセージに属さない2つの明示的に含まれていないビットシーケンスImplADとImpl
uに依存して、ブロックサイズL
E=uのブロック暗号を使用して、以下のように定義され、すなわち
E
FP,E-Raw,OM,OM-NB
K(PB
1,PT
OM
1,PT
OM
2,AD,ImplAD,Impl
u):=
CB
1||E
OM
K(OM-NB(CB
1),PT
OM
1||PT
OM
2)であり、
ここでCB
1:=E
RAW
K(FP(PB
1||PT
OM
2||AD||ImplAD)@Impl
u)であり、CB
1’,CT
OM’,AD’からなり、L(CB
1’)=L
Eである暗号文メッセージM
C’=CB
1’||CT
OM’||AD’の復号化M
P’は、L
PT1と前記メッセージに属さない2つの明示的に含まれていないビットシーケンスImplAD’とImpl
u’とに依存して、ブロックサイズL
E=uのブロック暗号を使用して以下のように定義され、すなわち
D
FP,D-Raw,OM,OM-NB
K(CB
1’,CT
OM’,AD’,L
PT1,ImplAD’,Impl
u’):=
FP
-1((D
RAW
K(CB
1’)@Impl
u’)||PT
OM’[L
PT1+1..L(PT
OM’)]||AD||ImplAD’)||PT
OM’であり、
ここでPT
OM’:=D
OM
K(OM-NB(CB
u
1’),CT
OM’)である
ことを特徴とする、
請求項
6に記載の方法。
【請求項10】
CBC動作モードはOMオペレーションモードとして使用され、前記最初のブロックの外側にあるブロックのパディングが省略され、その代わりに前記CTS動作モードがCBC動作モードと組み合わせて適用される
ことを特徴とする、
請求項8又は9に記載の方法。
【請求項11】
L(CB
1)=L
E,の場合、前記メッセージM
Cを送信する前に、前記最初のブロックCB
1が再度暗号化される
ことを特徴とする、
請求項
1に記載の方法。
【請求項12】
対称鍵Kを使用してブロックサイズL
Eのブロック暗号Eにより平文を暗号化する方法において、
フィンガプリント関数(FP
u)として、フィンガプリント関数FP
Tag_u,Scramble_u(BF):=Scramble
u(BF[1..u])@Tag
u(BF[u+1..L(BF)])が利用され、ここで、Tag
uは、任意の長さのビットシーケンスBFに対して意図される適用のために十分に高い確率で長さuの一意の値を計算する関数であり、ここで、Scramble
uは、前記長さuの前記ビットシーケンス(BF)を前記長さuのビットシーケンス(BF)にマッピングする可逆関数であり、@は、同じ長さの2つのビットシーケンス(BF)のビットごとのXOR結合を表し、
フィンガプリント関数FP
Tag_u,Scramble_uの前記Tag
u関数に含まれるビットシーケンスの新規性を保証するために、新メッセージごとに、安全な鍵依存ハッシュ関数HASH
K_Hがフィンガプリント関数FP
u
K_HのTag
u
K_H関数の基礎として使用され、EGenによる平文の最初のuビットの追加の暗号化が省略され、その代わりに、最初のuビットCB
u
1の暗号化としてFP
u
K_Hフィンガプリントが直接使用される
ことを特徴とする、方法。
【請求項13】
前記平文PTのフォーマットは、前記最初の平文ブロックPB
1が可能な限り予測可能な、特に強い一貫性ルールに従う、可能な最大限の冗長性を有する情報を含むように形成され、前記一貫性ルールの遵守が前記メッセージの復号化後に受信者により検査され、前記一貫性ルールの違反が確認された場合、例外処理が開始される
ことを特徴とする、
請求項1
または1
2に記載の方法。
【請求項14】
関数Scramble
uとして、恒等関数又は等長暗号化関数が利用され、暗号化の場合、暗号化に適合する復号化関数が逆関数として利用される
ことを特徴とする、
請求項1
または12に記載の方法。
【請求項15】
ブロックサイズL
E=uのブロック暗号EとL
Eビット長さの対称鍵K_Sには、前記関数Scramble
uとして、K_SによるE-Raw暗号化、すなわちE
RAW
K_Sが利用される
ことを特徴とする、
請求項14に記載の方法。
【請求項16】
初期化ベクトルIVの長さは、選択された動作モードに依存して、及び/又はCB
1の長さに依存して適合される
ことを特徴とする、
請求項1
4に記載の方法。
【請求項17】
前記暗号化は、少なくとも(u+1)ビット長の平文に使用される
ことを特徴とする、
請求項1
または12に記載の方法。
【国際調査報告】