(57)【特許請求の範囲】
【請求項１】
インクカートリッジとプリンタとの間の暗号化通信の方法であって、前記インクカートリッジは、基本鍵が格納される第１のメモリと、前記インクカートリッジと前記プリンタとの間の通信を認証する変形鍵を格納するための第２のメモリとを有し、
前記インクカートリッジにより、前記変形鍵を前記第２のメモリ内で確認するステップと、
前記変形鍵が前記第２のメモリに存在しない場合に、前記インクカートリッジにより、片方向関数を前記基本鍵及び前記プリンタから伝送される識別データに適用して、変形鍵を生成するステップと、
前記インクカートリッジにより、前記変形鍵を用いてデジタル署名を生成するステップと、
前記プリンタにより、前記インクカートリッジから伝送される前記デジタル署名の妥当性を検査して前記インクカートリッジと前記プリンタとの間の通信を認証するステップとを備え、
前記変形鍵を生成するステップでは、予め定められた期間内に前記第１のメモリから前記基本鍵を取り出しできる回数が、予め定められたしきい値以内に制限され、
前記デジタル署名を生成するステップでは、前記予め定められた期間内に前記変形鍵を使用できる回数が、制限されないようにした方法。
【請求項２】
前記第１のメモリは不揮発性メモリである請求項１に記載の方法。
【請求項３】
前記第２のメモリは、予め定められた数の前記変形鍵を格納するための書き換え可能メモリであり、
変形鍵の前記予め定められた数は、前記基本鍵が前記不揮発性メモリから取り出され得る回数の前記しきい値回数よりも小さい請求項２に記載の方法。
【請求項４】
前記片方向関数を使用する各々の前記変形鍵を生成する前記ステップが、
複数の別個の項を加算するサブステップを含み、
前記インクカートリッジが、前記項のランダム配列を使用するように構成される請求項３に記載の方法。
【請求項５】
前記片方向関数を使用する各々の前記変形鍵を生成する前記ステップが、
複数の別個の項を加算するサブステップを含み、
前記インクカートリッジが、他の類似するインクカートリッジとは異なる前記項の配列を備えるように構成される請求項３に記載の方法。
【請求項６】
前記予め定められた期間は、前記第１のメモリに記憶され、
前記予め定められた期間は、一暦日である請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全な通信の分野に関する。本発明は主として、プリンタと共に使用するカートリッジを含む、プリンタにおけるさまざまな集積回路の間の通信を可能にするために開発されたものであり、本出願に関連して説明される。しかし、本発明が、ソフトウェア、ハードウェア、及びその２つの組み合わせにおける使用を含む、一般的な分野に幅広い用途を有することが理解されよう。
【背景技術】
【０００２】
（トナーカートリッジを必要とするレーザープリンタのような）消耗品を必要とするシステムの製造業者は、成果の程度の差こそあれ、消耗品を認証するという問題に対処してきた。多くは、特許を伴う特化されたパッケージングを採用した。しかし、そのようなパッケージングは、工業所有権保護が脆弱な国々において自宅での詰め替え操作又は複製品の製造を阻止することはない。複製の防止は、劣悪な製造による代用の消耗品が基本システムに損傷を与えることがないよう防ぐために重要である。例えば、フィルタ処理の不十分なインクはインクジェットプリンタの印刷ノズルを詰まらせてしまうことがあり、その結果、消費者がシステム製造業者を避難し、認証されていない消耗品の使用を認めなくなる。
【０００３】
加えて、一部のシステムは、ライセンスによって管理され得る操作パラメータを有する。例えば、特定のプリンタハードウェアのセットアップが、連続印刷することができたとしても、使用ライセンスは、特定の印刷速度しか許可しないこともある。印刷システムは、ユーザがライセンス契約に違反できないことを認識して、安全な認証済みの方法で操作パラメータにアクセスして更新できることが理想的であろう。
【０００４】
さらに、特定の国々の法律では、消耗品が再使用可能であることを求めている。この要求は、詰め替えが可能でなくてはならないが、認証されない自宅詰め替え又は複製詰め替えの手段を介してはならない、という点において、事態を若干複雑にしている。「純正」消耗品を認証するために、消耗品とプリンタとの間の通信はデジタル署名により認証されてもよい。デジタル署名を作成するために、署名されるデータ（ｄ）は、鍵従属の片方向ハッシュ関数（ＳＩＧ）を通じて秘密鍵（ｋ）と共に渡される。すなわち、署名＝ＳＩＧｋ（ｄ）である。現在使用されている最も定評のある鍵従属の片方向ハッシュ関数の１つは、ＨＭＡＣ−ＳＨＡ１（ハッシュメッセージ認証コード（Ｈａｓｈ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）−セキュアハッシュアルゴリズム（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）  Ｎｏ．１）であるが、任意の鍵従属の片方向ハッシュ関数が使用されてもよい。
【０００５】
インクカートリッジのような消耗品は、品質保証集積回路デバイス、又は知られているようなＱＡチップを有することができ、それがインクの受け入れ前にプリンタ内の対応するＱＡチップにインクカートリッジを認証する。カートリッジＱＡチップは、秘密鍵を格納し、プリンタＱＡチップがカートリッジを受け入れる前に妥当性を検査するデジタル署名を生成する。
【０００６】
メムジェット（Ｍｅｍｊｅｔ）印刷システム内のデジタル暗号化及び暗号鍵の使用についての包括的な説明は、「Ｕｓｅ  ｏｆ  Ｂａｓｅ  ａｎｄ  Ｖａｒｉａｎｔ  Ｋｅｙｓ  ｗｉｔｈ  Ｔｈｒｅｅ  ｏｒ  ｍｏｒｅ  Ｅｎｔｉｔｉｅｓ」と題する米国特許第７，５５７，９４１号において提供される。米国特許第７，５５７，９４１号の内容全体は、相互参照により本明細書に組み込まれる。
【０００７】
複製消耗品を製造するには、認証プロセスに違反する必要がある。複製消耗品は、プリンタが妥当性を検査するデジタル署名を生成する必要がある。デジタル署名には、カートリッジに格納されている秘密鍵が必要となる。ＱＡチップは、鍵を復号化しようとして「攻撃される」ことがある。攻撃の１つのカテゴリは、サイドチャネル攻撃として知られる。それらの攻撃は、操作中にチップから「漏れた」情報を利用する。電力消費量、放出された電磁気放射、及びその他の外部的に観察可能な変動は、チップの操作に関する情報をもたらすことができる。
【０００８】
サイドチャネル攻撃の１つの特有のタイプは、チップの電力消費量に注目する差分電力解析（ｄｉｆｆｅｒｅｎｔｉａｌ  ｐｏｗｅｒ  ａｎａｌｙｓｉｓ）攻撃（又はＤＰＡ攻撃）である。電力消費量は容易に測定可能であり、さまざまな論理コンポーネントの状態の変化の数を指示する。通常、署名内の訂正ビットは、多数の論理状態を変化させるので、電力がスパイクする。攻撃者によって送信されるメッセージに応答して電力消費量の多数の（例えば１００〜１０００）のトレースを記録して解析することで、秘密鍵を明らかにすることができる。このことを踏まえれば、ＤＰＡ攻撃は、特に安価で実際的である。
【０００９】
秘密鍵を入手してしまえば、複製カートリッジは、攻撃された認証カートリッジとは区別がつかない。それ以降、認証カートリッジを受け入れるすべてのプリンタは、複製品も受け入れることになる。攻撃者を妨げるか、又は引き起こされる危害を減少させ、暗号鍵が正常に取得されるようにする、ＤＰＡ防御を備えるＱＡデバイスを有することが望ましい。
【発明の概要】
【００１０】
第１の態様によれば、本発明は、外部エンティティとの暗号化通信のためのデバイスを提供し、デバイスは、
第１のメモリと、
第１のメモリに格納された暗号鍵と、
暗号鍵に適用する片方向関数と、を備え、使用中に、
暗号鍵が、片方向関数への適用に先立ち第１のメモリから取り出され、デバイスは、暗号鍵が第１のメモリから取り出されることを許可される回数を予め定められたしきい値まで制限するように構成される。
【００１１】
オプションとして、デバイスは、暗号鍵の取り出しを、取り出しの最高頻度をもたらすように予め定められた期間内のしきい値回数まで制限するように構成される。正当なユーザは、あまりに頻繁ではない限り、プリンタ間でカートリッジを無制限回数交換することができる。しかし、ＤＰＡ攻撃者は、取り出し頻度の制限が非常にいらだたしいほど遅いので、暗号鍵を首尾よく推測するために必要な多くの電力トレースを得ることができない。
【００１２】
好ましくは、暗号鍵は基本鍵であり、第１のメモリは不揮発性メモリである。オプションとして、暗号鍵は、デバイスの初期構成手順を保護するために使用されるバッチ鍵である。
【００１３】
ＤＰＡ攻撃は、基本鍵の取り出し及び使用中にその識別を推定するために、特定数の電力トレースを必要とする。基本鍵にアクセスできる回数を制限することにより、攻撃者は、基本鍵を解析して確定するための情報が不十分になる。
【００１４】
好ましくは、デバイスは、片方向関数、基本鍵、及び第１の外部エンティティからの一意の情報に基づいて第１の変形鍵を生成するように構成され、第１の変形鍵はデバイスと第１の外部エンティティとの間の通信を認証するためのデジタル署名を生成するために格納される。
【００１５】
第１の変形鍵は、取り出され、第１の外部エンティティとの通信ごとにデジタル署名を生成するために使用される。ＤＰＡ攻撃は、第１の変形鍵を解析するのに十分な回数の電力トレースを得られる可能性があるが、この鍵は第１の外部エンティティとの通信しか認証しないので、攻撃者にとってほとんど価値がない。この鍵を使用する複製カートリッジは、１つのプリンタでしか機能しない。
【００１６】
好ましくは、デバイスは、第１の変形鍵を格納するための書き換え可能メモリをさらに備え、書き換え可能メモリは、基本鍵を使用して生成される予め定められた数の変形鍵を格納する容量を有し、変形鍵の予め定められた数は、基本鍵が不揮発性メモリから取り出され得るしきい値回数よりも小さい。
【００１７】
ユーザは、２つ又は３つのプリンタ間でインクカートリッジを合法的に共用したいと考える場合がある。カートリッジには、それぞれのプリンタの変形鍵を生成するために少なくとも３回不揮発性メモリから基本鍵を取り出すことが必要になる。しかし、キャッシュメモリが３つの変形鍵を格納することができる場合には、カートリッジがユーザのプリンタの間で何度も交換されても、ＱＡチップが基本鍵の取り出し制限に到達することはない。ＤＰＡ攻撃者には、３つの変形鍵のすべてを確定できる可能性があるが、引き続きあらゆる複製カートリッジを３つのプリンタで使用するようにしか制限しないので、採算上価値があるとはいえない。
【００１８】
好ましくは、片方向関数を使用する各々の変形鍵の生成は、複数の別個の項を有する計算であり、デバイスは、項のランダム配列を使用するように構成される。これは、複数の電力消費波形を結合してノイズを減らすことをより難しくすることによって、攻撃者を妨げる。
【００１９】
オプションとして、片方向関数を使用する各々の変形鍵の生成は、複数の別個の項を有する計算であり、デバイスは、他の類似するデバイスとは異なる項の配列を備えるように構成される。
【００２０】
好ましくは、デバイスは、マスキング番号のセットをさらに備え、使用中、片方向関数を使用する各々の変形鍵の生成は、複数の別個の項、及び追加の項として付加されて後に計算の結果から減算されるマスキング番号の少なくとも１つを有する計算である。マスキング番号のセットは攻撃者には予測不可能であり、電力消費波形を変えることはあっても、最終的な暗号化の結果には影響を及ぼすことはない。
【００２１】
オプションとして、マスキング番号は、各々の変形鍵の生成のためにランダムに生成される。
【００２２】
好ましくは、デバイスは、基本鍵がデジタル署名を生成するために取り出されることを許可しない。さらに好ましい形態において、基本鍵は、変形鍵を生成するためにしか取り出すことはできない。
【００２３】
好ましくは、デバイスは、リソースデータをさらに備え、第１の外部エンティティはリソースデータへの操作に関して特定の許可を持つ。
【００２４】
オプションとして、リソースデータは、物理的特性を示す。
【００２５】
オプションとして、物理的特性は、物理リソースの残量である。
【００２６】
オプションとして、リソースは、消耗品リソースである。
【００２７】
オプションとして、リソースエンティティは、消耗品リソースを保持する容器又はマガジンに物理的に取り付けられる。
【００２８】
オプションとして、リソースは、流体である。
【００２９】
オプションとして、流体はインクである。
【００３０】
オプションとして、操作は読み取りを含み、そこでリソースデータが第１の外部エンティティによって読み取られる。
【００３１】
オプションとして、操作は書き込みを含み、そこでリソースデータが要求側エンティティによって変更される。
【００３２】
オプションとして、操作は減分を含み、そこでリソースが要求側エンティティによって減分される。
【００３３】
オプションとして、片方向関数は、ハッシュ関数である。
【００３４】
オプションとして、片方向関数は、ＳＨＡ１である。
【００３５】
第２の態様によれば、本発明は、エンティティ間の暗号化通信のためのシステムを提供し、システムは、
メモリに格納された暗号鍵を持つデバイスと、
応答してデバイスが片方向関数を暗号鍵及び識別データに適用して、デバイスと外部エンティティとの間の通信を認証するために使用される変形鍵を生成するように、通信を開始するためにデバイスに伝送する識別データを持つ外部エンティティとを備え、
デバイスは、暗号鍵が第１のメモリからの取り出しを許可される回数を予め定められたしきい値に制限するように構成される。
【００３６】
オプションとして、デバイスは、暗号鍵の取り出しを、取り出しの最高頻度をもたらすように予め定められた期間内のしきい値回数まで制限するように構成される。
【００３７】
好ましくは、暗号鍵は基本鍵であり、第１のメモリは不揮発性メモリである。
【００３８】
好ましくは、識別データは、変形鍵がデバイスと外部エンティティとの間の通信のみを認証するためにデジタル署名を生成するように、外部エンティティを識別してすべての他の外部エンティティを除外する一意の識別子である。
【００３９】
好ましくは、デバイスは、それぞれ複数の外部エンティティとの通信を認証するためにデジタル署名に対して生成される複数の変形鍵のための第２のメモリをさらに備える。
【００４０】
好ましくは、第２のメモリは、予め定められた数の変形鍵を格納するための書き換え可能メモリであり、変形鍵の予め定められた数は、基本鍵が不揮発性メモリから取り出され得るしきい値回数よりも小さい。
【００４１】
好ましくは、片方向関数を使用する各々の変形鍵の生成は、複数の別個の項を加算することを含み、デバイスは、項のランダム配列を使用するように構成される。
【００４２】
好ましくは、片方向関数を使用する各々の変形鍵の生成は、複数の別個の項を加算することを含み、デバイスは、他の類似するデバイスとは異なる項の配列を備えるように構成される。
【００４３】
好ましくは、変形鍵を生成するために使用される片方向関数は、複数の別個の項を互いに加算することを含み、デバイスは、マスキング番号を追加の項として片方向関数に付加し、続いて計算の和からマスキング番号を減算するように構成される。
【００４４】
好ましくは、マスキング番号は、各々の変形鍵の生成のためにランダムに生成される。
【００４５】
好ましくは、基本鍵は、変形鍵を生成するためにしか取り出すことはできない。
【００４６】
好ましくは、デバイスは、リソースデータを格納し、外部エンティティはリソースデータへの操作に関して特定の許可を持つ。
【００４７】
好ましくは、リソースデータは、物理的特性を示す。
【００４８】
好ましくは、物理的特性は、物理リソースの残量である。
【００４９】
好ましくは、操作は読み取り操作を含み、そこでリソースデータが第１の外部エンティティによって読み取られる。
【００５０】
好ましくは、操作は書き込み操作を含み、そこでリソースデータが要求側エンティティによって変更される。
【００５１】
好ましくは、書き込み操作は、物理リソースの消費の指示としてリソースデータを減分している。
【００５２】
好ましくは、片方向関数は、ハッシュ関数である。
【００５３】
好ましくは、ハッシュ関数は、ＳＨＡ１である。
【００５４】
好ましくは、デバイスは、インクカートリッジに組み入れられる。
【００５５】
好ましくは、外部エンティティは、インクカートリッジと共に使用されるように構成されるインクジェットプリンタにおけるプリントエンジンコントローラ（ＰＥＣ：ｐｒｉｎｔ  ｅｎｇｉｎｅ  ｃｏｎｔｒｏｌｌｅｒ）である。
【００５６】
第３の態様によれば、本発明は、エンティティ間の暗号化通信の方法を提供し、方法は、
メモリに格納された暗号鍵を持つデバイスを用意するステップと、
デバイスに伝送する識別データを持つ外部エンティティを用意するステップと、
変形鍵を生成するために片方向関数を暗号鍵及び識別データに適用するステップと、
デバイスと変形鍵を持つ外部エンティティとの間の通信を認証するステップと、
暗号鍵が第１のメモリから取り出される回数を予め定められたしきい値に制限するステップと、を備える。
【００５７】
オプションとして、暗号鍵が取り出される回数を制限するステップは、取り出しの最高頻度をもたらすように予め定められた期間に限定される。
【００５８】
好ましくは、暗号鍵は基本鍵であり、第１のメモリは不揮発性メモリである。
【００５９】
好ましくは、識別データは、外部エンティティを識別してすべての他の外部エンティティを除外する一意の識別子であり、通信を認証するステップは、デバイスと外部エンティティ間の通信への接続のためにのみ変形鍵を持つデジタル署名を生成するステップを備える。
【００６０】
好ましくは、方法は、それぞれ複数の外部エンティティとの通信を認証するためにデジタル署名に対して生成される複数の変形鍵のためのデバイスの第２のメモリを用意するステップをさらに備える。
【００６１】
好ましくは、第２のメモリは、予め定められた数の変形鍵を格納するための書き換え可能メモリであり、変形鍵の予め定められた数は、基本鍵が不揮発性メモリから取り出され得るしきい値回数よりも小さい。
【００６２】
好ましくは、片方向関数を使用する各々の変形鍵を生成するステップは、複数の別個の項を加算するサブステップを含み、デバイスは、項のランダム配列を使用するように構成される。
【００６３】
好ましくは、片方向関数を使用する各々の変形鍵を生成するステップは、複数の別個の項を加算するサブステップを含み、デバイスは、他の類似するデバイスとは異なる項の配列を備えるように構成される。
【００６４】
好ましくは、変形鍵を生成するために使用される片方向関数は、複数の別個の項を互いに加算することを含み、デバイスは、マスキング番号を追加の項として片方向関数に付加し、続いて計算の和からマスキング番号を減算するように構成される。
【００６５】
好ましくは、マスキング番号は、各々の変形鍵の生成のためにランダムに生成される。
【００６６】
好ましくは、基本鍵は、変形鍵を生成するためにしか取り出すことはできない。
【００６７】
好ましくは、方法は、リソースデータをデバイスに格納するステップをさらに備え、外部エンティティに、リソースデータへの操作に関して特定の許可をもたらす。好ましくは、リソースデータは、物理的特性を示す。好ましくは、物理的特性は、物理リソースの残量である。好ましくは、許可の１つは、リソースデータが外部エンティティによって読み取られる読み取り操作である。好ましくは、操作は書き込み操作を含み、そこでリソースデータが要求側エンティティによって変更される。好ましくは、書き込み操作は、物理リソースの消費の指示としてリソースデータを減分している。
【００６８】
好ましくは、片方向関数は、ハッシュ関数である。好ましくは、ハッシュ関数は、ＳＨＡ１である。
【００６９】
好ましくは、方法は、デバイスをインクカートリッジに組み入れるステップをさらに備える。好ましくは、外部エンティティは、インクカートリッジと共に使用されるように構成されるインクジェットプリンタにおけるプリントエンジンコントローラ（ＰＥＣ）である。
【００７０】
本発明の好ましい実施形態は、これ以降、ほんの一例として、添付の図面を参照して説明される。
【図面の簡単な説明】
【００７１】
【図１Ａ】サンプルのＱＡチップ電力トレースである。
【図１Ｂ】データに依存する電力スパイクを明らかにする共分散プロットである。
【図２】プリンタとＱＡチップとの間の暗号化通信を示すシステム図である。
【図３】本発明によるＱＡチップを持つインクカートリッジの標準的な使用のシナリオを示すシステム図である。
【図４】さらに複雑な使用のシナリオを示すシステム図である。
【図５】図２に示されるシステムに関与する方法ステップを示す流れ図である。
【図６】図３に示されるシステムに関与する方法ステップを示す流れ図である。
【図７】図４に示されるシステムに関与する方法ステップを示す流れ図である。
【発明を実施するための形態】
【００７２】
本発明の特定の実施形態は、これ以降、出願者のメムジェット（Ｍｅｍｊｅｔ）（商標）印刷システムを参照して説明される。しかし、本発明が印刷システムにおいて使用することに限定されることはなく、暗号化通信及び関連エンティティの認証を必要とする幅広い用途で採用され得ることを、当業者は理解するであろう。
【００７３】
従来技術のＱＡチップのサイドチャネル動作
本発明は、上記で相互参照される米国特許第７，５５７，９４１号において提示される鍵管理機構を基礎とし、したがって同一の用語法に従う。メムジェット（Ｍｅｍｊｅｔ）（商標）プリンタの各インクカートリッジは、プリントエンジンコントローラ（ＳＯＰＥＣ）チップで稼働しているソフトウェアに自身を認証するために有用な基本鍵を格納して使用するＱＡ（品質保証）チップを含む。この鍵の漏洩により、攻撃者は、適正なモデルの任意のプリンタにより受け入れられる複製インクカートリッジを作成できるようになる。
【００７４】
従来技術又は未改良のＱＡチップは、攻撃者のコマンドに応答して、基本鍵を取り出し、それを以下の目的に使用する。
・着信コマンドの署名を確認する。
・認証済みの読み取りで要求される一部のデータに署名する。
・変形鍵を形成する（米国特許第７，５５７，９４１号を参照）。
【００７５】
それらのコマンドが処理されるよう攻撃者が要求できる回数には事実上制限がない。
【００７６】
サイドチャネル解析攻撃は、基本鍵の使用中の電力消費量、放射光、及び放出される高周波放出のようなＱＡチップの出力を繰り返し観察して、鍵の値を推測できる可能性がある。それらのＱＡチップの出力は、設計者には出力として意図されていないが、頻繁に攻撃者によって使用され得る。
【００７７】
ＱＡチップへの差分電力解析攻撃
以下の観察は、未改良のＱＡチップに対する可能なサイドチャネル攻撃の１つに関する−差分電力解析（ＤＰＡ）。これはＤＰＡによりＱＡチップを攻撃するために使用されるステップの標準的なシーケンスである。
１．  差分電力解析攻撃の第１のステップは、攻撃対象のＱＡチップが多数の既知の異なるデータ値、場合によっては入力値を処理している間、その電力消費量を記録することである。このステップにおいて、攻撃者は、測定された電力消費値を取得するが、この値は使用される秘密鍵に少なくとも部分的に依存するものである。攻撃者は、まず最初に、例えば１０００の電力トレースを取り込む必要がある。図１Ａは、未改良のＱＡチップのサンプルの電力トレース１を示す。
２．  次いで、既知のデータ値及び秘密鍵の一部（例えば、その４ビット）の推測を用いて、電力消費値は、一部の中間で計算された値がＱＡチップに電力をより多く又はより少なく消費させると期待されるかどうかに従って、２つのグループに区分される。中間で計算された値は通常、秘密鍵の選択された部分及び攻撃者に知られたその他のデータを伴う論理又は算術命令の後に続くＱＡチップ累算器のビットである。
３．  上記の各区分は、秘密鍵の一部をある程度推測するための仮定を形成する。仮定は、２つの区分の間の平均電力消費量の差分を解析する統計的測定により仮定が正しいかどうかを確認するために検査される。正しい鍵推定の場合、統計的測定は「スパイク」を明らかにするはずであり、正しくない鍵推定の場合、測定は平坦になるはずである。図１Ｂは、データに依存する電力スパイク３を明らかにする共分散プロット２を示す。
４．  次いで、攻撃者は、秘密鍵の他の部分についても同様に攻撃を単に続行する。
【００７８】
さらに複雑な攻撃もまた可能であり、そのような攻撃は、電力消費トレースの必要数を減少させることもできる。
【００７９】
認証済みの読み取りコマンドの場合（米国特許第７，５５７，９４１号を参照）、攻撃者は、ＨＭＡＣ−ＳＨＡ１操作中に有用なＤＰＡ結果の生成を補助するため、以下の事項を制御することができる。
・チェッカの臨時の「ＲＣ」（１６０ビット）。
・読み取られるフィールド選択（フィールド選択は潜在的に大きい）。
・フィールド値（最初にそれらを減分又は書き込みすることにより）。
【００８０】
これは結局、１６０ビット基本鍵について有用なＤＰＡ結果を生成するのにほぼ確実に十分といえる、膨大量の攻撃者制御になる。基本鍵から変形鍵を生成する間（米国特許第７，５５７，９４１号を参照）、攻撃者は、ＳＨＡ−１操作中に有用なＤＰＡ結果の生成を補助するためにチェッカＱＡデバイス識別子ＣｈｉｐＩＤ（６４ビット）を制御することができる。
【００８１】
情報を得た攻撃者はおそらく、インクカートリッジＱＡチップに認証済みの読み取り値を基本鍵で署名するよう要求するが、これは基本インクアクセス鍵が変形鍵よりもはるかに価値があるからである。
【００８２】
インクカートリッジＱＡチップの標準的な使用プロファイル
標準的なプリンタの使用事例の知識から、以下のパラメータがインクカートリッジＱＡチップについて真となる可能性が高い。
１．  使い捨てのインクカートリッジは、せいぜい数台のプリンタでしか機能しない。
２．  詰め替え可能なインクカートリッジでは、カートリッジの存続期間にわたり例えば１０台の異なるプリンタ、又は詰め替えごとに数台のプリンタでしか機能する必要がない。これは、インクカートリッジが、機械的な損耗により、例えば５回だけ詰め替えられることを前提とする。
【００８３】
基本サイドチャネル防御−変形鍵キャッシング
サイドチャネル防御は、生成される変形鍵のキャッシングを導入し、インクカートリッジＱＡチップを次の３つの方法で制約する。
１．  ＱＡチップの存続期間にわたり少数の変形鍵が生成されることしか許可しない。これはつまり、貴重な基本鍵には、各インクカートリッジＱＡチップの存続期間全体にわたり数回しかアクセスされないことを意味する。変形鍵が計算されると、変形鍵は後の使用に備えてキャッシュに入れられる。
２．  変形鍵に基づいてのみ署名を生成又は確認するようインクカートリッジＱＡチップを制限する。
３．  未構成のＱＡチップに存在するバッチ鍵が使用され得る回数を制限することで、それらの鍵へのＤＰＡ攻撃を防ぐ。バッチ鍵ついて、以下でさらに詳細に説明する。
【００８４】
図２は、通常の使用中の第１のプリンタ１２とＱＡチップ４との間の通信を図式的に示す。図５は、２つの間の通信を認証するための第１のプリンタ１２及びカートリッジ１３が後に続くステップを示す流れ図１００である。第１に、カートリッジ１３は、第１のプリンタ１２に取り付けられる（ステップ１０２）。第１のプリンタは、有効な鍵を要求し、ＱＡチップ４は、キャッシュ９内の１つの鍵を確認する（ステップ１０４）。変形鍵がキャッシュにない場合、ＱＡチップ４は、基本鍵１７が取り出された回数を確認する（ステップ１０６）か、又は特定の期間内の基本鍵取り出しの回数を確認する。基本鍵の取り出しの回数が最大回数（この場合は５）を超える場合、基本鍵取り出しは拒否され（ステップ１０８）、カートリッジはプリンタ１２では使用することができない。
【００８５】
第１のプリンタ１２に対して自身を認証するため、ＱＡチップ４は、不揮発性メモリ５に格納されている基本鍵１７を取り出す。ＳＨＡ１のような片方向関数６を使用して、第１の変形鍵１８は、基本鍵１７、及びプリンタのＰＥＣ２０を識別するチップＩＤ１６のような第１のプリンタ１２からの一意の情報を使用して生成される（ステップ１１０）。第１の変形鍵１８は、キャッシュメモリ９に格納され（ステップ１１６）、第１のプリンタ１２に伝送されるフィールドデータ７のようなデータをデジタル署名８及び認証するために使用される（ステップ１１８）。第１の変形鍵１８で生成されたデジタル署名８は、第１のプリンタ１２によってのみ妥当性検査される。その他のプリンタとの通信には、それらのプリンタの一意のＩＤに基づくさらなるデジタル署名の生成が必要となる。
【００８６】
キャッシュメモリ９が満杯である場合（ステップ１１２）、最も長い期間使用されなかったキャッシュ内の鍵は、新しく生成された変形鍵を優先して上書きされる（ステップ１１４）。
【００８７】
第１のプリンタ１２からのコマンド１１は、仮想インク供給のようなフィールドデータ７がプリンタとの操作中に読み取られ減分され得るように、ＱＡチップ４によって同様に妥当性検査される。第１のプリンタ１２とＱＡチップ４との間のすべての認証は、基本鍵１７が１回だけ取り出されるように、第１の変形鍵１８に基づく。
【００８８】
本発明のサイドチャネル防御は、カートリッジ１３の正当な使用を妨げる可能性は低い。図３は、ＱＡチップ４が図６の流れ図１２０において示されるステップへと続く標準的な使用のシナリオを示す。ユーザが、インクカートリッジ１３を第１のプリンタ１２から第２のプリンタ１４に交換しようとしていることが考えられる（ステップ１２２）。最初に、カートリッジ１３のＱＡチップ４は、基本鍵を最大５回取り出す許可を得ている。月の第６日に第１のプリンタ１２に取り付けられると（図５のステップ１０２）、カートリッジ１３内のＱＡチップ４は、基本鍵１７、第１のプリンタＩＤ１６を取り出して、第１の変形鍵２１を生成することにより自身を認証する。この操作は、基本鍵取り出し許可の１つを使用してしまうので、ここで４に減少する。変形鍵２１は、キャッシュメモリ９に格納され、（図２及び図５において説明される基本的な使用のシナリオに従って）第１のプリンタ１２に送信されるデータをデジタル署名するために使用される。
【００８９】
月の第９日に、ユーザは第１のプリンタ１２からカートリッジ１３を取り出して、それを第２のプリンタ１４に取り付ける（ステップ１２２）。第２のプリンタ１４は、異なるＩＤを持つので、第１の変形鍵２１を使用して生成されたデジタル署名を妥当性検査することはない（ステップ１２４）。基本鍵取り出しの回数は、５よりも少ない（ステップ１２６）ので、基本鍵１７の取り出しは許可される（ステップ１３０）。新しい変形鍵２２は、基本鍵及び第２のプリンタ１４の一意のＩＤを使用して生成される（ステップ１３２）。基本鍵の取り出しは、５回の取り出し許可のもう１つを使用してしまうので、ここで３に減少する。しかし、キャッシュメモリ９はここで、第１の変形鍵２１及び第２の変形鍵２２の両方を格納する（ステップ１３４及び１３８）。
【００９０】
第２のプリンタ１４とＱＡチップ４との間の通信は、第２の変形鍵を取り出すことにより認証されて（ステップ１４０）、伝送されるデータをデジタル署名する（ステップ１４２）。
【００９１】
月の第１０日に、ユーザはカートリッジ１３を第１のプリンタ１２に戻す（ステップ１４４）。第１の変形鍵２１は、引き続きキャッシュに入れられているので（ステップ１０４）、基本鍵は取り出される必要はなく、基本鍵取り出し許可の回数は３のままである。第１の変形鍵２１は引き続き、第１のプリンタ１２が妥当性を検査するデジタル署名を生成することができる（図５のステップ１１８）。
【００９２】
図４及び図７は、比較的可能性は低いが、依然として考えられるさらに複雑な使用のシナリオを示す。この場合、ユーザは、月の第１０日にカートリッジを第３のプリンタ１５に取り付ける（ステップ１６２）。カートリッジ１３は、これまで第３のプリンタ１５に取り付けられたことがなかったので、適切な変形鍵は存在しない（ステップ１６４）。第３の変形鍵２３を生成するため、基本鍵１７はもう１回取り出され、残りの基本鍵取り出し許可の回数が２に減少する（ステップ１６６及びステップ１７０）。第３の変形鍵２３は、基本鍵１７及び第３のプリンタ１５のチップＩＤにハッシュ関数を適用することにより生成される（ステップ１７２）。キャッシュ９は２つの変形鍵を格納する容量しかないので（ステップ１７４）、使用後最も時間が経過した鍵、すなわち第１の変形鍵２１は、上書きされて（ステップ１７６）、第３の変形鍵２３がキャッシュに入れられる（ステップ１７８）。カートリッジ１３は、通信を認証するために第３の変形鍵２３を使用して８日間第３のプリンタ１５で使用される（ステップ１８０及びステップ１８２）。
【００９３】
月の第１８日に、ユーザはさらにもう一度、カートリッジ１３を第２のプリンタ１４に取り付ける（ステップ１８４）。運良く、第２の変形鍵２２は、引き続きキャッシュに入れられているので（ステップ１２４）、基本鍵取り出し許可の回数は２のままである。図６の流れ図１２０のステップ１４２に従って使用は進行する。しかし、月の第２６日に、カートリッジ１３は第１のプリンタ１２に戻され（ステップ１８６）、第３の変形鍵２３をキャッシュに入れるために第１の変形鍵２１が上書きされたので（図５の流れ図１００のステップ１０４）、第１の変形鍵２１を生成するために基本鍵１７が再度取り出される必要がある。ＱＡチップは、流れ図１００に示されるステップ１０６に従って先へ進む。この例において、第３の変形鍵２３はここで、キャッシュ９内で使用後最も時間が経過した変形鍵であるので、第１の変形鍵２１を優先して上書きされる（ステップ１１２及びステップ１１４）。これにより、カートリッジ１３には、残りの基本鍵取り出し許可が１つしか残らない。しかし、３つの異なるプリンタで複数回使用された後、カートリッジ１３には、たとえあったとしても、十分なインクが残っている可能性は低い。
【００９４】
インク容量が高いか、又はカートリッジが詰め替え可能である場合、ＱＡチップは、基本鍵が不揮発性メモリから取り出される頻度を制限するように構成されてもよい。例えば、取り出しの最大数は、（例えば、各暦日ごとなど）予め定められた期間のみに適用されてもよく、その後、任意の使用済みの取り出し許可が、次の予め定められた期間にわたり「再度クレジットされる」。
【００９５】
攻撃者は、単一のインクカートリッジを使用して少数の生成済みの変形インクアクセス鍵にＤＰＡ攻撃を行なうことができる可能性がある。さらに、要求される変形鍵が、システムのよりセキュリティの甘い部分に存在する場合、攻撃者はおそらく、ＱＡチップよりもむしろ他の場所を攻撃するであろう。
【００９６】
攻撃者が、貴重な基本鍵にＤＰＡ攻撃を行なうためには、多数のインクカートリッジから電力消費波形を収集することが必要になる。例えば、ＤＰＡ攻撃を完了するために１０００の適合する電力消費波形が必要であり、各インクカートリッジは基本鍵ごとに３つの変形鍵を生成することを許可されると仮定すると、攻撃者には少なくとも３３３のインクカートリッジが必要になる。
【００９７】
本発明がＤＰＡ攻撃を防ぐものではないことが理解されるであろう。目標は、ＤＰＡを、潜在的な攻撃者にとって多大な負担となるか、又は経済的に魅力のないものにすることである。
【００９８】
要約すると、改良されたＱＡチップは引き続き、プリンタシステムの要求に応じて、事実上無制限数の有用な署名を生成することができるが、ＤＰＡ攻撃に対する脆弱性を大幅に低下させる。
【００９９】
バッチ鍵及び構成
バッチ鍵は、後の構成プロセスの安全を確保するため、チップがテストされるときにＱＡチップに入れられる。構成前に、ＱＡチップは汎用であり、さまざまなブランド及びモデルのプリンタコンポーネントを作成するために使用されてもよい。
【０１００】
構成プロセスは、例えばブランドＸのシアンインクカートリッジなど特定のプリンタコンポーネントに必要とされる暗号鍵及びフィールドをＱＡチップに安全にロードする。バッチ鍵は、構成中、ＱＡチップへの移動時に他のすべての鍵を暗号化するために使用される。構成プロセスは通常、物理的に安全なプリンタコンポーネント工場において行なわれる。
【０１０１】
バッチ鍵の漏洩は、１つ又は複数の基本鍵の漏洩につながるおそれもあるので、防ぐ必要がある。バッチ鍵は変形鍵であるので、ＤＰＡ攻撃は、複数のＱＡチップからの電力波形を結合することができない。
【０１０２】
変形鍵の生成及びＳＨＡ１
変形鍵は、１６０ビットの基本鍵及び６４ビットのＱＡデバイス識別子ＣｈｉｐＩＤをよく知られているＳＨＡ１セキュアハッシュアルゴリズムに供給することにより作成される。ＳＨＡ１セキュアハッシュアルゴリズムは、よく知られており、幅広く使用される。このアルゴリズムの操作の詳細な説明は、２００９年８月７日にアクセスしたＳＨＡ  ｈａｓｈ  ｆｕｎｃｔｉｏｎｓでＷｉｋｉｐｅｄｉａ寄稿者により提供されている（ｈｔｔｐ：／／ｅｎ．Ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／ＳＨＡ＿ｈａｓｈ＿ｆｕｎｃｔｉｏｎｓを参照）。
【０１０３】
項の静的配置
改良されたＱＡチップは、変形鍵の生成を実行するときに、ＳＨＡ１計算の項のランダム配置を組み入れることができる。これは、攻撃者が、複数の電力消費波形を結合してノイズを減らすことをより困難にする。
【０１０４】
第１の実施態様は、個々のＱＡチップが、各ＳＨＡ１計算に対して項の静的配置を有することである。言い換えれば、個々のＱＡチップは、時間の経過に伴ってその項の順序を変えることがない。各ＱＡチップは、各ＳＨＡ１計算に対して項の複数の可能な配置のうちの１つを有する。項の配置は、チップがＱＡチップアプリケーションでプログラムされるときに、ランダムに選択される。変形鍵生成の制約を考慮すると、この単純な手法は、攻撃者により多数のインクカートリッジを取得させて基本鍵への攻撃を成功させてしまうので、依然として有用な利益をもたらすはずである。
【０１０５】
この改良の実施態様の例として、ｈｔｔｐ：／／ｅｎ．Ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／ＳＨＡ＿ｈａｓｈ＿ｆｕｎｃｔｉｏｎｓに示される方法で状態語Ａの計算を検討する。
ｔｅｍｐ＝（ａ  ｌｅｆｔｒｏｔａｔｅ  ５）＋ｆ＋ｅ＋ｋ＋ｗ［ｉ］
（ｔｅｍｐは後にａに割り当てられることに留意されたい。）
【０１０６】
この式は、５つの項を加算することを伴う。それらの加算は、１２０の異なる順序のうちのいずれかで行なわれ、それでも同じ計算結果を得ることができる。しかし、各々の個々のＱＡチップは、これらの項を固定された順序でしか加算しない。
【０１０７】
防衛者の観点から、この例についてさらに大きな問題は、「ａ」だけが左回転されていることを攻撃者が知ってしまうことである。これに対処するため、改良されたＱＡチップは、異なる入力により異なるその他のデータの複数の左回転を実行して、異なるチップでそれらの左回転の順序を再配置することができる。
【０１０８】
変形鍵を使用するＨＭＡＣ−ＳＨＡ１署名のような、無制限の操作に使用されるＳＨＡ１の実施態様は、異なっているはずなので、変形鍵の生成に使用されるＳＨＡ１の実施態様について知るために攻撃者が容易に調べることはできない。したがって、静的項配置を採用する改良されたＱＡチップは、その内部に２つの異なるＳＨＡ１の実施態様を有する必要がある。
【０１０９】
静的マスキング操作の追加
マスキング操作の追加には、以下の事項を伴う。
・攻撃者には予測不能なマスク番号のセットの、改良されたＱＡチップの各インスタンスへの挿入、ただしそれらの番号は個々のＱＡチップにいったんプログラムされると変更されないことに留意されたい。
・それらの予測不能な数を使用して、電力消費波形を変化させるが最終暗号化結果に影響を及ぼさないような方法で電力消費波形を変化させるための、ＱＡチップにおける暗号化計算の変更。
【０１１０】
例えば、暗号化操作が以下の項のセットを加算することを伴う場合、
ｔｅｍｐ＝（ａ  ｌｅｆｔｒｏｔａｔｅ  ５）＋ｆ＋ｅ＋ｋ＋ｗ［ｉ］
次いで、単純なマスキング操作の追加は（例えば）以下のようになってもよい。
・予測不能なマスク番号の１つｍを第１の項に加算
・標準アルゴリズムに従って加算を完了、そして最後に、
・最終の和からｍを減算
言い換えると、左から右への加算を仮定すれば、式は以下のように変更される。
ｔｅｍｐ＝ｍ＋（ａ  ｌｅｆｔｒｏｔａｔｅ  ５）＋ｆ＋ｅ＋ｋ＋ｗ［ｉ］−ｍ
【０１１１】
類似する手法は、変形鍵を計算するために使用されるＳＨＡ１操作に含まれるその他の計算に使用されてもよい。例えば、以下の式におけるような、非線形のビット単位のブール演算のマスキング技法である。
ｆ＝（ｂ  ａｎｄ  ｃ）  ｏｒ  （（ｎｏｔ  ｂ）  ａｎｄ  ｄ）
【０１１２】
ＣＭＯＳ演算論理装置（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）において消費される電力は、演算結果ではなく変更されたビットの数に依存するので、たとえ計算結果が同じであっても、各チップのＡＬＵ電力消費波形は異なる。これは、攻撃者が、複数のチップからのＡＬＵ電力消費波形を有効に結合して基本鍵へのＤＰＡ攻撃を実行するのをさらに困難にする。
【０１１３】
項の再配置にまさるマスキングの１つの利点は、異なる電力消費波形を持つＱＡチップの数が非常に多くなることである。項の可能な再配置の数は、比較的少ない。
【０１１４】
マスキングは通常、動的なマスク値をもたらすために１つのチップ内でランダムデータのソースを使用することを伴う。各ＱＡチップからほんのわずかな数の電力消費波形しか得られないので、動的マスク値は、改良されたＱＡチップに要求されることはない。
【０１１５】
動的な項の配置の追加
場合によっては、動的な項の配置においてＤＰＡ防御の利点があってもよい、つまり、改良されたＱＡチップは単一のチップ内の各々連続する変形鍵の生成ごとに項の計算の順序をランダムに配置するということである。
【０１１６】
ＱＡチップが適用されている特定の状況により、変形鍵生成の許容される数が必然的に高い場合、又はｈｔｔｐ：／／ｅｎ．Ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／ＳＨＡ＿ｈａｓｈ＿ｆｕｎｃｔｉｏｎｓに一覧されるその他の制約を強制できない場合、利点は最適である。
【０１１７】
動的マスキング操作の追加
１つの動的マスキング操作は、単一のチップ内の各々連続する変形鍵の生成ごとにマスキング値「ｍ」をランダムに生成する改良されたＱＡチップを含む。マスキング値は、静的マスキング操作の追加について説明されているように適用される。動的な項の配置（上記で説明）の場合のように、一部の用途で十分な柔軟性を提供するために、変形鍵生成の許容される数が比較的高い場合、又はｈｔｔｐ：／／ｅｎ．Ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／ＳＨＡ＿ｈａｓｈ＿ｆｕｎｃｔｉｏｎｓに一覧されるその他の制約を強制できない場合、利点は最適である。
【０１１８】
マスキングは、より高位のＤＰＡ攻撃によって打ち破られる得る可能性がある。より高位のＤＰＡ攻撃は、基本的なＤＰＡ攻撃よりも多くの電力消費波形を必要とするので、動的マスキングは依然としてある程度有利となる可能性がある。
【０１１９】
防御の追加の利点
説明される防御は、サイドチャネル攻撃の範囲への抵抗を強化するが、また、収束イオンビームチップ変更のような他の物理的攻撃の範囲に対するＱＡチップの脆弱性を減少させる。その理由は、インクカートリッジの存続期間にわたり、基本鍵の値が不揮発性メモリセルから他の回路にごくわずかな回数しか移動しない場合、各々の困難なチップ変更／プローブごとに鍵情報が実質的に得られる可能性はほんのわずかしかないからである。鍵ビットを含む小さな不揮発性メモリセルの電荷を直接測定することは、それがメモリから読み取られるのでない限り非常に困難である。
【０１２０】
ＱＡデバイス識別子を設定するための追加のコマンド
追加のｓｅｔ＿ＱＡ＿Ｄｅｖｉｃｅ＿ＩＤコマンドは、基本鍵の使用をさらに明示的にするために追加されてもよい。このコマンドは、
検査デバイスの適切なＱＡチップ識別子を伝達し、選択された基本鍵又は基本鍵のセットに対して、
変形鍵の１つ又はセットの計算を行なわせ、
後に使用するように変形鍵（複数可）のキャッシングを行なわせる。
【０１２１】
仮想消耗品による変形鍵生成の制限
改良されたＱＡチップにおいて許可される変形鍵生成の数は、仮想消耗品（ＶＣ）を使用することにより制限することができる。仮想消耗品は、一部のリソースの残量を指示するＱＡチップのフィールドであり、リソースが消費されるのに応じてプリンタ操作中に確実に減分される。
【０１２２】
この手法は、以下の利点を有する。
・認可された詰め替えマシンは、仮想インクを詰め替える場合と同じ方法で、許可された変形鍵生成の回数だけ詰め替える。
・ＱＡチップは、多数の詰め替えにわたり必要とされる変形鍵生成の予め定められた最大数に制限される必要がない。
【０１２３】
本発明は、本明細書においてほんの一例として説明された。当業者であれば、広範な発明概念の精神及び範囲を逸脱することのない多数の変形及び変更を容易に理解するであろう。
【図１Ａ】
0005483777.tif 000002
【図１Ｂ】
0005483777.tif 000003
【図２】
0005483777.tif 000004
【図３】
0005483777.tif 000005
【図４】
0005483777.tif 000006
【図５】
0005483777.tif 000007
【図６】
0005483777.tif 000008
【図７】
0005483777.tif 000009