(57)【要約】  暗号アルゴリズムへのサイドチャネル攻撃を防ぐことを支援するために使用され得る、データを暗号化するための手法が提供される。これらの手法に従った例示的な方法は、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するステップを含む。第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される。方法は、また、事前に決定された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するステップと、第2の中間データを生成するために、置換された中間データに暗号アルゴリズムの1つまたは複数の第2の段階を適用するステップであって、暗号アルゴリズムの1つまたは複数の第2の段階は、置換された鍵を使用する、ステップと、出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換するステップとを含む。
2017504838.tif 000002
【特許請求の範囲】
【請求項１】
置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するステップであって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、ステップと、
前記事前に決定された置換に従って前記暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するステップと、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用するステップであって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、ステップと、
出力を生成するために、前記事前に決定された置換の逆の置換に従って前記第2の中間データを置換するステップと
を含む、データを暗号化するための方法。
【請求項２】
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの1つまたは複数の第1の段階を適用するステップ
をさらに含む請求項1に記載の方法。
【請求項３】
置換の組から置換を選択するステップであって、置換された中間データを生成するために、前記事前に決定された置換に従って前記第1の中間データの前記順序を置換するステップは、前記選択された置換を使用して、前記第1の中間データの前記順序を置換するステップを含む、ステップ
をさらに含む請求項1に記載の方法。
【請求項４】
前記置換の組から前記置換を選択するステップは、
乱数シード値を生成するステップと、
前記乱数シード値に基づいて前記置換の組から前記置換を選択するステップと
を含む請求項3に記載の方法。
【請求項５】
前記置換の組から前記置換を選択するステップは、
事前に決定されたパターンに基づいて前記置換の組から前記置換を選択するステップ
を含む請求項3に記載の方法。
【請求項６】
前記出力を生成するために、前記事前に決定された置換の前記逆の置換に従って前記第2の中間データを置換するステップは、前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択するステップを含む請求項1に記載の方法。
【請求項７】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2のラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項1に記載の方法。
【請求項８】
置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するための手段であって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、手段と、
前記事前に決定された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するための手段と、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用するための手段であって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、手段と、
出力を生成するために、前記事前に決定された置換の逆の置換に従って前記第2の中間データを置換するための手段と
を含む、データを暗号化するためのシステム。
【請求項９】
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの前記1つまたは複数の第1の段階を適用するための手段
をさらに含む請求項8に記載のシステム。
【請求項１０】
置換の組から置換を選択するための手段であって、
置換された中間データを生成するために、前記事前に決定された置換に従って前記第1の中間データの前記順序を置換するための前記手段は、前記選択された置換を使用して、前記第1の中間データの前記順序を置換するための手段を含む、手段
をさらに含む請求項8に記載のシステム。
【請求項１１】
前記置換の組から前記置換を選択するための前記手段は、
乱数シード値を生成するための手段と、
前記乱数シード値に基づいて前記置換の組から前記置換を選択するための手段と
を含む請求項10に記載のシステム。
【請求項１２】
前記置換の組から前記置換を選択するための前記手段は、
乱数シード値を生成するための手段と、
前記乱数シード値に基づいて前記置換の組から前記置換を選択するための手段と
を含む請求項10に記載のシステム。
【請求項１３】
前記出力を生成するために、前記事前に決定された置換の前記逆の置換に従って前記第2の中間データを置換するための前記手段は、前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択するための手段を含む請求項8に記載のシステム。
【請求項１４】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2のラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項8に記載のシステム。
【請求項１５】
データを暗号化するためのコンピュータ可読命令をそこに記憶した非一時的コンピュータ可読記録媒体であって、コンピュータに、
置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換することであって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、置換することと、
前記事前に決定された置換に従って前記暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換することと、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用することであって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、適用することと、
出力を生成するために、前記事前に決定された置換の逆の置換に従って前記第2の中間データを置換することと
を行わせるように構成された命令を含む非一時的コンピュータ可読記録媒体。
【請求項１６】
前記コンピュータに、
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの前記1つまたは複数の第1の段階を適用させる
ように構成された命令をさらに含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項１７】
前記コンピュータに、
置換の組から置換を選択させるように構成された命令であって、
前記コンピュータに、置換された中間データを生成するために、前記事前に決定された置換に従って前記第1の中間データの前記順序を置換させるように構成された前記命令は、前記コンピュータに、前記選択された置換を使用して、前記第1の中間データの前記順序を置換させるように構成された命令を含む、命令をさらに含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項１８】
前記コンピュータに、前記置換の組から前記置換を選択させるように構成された前記命令は、前記コンピュータに、
乱数シード値を生成し、
前記乱数シード値に基づいて前記置換の組から前記置換を選択させる
ように構成された命令を含む請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項１９】
前記コンピュータに、前記置換の組から前記置換を選択させるように構成された前記命令は、前記コンピュータに、
事前に決定されたパターンに基づいて前記置換の組から前記置換を選択させる
ように構成された命令を含む請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項２０】
前記コンピュータに、前記出力を生成するために、前記事前に決定された置換の前記逆の置換に従って前記第2の中間データを置換させるように構成された前記命令は、前記コンピュータに、前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択させるように構成された命令を含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項２１】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2のラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項２２】
置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するように構成されたコンポーネントの第1の組であって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、コンポーネントの第1の組と、
前記事前に決定された置換に従って前記暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するように構成されたコンポーネントの第2の組と、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用するように構成されたコンポーネントの第3の組であって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、コンポーネントの第3の組と、
出力を生成するために、前記事前に決定された置換の逆の置換に従って前記第2の中間データを置換するように構成されたコンポーネントの第4の組と
を含む、データを暗号化するための回路。
【請求項２３】
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの前記1つまたは複数の第1の段階を適用するために構成されたコンポーネントの第5の組
をさらに含む請求項22に記載の回路。
【請求項２４】
置換の組から置換を選択するように構成されたコンポーネントの第6の組であって、置換された中間データを生成するために、前記事前に決定された置換に従って前記第1の中間データの前記順序を置換することは、前記選択された置換を使用して、前記第1の中間データの前記順序を置換することを含む、コンポーネントの第6の組
をさらに含む請求項22に記載の回路。
【請求項２５】
コンポーネントの前記第6の組は、
乱数シード値を生成し、
前記乱数シード値に基づいて前記置換の組から前記置換を選択する
ようにさらに構成される請求項24に記載の回路。
【請求項２６】
コンポーネントの前記第6の組は、
事前に決定されたパターンに基づいて前記置換の組から前記置換を選択する
ようにさらに構成される請求項24に記載の回路。
【請求項２７】
コンポーネントの前記第4の組は、前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択するように構成される請求項22に記載の回路。
【請求項２８】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2ラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項22に記載の回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号アルゴリズムに対するサイドチャネル攻撃への対抗策に関する。
【背景技術】
【０００２】
保護されているデータへの許可されていないアクセスおよび/または変更を防ぐために、様々な暗号化手法が使用され得る。しかし、一部の暗号化手法は、サイドチャネル攻撃に脆弱な場合がある。サイドチャネル攻撃は、暗号化システムの物理的な実装から獲得される情報に基づく攻撃であり、典型的には、暗号アルゴリズムへのブルートフォース攻撃またはアルゴリズムに固有の理論的な弱さに対する攻撃ではない。サイドチャネル攻撃は、暗号鍵、部分的な状態情報、および/または暗号化されている情報に関する完全または部分的な平文情報を含む、暗号アルゴリズムがどのように動作するかに関する情報を収集するために使用され得る。
【０００３】
電力解析および電磁気(EM)攻撃は、暗号アルゴリズムを損なうために使用され得る2つのタイプのサイドチャネル攻撃の例である。電力解析攻撃では、攻撃者は、攻撃下の暗号アルゴリズムを実装したデバイスの電力消費を監視する。電力解析攻撃は、複雑さが様々であり得る。単純電力解析(SPA)攻撃は、暗号アルゴリズムに関する情報を導き出すために、攻撃下の暗号アルゴリズムを実装するハードウェアによって生成された、時間の経過にわたる電気活動のグラフである、電力形跡(power trace)を解釈することを伴う。差分電力解析(DPA)は、攻撃下のデバイスによって実行された複数の暗号の動作から収集されたデータに統計的解析を適用する、より高度な電力解析攻撃手法を伴う。統計的解析は、攻撃下の暗号アルゴリズム内の中間値を決定するために使用され得る情報を攻撃者に提供することができる。EM攻撃では、攻撃者は、暗号アルゴリズムを実装したハードウェアからの電磁気放射を監視する。攻撃者は、ハードウェアを通じて流れる電流に関する情報を導き出すためにこれらの放射を分析し、各クロックサイクルの間にデバイス内に発生するイベントを識別するためにその情報を使用することができる。他のタイプのサイドチャネル攻撃は、暗号アルゴリズムに関する情報を明らかにする試みにおいて、障害が暗号の計算へ導入される差分障害分析(differential fault analysis)、攻撃が、暗号アルゴリズムが実行されている間に特定の計算タスクを実行するのにどれくらいの時間がかかるかの測定に基づくタイミング攻撃、および攻撃が、暗号アルゴリズムが実行されている間に攻撃下の暗号アルゴリズムを実装するデバイスのハードウェアから出る音に基づく音響攻撃(acoustic attack)を含む。
【０００４】
携帯電話、タブレットコンピュータ、ラップトップ、および/または他のそのようなデバイスなど、多くのデバイスが、相補型金属酸化膜半導体(CMOS)技術に基づくデジタル回路を使用して構成されている。CMOS技術は、一般的に、デジタル論理回路、静的ランダムアクセスメモリ(SRAM)、マイクロプロセッサ、およびマイクロコントローラで使用されている。CMOS実装は、電力解析およびEM攻撃の影響を受けやすい場合がある。CMOSデジタル回路の静的な電力消費は、典型的には、非常に低い。CMOSデジタル回路が異なる入力で計測される場合、デジタル回路は状態を変更する。これらの状態変更は、内蔵コンデンサの充放電につながる。結果として生じる電圧変動は、計算されているデータに依存する。暗号化方式を破りたいと考える悪意のある当事者は、電力消費および/またはEM放射と受信されているデータを相関付けるために、デバイスの電力消費および/またはデバイスからのEM放射を監視することができる。そのような試験の結果を分析することで、暗号化方式によって使用される鍵、暗号アルゴリズムによって生成された中間値、および/または暗号化アルゴリズムを損なうために攻撃者が利用することができる場合がある他の情報を明らかにすることができる。
【０００５】
図1は、暗号アルゴリズムで電力解析攻撃を実施するために使用され得る例示的なプロセスを示している。図1に示す電力解析攻撃は、暗号化アルゴリズムによって使用される鍵を決定することを試みるためにブルートフォース手法を利用する。図1に示した例示的なプロセスは、次世代米国標準暗号(AES)アルゴリズムを攻撃するために使用されるが、他のタイプの暗号化手法を攻撃するために同様の手順が使用され得る。電力解析攻撃が成功するためには、攻撃者は、その仮説の電力消費をシミュレートするための電力モデルが作られ得るように攻撃下のアルゴリズムを認識している必要があり、攻撃者は、回路の電力形跡のどれが計算されているデータと相関付けられるかを認識している必要がある。この情報を使用して、攻撃者は、次のステップを使用して、特定のデバイスによって使用される暗号アルゴリズムで電力解析攻撃を実施することができる。
(1)実行された暗号アルゴリズムの中間結果は選択され得る。たとえば、特定のデバイスが次世代米国標準暗号(AES)アルゴリズムのバージョンを実装したことに攻撃者が気づいている場合、攻撃者は、攻撃のポイントとしてデバイスに実装されているAESアルゴリズムの第1のラウンドの出力を選択することができる。攻撃者は、AESアルゴリズムの他のラウンドを同様に選択することができる。たとえば、AESアルゴリズムの最後のラウンドの前も、攻撃者によって対象とされ得る。
(2)平文入力および鍵の仮説に基づく仮説の中間値が生成され得る。たとえば、仮説の中間値は、暗号化アルゴリズムに既知の平文値および鍵の仮説の組を提供することによって生成され得る。AESの例に戻ると、仮説の中間値は、AESアルゴリズムの第1のラウンド、または攻撃者が対象としたAESアルゴリズムのいずれかのラウンドの出力の場合がある。
(3)仮説の中間値は、次いで、抽象的な電力消費モデルにマッピングされ得る。抽象的な電力消費モデルは、攻撃されている暗号アルゴリズムに基づく(段階103)。電力消費は、暗号アルゴリズムのタイプに依存して変動し、電力消費は、暗号アルゴリズムの様々な段階またはラウンドについて推定され得る。
(4)暗号アルゴリズムの対象とされた段階の電力形跡は、次いで、攻撃されている暗号アルゴリズムに使用するように構成されている実際のモバイルデバイスで測定され得る(段階104)。電力形跡は、時間の経過にわたって使用される電流のグラフであり、電力形跡は、攻撃者が鍵を導き出すことを可能にすることができる暗号アルゴリズムの様々なラウンドまたは段階の属性を明らかにすることができる。
(5)電力形跡は、次いで、暗号アルゴリズムに関連付けられた鍵または少なくとも鍵の一部を識別することを試みるために、抽象的な消費モデルと相関付けられ得る(段階105)。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示に従ってデータを暗号化するための例示的な方法は、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するステップであって、第1の中間データは、暗号アルゴリズムの1つまたは複数の第1段階によって出力されるステップを含む。方法は、また、事前に決定された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するステップと、第2の中間データを生成するために、置換された中間データに暗号アルゴリズムの1つまたは複数の第2の段階を適用するステップであって、暗号アルゴリズムの1つまたは複数の第2の段階は、置換された鍵を使用するステップと、出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換するステップとを含む。
【０００７】
そのような方法の実装は、次の特徴の1つまたは複数を含むことができる。第1の中間データを生成するために暗号化されるデータに、暗号アルゴリズムの1つまたは複数の第1の段階を適用すること。置換の組から置換を選択することであって、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換することは、選択された置換を使用して第1の中間データの順序を置換することを含む。置換の組から置換を選択することは、乱数シード値を生成することと、乱数シード値に基づいて置換の組から置換を選択することとを含む。置換の組から置換を選択することは、事前に決定されたパターンに基づいて、置換の組から置換を選択することを含む。出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換することは、選択された置換に基づいて逆の置換の組から逆の置換を選択することを含む。暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの第1のラウンドを含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの第2のラウンドを含むか、または暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの最後のラウンドの前を含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの最後のラウンドを含む。
【０００８】
本開示に従ってデータを暗号化するためのシステムは、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するための手段であって、第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される手段と、事前に決定された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するための手段と、第2の中間データを生成するために、置換された中間データに暗号アルゴリズムの1つまたは複数の第2の段階を適用するための手段であって、暗号アルゴリズムの1つまたは複数の第2の段階は、置換された鍵を使用する手段と、出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換するための手段とを含む。
【０００９】
そのようなシステムの実装は、以下の特徴の1つまたは複数を含むことができる。第1の中間データを生成するために暗号化されるデータに、暗号アルゴリズムの1つまたは複数の第1の段階を適用するための手段。置換の組から置換を選択するための手段、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するための手段は、選択された置換を使用して、第1の中間データの順序を置換するための手段を含む。置換の組から置換を選択するための手段は、乱数シード値を生成するための手段と、乱数シード値に基づいて置換の組から置換を選択するための手段とを含む。置換の組から置換を選択するための手段は、乱数シード値を生成するための手段と、乱数シード値に基づいて置換の組から置換を選択するための手段とを含む。出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換するための手段は、選択された置換に基づいて逆の置換の組から逆の置換を選択するための手段を含む。暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの第1のラウンドを含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの第2のラウンドを含むか、または暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの最後のラウンドの前を含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの最後のラウンドを含む。
【００１０】
本開示に従った非一時的コンピュータ可読媒体は、データを暗号化するためのコンピュータ可読命令をそこに記憶している。媒体は、コンピュータに、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換することであって、第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、置換することと、事前に決定された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換することと、第2の中間データを生成するために、置換された中間データに暗号アルゴリズムの1つまたは複数の第2の段階を適用することであって、暗号アルゴリズムの1つまたは複数の第2の段階は、置換された鍵を使用する、適用することと、出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換することとを行わせるように構成された命令を含む。
【００１１】
そのような非一時的コンピュータ可読媒体の実装は、次の特徴の1つまたは複数を含むことができる。コンピュータに、第1の中間データを生成するために暗号化されるデータに、暗号アルゴリズムの1つまたは複数の第1の段階を適用させるように構成された命令。コンピュータに、置換の組から置換を選択させるように構成された命令、コンピュータに、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換させるように構成された命令は、コンピュータに、選択された置換を使用して、第1の中間データの順序を置換させるように構成された命令を含む。コンピュータに、置換の組から置換を選択させるように構成された命令は、コンピュータに乱数シード値を生成させ、乱数シード値に基づいて置換の組から置換を選択させるように構成された命令を含む。コンピュータに、置換の組から置換を選択させるように構成された命令は、コンピュータに、事前に決定されたパターンに基づいて置換の組から置換を選択させるように構成された命令を含む。コンピュータに、出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換させるように構成された命令は、コンピュータに、選択された置換に基づいて逆の置換の組から逆の置換を選択させるように構成された命令を含む。暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの第1のラウンドを含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの第2のラウンドを含むか、または暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの最後のラウンドの前を含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの最後のラウンドを含む。
【００１２】
本開示に従ってデータを暗号化するための回路は、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するように構成されたコンポーネントの第1の組であって、第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、第1の組と、事前に決定された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵を置換するように構成されたコンポーネントの第2の組と、第2の中間データを生成するために、置換された中間データに暗号アルゴリズムの1つまたは複数の第2の段階を適用するように構成されたコンポーネントの第3の組であって、暗号アルゴリズムの1つまたは複数の第2の段階は置換された鍵を使用する、コンポーネントの第3の組と、出力を生成するために、事前に決定された置換の逆の置換に従って第2の中間データを置換するように構成されたコンポーネントの第4の組とを含む。
【００１３】
そのような回路の実装は、次の特徴の1つまたは複数を含むことができる。第1の中間データを生成するために暗号化されるデータに、暗号アルゴリズムの1つまたは複数の第1の段階を適用するために構成されたコンポーネントの第5の組。置換の組から置換を選択するように構成されたコンポーネントの第6の組であって、置換された中間データを生成するために、事前に決定された置換に従って第1の中間データの順序を置換するステップは、選択された置換を使用して、第1の中間データの順序を置換するステップを含む。コンポーネントの第6の組は、乱数シード値を生成し、乱数シード値に基づいて置換の組から置換を選択するようにさらに構成される。コンポーネントの第6の組は、事前に決定されたパターンに基づいて置換の組から置換を選択するようにさらに構成される。コンポーネントの第4の組は、選択された置換に基づいて逆の置換の組から逆の置換を選択するように構成される。暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの第1のラウンドを含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの第2のラウンドを含むか、または暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの最後のラウンドの前を含み、暗号アルゴリズムの1つまたは複数の第2の段階は、AESアルゴリズムの最後のラウンドを含む。
【図面の簡単な説明】
【００１４】
【図１】暗号アルゴリズムで電力解析攻撃を実施するために使用され得る例示的なプロセスを示す図である。
【図２】暗号アルゴリズムへの電力解析攻撃の成功の可能性を低下させるために使用され得る対抗策の比較を示す図である。
【図３】従来のAES暗号アルゴリズムと本明細書に開示された手法に従った修正されたAES暗号アルゴリズムのラウンドの比較を示す図である。
【図４】従来のAES-192実装と本明細書に開示された手法を利用する修正されたAES-192実装のラウンド間の比較を示す図である。
【図５Ａ】従来のAES-128アルゴリズムを実装するために使用され得る回路の機能図である。
【図５Ｂ】AES-128アルゴリズムにランダム化を導入するためにアルゴリズム変換手法を使用する、修正されたAES-128アルゴリズムを実装するために使用され得る回路の機能図である。
【図５Ｃ】AES-128アルゴリズムにランダム化を導入するためにアルゴリズムランダム化手法を使用する、修正されたAES-128アルゴリズムを実装するために使用され得る回路の機能図である。
【図６】本明細書に開示された手法を実装するために使用され得るモバイルデバイス600のブロック図である。
【図７】図6に示したメモリの機能モジュールを示す、図6に示したモバイルデバイスの機能ブロック図である。
【図８】本明細書に開示された暗号化手法を実装するために使用され得るデータを暗号化するためのプロセスの流れ図である。
【発明を実施するための形態】
【００１５】
本明細書に開示された手法は、暗号アルゴリズムへのサイドチャネル攻撃を防ぐことを支援するために使用され得る。たとえば、本明細書に開示された手法は、暗号アルゴリズムへの電力解析および/またはEM攻撃を防ぐのを支援することができ、また、暗号アルゴリズムへの他のタイプのサイドチャネル攻撃からの保護を提供することができる。本明細書に開示された手法は、暗号アルゴリズムへのサイドチャネル攻撃をはるかに困難にすることができるランダム化を暗号アルゴリズムに導入するために使用され得る。本明細書に開示された手法の例は、次世代米国標準暗号(AES)アルゴリズムを使用する例を使用して示されている。しかし、本明細書に開示された手法は、また、他のタイプの暗号アルゴリズムにも同様に適用され得る。本明細書における手法は、ハードウェアベース、ソフトウェアベース、またはそれらの組合せの暗号アルゴリズム実装に使用され得る。
【００１６】
図2は、暗号アルゴリズムへの電力解析攻撃の成功の可能性を低下させるために使用され得る対抗策の比較を示す図である。対抗策は、次の2つのカテゴリに分類され得る。(1)隠蔽手法、および(2)マスキング手法。隠蔽手法では、回路レベルの設計技術は、異なる入力が暗号アルゴリズムに提供される場合さえ、暗号アルゴリズムを実装するデジタル回路の電力消費をほぼ同じに維持するために適用され得る。マスキング手法では、暗号アルゴリズムは、アルゴリズムがデータに対して動作している間にランダムなマスクを使用してデータをマスキングすることによって電力消費をランダム化し、計算が完了した後にマスクを削除するように設計されている。本明細書に開示された手法は、攻撃者が暗号アルゴリズムを破るためにサイドチャネル攻撃を通じて収集されたデータを分析することをはるかに困難にするために、暗号アルゴリズムが実行されている間に電力消費をランダム化するのを支援するマスキング手法の変形である。
【００１７】
オリジナルの暗号アルゴリズム205の流れ図は、入力値aが暗号関数fに提供されることを示し、暗号関数は、入力値aの暗号化されたバージョンを出力する(図1ではf(a)と呼ぶ)。オリジナルの暗号アルゴリズム205は、一般的な暗号アルゴリズムを表し、AESまたは他の特定の暗号手法に限定されない。オリジナルの暗号アルゴリズム205は、電力解析攻撃、EM攻撃、または他のタイプのサイドチャネル攻撃を防ぐステップを取らない。したがって、オリジナルの暗号アルゴリズム205は、暗号アルゴリズムに関連付けられた中間データ、アルゴリズムに関連付けられた鍵、および/または暗号アルゴリズムを破るために攻撃者が使用することができる他の情報を明らかにすることができるサイドチャネル攻撃に影響され得る。
【００１８】
マスキング手法は、暗号アルゴリズム210をマスキングすることによって示される。マスキング暗号アルゴリズム210は、ステップをマスキングおよびマスキング解除することを含むオリジナルの暗号アルゴリズム205の修正版である。マスキング暗号アルゴリズム210は、暗号アルゴリズムによって電力消費をランダム化し、暗号アルゴリズムに対する電力解析およびEM攻撃を妨害することを試みることができる。マスキング暗号アルゴリズム210では、マスキング動作は、マスク値mを使用して、マスキングされた入力値amを生成するために入力値aに適用される。マスキングされた入力値amは、次いで、暗号関数fmのマスキングされたバージョンに提供される。暗号関数fmのマスキングされたバージョンからの出力は、オリジナルの暗号アルゴリズム205で取得されたf(a)値を取得するために、次いで、マスク解除する動作でマスク解除される。マスキング暗号アルゴリズム210は、暗号処理に関連付けられた電力消費がランダム化されるように、オリジナルの暗号関数が、マスキングされた値で機能するように修正されることを必要とする。
【００１９】
図2は、また、電力解析攻撃、EM攻撃、または暗号アルゴリズムへの他のタイプのサイドチャネル攻撃をはるかに困難にするために、暗号アルゴリズムにランダム化を導入するために使用され得る、本明細書に開示される2つの手法を示している。第1の手法はアルゴリズム変換手法であり、第2の手法はアルゴリズムランダム化手法である。両方の手法は、マスキング暗号アルゴリズム210でのように暗号関数が修正されることを必要とすることなく、暗号アルゴリズムの1つまたは複数の段階にランダム化を追加するために使用され得る。
【００２０】
変換アルゴリズム215は、入力値aが暗号関数fによって動作される前に、入力値aを置換する変換関数Pを適用する。置換は、暗号関数fに提供される入力値のバイトに並べ替える。暗号関数は、ラウンドレベルまたは段階レベルの不変性を示し、これは、入力のバイトの順序は、暗号関数fの出力に影響することなく、変換関数Pに従って置換され、暗号関数fに入力され得ることを意味する。暗号関数fの出力のバイトの順序は、変換関数Pの適用により置換される。しかし、オリジナルの暗号アルゴリズム205の出力に一致するために、暗号関数の置換された出力のバイトを並べ替えるために、変換関数Pの逆数である逆置換関数P-1。
【００２１】
ランダム化アルゴリズム220は、暗号アルゴリズムが実行されるたびに入力値aに同じ置換関数を適用するのではなく、複数の置換関数の1つから選択することによって、変換アルゴリズム215を通じて追加の保護を提供する。ランダム化アルゴリズム220は、入力値aのバイトの順序を置換することができる、2つ以上の変換関数から選択するように構成される。図2に示した例では、入力値aにどの変換関数を適用するべきかの選択は、ランダムなシード値を使用して決定される。ランダムシード値は、次いで、複数の逆の置換関数から置換関数に対応する逆の置換関数を選択するために使用される。どの変換関数が入力値aに適用されるかを選択するために、他の手法も使用され得る。たとえば、どの変換関数が入力値aに適用されるかを選択するためにランダムシード値の代わりに、ラウンドロビンまたは他の選択方式が使用され得る。一部の実装では、1つまたは複数の固定された選択パターンが実装され、どの変換関数が適用されるかを決定するためにランダムシードの代わりに使用され得る。
【００２２】
図3は、従来のAES暗号アルゴリズムと本明細書に開示された手法に従った修正されたAES暗号アルゴリズムのラウンドの比較を示す図である。AES暗号アルゴリズムは、ラウンドレベルの不変性を示し、これはAESアルゴリズムに追加のランダム化を追加するために、変換関数を使用して、入力データのバイトの順序が置換され得ることを意味する。図3の左カラムは、従来のAESの暗号アルゴリズムのラウンドの入力および出力を示し、右カラムは、本開示に従った修正されたAES暗号アルゴリズムのラウンドの入力および出力を示している。修正されたAES手法は、図2に示された変換アルゴリズムまたはランダム化アルゴリズム手法のいずれかを使用して実装され得る。変換アルゴリズム手法が適用される場合、入力値に置換を適用する変換アルゴリズムは事前に決定され、置換は、オプションとして、暗号アルゴリズムの1つまたは複数のラウンドに適用され得る。ランダム化アルゴリズム手法が適用される場合、入力値に置換を適用する変換アルゴリズムは、各々が異なるパターンで入力値のバイトを置換する複数の変換アルゴリズムの1つから選択されるか、または一部の実例では、置換は適用されない場合がある。さらに、異なる変換アルゴリズムは、暗号アルゴリズムの異なるラウンドに適用され得る。
【００２３】
従来のAES暗号アルゴリズムを表す左カラムでは、従来のAESアルゴリズムへの入力値は、暗号化アルゴリズムが適用される16バイトの入力データを含む。データは、この例では4×4の行列によって表される。AES暗号化アルゴリズムは、短い鍵をいくつかの個々のラウンド鍵へと拡張するために使用され得る手法である、ラインドールの鍵スケジュールを使用して、主な暗号鍵から得られる各ラウンドに対する個別の鍵を必要とする。したがって、ラウンドに対する適切な鍵は、AESセッションに使用されている主な暗号鍵から生成され得るか、または鍵はすでに生成され、メモリからアクセスされ得る。
【００２４】
本明細書に開示された手法を使用する、修正されたAES暗号アルゴリズムを表す右カラムでは、ラウンドに関連付けられた入力値と下位鍵の両方は、変換関数に従って置換される。変換関数は、入力データ内のバイトを並べ替え、また、AES暗号関数のラウンドを実行する前に、図3に描写されたAESラウンドで適用される鍵に対して同等な置換を実行する。置換関数をAES暗号アルゴリズムに関連して使用するために、AES暗号アルゴリズムに変更を加える必要はない。なぜなら、AES暗号アルゴリズムは、少なくともこのラウンドに対して不変であるからである。右カラムに示されている変換手法が適用されたAESラウンドの出力のバイトの順序は、図3の左カラムに示された従来のAES暗号化ラウンドの出力のバイトの順序と異なる。しかし、変換手法が適用されたAESラウンドの出力のバイトは、AES暗号アルゴリズムのラウンドが実行される前に、入力データに適用された置換の逆の置換を使用して並べ替えられ得る。変換手法が適用された出力データに逆の置換を適用した後、変換手法が適用された出力データは、図3の左カラムに示された従来のAESラウンドのラウンドの出力に一致する。ラウンド前の入力データのバイトを置換することは、暗号アルゴリズムを破るために攻撃者が電力解析またはEM攻撃を使用することをより困難にすることができるランダム化をラウンドに導入する。
【００２５】
図4は、従来のAES-192実装と本明細書に開示された手法を利用する修正されたAES-192実装のラウンド間の比較を示す図である。図4に示された例では、第9および第10ラウンドの部分は、第10のAESラウンドを保護するために修正された。しかし、本明細書に示された手法は、AESアルゴリズムの任意のラウンドを保護するために使用され得る。さらに、本明細書で利用された変換手法は、AES-192およびAES-256など、AESアルゴリズムの他のバージョン、および/または他の暗号手法に同様に適用され得る。AES-128アルゴリズムは、128ビットのキー長を使用し、AES-192アルゴリズムは、192ビットのキー長を使用し、AES-256アルゴリズムは、256ビットのキー長を使用する。図4に示された例は、AES-192アルゴリズムに本明細書に開示された手法を適用するが、本明細書に記述された手法は、また、異なるサイズのビット長を持つ、および/またはアルゴリズムに対して他の変形を持つ鍵を使用する他のAESアルゴリズムに適用され得る。
【００２６】
従来のAES-192実装と修正されたAES-192実装の両方について、ラウンド8からの出力はAであり、ラウンド9の鍵入力はK9である。従来のAES-192実装では、ラウンド9からの出力は値Bであり、ラウンド10の鍵入力は鍵K10であり、ラウンド10からの出力は値Cである。修正されたAES-192実装では、アルゴリズムの最初の8ラウンドは、従来のAES-192実装と同じ方法で実行される。しかし、ラウンド9出力は、変換関数を使用して置換され、置換された出力はP(B)である。ラウンド10の鍵K10は、また、ラウンド9の出力に適用された同じ置換関数を使用して置換される。ラウンド10は、置換されたデータ入力行列P(B)および置換された鍵P(K10)を使用して実行される。ラウンド10の出力はP-1(C)である。この出力は、次いで、ラウンド9の出力に適用された置換関数の逆の置換を使用して逆に置換される。ラウンド10の出力に逆の置換を適用する結果として、従来のAES-192実装のラウンド10が生成したのと同じ暗号テキスト出力である暗号テキストCを生成する。
【００２７】
例示的なハードウェア
図5A、図5B、および図5Cは、本明細書に開示された手法を実装するために使用され得る回路を示す機能ブロック図である。図5Aは、従来のAES-128アルゴリズムを実装するために使用され得る回路の機能図である。図5Bは、AES-128アルゴリズムにランダム化を導入するためにアルゴリズム変換手法を使用する、修正されたAES-128アルゴリズムを実装するために使用され得る回路の機能図である。図5Cは、AES-128アルゴリズムにランダム化を導入するためにアルゴリズムランダム化手法を使用する、修正されたAES-128アルゴリズムを実装するために使用され得る回路の機能図である。図5Bおよび図5Cに示された回路は、図8に示されたプロセスを実装するために使用され得る。図5Bおよび図5Cに示された例示的な実施形態は、AES-128アルゴリズムの修正版に関するものであるが、同様の変更は、AES暗号アルゴリズムの他のバージョンおよび/または他の暗号アルゴリズムを実装する回路に行われ得る。
【００２８】
図5Aは、従来のAES-128アルゴリズムのラウンドを実装するために使用され得る回路を示している。回路は、暗号化される平文メッセージ、および各ラウンドに関連付けられたラウンド鍵が導き出され得る暗号鍵を受信するように構成される。回路は、AES暗号アルゴリズムの各ラウンドに含まれるSubBytes、ShiftRows、およびMixColumnsのステップを表す機能ブロックを含む。AES-128アルゴリズムは10ラウンドを含み、次のラウンドに対する適切な鍵は、AES-128アルゴリズムのSubBytes、ShiftRows、およびMixColumnsのステップを表す機能ブロックにループバックする前に現在のラウンドの完了時に選択される。
【００２９】
図5Bは、AES-128アルゴリズムにランダム化を導入するためにアルゴリズム変換手法を使用する、修正されたAES-128アルゴリズムを実装するために使用され得る回路の機能図である。図5Aに示された例と同様に、回路は、暗号化される平文メッセージ、および各ラウンドに関連付けられたラウンド鍵が導き出され得る暗号鍵を受信するように構成される。しかし、図5Bに示された例示的な回路は、AESラウンドのステップによって使用される入力データの順序を置換するために使用され得る、アルゴリズム変換手法をサポートする追加のコンポーネントを含む。図5Bに示された例では、回路は、図5Aに示された従来のAES-128ラウンドを実装する回路に含まれていなかった変換関数ブロック505およびマルチプレクサ510を含む。図5Bに示す回路では、変換関数は、MixColumnsステップの前にデータのバイトの順序を置換するために適用される。しかし、他の実装では、変換関数は、SubBytesステップの前、またはAESラウンドのShiftRowsステップの前に適用され得る。さらに、異なる暗号アルゴリズムが回路によって実装される場合、変換関数ブロック505およびマルチプレクサ510の配置は変動させることができる。ShiftRowsステップの機能ブロックからの出力は、変換関数によって実装された事前に決定された置換に従ってShiftRowsステップの機能ブロックからの出力を置換する変換関数ブロック505に供給される。変換関数ブロック505は、変換関数ブロック505によって受信された入力データのバイトの順序を変更する置換を適用する。置換されたデータは、次いで、マルチプレクサ510に出力される。マルチプレクサ510は、次いで、ShiftRowsステップの機能ブロックからのオリジナルの出力と、変換関数ブロック505による置換されたデータ出力との間で選択することができる。選択信号は、マルチプレクサ510に、ShiftRowsステップの機能ブロックからのオリジナルの出力または変換関数ブロック505による置換されたデータ出力のいずれかを選択させるために、マルチプレクサ510に提供され得る。したがって、回路は、各ラウンドで変換関数の使用を有効または無効にするように構成され得て、攻撃者は、変換関数が特定のラウンドに適用されたかどうか、または特定のラウンドでどのパターンが適用されたかに気づかないため、変換関数として、電力解析またはEM攻撃がより困難になる。
【００３０】
回路は、また、逆の変換関数ブロック515およびマルチプレクサ520を含む。逆の変換関数ブロック515は、MixColumnsステップの機能ブロックの出力を受信し、MixColumnsステップの機能ブロックの出力に逆の置換を適用する。逆の変換関数は、逆の変換関数ブロック515によって受信された入力のバイトを並べ替える逆の置換を、変換関数ブロック505によって置換が適用される前の元のバイトの順序に適用する。したがって、図5Bに示された回路からの特定のラウンドからの出力は、図5Aに示された従来のAES-128アルゴリズム実装の対応するラウンドから取得されるものと同じ出力値になる。ラウンドの間に導入されたランダム化は、暗号化アルゴリズムへの変更を必要とすることなく、サイドチャネル攻撃をより困難にすることができる。
【００３１】
図5Cは、AES-128アルゴリズムにランダム化を導入するためにアルゴリズムランダム化手法を使用する、修正されたAES-128アルゴリズムを実装するために使用され得る回路の機能図である。図5Aおよび図5Bに示された例と同様に、回路は、暗号化される平文メッセージ、および各ラウンドに関連付けられたラウンド鍵が導き出され得る暗号鍵を受信するように構成される。図5Cに示された回路は、アルゴリズムランダム化の例を提供する。回路は、ShiftRowsステップの機能ブロックの出力を受信するように構成された複数の変換関数ブロック555を含む。変換関数ブロック555の各々は、その変換関数ブロックによって受信された入力データのバイトの順序に異なる置換を適用する。置換されたデータは、次いで、マルチプレクサ560に出力される。マルチプレクサ560は、次いで、ShiftRowsステップの機能ブロックからのオリジナルの出力と変換関数ブロック555の1つによって置換されたデータ出力との間で選択することができる。一部の実装では、マルチプレクサ560が選択する入力がどれであるかを決定する選択値として、ランダムシード値575が生成されマルチプレクサ560に提供され得る。選択値を決定するために、他の手法も使用され得る。たとえば、一部の実装では、回路は、マルチプレクサ560が選択する入力がどれであるかを決定する、1つまたは複数の事前に決定されたパターンから選択するように構成され得る。
【００３２】
図5Cに示された回路は、また、複数の逆の変換関数ブロック565およびマルチプレクサ570を含む。逆の変換関数ブロック565は、MixColumnsステップの機能ブロックの出力を受信し、MixColumnsステップの機能ブロックの出力に逆の置換を適用する。逆の変換関数ブロック565の各々は、変換関数ブロック555の1つに対応し、対応する変換関数ブロック555の逆の置換を実装する。逆の変換関数は、逆の変換関数ブロック565ブロックによって受信された入力のバイトを並べ替える逆の置換を、変換関数ブロック555によって置換が適用される前の元のバイトの順序に適用する。したがって、図5Cに示された回路からの特定のラウンドからの出力は、また、図5Aに示された従来のAES-128アルゴリズム実装の対応するラウンドから取得されるのと同じ出力値である。ラウンドの間に導入されたランダム化は、暗号化アルゴリズムへの変更を必要とすることなく、正常なサイドチャネル攻撃をより困難にすることができる。さらに、潜在的な攻撃者は、そのラウンドでデータに適用された置換に気づいていないであろうため、複数の可能な置換の追加は、追加の保護を提供する。
【００３３】
図6は、本明細書に開示された手法を実装するために使用され得るモバイルデバイス600のブロック図である。モバイルデバイス600は、少なくとも部分的に、図8に示されたプロセスを実装するために使用され得る。図6に示された例示的なデバイスはモバイルデバイスであり、図8に示されたプロセスは、また、サーバ、デスクトップコンピュータシステムなどの他のタイプのコンピューティングデバイス、またはプロセッサで読み取り可能でプロセッサで実行可能なソフトウェアコードを実行することができるプロセッサを含む他のデバイスに実装され得る。
【００３４】
モバイルデバイス600は、バス601で相互に接続された、汎用プロセッサ610を含むコンピュータシステム、デジタル信号プロセッサ(DSP)620、ワイヤレスインターフェース625、GNSSインターフェース665、および非一時的メモリ660を含む。モバイルデバイス600の他の実装は、図6の例示的な実装には示されていない追加の要素を含むことができる、および/または図6に示された例示的な実施形態に示された要素のすべてを含んでいるとは限らない場合がある。たとえば、モバイルデバイス600の一部の実装は、GNSSインターフェース665を含まない場合がある。
【００３５】
ワイヤレスインターフェース625は、ワイヤレス受信機、送信機、トランシーバ、ならびに/またはモバイルデバイス600が、WWAN、WLAN、および/もしくは他のワイヤレス通信プロトコルを使用して、データを送信および/もしくは受信することを可能にする他の要素を含むことができる。ワイヤレスインターフェース625は、複数のワイヤレス通信標準を使用して、ワイヤレス信号を送信および受信することができる1つまたは複数のマルチモードモデムを含むことができる。ワイヤレスインターフェース625は、ワイヤレス通信プロトコルを使用して通信するように構成されたデバイスとの間で、通信を送信および受信するために線632によってアンテナ634に接続される。図6に示されたモバイルデバイス600は、単一のワイヤレスインターフェース625および単一のアンテナ634を含むが、モバイルデバイス600の他の実装は、複数のワイヤレスインターフェース625および/または複数のアンテナ634を含むことができる。
【００３６】
全地球型衛星航法システム(GNSS)インターフェース665は、モバイルデバイス600が1つまたは複数のGNSSシステムに関連付けられた送信機から信号を受信することを可能にするワイヤレス受信機および/または他の要素を含むことができる。GNSSインターフェース665は、GNSS送信機から信号を受信するために線672によってアンテナ674に接続される。モバイルデバイス600は、モバイルデバイス600の位置を決定するために、GNSSシステムに関連付けられた衛星および他の送信機に関連付けられた衛星から受信された信号を使用するように構成され得る。モバイルデバイス600は、また、モバイルデバイス600の位置を決定するために、地球上のワイヤレス送信機から受信された信号に関連してGNSSシステムに関連付けられたGNSS衛星および他の送信機から受信された信号を使用するように構成され得る。
【００３７】
DSP620は、ワイヤレスインターフェース625および/またはGNSSインターフェース665から受信された信号を処理するために構成され得て、メモリ660に記憶されたプロセッサで読み取り可能でプロセッサで実行可能なソフトウェアコードとして実装された1つまたは複数のモジュールに対して、またはそれに関連して信号を処理するように構成され得て、および/またはプロセッサ610に関連して信号を処理するように構成され得る。
【００３８】
プロセッサ610は、たとえば、Intel(登録商標)CorporationまたはAMD(登録商標)によって作られたものなどのパーソナルコンピュータの中央処理装置(CPU)、マイクロコントローラ、特定用途向け集積回路(ASIC)など、インテリジェントなデバイスの場合がある。メモリ660は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、またはそれらの組合せを含むことができる非一時的記憶デバイスである。メモリ660は、本明細書に記述された関数を実行するようにプロセッサ610を制御するための命令を含むプロセッサで読み取り可能でプロセッサで実行可能なソフトウェアコードを記憶することができる(ただし、記述ではソフトウェアが関数を実行すると述べる場合がある)。ソフトウェアは、ネットワーク接続を介してダウンロードされることによってメモリ660にロードしたり、ディスクからアップロードしたりするなどできる。さらに、ソフトウェアは、実行前にコンパイルが必要など、直接的に実行可能ではない場合がある。
【００３９】
メモリ660のソフトウェアは、ワイヤレス送信機、ワイヤレス基地局、他のモバイルデバイス、および/またはワイヤレス通信のために構成された他のデバイスとの間でデータを送信および/または受信することを実装することを含む、プロセッサ610が様々なアクションを実行することを可能にするように構成される。
【００４０】
図7は、図6に示したメモリ660の機能モジュールを示す図6に示されたモバイルデバイス600の機能ブロック図である。たとえば、モバイルデバイス600は、暗号化モジュール762およびデータアクセスモジュール768を含むことができる。モバイルデバイス600は、また、モバイルデバイス600に他の機能を提供する1つまたは複数の追加の機能モジュールを含むことができる。図6および図7に示されたモバイルデバイス600は、図8に示されたプロセスを実装するために使用され得る。
【００４１】
暗号化モジュール762は、アルゴリズム変換および/または本明細書に開示されたアルゴリズムランダム化手法に従って、構成データを暗号化するように構成され得る。暗号化モジュール762は、データを暗号化するために使用され得る1つまたは複数の暗号化アルゴリズムを実装するように構成され得る。暗号化モジュール762は、モバイルデバイス600上の1つまたは複数のアプリケーションに対するデータを暗号化するように構成され得る。たとえば、暗号化モジュール762は、データへの許可されていないアクセスを防ぐために、モバイルデバイス600で動作しているアプリケーションから受信されたデータを暗号化するように構成され得る。暗号化モジュール762は、データアクセスモジュール768に暗号化されたデータを提供することによって、メモリ660に暗号化されたデータを記憶するように構成され得る。暗号化モジュール762は、また、モバイルデバイス600で動作しているアプリケーションから受信されたデータを解読するように構成され得る。たとえば、モバイルデバイスで実行されている電子メールアプリケーションは、暗号化された添付ファイルを持つ電子メールをダウンロードすることができ、電子メールアプリケーションは、添付ファイルを解読するために必要とされる1つまたは複数の鍵が暗号化モジュール762で利用可能な場合、暗号化された添付ファイルを解読するように構成され得る。
【００４２】
暗号化モジュール762は、暗号化モジュール762によって実装された暗号化アルゴリズムの1つまたは複数の段階によって使用され得る1つまたは複数の鍵にアクセスするように構成され得る。暗号化モジュール762は、メモリ260の保護された領域またはアクセスが限定されたモバイルデバイス600の他のメモリに鍵を記憶するように構成され得る。暗号化モジュール762は、データアクセスモジュール768を介して1つまたは複数の鍵にアクセスするように構成され得る。暗号化モジュール762は、データを暗号化および/または解読するために鍵を使用するように構成され得る。
【００４３】
データアクセスモジュール768は、メモリ660および/またはモバイルデバイス600に関連付けられた他のデータ記憶デバイスにデータを記憶するように構成され得る。データアクセスモジュール768は、また、メモリ660および/またはモバイルデバイス600に関連付けられた他のデータ記憶デバイスのデータにアクセスするように構成され得る。データアクセスモジュール768は、モバイルデバイス600の他のモジュールおよび/またはコンポーネントから要求を受信し、メモリ660および/またはモバイルデバイス600に関連付けられた他のデータ記憶デバイスに記憶されているデータを記憶し、および/またはそのデータにアクセスするように構成され得る。
【００４４】
例示的な実装
図8は、本明細書に開示された暗号化手法を実装するために使用され得るデータを暗号化するプロセスの流れ図である。図8に示されたプロセスは、ハードウェア、ソフトウェア、またはそれらの組合せに実装され得る。たとえば、図8に示されたプロセスは、図6および図7に示されたモバイルデバイス600によって実装され得る。図8に示されたプロセスも、図5に示された例示的な回路などの回路に実装され得る。
【００４５】
暗号アルゴリズムの1つまたは複数の第1の段階は、第1の中間データを生成するために暗号化されるデータに適用され得る(段階805)。適用される暗号アルゴリズムの1つまたは複数の第1の段階は、保護がアルゴリズムのどの段階で提供されたか、どれだけの段階が暗号アルゴリズムの特定の実装に含まれているかに依存する場合がある。たとえば、暗号アルゴリズムがAES暗号アルゴリズムである実装では、実行されたラウンドの数は、その特定の実装によって使用される鍵の長さに依存する。AES-128アルゴリズムは、128ビットのキー長を使用し、AES-192アルゴリズムは、192ビットのキー長を使用し、AES-256アルゴリズムは、256ビットのキー長を使用する。鍵のサイズは、実行されるラウンドの数に影響する。たとえば、AES-128実装は、典型的には10ラウンドを含み、AES-192実装は、典型的には12ラウンドを含み、AES-256実装は、典型的には14のラウンドを含む。
【００４６】
AESアルゴリズムに対する攻撃の1つの共通点は、第1および第2ラウンドの間にある。AESアルゴリズムに対する攻撃の別の共通点は、アルゴリズムの最後のラウンドの前と最後のラウンドの間にある。たとえば、AES-128アルゴリズムに対する攻撃の共通点は、第9および第10ラウンドにあり、AES-192アルゴリズムに対する攻撃の共通点は、第11および第12ラウンドにあり、AES-256アルゴリズムに対する攻撃の共通点は、第13および第14ラウンドにある。したがって、暗号アルゴリズムの1つまたは複数の第1の段階は、AESアルゴリズムの1つの第1のラウンドの場合がある。暗号アルゴリズムの1つまたは複数の第1の段階は、また、AES-128アルゴリズムの第9ラウンド、AES-192アルゴリズムの第10ラウンド、およびAES-256アルゴリズムの第13ラウンドなど、AESアルゴリズムの最後のラウンドの前を参照することができる。最後のラウンドの前の数は、他の暗号アルゴリズムについては変動する場合がある。
【００４７】
攻撃者は、電力形跡を開発するために期間を通じて暗号アルゴリズムが実装されたデバイスの電気活動を観察するために、上に記述されたものなど、電力解析攻撃を使用することができる。電力形跡は、アルゴリズムによって使用される暗号鍵を抽出するために使用され得る。
【００４８】
第1の中間データの順序は、置換された中間データを生成するために、事前に決定された置換に従って置換され得る(段階810)。第1の中間データのバイトの順序は、置換された中間データを生成するために、事前に決定された置換パターンに従って置換され得る。一部の実装では、事前に決定された置換は、図2に示されたアルゴリズム変換手法214のものに類似するアルゴリズム変換手法に従って実行され得る。アルゴリズム変換手法では、変換関数は、暗号化アルゴリズムが実装されるソフトウェアおよび/またはハードウェアに実装され得る。暗号アルゴリズムの1つまたは複数の次の段階が入力データに適用されると、変換関数は、逆の置換関数を使用して逆転され得る事前に決定されたパターンに従って入力データのバイトを並べ替えることができる。図3は、AES暗号化アルゴリズムのラウンドの入力データに適用されているそのような変換関数の例を示している。16バイトの入力データは、4×4行列のデータとして表される。変換関数は、入力データのバイトの順序を置換するため、入力データのバイトは、前のAESラウンドから出力されたときにそれらがあったのと同じ順序に位置しない。他の実装では、図2に示されたランダム化アルゴリズム220のものに類似したアルゴリズムランダム化手法が用いられ得る。アルゴリズムランダム化手法では、入力データを置換するために使用される変換関数は静的ではなく、複数の事前に決定された置換関数から選択され得る。たとえば、アルゴリズムランダム化手法の特定の実装は、異なるパターンで入力データをそれぞれ置換する5つの変換関数の組を含むことができる。アルゴリズムランダム化手法は、また、入力データに適用するべき5つの事前に決定された変換関数の1つを選択するための手段を実装することができる。入力データを置換するために変換アルゴリズムの1つを任意に選択することは、使用されている鍵を暴露する試みにおいて、暗号アルゴリズムに対する電力解析および他のタイプの攻撃をよりさらに困難にすることができる。一部の実装では、ランダムなシード値が生成され、入力データに適用するべき変換関数を選択するマルチプレクサに供給され得る。上に記述したアルゴリズム変換とアルゴリズムランダム化手法の両方について、使用される1つまたは複数の置換パターンは、可能であれば秘密に維持されるべきである。どの変換関数が適用されるかを選択するために、他の手法も使用され得る。たとえば、どの変換関数が適用されるかを選択するために、ランダムなシード値の代わりに、ラウンドロビンまたは他の選択方式が使用され得る。一部の実装では、1つまたは複数の固定された選択パターンが実装され得、どの変換関数が適用されるかを決定するために、ランダムシードの代わりに使用され得る。
【００４９】
暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵は、事前に決定された置換に従って置換され得る(段階815)。第1の中間データで動作するために暗号アルゴリズムによって使用される鍵は、また、入力値に適用されたのと同じ変換アルゴリズム変換に従って置換され得る。図3に示された例は、入力データと同じ変換アルゴリズムを使用して置換されている鍵の例を示している。鍵は、暗号アルゴリズムの複数の段階によって使用され得るか、または暗号アルゴリズムの1つの段階に特有の場合がある。たとえば、AESアルゴリズムは、短い鍵をいくつかの個々のラウンド鍵へと拡張するために使用され得る手法である、ラインドールの鍵スケジュールを使用して、主な暗号鍵から得られる各ラウンドに対する個別の鍵を必要とする。
【００５０】
暗号アルゴリズムの1つまたは複数の第2の段階は、第2の中間データを生成するために、置換された中間データに適用され得る(段階820)。暗号アルゴリズムの1つまたは複数の第2の段階は、段階815で生成された置換された鍵を使用することができる。図3に示された例は、AESラウンドのステップが、置換された中間データに適用される例を示しており、図3の例では、これは、AESアルゴリズムの前のラウンドによって出力された入力値の4×4行列である。段階815からの置換された鍵は、また、AESラウンドでも使用される。本明細書に開示された手法が他の暗号アルゴリズムに適用される場合、暗号アルゴリズムの1つまたは複数の第2の段階によって使用される入力値および/または鍵のタイプは、図3に示されたAESの例で使用されるものと異なる場合がある。
【００５１】
第2の中間データは、出力を生成するために、事前に決定された置換の逆の置換に従って置換され得る(段階825)。第2の中間データは、修正されていない暗号アルゴリズムの1つまたは複数の第2の段階の出力が生成するのと同じである出力を生成するために、段階810および820に適用された置換の逆の置換を使用して置換され得る。たとえば、図3の例を再び参照すると、置換された中間データのバイトを並べ替えるために、そのラウンドに関連付けられた入力日時および下位鍵を置換するために適用された変換関数に関連付けられた逆の置換は、置換された中間データに適用されるため、本明細書に開示された修正された暗号手法の代わりに、従来のAES暗号アルゴリズムが適用されていた場合、バイトは、元のバイトと同じ順序にある。したがって、本明細書に開示された手法は、これらの手法で機能するために、段階またはラウンドの各々で暗号アルゴリズムによって実行された動作が修正されることを必要としない。手法は、電力解析攻撃、EM攻撃、および/または他のタイプのサイドチャネル攻撃によって対象とされ得る暗号アルゴリズムの1つまたは複数の段階またはラウンドで適用され得る。
【００５２】
段階825からの出力は、暗号アルゴリズムの1つまたは複数の次の段階への入力として使用され得る。たとえば、暗号アルゴリズムがAESアルゴリズムであり、暗号アルゴリズムの1つまたは複数の第2の段階が、AESアルゴリズムの1つのラウンド2に対応する場合、暗号テキストがアルゴリズムによって出力される前に、ラウンド2からの出力は、複数の追加のラウンドによって処理される。暗号アルゴリズムがAESアルゴリズムであり、暗号アルゴリズムの1つまたは複数の第2の段階が、AESアルゴリズムの1つの最後のラウンドに対応する場合、暗号テキストがアルゴリズムによって出力される前に、最後のラウンドからの出力は、複数の追加のラウンドによって処理される。
【００５３】
本明細書に記述された方法は、アプリケーションに依存して様々な手段によって実装され得る。たとえば、これらの方法は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組合せで実装され得る。ハードウェア実装の場合、各処理ユニットは、本明細書に記載された関数を実行するように設計された、1つもしくは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、他の電子ユニット、またはそれらの組合せにおいて実装され得る。
【００５４】
ファームウェアおよび/またはソフトウェア実装について、方法は、本明細書に記述された関数を実行するモジュール(たとえばプロシージャ、関数など)で実装され得る。命令を明確に具体化する機械可読媒体が、本明細書に記述された方法を実装する際に使用され得る。たとえば、ソフトウェアコードは、メモリに記憶され、処理装置によって実行され得る。メモリは、処理装置の内部または処理装置の外部に実装され得る。本明細書で使用される場合、「メモリ」という用語は、任意のタイプの長期、短期、揮発性、不揮発性、または他のメモリを指し、特定のメモリのタイプもしくはメモリの数、または媒体のタイプに限定されるものではない。有形の媒体は、ランダムアクセスメモリ、磁気記憶装置、光学記憶装置媒体など、機械可読媒体の1つまたは複数の物理的品物を含む。
【００５５】
ファームウェアおよび/またはソフトウェアに実装された場合、関数は、コンピュータ可読媒体上の1つまたは複数の命令またはコードとして記憶され得る。例は、データ構造を用いて符号化されたコンピュータ可読媒体、およびコンピュータプログラムを用いて符号化されたコンピュータ可読媒体を含む。コンピュータ可読媒体は物理的コンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体の場合がある。制限することなく例をあげると、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、もしくは他の光学ディスク記憶装置、磁気ディスクストレージまたは他の磁気記憶デバイス、または望まれるプログラムコードを命令またはデータ構造の形で記憶するために使用され得て、コンピュータによってアクセスされ得る他の媒体を含むことができる。ディスク(disk)およびディスク(disk)は、本明細書で使用する場合、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスクおよびBlu-ray(登録商標)ディスクを含み、ここで、ディスク(disk)は通常、磁気的にデータを再生する一方、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。そのような媒体は、また、機械可読な場合がある非一時的媒体の例を提供し、コンピュータは、そのような非一時的媒体から読み込むことができる機械の一例である。
【００５６】
本明細書に記述された一般的な原理は、本開示または特許請求の範囲の精神または範囲から逸脱することなく、他の実装に適用され得る。
【符号の説明】
【００５７】
205  暗号アルゴリズム
210  マスキング暗号アルゴリズム
214  アルゴリズム変換手法
215  変換アルゴリズム
220  ランダム化アルゴリズム
260  メモリ
505  変換関数ブロック
510  マルチプレクサ
515  逆の変換関数ブロック
520  マルチプレクサ
555  変換関数ブロック
560  マルチプレクサ
565  逆の変換関数ブロック
570  マルチプレクサ
575  ランダムシード値
600  モバイルデバイス
601  バス
610  汎用プロセッサ
625  ワイヤレスインターフェース
634  アンテナ
660  非一時的メモリ
665  GNSSインターフェース
674  アンテナ
762  暗号化モジュール
768  データアクセスモジュール
【図１】
2017504838.tif 000003
【図２】
2017504838.tif 000004
【図３】
2017504838.tif 000005
【図４】
2017504838.tif 000006
【図５Ａ】
2017504838.tif 000007
【図５Ｂ】
2017504838.tif 000008
【図５Ｃ】
2017504838.tif 000009
【図６】
2017504838.tif 000010
【図７】
2017504838.tif 000011
【図８】
2017504838.tif 000012
【手続補正書】
【提出日】平成28年8月4日(2016.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
置換された中間データを生成するために、選択された置換に従って第1の中間データの順序を置換するステップであって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、ステップと、
前記選択された置換に従って前記暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵のバイトの順序を置換するステップと、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用するステップであって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、ステップと、
出力を生成するために、前記選択された置換の逆の置換に従って前記第2の中間データのバイトの順序を置換するステップと
を含む、データを暗号化するための方法。
【請求項２】
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの1つまたは複数の第1の段階を適用するステップ
をさらに含む請求項1に記載の方法。
【請求項３】
置換の組から置換を選択するステップであって、置換された中間データを生成するために、前記選択された置換に従って前記第1の中間データの前記順序を置換するステップは、前記選択された置換を使用して、前記第1の中間データの前記順序を置換するステップを含む、ステップ
をさらに含む請求項1に記載の方法。
【請求項４】
前記置換の組から前記置換を選択するステップは、
乱数シード値を生成するステップと、
前記乱数シード値に基づいて前記置換の組から前記置換を選択するステップと
を含む請求項3に記載の方法。
【請求項５】
前記置換の組から前記置換を選択するステップは、
選択されたパターンに基づいて前記置換の組から前記置換を選択するステップ
を含む請求項3に記載の方法。
【請求項６】
前記出力を生成するために、前記選択された置換の前記逆の置換に従って前記第2の中間データを置換するステップは、前記置換の組からの前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択するステップを含む請求項3に記載の方法。
【請求項７】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2のラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項1に記載の方法。
【請求項８】
置換された中間データを生成するために、選択された置換に従って第1の中間データの順序を置換するための手段であって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、手段と、
前記選択された置換に従って暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵のバイトの順序を置換するための手段と、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用するための手段であって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、手段と、
出力を生成するために、前記選択された置換の逆の置換に従って前記第2の中間データのバイトの順序を置換するための手段と
を含む、データを暗号化するためのシステム。
【請求項９】
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの前記1つまたは複数の第1の段階を適用するための手段
をさらに含む請求項8に記載のシステム。
【請求項１０】
置換の組から置換を選択するための手段であって、
置換された中間データを生成するために、前記選択された置換に従って前記第1の中間データの前記順序を置換するための前記手段は、前記選択された置換を使用して、前記第1の中間データの前記順序を置換するための手段を含む、手段
をさらに含む請求項8に記載のシステム。
【請求項１１】
前記置換の組から前記置換を選択するための前記手段は、
乱数シード値を生成するための手段と、
前記乱数シード値に基づいて前記置換の組から前記置換を選択するための手段と
を含む請求項10に記載のシステム。
【請求項１２】
前記置換の組から前記置換を選択するための前記手段は、
乱数シード値を生成するための手段と、
前記乱数シード値に基づいて前記置換の組から前記置換を選択するための手段と
を含む請求項10に記載のシステム。
【請求項１３】
前記出力を生成するために、前記選択された置換の前記逆の置換に従って前記第2の中間データを置換するための前記手段は、前記置換の組からの前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択するための手段を含む
請求項10に記載のシステム。
【請求項１４】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2のラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項8に記載のシステム。
【請求項１５】
データを暗号化するためのコンピュータ可読命令をそこに記憶した非一時的コンピュータ可読記録媒体であって、コンピュータに、
置換された中間データを生成するために、選択された置換に従って第1の中間データの順序を置換することであって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、置換することと、
前記選択された置換に従って前記暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵のバイトの順序を置換することと、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用することであって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、適用することと、
出力を生成するために、前記選択された置換の逆の置換に従って前記第2の中間データのバイトの順序を置換することと
を行わせるように構成された命令を含む非一時的コンピュータ可読記録媒体。
【請求項１６】
前記コンピュータに、
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの前記1つまたは複数の第1の段階を適用させる
ように構成された命令をさらに含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項１７】
前記コンピュータに、
置換の組から置換を選択させるように構成された命令であって、
前記コンピュータに、置換された中間データを生成するために、前記選択された置換に従って前記第1の中間データの前記順序を置換させるように構成された前記命令は、前記コンピュータに、前記選択された置換を使用して、前記第1の中間データの前記順序を置換させるように構成された命令を含む、命令をさらに含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項１８】
前記コンピュータに、前記置換の組から前記置換を選択させるように構成された前記命令は、前記コンピュータに、
乱数シード値を生成し、
前記乱数シード値に基づいて前記置換の組から前記置換を選択させる
ように構成された命令を含む請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項１９】
前記コンピュータに、前記置換の組から前記置換を選択させるように構成された前記命令は、前記コンピュータに、
選択されたパターンに基づいて前記置換の組から前記置換を選択させる
ように構成された命令を含む請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項２０】
前記コンピュータに、前記出力を生成するために、前記選択された置換の前記逆の置換に従って前記第2の中間データを置換させるように構成された前記命令は、前記コンピュータに、前記置換の組からの前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択させるように構成された命令を含む請求項17に記載の非一時的コンピュータ可読記録媒体。
【請求項２１】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2のラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項２２】
置換された中間データを生成するために、選択された置換に従って第1の中間データの順序を置換するように構成されたコンポーネントの第1の組であって、前記第1の中間データは、暗号アルゴリズムの1つまたは複数の第1の段階によって出力される、コンポーネントの第1の組と、
前記選択された置換に従って前記暗号アルゴリズムの1つまたは複数の第2の段階によって使用される鍵のバイトの順序を置換するように構成されたコンポーネントの第2の組と、
第2の中間データを生成するために、前記置換された中間データに前記暗号アルゴリズムの前記1つまたは複数の第2の段階を適用するように構成されたコンポーネントの第3の組であって、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記置換された鍵を使用する、コンポーネントの第3の組と、
出力を生成するために、前記選択された置換の逆の置換に従って前記第2の中間データのバイトの順序を置換するように構成されたコンポーネントの第4の組と
を含む、データを暗号化するための回路。
【請求項２３】
前記第1の中間データを生成するために暗号化されるデータに、前記暗号アルゴリズムの前記1つまたは複数の第1の段階を適用するために構成されたコンポーネントの第5の組
をさらに含む請求項22に記載の回路。
【請求項２４】
置換の組から置換を選択するように構成されたコンポーネントの第6の組であって、置換された中間データを生成するために、前記選択された置換に従って前記第1の中間データの前記順序を置換することは、前記置換の組からの前記選択された置換を使用して、前記第1の中間データの前記順序を置換することを含む、コンポーネントの第6の組
をさらに含む請求項22に記載の回路。
【請求項２５】
コンポーネントの前記第6の組は、
乱数シード値を生成し、
前記乱数シード値に基づいて前記置換の組から前記置換を選択する
ようにさらに構成される請求項24に記載の回路。
【請求項２６】
コンポーネントの前記第6の組は、
選択されたパターンに基づいて前記置換の組から前記置換を選択する
ようにさらに構成される請求項24に記載の回路。
【請求項２７】
コンポーネントの前記第4の組は、前記選択された置換に基づいて逆の置換の組から前記逆の置換を選択するように構成される請求項24に記載の回路。
【請求項２８】
前記暗号アルゴリズムは、次世代米国標準暗号(AES)アルゴリズムであって、前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの第1のラウンドを含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの第2ラウンドを含むか、または前記暗号アルゴリズムの前記1つまたは複数の第1の段階は、前記AESアルゴリズムの最後のラウンドの前を含み、前記暗号アルゴリズムの前記1つまたは複数の第2の段階は、前記AESアルゴリズムの最後のラウンドを含む請求項22に記載の回路。
【国際調査報告】
2017504838.tif 000013
2017504838.tif 000014
2017504838.tif 000015