IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コーニンクレッカ フィリップス エヌ ヴェの特許一覧

特許7362676データの暗号化および完全性のためのデバイス
<>
  • 特許-データの暗号化および完全性のためのデバイス 図1
  • 特許-データの暗号化および完全性のためのデバイス 図2
  • 特許-データの暗号化および完全性のためのデバイス 図3
  • 特許-データの暗号化および完全性のためのデバイス 図4
  • 特許-データの暗号化および完全性のためのデバイス 図5
  • 特許-データの暗号化および完全性のためのデバイス 図6
  • 特許-データの暗号化および完全性のためのデバイス 図7
  • 特許-データの暗号化および完全性のためのデバイス 図8
  • 特許-データの暗号化および完全性のためのデバイス 図9
  • 特許-データの暗号化および完全性のためのデバイス 図10
  • 特許-データの暗号化および完全性のためのデバイス 図11
  • 特許-データの暗号化および完全性のためのデバイス 図12
  • 特許-データの暗号化および完全性のためのデバイス 図13
  • 特許-データの暗号化および完全性のためのデバイス 図14a
  • 特許-データの暗号化および完全性のためのデバイス 図14b
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-06
(45)【発行日】2023-10-17
(54)【発明の名称】データの暗号化および完全性のためのデバイス
(51)【国際特許分類】
   H04L 9/16 20060101AFI20231010BHJP
   H04L 9/28 20060101ALI20231010BHJP
   G06F 21/64 20130101ALI20231010BHJP
【FI】
H04L9/16
H04L9/28
G06F21/64
【請求項の数】 20
(21)【出願番号】P 2020570096
(86)(22)【出願日】2019-06-17
(65)【公表番号】
(43)【公表日】2021-10-21
(86)【国際出願番号】 EP2019065791
(87)【国際公開番号】W WO2019243209
(87)【国際公開日】2019-12-26
【審査請求日】2022-06-16
(31)【優先権主張番号】18178252.5
(32)【優先日】2018-06-18
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】590000248
【氏名又は名称】コーニンクレッカ フィリップス エヌ ヴェ
【氏名又は名称原語表記】Koninklijke Philips N.V.
【住所又は居所原語表記】High Tech Campus 52, 5656 AG Eindhoven,Netherlands
(74)【代理人】
【識別番号】110001690
【氏名又は名称】弁理士法人M&Sパートナーズ
(72)【発明者】
【氏名】バーンセン ヨハネス アーノルダス コーネリス
【審査官】行田 悦資
(56)【参考文献】
【文献】特表2002-500388(JP,A)
【文献】米国特許出願公開第2011/0238989(US,A1)
【文献】国際公開第2016/027454(WO,A1)
【文献】国際公開第2016/067524(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/16
H04L 9/28
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
入力データを暗号化して、前記入力データおよび関連データの完全性を保護するための暗号化方法であって、
前記暗号化方法は、
第1のハッシュ関数を使用して前記入力データに基づいて完全性値を計算するステップと、
第2のハッシュ関数を使用して前記完全性値および前記関連データに基づいて初期化ベクトルを計算するステップであって、前記初期化ベクトルは前記完全性値とは異なる、ステップと、
前記初期化ベクトルおよび暗号化鍵を使用して前記入力データを暗号化することで暗号化されたデータを生成するステップと、
前記暗号化されたデータと、前記完全性値に基づくメッセージ完全性値とを含む出力用暗号化されたメッセージを生成するステップとを含む、暗号化方法。
【請求項2】
前記完全性値を計算するための前記第1のハッシュ関数は、第1の完全性鍵を使用する第1の鍵付きハッシュ関数である、請求項1に記載の暗号化方法。
【請求項3】
前記初期化ベクトルを計算するための前記第2のハッシュ関数は、第2の完全性鍵を使用する第2の鍵付きハッシュ関数である、請求項1または2に記載の暗号化方法。
【請求項4】
前記出力用暗号化されたメッセージを生成するステップは、派生鍵を使用して前記完全性値を暗号化することによって前記メッセージ完全性値を生成するステップを含み、前記派生鍵は、第3のハッシュ関数を使用して前記暗号化されたデータに基づいて生成される、請求項1、2、または3に記載の暗号化方法。
【請求項5】
前記派生鍵を生成するための前記第3のハッシュ関数は、第3の完全性鍵を使用する第3の鍵付きハッシュ関数である、請求項4に記載の暗号化方法。
【請求項6】
前記第1のハッシュ関数、前記第2のハッシュ関数、および/または前記第3のハッシュ関数は、署名鍵に基づきデジタル署名を計算するステップを含む、請求項4または5に記載の暗号化方法。
【請求項7】
前記暗号化鍵、ならびに前記第1、第2、および第3の完全性鍵のうちの少なくとも1つの完全性鍵は秘密マスターキーから導出される、請求項2から6のいずれか一項に記載の暗号化方法。
【請求項8】
前記暗号化方法は、前記入力データの量を決定するステップと、前記量が所定の閾値を下回ると決定された場合、前記入力データにパディングデータを追加するステップとを含む、請求項1から7のいずれか一項に記載の暗号化方法。
【請求項9】
前記所定の閾値は前記暗号化鍵の長さであり、前記パディングデータはランダムデータを含む、請求項8に記載の暗号化方法。
【請求項10】
前記出力用暗号化されたメッセージは前記初期化ベクトルを含まない、請求項1から9のいずれか一項に記載の暗号化方法。
【請求項11】
暗号化されたデータを復号し、前記データおよび関連データの完全性を判定するための復号方法であって、前記復号方法は、前記暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む暗号化されたメッセージを取得するステップと、
第2のハッシュ関数を使用して前記完全性値および前記関連データに基づいて初期化ベクトルを計算するステップであって、前記初期化ベクトルは前記完全性値とは異なる、ステップと、
前記初期化ベクトルおよび復号鍵を使用して前記暗号化されたデータを復号することで平文を生成するステップと、
第1のハッシュ関数を使用して前記平文に基づいてテスト完全性値を計算するステップと、
前記テスト完全性値を前記完全性値と比較することで前記完全性を判定するステップとを含む、復号方法。
【請求項12】
前記テスト完全性値を計算するための前記第1のハッシュ関数は、第1の完全性鍵を使用する第1の鍵付きハッシュ関数である、請求項11に記載の復号方法。
【請求項13】
前記初期化ベクトルを計算するための前記第2のハッシュ関数は、第2の完全性鍵を使用する第2の鍵付きハッシュ関数である、請求項11または12に記載の復号方法。
【請求項14】
前記暗号化されたメッセージを受け取るステップは、派生鍵を使用して前記メッセージ完全性値を復号することによって前記完全性値を生成するステップを含み、前記派生鍵は、第3のハッシュ関数を使用して前記暗号化されたデータに基づいて生成される、請求項11、12、または13に記載の復号方法。
【請求項15】
出力用メッセージを生成するための前記第3のハッシュ関数は、第3の完全性鍵を使用する第3の鍵付きハッシュ関数である、請求項14に記載の復号方法。
【請求項16】
入力データを暗号化して、前記入力データおよび関連データの完全性を保護するための暗号化デバイスであって、前記暗号化デバイスは、暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む出力用暗号化されたメッセージを提供する出力ユニットと、暗号化プロセッサとを備え、前記暗号化プロセッサは、
前記入力データに基づいて完全性値を計算する第1のハッシュユニットと、
前記完全性値および前記関連データに基づいて初期化ベクトルを計算する第2のハッシュユニットであって、前記初期化ベクトルは前記完全性値とは異なる、第2のハッシュユニットと、
前記初期化ベクトルおよび暗号化鍵を使用して前記入力データを暗号化することで暗号化されたデータを生成するための暗号化ユニットとを備える、暗号化デバイス。
【請求項17】
前記完全性値を計算するための前記第1のハッシュユニットは第1の完全性鍵を使用する第1の鍵付きハッシュユニットであり、および/または、前記初期化ベクトルを計算するための第2のハッシュユニットは第2の完全性鍵を使用する第2の鍵付きハッシュユニットである、請求項16に記載の暗号化デバイス。
【請求項18】
暗号化されたデータを復号し、前記データおよび関連データの完全性を判定するための復号デバイスであって、前記復号デバイスは、前記暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む暗号化されたメッセージを取得するための入力ユニットと、
復号プロセッサとを備え、前記復号プロセッサは、
前記完全性値および前記関連データに基づいて初期化ベクトルを計算する第2のハッシュユニットであって、前記初期化ベクトルは前記完全性値とは異なる、第2のハッシュユニットと、
前記初期化ベクトルおよび復号鍵を使用して前記暗号化されたデータを復号することで平文を生成するための復号ユニットと、
前記平文に基づいてテスト完全性値を計算する第1のハッシュユニットと、
前記テスト完全性値を前記完全性値と比較することで前記完全性を判定するコンパレータとを備える、復号デバイス。
【請求項19】
前記完全性値を計算するための前記第1のハッシュユニットは第1の完全性鍵を使用する第1の鍵付きハッシュユニットであり、および/または、前記初期化ベクトルを計算するための第2のハッシュユニットは第2の完全性鍵を使用する第2の鍵付きハッシュユニットである、請求項18に記載の復号デバイス。
【請求項20】
ネットワークからダウンロード可能な、および/もしくはコンピュータ可読媒体並びに/またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータ上で実行されたとき、請求項1から10のいずれか一項に記載の暗号化方法または請求項11から15のいずれか一項に記載の復号方法を実施するためのプログラムコード命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化されるべきではない関連データ(associated data)を備えたデータの暗号化および復号に関する。
【0002】
本発明はデータ通信および保存の分野に関し、より具体的には、データを暗号化し、データおよび関連データの完全性を保護し、対応した復号を行うためのデバイスおよび方法、ならびに対応するコンピュータプログラム製品を提供する。
【背景技術】
【0003】
デバイスが通信またはデータ保存を保護する必要がある場合、通常、デバイスは通信を暗号化する。そのためには、データを秘密に保つことができる暗号化アルゴリズムが重要である。復号鍵を持っている者のみが暗号化されたデータの平文を復号によって取得することができる。しかし、機密性やプライバシーだけでなく、メッセージの完全性も重要である。暗号化されたメッセージは、暗号文記号を変更、削除、または追加することにより、攻撃者によって変更される可能性がある。変更された暗号文は復号後に意味不明になる可能性があるが、巧妙な攻撃者は暗号の知識といくつかの暗号化されたサンプルを利用してデータの操作に成功し得る。例えば、ある銀行から別の銀行に宛てられた、特定の金額を攻撃者の口座に送金する指示が含まれているメッセージの暗号化されたバージョンを攻撃者が持っており、かつ、攻撃者が暗号文記号n~mに自分の口座番号が含まれていることを知っている場合、攻撃者は、いくらかの金額が他の誰かの銀行口座に送金される旨を含む別の同様のメッセージを捕捉し、そのメッセージの暗号文記号n~mを攻撃者の口座番号の暗号文記号で置き換えるおそれがある。その場合、復号によって正しく見える送金指示が生成され得る。実際には、復号鍵を知らずに暗号文を変更して、復号後に意味のあるメッセージを生成することははるかに困難であるが、実行することは可能である。
【0004】
上記のような攻撃を考慮して、完全性保護が暗号化に追加される。例えば、暗号化の前に平文データに関してメッセージ認証コード(MAC)を計算して、得られたMACも暗号化するか、または、暗号化後に暗号文に関してMACを計算し、得られたMACをメッセージに加えてもよい。メッセージ認証コードは、メッセージを認証するために使用される短い情報である。言い換えれば、メッセージが表示されている送信者から送られたものであり、変更されていないことを確認するためのものである。MACアルゴリズムは、メッセージの1ビットだけが変更された場合、MACのビットの多く、好ましくは約半分が変化するように設計される。MACを作成するには秘密鍵が必要である。メッセージの受信者がMAC、MAC鍵、および復号鍵を有する場合、メッセージが改ざんされていないこと、メッセージがMAC鍵を知っている者によって送信されたことを確認し、メッセージを復号することができる。よく知られているMACアルゴリズムの種類として、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512などの鍵付きハッシュメッセージ認証コード(HMAC)アルゴリズムが挙げられる([RFC6234]を参照されたい)。
【0005】
暗号化と完全性保護とを組み合わせた暗号も存在する。一例としてAES-SIV(Synthetic Initialization Vector(SIV) Authenticated Encryption Using the Advanced Encryption Standard(AES)([RFC 5297]参照))が挙げられる。AES-SIVに使用される鍵のビットの半分は暗号化/復号に使用され、残りの半分は認証および完全性保護に使用される。すなわち、例えば256ビットのカギがAES-SIVに使用される場合、128ビットAES暗号化がAES-SIVによって実行される。また、AES-SIVの関連データ(AD)の真正性と完全性が確認され得る。つまり、暗号化の前に2セットのデータがAES-SIVに入力され得る。一方は暗号化する必要のあるデータであり、もう一方は暗号化されない関連データである。ただし、どちらについてもAES-SIV復号および完全性チェックによって真正性および完全性を証明することができる。これが可能であることをサポートする暗号はAuthenticated Encryption schemes with Associated Data(AEAD)と呼ばれることがある。
【0006】
暗号化されたデータおよび関連データの受信者は復号のために両方をAES-SIVに入力する必要がある。AES-SIVは暗号文を復号した後、復号された暗号文と関連データとを完全性チェックに入力して完全性および真正性を確認する。このチェックが失敗した場合、復号された暗号文は破棄されなければならない。暗号化されたデータまたはADのビットのうちの少なくとも1つが送信者と受信者の間で変更された場合、このチェックは失敗する。
【0007】
例えば、暗号化されたデータのビットのうちの少なくとも1つが変更されると真正性/完全性チェックが失敗する。この場合、復号された暗号文は、送信者が保護したかった平文とは異なる。関連データのビットのうちの少なくとも1つを変更しても、やはり真正性/完全性チェックは失敗する。
【発明の概要】
【0008】
上記のAEAD暗号では、暗号化されたデータが変更されないままADの一部が変更された場合、復号された暗号文は送信者が保護したかった平文と同一である。AES-SIVの仕様では復号された結果を破棄することが要求されているが、アプリケーションが何らかの理由でそれを実行できず、元の平文と同一である復号されたデータを構わずに使用する可能性がある。平文とは暗号化されていないデータまたは情報、すなわち暗号化アルゴリズムへの暗号化のための入力または復号からの出力を指し、暗号文とは暗号化されたデータまたは情報、すなわち暗号化からの暗号化アルゴリズムの出力または復号のための入力を指す。
【0009】
本発明の目的は、入力データを暗号化し、入力データおよび関連データの完全性を保護するための方法およびデバイスを提供することであり、これにより、関連データが操作された場合に復号後に元の平文が入手可能となることを防ぐことができる。
【0010】
この目的のために、添付の特許請求の範囲に記載されるデバイスおよび方法が提供される。本発明の一態様によれば、請求項1に記載の暗号化方法が提供される。本発明の他の態様によれば、請求項11に記載の復号方法が提供される。本発明の他の態様によれば、請求項16に記載の暗号化デバイスが提供される。本発明の他の態様によれば、請求項18に記載の復号デバイスが提供される。本発明の他の態様によれば、ネットワークからダウンロード可能な、および/またはコンピュータ可読媒体および/またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、コンピュータ上で実行されたとき、上記方法を実施するためのプログラムコード命令を含む、コンピュータプログラム製品が提供される。
【0011】
入力データを暗号化して、入力データおよび関連データの完全性を保護するための暗号化/復号方法およびデバイスの特徴は以下の効果を奏する。
【0012】
暗号化プロセスは、第1のハッシュ関数を使用して入力データに基づいて完全性値を計算するステップを含む。したがって、第1のハッシュ関数により、完全性値は平文データに結び付けられ、平文の操作後に同じ完全性値を実現することはできない。また、プロセスは、第2のハッシュ関数を使用して完全性値および関連データに基づいて初期化ベクトルを計算するステップを含む。したがって、第2のハッシュ関数により、初期化ベクトルは関連データに結び付けられ、関連データまたは完全性値の操作後に同じベクトルを実現することはできない。実質的に、初期化ベクトルは完全性値とは異なる。また、暗号化プロセスは、初期化ベクトルおよび暗号化鍵を使用して入力データを暗号化することで暗号化されたデータを生成するステップを含む。さらに、暗号化プロセスは、暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む出力用暗号化されたメッセージを生成するステップを含む。
【0013】
復号プロセスは、暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む暗号化されたメッセージを取得するステップを含む。また、復号プロセスは、第2のハッシュ関数を使用して、メッセージ完全性値から導出された完全性値および関連データに基づいて初期化ベクトルを計算するステップを含む。この第2のハッシュ関数は暗号化中に使用された第2のハッシュ関数と等しいため、初期化ベクトルはメッセージ完全性値および完全性値とは異なる。また、復号プロセスは、初期化ベクトルおよび復号鍵を使用して、暗号化されたデータを復号することで平文を生成するステップを含み、復号鍵は秘密であり、暗号化中に使用された暗号化鍵と等しい。あるいは、非対称暗号化が適用される場合、暗号化鍵と復号鍵は協働する一対の鍵(例えば、公開鍵と秘密鍵)を構成する。また、復号プロセスは、第1のハッシュ関数を使用して平文に基づいてテスト完全性値を計算するステップを含む。この第1のハッシュ関数は暗号化中に使用された第1のハッシュ関数と等しいため、テスト完全性値は、暗号化されたメッセージを介して伝送された、暗号化中に計算された完全性値と等しくなるはずである。また、復号プロセスは、テスト完全性値を完全性値と比較することによって完全性を判定するステップを含む。
【0014】
メッセージ完全性値は完全性値と等しくてもよく、または、例えば秘密鍵を使用した暗号化によってさらに保護されてもよい。有利なことに、悪意を持った者が関連データを操作した場合、伝送された暗号化されたデータを復号しても元の平文にはならない。なぜなら、復号側の第2のハッシュ関数を使用して受信された関連データに基づいて初期化ベクトルが計算されるため、初期化ベクトルが異なるからである。
【0015】
一実施形態では、完全性値を計算するための第1のハッシュ関数は、第1の完全性鍵を使用する第1の鍵付きハッシュ関数である。有利なことに、悪意を持った者は秘密である第1の完全性鍵を知らないため、完全性値の保護が強化される。また、目的(例えば、暗号化目的や完全性保護目的)に応じて異なる鍵を使用することが好ましい。
【0016】
一実施形態では、初期化ベクトルを計算するための第2のハッシュ関数は、第2の完全性鍵を使用する第2の鍵付きハッシュ関数である。有利なことに、悪意を持った者は秘密である第2の完全性鍵を知らないため、初期化ベクトルの保護が強化される。
【0017】
一実施形態では、出力用メッセージを生成するステップは、派生鍵を使用して完全性値を暗号化することによってメッセージ完全性値を生成するステップを含み、派生鍵は、第3のハッシュ関数を使用して暗号化されたデータに基づいて生成される。有利なことに、伝送されるメッセージは完全性値の暗号化されたバージョンを含むことになるので、完全性値の保護が強化される。さらに、暗号化されたデータを入力として有する第3のハッシュ関数のため、悪意を持った者は派生鍵を操作することができる。暗号化されたデータの1ビットの変更は、復号プロセスにおいて大きく異なる派生鍵をもたらし、したがって、完全性値および初期化ベクトルが大きく異なるものになる。よって復号は完全に失敗し、すなわち、完全性テストの失敗に加えて、復号されたデータは、送信者によって暗号化された平文とは大きく異なるものになる。オプションで、派生鍵を生成するための第3のハッシュ関数は、第3の完全性鍵を使用する第3の鍵付きハッシュ関数である。これにより完全性値の保護をさらに向上させることができる。
【0018】
本発明に係る方法は、コンピュータ実装方法としてコンピュータ上に、専用ハードウェアに、またはこれらの組み合わせとして実装されてもよい。本発明に係る方法のための実行可能コードは、コンピュータプログラム製品に保存されてもよい。コンピュータプログラム製品の例は、メモリスティック等のメモリデバイス、光ディスク等の光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。コンピュータプログラム製品は、プログラム製品がコンピュータ上で実行されるとき、本発明に係る方法を実行するためのコンピュータ可読媒体上に保存された非一時的プログラムコード手段を含み得る。一実施形態では、コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行されるとき、本発明に係る方法のすべてのステップまたはステージを実行するように構成されたコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に具現化される。ネットワークからダウンロード可能な、および/またはコンピュータ可読媒体および/またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラム製品であって、コンピュータプログラム製品は、コンピュータ上で実行されたとき、上記方法を実施するためのプログラムコード命令を含む、コンピュータプログラム製品が提供される。
【0019】
本発明の別の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様は、コンピュータプログラムが例えばアップルのApp Store、GoogleのPlay Store、またはMicrosoftのWindows Storeなどにアップロードされており、そのようなストアからコンピュータプログラムをダウンロード可能な場合に使用される。
【0020】
本発明に係るデバイスおよび方法の他の好ましい実施形態が添付の特許請求の範囲に提示されており、その開示は参照により本明細書に援用される。
【図面の簡単な説明】
【0021】
本発明の上記および他の態様は、以下の図面を参照しながら例として後述される実施形態に関連してさらに説明され、明らかになるであろう。
【0022】
図1図1は、データを暗号化および復号し、入力データおよび関連データの完全性を保護するためのデバイスを示す。
図2図2は、AES-SIV(先行技術)に係る暗号化処理を示す。
図3図3は、AES-SIV(先行技術)に係る復号処理を示す。
図4図4は改良された暗号化のブロック図を示す。
図5図5は改良された復号のブロック図を示す。
図6図6は改良された暗号化の第2の例を示す。
図7図7は改良された復号の第2の例を示す。
図8図8は改良された暗号化の第3の例を示す。
図9図9は改良された復号の第3の例を示す。
図10図10は改良された暗号化の第4の例を示す。
図11図11は改良された復号の第4の例を示す。
図12図12は、入力データを暗号化して、入力データおよび関連データの完全性を保護するための暗号化方法を示す。
図13図13は、暗号化されたデータを復号して、データおよび関連データの完全性を判定するための復号方法を示す。
図14a図14aはコンピュータ可読媒体を示す。
図14b図14bはプロセッサシステムの概略図を示す。
【0023】
これらの図はあくまで模式的なものであって、縮尺通りには描かれていない。図面において、すでに説明した要素に対応する要素には同じ参照番号を付している。
【発明を実施するための形態】
【0024】
図1は、データを暗号化および復号し、データおよび関連データの完全性を保護するためのデバイスを示す。データを暗号化および復号し、入力データおよび関連データの完全性を保護するためのシステム100は、暗号化デバイス110および復号デバイス120を備える。両デバイスは概略的に示されており、通信に関してピアを構成してもよい。しかし、同様に、両デバイスはマスター/スレーブシステム、ブロードキャストシステム、ストレージまたはデータベースシステムなどで構成されてもよい。以下に説明されるように、暗号化されたデータ、関連データ、および完全性値を交換するために、両デバイス間でメッセージが交換される。また、両デバイスは物理的に離れている場合もあれば、暗号化および復号の両方を実行するように構成された多用途のデバイスに統合されてもよい。
【0025】
暗号化デバイス110は出力ユニット111および暗号化プロセッサ112を有する。同様に、復号デバイスは入力ユニット121および復号プロセッサ122を有し得る。暗号化プロセッサの機能は図4図6図8、および図10を参照しながら後にさらに説明され、復号プロセッサの機能は図5図7図9、および図11を参照しながら後にさらに説明される。
【0026】
両デバイスは、形状130ならびに入力ユニットおよび出力ユニット111、121を接続する矢印によって概略的に示されるように、通信構成を介して、通常はメッセージと呼ばれる所定のフォーマットでデータを入出力するように構成される。通信構成は例えばネットワーク、ブロードキャストシステム、または記憶装置であり得る。両デバイスは通信プロトコルに従った有線または無線通信のために、またはメッセージを保存および取り出しのために構成され得る。入力および出力ユニット111、121は、少なくとも1つの他のデバイスを発見し、データ交換のために発見されたデバイスと接続するための通信プロトコル(例えば無線プロトコル)に従って接続および通信を行うように構成されてもよい。
【0027】
図1では、暗号化デバイス110は少なくとも1つのユーザ制御要素115を有するユーザインターフェース113を有し得る。復号デバイス120も同様な構成を有し得る。例えば、ユーザ制御要素はタッチスクリーン、各種のボタン、マウスまたはタッチパッドなどを含み得る。ボタンは従来の物理的ボタン、タッチセンサ、または仮想ボタン(例えば、マウスを介して作動されるタッチスクリーン上のボタンまたはアイコン)であり得る。また、ユーザインターフェースは遠隔ユーザインターフェースであってもよい。
【0028】
図2はAES-SIV暗号化(先行技術)のブロック図を示す。図中、ユニットP203は平文入力であり、ユニットAD201は関連データのための入力、例えば関連データのn個のベクトル(AD1・・・ADn)である。ユニットK202はAES-SIVに使用される鍵である。鍵はK1およびK2の2つの部分で構成されている。K1は真正性/完全性チェックに使用される鍵であり、K2は暗号化/復号に使用される鍵である。ユニットS2V210は、AESをCipher-based Message Authentication Code([CMAC])モードで使用する疑似乱数関数(PRF)である。その入力はk1、AD、およびPから構成されている。S2Vの詳細な仕様は[RFC5297]に記載されている。S2Vはある特定の鍵付きハッシュ関数と見なすことができる。ユニットV221は、暗号化ユニットAES-CTR215の初期化ベクトル(IV)として使用されるS2Vの出力を保存する。VはメッセージZ220にも含まれており、AES-SIV復号中に認証値として使用される。
【0029】
ユニットAES-CTRは、カウンタモードでAESを実行するブロックである([MODES]参照)。K2は鍵であり、VはカウンタモードでAESによって使用される初期化ベクトルである。カウンタモードにおいて、AESまたは任意の他の暗号は次のように動作する。暗号は、疑似乱数データを鍵ストリームとして使用して暗号化または復号すべきメッセージに対してXORを行うために、疑似乱数データの暗号ブロックサイズ(AESの場合は128ビット)の倍数を必要な数だけ生成するために使用される。疑似乱数鍵ストリームは専ら暗号、初期化ベクトルV、および鍵Kによって決定される。初期化ベクトルVまたは鍵Kにおける1ビットの変更は、鍵ストリームのビットの約50%の変更をもたらす。カウンタモードでの任意の暗号のIVは乱数部分とカウンタ部分とで構成されていてもよいし、またはカウンタ部分のみで構成されていてもよい。最初のブロックの後の各鍵ストリームブロックはIVのカウンタ部分をインクリメントすることによって生成される。鍵ストリームの長さはIVのカウンタ部分の可能性の数に制限される。暗号化動作と復号動作とは同じ動作であり、すなわち、データストリームと鍵ストリームとの間でXORを実行することである。ユニットC222は暗号化されたデータCを表し、暗号化されたデータはカウンタモードでAESによって暗号化された平文Pである。メッセージZ220はAES-SIV出力であり、完全性値VとCとの組み合わせから構成される。
【0030】
図2のAES-SIV暗号化のブロック図を分析することで、EAS-SIVの以下に説明される特性を決定することができる。これをサポートする例は表1に示されている。以下で述べられる改善された暗号は、これらの特性を有するか、またはこれらの特性を改善する。
【0031】
第1の特性(P1)は次の通りである。疑似乱数関数の特性(よってS2Vの特性)から、平文Pの少なくとも1ビットの変更は初期化ベクトルVの多数のビットの変更をもたらすので、暗号化された平文であるCの多数のビットの変更をもたらす(表1のケース2も参照されたい)。
【0032】
第2の特性(P2)は次の通りである。関連データADのベクトルのうちのいずれかにおける少なくとも1ビットの変更は初期化ベクトルIV(=完全性値V)の多数のビットの変更をもたらすので、暗号化された平文であるCの多数のビットの変更をもたらす(表1のケース3も参照されたい)。
【0033】
第3の特性(P3)は次の通りである。図2によると、暗号化を開始する前に平文P全体を処理する必要がある。なぜなら、ブロックCTRの初期化ベクトルの計算、カウンタモードでのAESによる暗号化において平文の全てのビットが使用されるからである。この特性は[RFC5297]で言及されている。
【0034】
【表1】
【0035】
図3はAES-SIV復号(先行技術)のブロック図を示す。図中、ユニットZ220はAES-SIV復号への入力であり、これは完全性値Vと暗号化されたデータ(暗号化後の平文P)との組み合わせで構成されている。ユニットV221は、ユニットAES-CTR235におけるAES復号で初期化ベクトル(IV)として使用される完全性値Vを取り出す。完全性値Vは、コンパレータCMP230でのCの有効性(完全性および真正性)チェックにも使用される。ユニットC222は(カウンタモードでAESによって暗号化された平文Pである)暗号化されたデータCを取り出す。ユニットK202はAES-SIVのために使用される鍵を有する。鍵はk1およびk2の2つの部分で構成されており、k1は真正性/完全性チェックに使用される完全性鍵であり、k2は暗号化/復号に使用される鍵である。
【0036】
ユニットAES-CTR235はカウンタモード([MODES]参照)でAES復号を実行するブロックであり、k2は鍵、VはカウンタモードでAESによって使用される初期化ベクトルである。ユニットP’205はブロックAES-CTRから復号の平文出力を受け取る。平文出力は有効性チェックが正の場合にしか使用することができない。ユニットADは関連データを有し、関連データはメッセージZ220とともに、または別々に伝送され得る。ユニットS2V210は、図2の同ユニットS2Vと同じく、AESをCipher-based Message Authentication Code([CMAC])モードで使用する疑似乱数関数(PRF)である。S2Vからテスト値T223が出力され、コンパレータCMP230に供給され、Tが受け取られたVと比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文P’はAES-SIV暗号化中に使用された平文Pと同一である。TとVとが等しくない場合、AES-SIVは失敗し、復号された平文P’を破棄しなければならない。
【0037】
図3のAES-SIV復号のブロック図を分析することで、EAS-SIVの以下に説明される特性を決定することができる。これをサポートする例は表2に示されている。
【0038】
第4の特性(P4)は次の通りである。正しい関連データAD、未変更の初期化ベクトルV、および未変更の暗号化されたデータCをAES-SIV復号の入力として使用すると、AES-SIV暗号化中に使用された平文Pと同一の復号された平文P’が得られる。さらに、この場合はTとVとが等しいので、AES-SIVは真正性/完全性の欠陥を検出しない。表2のケース4も参照されたい。
【0039】
第5の特性(P5)は次の通りである。C(AES-SIV暗号化された平文)の復号に使用される関連データADの任意の数のビットが変更されても、AES-SIV暗号化中に使用された平文Pと同一の復号された平文P’が得られる。これは、関連データがブロックCTRの入力、カウンタモードでのAESを用いたCの復号に影響を与えないからである。ただし、この場合、AES-SIVは真正性/完全性の欠陥を検出する。表2のケース5も参照されたい。したがって、既知のAES-SIVシステムでは、生成される平文P’はPと同じであるが、これは、以下で説明するように改善された暗号法が解決すべき課題である。
【0040】
第6の特性(P6)は次の通りである。C(AES-SIV暗号化された平文)の復号に使用される初期化ベクトルVの少なくとも1つのビットが変更されると、復号された平文P’の多数のビットが、AES-SIV暗号化中に使用された平文Pとは異なるものになる。これはカウンタモードでのAESの特性から容易に理解することができる。この場合、AES-SIVは真正性/完全性の欠陥を検出する。表2のケース6も参照されたい。
【0041】
第7の特性(P7)は次の通りである。AES-SIV復号のための暗号化された入力Cの少なくとも1つのビットが変更されると、復号された平文P’の対応するビットが、AES-SIV暗号化中に使用された平文Pとは異なるものになる。これはカウンタモードでのAESの特性から容易に理解することができる。この場合、AES-SIVは真正性/完全性の欠陥を検出する。表2のケース7も参照されたい。
【0042】
【表2】
【0043】
図4およびそれ以降の図に示される改良された暗号法は第5の特性(P5)に関して言及したAES-SIVの課題を解決する。この暗号法では、Cの復号に使用される関連データADの任意の数のビットが変更されると、暗号化中に使用された平文Pとは異なる復号された平文P’が得られる。これは、関連データがブロックENCRの初期化ベクトルIVに直接影響を及ぼし、そして同様にCの復号に影響を及ぼすからである。また、この場合、改良された暗号法は完全性の欠陥を検出する。したがって、改良されたシステムでは、関連データが操作された場合に得られる平文P’はPとは異なる。なお、上記で説明した他の特性は維持されるか、または以下で明記される場合には改良される。
【0044】
図4は改良された暗号化のブロック図を示す。図中、ユニットP203は平文入力であり、ユニットAD201は関連データのための入力、例えば関連データのn個のベクトル(AD1・・・ADn)を提供する。ユニットK202は使用される鍵であり、少なくとも暗号化鍵k2を含む。鍵はk1とk2の2つの部分で構成されていてもよい。k1は完全性チェックに使用され得る完全性鍵であり、k2は暗号化/復号に使用される鍵である。ユニットHASH310はハッシュ関数であり、例えば、Cipher-based Message Authentication Code ([CMAC])モードでAESを使用する疑似乱数関数、またはk1が使用される場合はHMAC_SHA256、HMAC_SHA384、もしくはHMAC_SHA512[RFC 4868]、またはk1を使用しない場合はSHA256、SHA384、もしくはSHA512などの通常のハッシュ関数([RFC6234]参照)である。HASHユニット310の出力は、暗号化鍵k2に基づいて暗号化されたデータC322を生成する暗号化ユニットENCR315の初期化ベクトル(IV)として使用される。適切な暗号化の例は上記のカウンタモードでのAESであり、これは選択可能な多数の暗号法の1つである。HASHユニット310の出力は、カウンタモードでAESによって使用される初期化ベクトルである。他のモード(例えば、Cipher Block Chaining(CBC))では暗号法のブロック長の倍数の平文長しか処理できないが、カウンタモードの使用時には任意の長さの平文を処理することができる。適切な暗号化アルゴリズムの他の例は、Electronic Codebook(ECB)、Cipher Block Chaining(CBC)、Output Feedback(OFB)、Cipher Feedback(CFB)、またはXEX-based tweaked-codebook mode with ciphertext stealing(XTS)でのAESである。最初の4つのモードの例の説明については[MODES]を、XTS-AESについては[XTS-AES]を参照されたい。
【0045】
HASHユニット310の入力は少なくともADおよびV、ならびに他のHASHユニットHASH311によって提供されるPのハッシュを含む。オプションで、HASHユニットは、ハッシュされるべき入力の一部として完全性鍵k1も受け取る。また、鍵付きハッシュ関数が選択された場合、鍵付きHASHユニットはk1を鍵として受け取る。
【0046】
ユニットV321はHASHユニット311の出力を保存する。したがって、HASHユニット311はハッシュ関数を実行するブロックである。これは、例えば、SHA2ファミリからのハッシュ関数(SHA-224、SHA-256、SHA-384、またはSHA-512、[RFC6234]参照)、または、Pを単一の入力データコンポーネントとして使用する[RFC5297]からのS2V、または任意の他の(好ましくは暗号に関する)ハッシュ関数であり得る。以下の表3および表4を作成するために使用された実施形態は、HASHユニット311ではSHA-256を使用し、HASHユニット310ではS2Vを使用する。HASHユニット311はまた、図6図7図8、および図9を参照しながら後述されるように鍵付きHASHユニットであってもよい。
【0047】
暗号化されたデータC322および(完全性値Vと同一である)メッセージ完全性値Wは、(例えばCおよびVの連結などである)メッセージZ320に含まれる。メッセージ完全性値Wはまた、完全性値Vの保護されたバージョン、例えば追加の完全性鍵を用いた暗号化されたバージョンであり得る。図10はWの決定のさらなる例を示す。
【0048】
図4のブロック図を分析することで、改良されたシステムの以下に説明される特性を決定することができる。サポートする例は表3に示されている。
【0049】
第1の特性はAES-SIVの特性P1と同じである。ハッシュ関数の特性から、平文Pの少なくとも1ビットの変更はブロックENCRのための初期化ベクトルの多数のビットの変更をもたらすので、暗号化された平文であるCの多数のビットの変更をもたらす(表3のケース2も参照されたい)。
【0050】
第2の特性はAES-SIVの特性P2と同じである。関連データADの少なくとも1ビットの変更は、ブロックENCRのための初期化ベクトルの多数のビットの変更をもたらすので、暗号化された平文であるCの多数のビットの変更をもたらす(表3のケース3も参照されたい)。
【0051】
第3の特性はAES-SIVの特性P3と同じである。また図4から、ブロックHASHの計算には平文のすべてのビットが使用されるので、暗号化を開始する前に平文P全体を処理する必要があることがわかる。
【0052】
【表3】
【0053】
図5は改良された復号のブロック図を示す。図中、ユニットZ320は、図4を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取るように構成されている。メッセージは、暗号化されたデータCと、上記のように完全性値Vに基づくメッセージ完全性値Wとを含む。ユニットV321は完全性値Vを取り出す(必要であればまず値Wを復号することによって)。メッセージからVを決定する他の例が図11を参照しながら後述される。ユニットC322は、図4に従って暗号化された平文Pである暗号化されたデータCを取り出す。完全性値Vは、コンパレータCMP330での受け取られたデータの有効性(完全性および真正性)チェックに使用される。ユニットK202は使用すべき秘密鍵(k)を有する。鍵はk1とk2の2つの部分で構成され、k1は真正性/完全性チェックに使用される完全性鍵であり、k2は暗号化/復号に使用される鍵であり得る。ユニットAD201は関連データを有し、関連データはメッセージZ320とともに、または別々に伝送され得る。
【0054】
ユニットDECR335は、上記の図4で選択された暗号化(例えば、カウンタモード([MODES]参照)でのAES)と互換性のある復号を使用してユニットC322からの暗号化されたデータの復号を実行するブロックである。暗号化鍵k2は復号鍵でもあり、初期化ベクトルIVはHASHユニット310の出力によって提供される。
【0055】
ユニットP’205はブロックDECRから復号の平文出力を受け取る。平文出力は有効性チェックが肯定の場合にしか使用することができない。
【0056】
HASHユニット310は、図4に示す暗号化におけるHASHユニット310と等しいハッシュ関数を実行するブロックである。ハッシュユニット310のための入力は、少なくともADおよびV(受け取られたメッセージ完全性値Wから導出される)を含む。オプションで、HASHユニット310は、ハッシュされるべき入力の一部として完全性鍵k1も受け取る。また、鍵付きハッシュ関数が使用される場合、鍵付きHASHユニットはk1を鍵として受け取る。
【0057】
HASHユニット311は、P’を単一の入力コンポーネントとして使用する図4に示す暗号化におけるHASHユニット311と等しいハッシュ関数を実行するブロックである。以下の表3および表4を作成するために使用された実施形態は、HASHユニット311ではSHA-256を使用し、HASHユニット310ではS2Vを使用する。
【0058】
HASHユニット311からテスト値T323が出力され、コンパレータCMP330に供給され、Tが受け取られたVと比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文P’は暗号化中に使用された平文Pと同一である。TとVとが等しくない場合、完全性テストは失敗し、復号された平文P’を破棄しなければならない。
【0059】
以下に述べる上記の改良された暗号法の導入の特性は、図5の復号のブロック図を分析することで決定することができ、これをサポートする例は表4に示されている。
【0060】
第4の特性はAES-SIVの特性P4と同じである。正しい関連データ、未変更の完全性値V、および未変更の暗号化されたデータCを復号の入力として使用すると、暗号化中に使用された平文Pと同一の復号された平文P’が得られる。さらに、この場合はTとVが等しいので、改良された暗号法は真正性/完全性の欠陥を検出しない。表4のケース4も参照されたい。
【0061】
第5の特性はAES-SIVの特性P5とは異なり、改良されている。Cの復号に使用される関連データの少なくとも1ビットが変更されると、復号された平文P’の多数のビットが暗号化中に使用された平文Pとは異なるものになる。AES-SIVと同様、この場合、改良された暗号法は真正性/完全性の欠陥を検出する。表4のケース5も参照されたい。しかし、AES-SIVとは異なり、追加データADが操作されていた場合、P’は使用することができない。
【0062】
第6の特性はAES-SIVの特性P6と同じである。Cの復号に使用される完全性値Vの少なくとも1つのビットが変更されると、復号された平文P’の多数のビットが、暗号化中に使用された平文Pとは異なるものになる。これは、初期化ベクトルを生成するHASHユニット310にもVが入力されるからである。この場合にも真正性/完全性の欠陥が検出される。表4のケース6も参照されたい。
【0063】
第7の特性はAES-SIVの特性P7と同じである。復号のための暗号化された入力Cの少なくとも1つのビットが変更されると、復号された平文P’の対応するビットが変化する。この場合、改良された暗号法は完全性の欠陥を検出する。表4のケース7も参照されたい。
【0064】
【表4】
【0065】
上記の例では、カウンタモードのAESが暗号化と復号に使用されている。しかし、本発明はこの暗号法またはモードに限定されるものではない。
カウンタの任意の暗号法が使用され、例えば、カウンタモードのDESまたは3DESが使用されてもよい。3DESは[3DES]で説明されている。DESは1977年1月にNISTによってFIPS46として最初に承認された。また、任意のモードの任意の暗号法を使用することができる。例えば、Electronic Codebook(ECB)、Cipher Block Chaining(CBC)、Output Feedback(OFB)、Cipher Feedback (CFB)、またはXEX-based tweaked-codebook mode with ciphertext stealing (XTS)でのAESが使用されてもよい。最初の4つのモードの例の説明については[MODES]を、XTS-AESについては[XTS-AES]を参照されたい。モードの選択は用途の要件、例えば暗号化または復号が並列化可能であるか否かなどに依存する。ただし[EVAL]では、本明細書で述べた6つのモードのうち、「総合的には、通常、privacy-only暗号化を実現するための最良かつ最もモダンな方法は[CTR]である」と主張されている。図4および図5は本発明に係る一般化された暗号化スキームを示す。図4において、ブロック「暗号化」は任意のモードの任意の暗号法であり、鍵k2および初期化ベクトルとしてブロックHASH310の出力を使用して入力Pを暗号化する。HASH310の関数は、図2および図3を参照して説明したS2Vでもよい。同様に、図5は本発明に係る一般化された復号スキームを示し、ブロック「復号」は任意のモードの任意の暗号法であり、鍵k2および初期化ベクトルとしてブロックHASH310の出力を使用して入力Cを復号する。
【0066】
HASHユニット310および/またはHASHユニット311は、出力から入力を再構築することをできないという特性を維持しつつ、さらに以下のように具現化され得る。例えば、HASHユニットは次のようなデジタル署名を提供し得る。
・(対称)鍵k4を使用する鍵付きハッシュメッセージ認証コード(HMAC)、例えば、HMAC_SHA1[RFC2104]またはHMAC_SHA256/384/512[RFC4868]。鍵はk1および/またはk2から独立していてもよく、また、何らかの方法で導出されてもよいし、またはk1および/またはk2に等しくてもよい。
・公開鍵暗号法を使用するデジタル署名、例えば、公開鍵k5および秘密鍵k6を使用するDigital Signature Algorithm(DSA)[FIPS186-4]、Rivest‐Shamir‐Adleman(RSA) based digital signature algorithm[FIPS186-4]、およびElliptic Curve Digital Signature Algorithm(ECDSA)[FIPS 186-4]。暗号化に秘密鍵k6が使用され、復号に公開鍵k5が使用される。
【0067】
図6は改良された暗号化の第2の例を示す。ブロック図は、図4を参照して説明した上記の改良された暗号化と同様の要素を有するが、以下の点において異なる。図中、ユニットK402は使用される鍵である。鍵はk1、k2、およびk3の3つの部分からなる。k1は完全性チェックに使用される完全性鍵であり、k2は暗号化/復号に使用される鍵であり、k3は鍵付きHASHユニット411の鍵付きHASHに使用されるさらなる完全性鍵である。暗号化ユニットENCR315は、暗号化鍵k2、およびHASHユニット310からの初期化ベクトルIVに基づいて暗号化されたデータC422を生成する。
【0068】
HASHユニット310の入力はk1、ADおよびV、ならびに鍵付きHASHユニット411によって提供されるPのハッシュを含む。ユニットV421は鍵付きHASHユニット411の出力を保存する。メッセージZ420は暗号化されたデータC422と、完全性値V421に基づくメッセージ完全性値Wとを含み、例えば、CおよびVの連結を含む。オプションで、メッセージ完全性値Wを生成するためにVが暗号化されてもよい。
【0069】
図7は改良された復号の第2の例を示す。ブロック図は、図5を参照して説明した上記の改良された復号と同様の要素を有するが、以下の点において異なる。図中、ユニットZ420は、図6を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取る。ユニットV421はメッセージ完全性値Wから完全性値Vを取り出し、一方、ユニットC422は、図6に従って暗号化された平文Pである暗号化されたデータCを取り出す。完全性値Vは、コンパレータCMP330での受け取られたデータの有効性(完全性および真正性)チェックに使用される。ユニットK402は使用される鍵を有し、鍵はk1、k2、およびk3の3つの部分からなる。k1は真正性/完全性チェックに使用される完全性鍵であり、k2は復号に使用される鍵であり、k3はHASHユニット411の鍵付きハッシュ関数に使用されるさらなる完全性鍵である。
【0070】
ユニットDECR335は、上記の図6で選択された暗号化と互換性のある復号を使用してユニットC322からの暗号化されたデータの復号を実行するブロックである。暗号化鍵k2は復号鍵でもあり、初期化ベクトルIVはHASHユニット310の出力によって提供される。ハッシュユニット310のための入力はk1、ならびにADおよびV(Wから導出または復号される)を含む。ユニットP’205はブロックDECRから復号の平文出力を受け取る。平文出力は有効性チェックが肯定の場合にしか使用することができない。
【0071】
HASHユニット411は、P’を入力として使用する図6に示す暗号化におけるHASHユニット411と等しい鍵付きハッシュ関数を実行するブロックである。鍵付きHASHユニット411からテスト値T423が出力され、コンパレータCMP330に供給され、Tが受け取られたVと比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文P’は暗号化中に使用された平文Pと同一である。TとVが等しくない場合、完全性テストは失敗し、復号された平文P’を破棄しなければならない。
【0072】
図8は改良された暗号化の第3の例を示す。ブロック図は、図4および図6を参照して説明した上記の改良された暗号化と同様の要素を有するが、以下の点において異なる。図中、ユニットK502は使用される鍵である。鍵はk2およびk3の2つの部分からなる。k2は暗号化/復号に使用される鍵であり、k3は、Pを処理する鍵付きHASHユニット411の鍵付きHASHに使用される完全性鍵である。暗号化ユニットENCR315は、暗号化鍵k2と、HASHユニット510からの初期化ベクトルIVとに基づいて暗号化されたデータC522を生成する。
【0073】
HASHユニット510の入力はADおよびV、ならびに鍵付きHASHユニット411によって提供されるPのハッシュを含む。ユニットV421は鍵付きHASHユニット411の出力を保存する。暗号化されたデータC522および完全性値V421はメッセージZ520に含まれる。オプションで、Vを暗号化してメッセージ完全性値Wが生成されてもよい。
【0074】
図9は改良された復号の第3の例を示す。ブロック図は、図5および図7を参照して説明した上記の改良された復号と同様の要素を有するが、以下の点において異なる。図中、ユニットZ520は、図8を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取る。上記のように、ユニットV421はメッセージ完全性値Wを使用して完全性値Vを取り出し、一方、ユニットC522は、図8に従って暗号化された平文Pである暗号化されたデータCを取り出す。完全性値Vは、コンパレータCMP330での受け取られたデータの有効性(完全性および真正性)チェックに使用される。ユニットK502は使用される鍵を有し、鍵はk2およびk3の2つの部分からなる。k2は復号に使用される鍵であり、k3は鍵付きHASHユニット411の鍵付きHASHに使用される。
【0075】
ユニットDECR335は、上記の図8で選択された暗号化と互換性のある復号を使用してユニットC522からの暗号化されたデータの復号を実行するブロックである。暗号化鍵k2は復号鍵でもあり、初期化ベクトルIVはHASHユニット510の出力によって提供される。ハッシュユニット510のための入力はADおよびV(Wから受け取られるまたは復号される)である。ユニットP’205はブロックDECRから復号の平文出力を受け取る。平文出力は有効性チェックが肯定の場合にしか使用することができない。
【0076】
HASHユニット411は、k3およびP’を入力として使用する図8に示す暗号化における鍵付きHASHユニット411と等しい鍵付きハッシュ関数を実行するブロックである。鍵付きHASHユニット411からテスト値T423が出力され、コンパレータCMP330に供給され、Tが受け取られたVと比較される。両者が等しい場合、完全性チェックは肯定であり、復号された平文P’は暗号化中に使用された平文Pと同一である。TとVが等しくない場合、完全性テストは失敗し、復号された平文P’を破棄しなければならない。
【0077】
改良された暗号法の第3の例は実用的かつ強力であると思われる。鍵kは2つの部分のみで構成されているが、ユニットHASH411における鍵付きハッシュのために完全性値Vから平文Pを取得することは難しい。一方、両方のHASHユニットについて2つの予め定められたハッシュ関数を使用することも可能である(つまり、秘密鍵なしのハッシング)。この場合、暗号化および復号の両方のために1つの秘密暗号化鍵k2しか必要とされない。
【0078】
図10は改良された暗号化の第4の例を示す。ブロック図は、図4を参照して説明した上記の改良された暗号化と同様の要素を有するが、以下の点において異なる。図中、ユニットK602は使用される鍵であり、少なくとも暗号化鍵k2を含む。鍵はk4とk2の2つの部分で構成されていてもよい。k4はさらなるHASHユニットH3 624に使用され得る完全性鍵であり、k2は暗号化/復号に使用される鍵である。ユニットHASH510は、例えば図8を参照して説明したようなハッシュ関数である。HASHユニット510の出力は、暗号化鍵k2に基づいて暗号化されたデータC522を生成する暗号化ユニットENCR315の初期化ベクトル(IV)として使用される。適切な暗号化の例は上記の通りである。
【0079】
上記のように、HASHユニット510の入力は少なくともADおよびV、ならびにさらなるHASHユニットHASH311によって提供されるPのハッシュである。オプションで、HASHユニットはまた、図4を参照して述べたHASHユニット310と同様に、ハッシュされるべき入力の一部として完全性鍵k1を受け取る。また、鍵付きハッシュ関数が選択された場合、鍵付きHASHユニットはk1を鍵として受け取る。
【0080】
ユニットHASH311は、例えば図4を参照して説明したようなハッシュ関数である。オプションで、図6または図8と同様に、HASHユニットはハッシュされるべき入力の一部として完全性鍵k3も受け取る。また、鍵付きハッシュ関数が選択された場合、鍵付きHASHユニットはk3を鍵として受け取る。ユニットHASH311は入力としてP203を有する。
【0081】
暗号化ユニットE2 621は、HASHユニット311から完全性値Vを受け取り、さらなるHASHユニットH3 624から派生鍵kcを受け取る。暗号化ユニット621はVを暗号化してメッセージ完全性値Wを生成する。さらなるHASHユニット624は暗号化されたデータCを入力として使用する。さらなるHASHユニットH3 624は、第1および第2のHASHユニットと同様であってもよく、鍵ユニット602からさらなる秘密完全性鍵k4を受け取る鍵付きHASHユニットであってもよい。
【0082】
暗号化されたデータC522、および完全性値Vに基づくメッセージ完全性値Wは、(例えばCおよびWの連結である)メッセージZ620に含まれる。この場合、メッセージ完全性値は完全性値Vの保護されたバージョン、すなわち派生鍵kcを用いた暗号化されたバージョンである。実質的に完全性値は操作から保護されるが、暗号化されたデータCをCの復号を妨げることなく操作することもできない。したがって以下に説明するように、Cの1ビットの変更により、復号された平文のビットは多数変化する。
【0083】
図11は改良された復号の第4の例を示す。ブロック図は、図5を参照して説明した上記の改良された復号と同様の要素を有するが、以下の点において異なる。図中、ユニットZ620は、図10を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取る。
【0084】
ユニットD2 625は、さらなるHASHユニットH3 624からの派生鍵kcを使用してメッセージ完全性値Wを復号することによって完全性値Vを取り出す。さらなるHASHユニットH3 624は、図10に示す暗号化におけるさらなるHASHユニットH3 624と等しいハッシュ関数を実行するブロックである。さらなるHASHユニット624の入力は、受け取られた暗号化されたデータCである。したがって、Cの1ビットの変更は大きく異なる派生鍵kcをもたらし、よって、大きく異なる完全性値Vと大きく異なる初期化ベクトルIVをもたらす。結果として、復号された平文P’も大きく異なるものになる。さらなるHASHユニットH3 624は、鍵ユニット602からさらなる秘密完全性鍵k4を受け取る鍵付きHASHユニットであってもよい。ユニットC522は、図10に従って暗号化された平文Pである暗号化されたデータCを取り出す。
【0085】
完全性値Vは、コンパレータCMP330での受け取られたデータの有効性(完全性および真正性)チェックに使用される。ユニットK602は使用される秘密鍵(k)を有し、秘密鍵はk4およびk2の2つの部分からなり得る。鍵k4は鍵付きHASHユニット624に使用され得るさらなる秘密完全性鍵であり、k2は暗号化/復号に使用される鍵である。
【0086】
HASHユニット510は、少なくとも追加データADおよび完全性値Vを入力として受け取る。オプションで、HASHユニット510は、ハッシュされるべき入力の一部として完全性鍵k1も受け取る。また、鍵付きハッシュ関数が使用される場合、鍵付きHASHユニット510はk1を鍵として受け取る。ハッシュユニット510は、図10に示す暗号化におけるHASHユニット510と等しいハッシュ関数を実行するブロックである。
【0087】
HASHユニット311からテスト値Tが出力され、コンパレータCMP330に供給され、メッセージ完全性値Wから復号された完全性値VとTとが比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文P’は暗号化中に使用された平文Pと同一である。TとVとが等しくない場合、完全性テストは失敗し、復号された平文P’を破棄しなければならない。
【0088】
改良された暗号法の第4の例も、実用的かつ強力であると思われる。鍵kは2つの部分のみで構成されているが、ユニット624における鍵付きハッシュのために平文Pおよび完全性値Vを取得することは難しい。一方、全てのHASHユニットについて3つの予め定められたハッシュ関数を使用することも可能である(つまり、秘密鍵なしのハッシング)。この場合、暗号化および復号の両方のために1つの秘密暗号化鍵k2しか必要とされない。また、暗号化されたデータCを知っている者なら誰でも値Vを取得することができるが、最終的な受取人での復号および完全性テストを妨害することなくCを操作することは依然として不可能である。
【0089】
図12は、入力データを暗号化して、入力データおよび関連データの完全性を保護するための暗号化方法を示す。この方法では、暗号化プロセスはノードSTART701から開始する。第1のステージRCV-DAT702において、平文Pおよび関連データADが受け取られる。次に、ステージINTEGR703において、第1のハッシュ関数を使用して平文Pに基づき完全性値Vが計算される。次に、ステージINIT-VEC704において、完全性値および関連データに基づいて第2のハッシュ関数を使用することによって初期化ベクトルが計算される。初期化ベクトルは完全性値とは異なる。完全性値および/または初期化ベクトルを計算するためのハッシュ関数に1つまたは2つの完全性鍵が使用されてもよい。次に、ステージENCR705において、初期化ベクトルIVおよび第2の暗号化鍵k2を使用して入力データPを暗号化することで暗号化されたデータCが生成される。次に、ステージOUT-MSG706において、暗号化されたデータCおよび完全性値Vを含む出力される暗号化されたメッセージが生成される。そして、さらなる入力データが受け取られない限り、処理はステージEND708で終了する。さらなるデータが受け取られた場合、矢印720によって示されるように、方法はステージRCV-DATにおいて続行する。
【0090】
一実施形態では、方法は、第1のステージRCV‐DATにおいて、入力データの量を決定するステップを含む。量が所定の閾値を下回ると判断されると、(例えば、元の平文の先頭または末尾にパディングデータを連結することによって)パディングデータが入力データに追加され、1つのメッセージ内に暗号化されるべき平文の合計量が増やされる。パディングデータは、例えばランダムデータまたは全てゼロのデータであり得る。例えば、平文の長さが暗号法のブロック長の倍数であることが要求される場合、パディングが必要になり得る。オプションで、所定の閾値は暗号化鍵の長さである。パディングデータの長さ、または平文の量は、例えば追加データの一部としてメッセージに含まれてもよい。
【0091】
さらに、暗号化方法は、ステージOUT-MSG706において、メッセージにさらなるデータを追加するステップを含み得ることに留意されたい。しかし、データ保護が損なわれるため、出力される暗号化されたメッセージには初期化ベクトルは含まれない。例えば、その場合、悪意のあるデバイスは、後述される復号方法のステージINIT-VEC752で必要とされる第2のハッシュ関数を介して初期化ベクトルを計算することの代わりに、メッセージに含まれる初期化ベクトルを使用する可能性がある。
【0092】
図13は、暗号化されたデータを復号して、データおよび関連データの完全性を判定するための復号方法を示す。この方法では、復号プロセスはノードSTART751から開始する。第1のステージRCV-MSG752において、メッセージが受け取られる。取得された暗号化されたメッセージには暗号化されたデータCと完全性値Vとが含まれ、どちらもメッセージから取り出される。また、関連データADがメッセージとともに、またはメッセージとは別に受け取られる。次に、ステージINIT-VEC753において、完全性値および関連データに基づいて初期化ベクトルが計算される。初期化ベクトルは完全性値とは異なる。計算にはハッシュ関数が含まれる。次に、ステージDECRYP754において、初期化ベクトルIVおよび復号鍵k2を使用して暗号化されたデータCを復号することで平文P’が生成される。次に、ステージCALC-T755において、暗号化中に使用された対応するハッシュ関数と等しいさらなるハッシュ関数を使用して、平文P’に基づいてテスト値Tが計算される。完全性値および/または初期化ベクトルを計算するためのハッシュ関数に1つまたは2つの完全性鍵が使用されてもよい。次に、ステージCOMP756において、テスト値Tと受け取られた値Vが比較され、テスト完全性値と受け取られた完全性値とを比較することによって完全性が判定される。次に、ステージ757でTがVに等しいと判断された場合、プロセスはステージEND758で成功とともに終了する。しかし、ステージ759においてTがVに等しくないと決定された場合、プロセスはステージABORT760で失敗とともに終了する。
【0093】
これらの方法は、例えば、固定またはモバイルコンピューティングデバイスのプロセッサ内の回路およびソフトウェアによって実行されてもよい。適切なハッシュ関数、暗号化関数および復号関数は上記の通りである。なお、図13は、図12の暗号化方法を備えたデバイスと協働し得る、復号を担当するデバイスのための方法を示す。
【0094】
当業者には明らかであるように、方法を実施する多くの異なる態様が存在する。例えば、ステージまたはステップの順序を変更したり、いくつかのステージを並行して実行したりすることができる。さらに、ステップ間に他の方法ステップを挿入することができる。挿入されるステップは、本明細書に記載されるような方法を改良するものであったり、または方法と無関係であってもよい。
【0095】
ネットワークからダウンロード可能な、および/またはコンピュータ可読媒体および/またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラム製品が提供される。コンピュータプログラム製品は、コンピュータデバイス上で実行されたときに上記の方法、接続シーケンス、セキュリティプロセス、およびさらなる動作を実現するためのプログラムコード命令を含む。よって、本発明に係る方法は、プロセッサシステムに該当する方法を実行させるための命令を含むソフトウェアを使用して実行され得る。
【0096】
典型的には、上記暗号化プロセスを実行するデバイスはそれぞれ、デバイスに保存された適切なソフトウェアコードを保有するメモリに結合されたプロセッサを備える。例えば、ソフトウェアは、対応するメモリ、例えばRAMのような揮発性メモリ、またはフラッシュ(図示せず)のような不揮発性メモリにダウンロードおよび/または保存されていてもよい。デバイスは、例えば、マイクロプロセッサおよびメモリ(図示せず)を備えていてもよい。あるいは、デバイスは、全体的にまたは部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)として、プログラマブルロジックに実装されてもよい。デバイスおよびサーバは、全体的にまたは部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち、特定の用途向けにカスタマイズされた集積回路(IC)として実装されてもよい。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用して、CMOSで実装されてもよい。
【0097】
ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリなどの適切な記憶媒体に保存されてもよい。ソフトウェアは、有線または無線を介する信号として、またはインターネットなどのデータネットワークを使用して供給されてもよい。ソフトウェアは、サーバ上でダウンロードおよび/またはリモート使用可能にされてもよい。本発明に係る方法は、方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行されてもよい。ソフトウェアは、ソースコード、オブジェクトコード、部分的にコンパイルされた形式のようなコード中間ソースおよびオブジェクトコード、または本発明に係る方法の実施のための使用に適した任意の他の形式などの形式を取り得る。コンピュータプログラム製品に関する実施形態は、上記方法のうちの少なくとも1つの方法の処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、および/または静的に若しくは動的にリンクされ得る1つまたは複数のファイルに保存され得る。コンピュータプログラム製品に関する他の実施形態は、少なくとも1つの上記システムおよび/または製品の手段に対応するコンピュータ実行可能命令を含む。
【0098】
図14aは、一実施形態に係る、コンピュータプログラム1020を含む書き込み可能部分1010を有するコンピュータ可読媒体1000を示し、コンピュータプログラム1020は、プロセッサシステムに図1および図4図11を参照しながら上記で説明した方法およびプロセスのうちの1つまたは複数を実行させるための命令を含む。コンピュータプログラム1020は、物理的なマークとして、またはコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上に具現化され得る。しかしながら、任意の他の適切な実施形態もまた考えられる。さらに、ここではコンピュータ可読媒体1000が光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、また、記録不能または記録可能であってもよい。コンピュータプログラム1020は、プロセッサシステムに前記方法を実行させるための命令を含む。
【0099】
図14bは、図1および図4図11を参照しながら説明したデバイスまたは方法の一実施形態に係るプロセッサシステム1100の概略図である。プロセッサシステムは回路1110、例えば1つまたは複数の集積回路を備えることができる。回路1110のアーキテクチャが図中に概略的に示されている。回路1110は、一実施形態に係る方法を実行し、および/または、そのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するための処理ユニット1120(例えばCPUなど)を備える。回路1110は、プログラミングコード、データ等を保存するためのメモリ1122を含む。メモリ1122の一部は読み出し専用であってもよい。回路1110は、通信要素1126、例えばアンテナ、送受信機、コネクタ、または両方などを備え得る。回路1110は、本方法で定義された処理の一部または全部を実行するための専用集積回路1124を備え得る。プロセッサ1120、メモリ1122、専用IC1124、および通信要素1126は相互接続1130、例えばバスを介して相互に接続され得る。プロセッサシステム1110は、コネクタおよび/またはアンテナをそれぞれ用いた有線および/または無線通信のために構成され得る。
【0100】
明瞭さのために、上記の説明は、様々な機能的ユニットおよびプロセッサに関連して本発明の実施形態を説明している。しかしながら、本発明から逸脱することなく、異なる機能的ユニットまたはプロセッサ間で機能が任意に適切に分配され得ることが理解されよう。例えば、複数の別々のユニット、プロセッサ、またはコントローラによって実行されるように示された機能が、同じプロセッサまたはコントローラによって実行されてもよい。したがって、特定の機能ユニットへの言及は、厳密な論理的または物理的な構造もしくは構成を示すものではなく、説明される機能を提供するための適切な手段への言及であると考えられたい。本発明は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせを含む任意の適切な形態で実施することができる。
【0101】
本明細書中、「含む」という単語は列挙されたもの以外の要素またはステップの存在を除外せず、単数形は、かかる要素が複数存在することを除外しないことに留意されたい。いかなる参照符号も特許請求の範囲を制限しない。本発明はハードウェアおよびソフトウェアの両方によって実装され得る。複数の「手段」または「ユニット」が同一のハードウェアまたはソフトウェアアイテムによって表される可能性がある。プロセッサが(場合によってはハードウェア要素と協働して)1つまたは複数のユニットの機能を果たしてもよい。さらに、本発明は、実施形態に限定されるものではなく、本発明は、上記されたまたは互いに異なる従属請求項に記載された全ての新規の特徴または特徴の組み合わせに及ぶ。
【0102】
要約すると、デバイスは、入力データを暗号化して、入力データおよび関連データの完全性を保護するように構成される。暗号化プロセッサは、入力データに基づいて完全性値を計算するように構成された第1のHASHユニットと、完全性値および関連データに基づいて初期化ベクトルを計算するように構成された第2のHASHユニットとを有する。これらのHASHユニットのうちの少なくとも1つは鍵付きHASHユニットであってもよい。暗号化ユニットは、初期化ベクトルおよび暗号化鍵を使用して入力データを暗号化することで暗号化されたデータを生成するように構成される。実質的に、初期化ベクトルは完全性値とは異なる。初期化ベクトルは完全性値および関連データの両方に依存するため、これらに変更が加えられると復号が失敗し、元の平文Pとは大きく異なるデータに復号される。
【0103】
参考文献:
[3DES] SP 800-67 Rev. 2, Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher

[CMAC] Dworkin, M., “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST Special Publication 800-38B, May 2005.

[DH] Diffie, W.; Hellman, M. (1976), “New directions in cryptography”, IEEE Transactions on Information Theory, 22 (6): 644‐654

[DSS] “Digital Signature Standard (DSS)”, USA, National Institute of Standards and Technology, Federal Information Processing Standard (FIPS) 186-4.

[EVAL] Phillip Rogaway, “Evaluation of Some Blockcipher Modes of Operation”, University of California, Davis, February 10, 2011.

[MODES] Dworkin, M., “Recommendation for Block Cipher Modes of Operation: Methods and Techniques”, NIST Special Publication 800-38A, 2001 edition.

[RFC2104] “HMAC: Keyed-Hashing for Message Authentication”, February 1997.

[RFC4868] “Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec”, May 2007

[RFC5297] Synthetic Initialization Vector (SIV) Authenticated Encryption Using the Advanced Encryption Standard (AES), October 2008, (https://datatracker.ietf.org/doc/rfc5297/ )

[RFC6234] US Secure Hash Algorithms (SHA and SHA-based HMAC and HKD, May 2011, (https://datatracker.ietf.org/doc/rfc6234/ )

[XTS-AES] Dworkin, M., “Recommendation for block cipher modes of operation: The XTS-AES mode of confidentiality on storage devices”, NIST Special Publication 800-38E, Jan. 2010.
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14a
図14b