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

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

▶ キヤノン株式会社の特許一覧

<>
  • 特開-認証装置及び画像形成装置 図1
  • 特開-認証装置及び画像形成装置 図2
  • 特開-認証装置及び画像形成装置 図3
  • 特開-認証装置及び画像形成装置 図4
  • 特開-認証装置及び画像形成装置 図5
  • 特開-認証装置及び画像形成装置 図6
  • 特開-認証装置及び画像形成装置 図7
  • 特開-認証装置及び画像形成装置 図8
  • 特開-認証装置及び画像形成装置 図9
  • 特開-認証装置及び画像形成装置 図10
  • 特開-認証装置及び画像形成装置 図11
  • 特開-認証装置及び画像形成装置 図12
  • 特開-認証装置及び画像形成装置 図13
  • 特開-認証装置及び画像形成装置 図14
  • 特開-認証装置及び画像形成装置 図15
  • 特開-認証装置及び画像形成装置 図16
  • 特開-認証装置及び画像形成装置 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172470
(43)【公開日】2024-12-12
(54)【発明の名称】認証装置及び画像形成装置
(51)【国際特許分類】
   G06F 21/44 20130101AFI20241205BHJP
   H04L 9/08 20060101ALI20241205BHJP
   H04L 9/32 20060101ALI20241205BHJP
   G03G 21/00 20060101ALI20241205BHJP
   B41J 29/38 20060101ALI20241205BHJP
【FI】
G06F21/44
H04L9/08 C
H04L9/32 200A
G03G21/00 388
G03G21/00 390
B41J29/38 204
【審査請求】未請求
【請求項の数】17
【出願形態】OL
(21)【出願番号】P 2023090207
(22)【出願日】2023-05-31
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】飯島 一路
(72)【発明者】
【氏名】堀 謙治郎
(72)【発明者】
【氏名】榎本 寿
【テーマコード(参考)】
2C061
2H270
【Fターム(参考)】
2C061AP01
2C061AP04
2C061AP07
2C061AQ05
2C061AQ06
2C061AR01
2C061AS02
2C061BB08
2C061BB10
2C061CF05
2C061CG02
2C061CQ01
2C061HH03
2C061HJ10
2C061HK08
2C061HK11
2H270LA70
2H270NB01
2H270NB02
2H270NB03
2H270NB04
2H270NB05
2H270NB06
2H270NB07
2H270NB08
2H270NB09
2H270NB10
2H270ND09
2H270ND10
2H270ND11
2H270ND12
(57)【要約】
【課題】コストの上昇を抑制しつつ情報解析型の攻撃に対する耐性を向上させた認証方式を提供すること。
【解決手段】被認証装置は、認証要求に対して応答することを許可するか否かの判定に使用される第1許可データを予め記憶している。認証装置は、前記認証装置が通電されている時間を計測する計測部と、計測される前記時間が基準時間に到達した後に読み出し可能となる制限データを記憶している記憶部と、前記被認証装置により前記第1許可データを用いて検証される第2許可データであって前記記憶部から読み出される前記制限データに基づく当該第2許可データを、前記被認証装置へ送信する通信部と、前記被認証装置において前記第1許可データを用いた前記第2許可データの検証が成功した場合に前記被認証装置から受信される認証応答に基づいて、前記被認証装置を認証する認証部とを備える。
【選択図】図2
【特許請求の範囲】
【請求項1】
被認証装置を認証するための認証装置であって、
前記被認証装置は、前記認証装置から受信される認証要求に対して応答することを許可するか否かの判定に使用される第1許可データを予め記憶しており、
前記認証装置は、
前記認証装置が通電されている時間を計測する計測部と、
前記計測部により計測される前記時間が予め設定される基準時間に到達した後に読み出し可能となる制限データを記憶している記憶部と、
前記被認証装置により前記第1許可データを用いて検証される第2許可データであって、前記記憶部から読み出される前記制限データに基づく当該第2許可データを、前記被認証装置へ送信する通信部と、
前記被認証装置において前記第1許可データを用いた前記第2許可データの検証が成功した場合に前記被認証装置から受信される認証応答に基づいて、前記被認証装置を認証する認証部と、
を備える認証装置。
【請求項2】
前記被認証装置は、前記被認証装置に固有の識別子を予め記憶しており、
前記通信部は、前記被認証装置から前記識別子を受信し、
前記認証部は、前記制限データ及び前記被認証装置から受信される前記識別子に基づいて、前記第2許可データを導出する、
請求項1に記載の認証装置。
【請求項3】
前記被認証装置は、前記認証装置から前記認証要求と共に受信されるチャレンジデータからレスポンスデータを生成するために使用される第1認証鍵であって、前記識別子に基づいて導出された当該第1認証鍵を予め記憶しており、
前記通信部は、
前記認証要求と共に前記チャレンジデータを前記被認証装置へ送信し、
前記認証要求に応じて前記被認証装置から送信される、前記レスポンスデータを含む前記認証応答を受信し、
前記認証部は、前記被認証装置へ送信された前記チャレンジデータ、及び前記被認証装置から受信される前記識別子に基づいて導出される第2認証鍵を用いて、前記認証応答に含まれる前記レスポンスデータを検証することにより、前記被認証装置を認証する、
請求項2に記載の認証装置。
【請求項4】
前記第1認証鍵及び前記第2認証鍵は、共通鍵暗号方式における共通鍵として使用される、請求項3に記載の認証装置。
【請求項5】
前記第1認証鍵及び前記第2認証鍵は、共通的な元鍵及び前記識別子に基づく入力データを暗号学的ハッシュ関数へ入力することにより導出される、請求項4に記載の認証装置。
【請求項6】
前記第1認証鍵及び前記第2認証鍵は、共通的な元鍵を暗号鍵として用いて前記識別子を暗号化することにより導出される、請求項4に記載の認証装置。
【請求項7】
前記被認証装置は、前記認証装置から前記認証要求と共に受信されるチャレンジデータのデジタル署名を生成するために使用される、公開鍵暗号方式の秘密鍵を予め記憶しており、
前記通信部は、
前記認証要求と共に前記チャレンジデータを前記被認証装置へ送信し、
前記認証要求に応じて前記被認証装置から送信される、前記デジタル署名を含む前記認証応答を受信し、
前記認証部は、前記認証応答に含まれる前記デジタル署名を、前記秘密鍵に対応する公開鍵及び前記被認証装置へ送信された前記チャレンジデータを用いて検証することにより、前記被認証装置を認証する、
請求項1に記載の認証装置。
【請求項8】
前記被認証装置は、前記秘密鍵に対応する前記公開鍵、及び前記公開鍵の真正性を証明する電子証明書を予め記憶しており、
前記通信部は、前記被認証装置から前記公開鍵及び前記電子証明書を受信し、
前記認証部は、前記被認証装置から受信される前記電子証明書に基づいて前記公開鍵の真正性が確認された場合に、前記公開鍵を用いて前記認証応答に含まれる前記デジタル署名を検証する、
請求項7に記載の認証装置。
【請求項9】
前記記憶部は、成功裏に認証された装置の識別子を記憶するテーブルを有し、
前記認証部は、前記認証装置に接続した前記被認証装置から前記通信部により受信される識別子が前記テーブルに存在する場合に、当該被認証装置へ認証要求を送信することなく、当該被認証装置は認証済みであると判定する、
請求項1に記載の認証装置。
【請求項10】
前記記憶部は、前記認証装置が通電されている間の時間の経過を監視するためのカウンタ値を記憶している、請求項1に記載の認証装置。
【請求項11】
前記記憶部は、不揮発性メモリである、請求項10に記載の認証装置。
【請求項12】
前記第1許可データは、前記認証要求に対して応答することを許可するか否かの判定のために使用されるN個(Nは2以上の整数)のハッシュ値を含み、
前記制限データは、前記N個のハッシュ値にそれぞれ対応するN個の元値を含み、
N個の異なる基準時間が予め設定され、
前記通信部は、前記計測部により計測される前記時間がi番目(iは1以上かつN以下の整数)の基準時間に到達した場合に、前記制限データのi番目の元値に基づいて導出される前記第2許可データのi番目の値を、前記第1許可データの対応するi番目のハッシュ値を用いた検証のために前記被認証装置へ送信する、
請求項1に記載の認証装置。
【請求項13】
前記通信部は、前記計測部により計測される前記時間が前記i番目の基準時間に到達した場合に、前記制限データの1番目からi番目までの元値に基づいてそれぞれ導出される前記第2許可データのi個の値を、前記第1許可データの対応するi個のハッシュ値を用いた検証のために前記被認証装置へ送信する、請求項12に記載の認証装置。
【請求項14】
前記被認証装置は、前記認証装置から前記認証要求と共に受信されるチャレンジデータからレスポンスデータを生成するために各々使用されるN個の第1認証鍵を予め記憶しており、
前記通信部は、
前記認証要求と共に前記チャレンジデータを前記被認証装置へ送信し、
前記認証要求に応じて前記被認証装置から送信される、i番目の第1認証鍵を用いて生成された前記レスポンスデータを含む前記認証応答を受信し、
前記認証部は、前記被認証装置へ送信された前記チャレンジデータ、及び前記i番目の第1認証鍵に対応する第2認証鍵を用いて、前記認証応答に含まれる前記レスポンスデータを検証することにより、前記被認証装置を認証する、
請求項12に記載の認証装置。
【請求項15】
請求項1~14のいずれか1項に記載の認証装置と、
シートに画像を形成する画像形成部と、
を備える画像形成装置。
【請求項16】
前記被認証装置は、前記画像形成装置へ装着される交換可能部品である、請求項15に記載の画像形成装置。
【請求項17】
前記交換可能部品は、前記交換可能部品に適した動作条件を示す制御パラメータを記憶しており、
前記画像形成装置は、
前記認証部による前記交換可能部品の認証が失敗した場合に、前記交換可能部品からの前記制御パラメータの読み出しを禁止する制御部、
をさらに備え、
前記制御部は、前記計測部により計測される前記時間が前記基準時間に到達する前は、前記認証部に前記交換可能部品の認証を行わせることなく、前記交換可能部品の前記制御パラメータの読み出しを許可する、
請求項16に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、認証装置及び画像形成装置に関する。
【背景技術】
【0002】
従来、交換可能な部品を接続した状態で利用される多くの電子機器が知られている。例えば、画像形成装置は、トナー若しくはインクを収容したカートリッジ、プロセスカートリッジ、搬送ローラ、又は定着ユニットといった、様々な交換可能部品と共に動作し得る。電子機器に設計において想定されていない交換可能部品が接続されると、電子機器の故障、動作不良、又は出力品質の低下といった不具合が生じかねない。そのため、電子機器のいくつかは、本体に接続された交換可能部品が正規の部品であるかを認証する仕組みを有する。
【0003】
特許文献1は、プリンタ(認証装置)がトナーカートリッジのような交換可能な消耗品(被認証装置)を認証するための認証方式の一例を開示している。特許文献1により開示された認証方式では、認証装置ごとに異なるパスワードを用いたパスワード認証が行われ、パスワード認証が成功した場合にのみ、チャレンジレスポンス型の本認証のセッションが開始される。よって、本認証に使用される認証鍵が悪意ある第三者により読取られるリスクが低減される。また、パスワード認証には、マスターパスワードから派生したパスワードの派生値が使用されるため、マスターパスワードは装置の外部に露出しない。正規の被認証装置は、検証用の派生値の導出のための秘密情報の全ての候補値を不揮発性メモリに記憶しているため、どの認証装置に接続されたとしても有効に動作する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-167671号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の認証方式において、マイクロプロービングのような情報解析型の攻撃に対する耐性を高めるためには、製品に搭載される秘密情報のバリエーションを増やすことが必要である。ある製品群においてM通りの秘密情報が使用されている場合に、M個の値を知得するために要する製品の個数は、所謂クーポンコレクタ問題の考え方に従って求められる。例えば、M=10である場合、統計的には、30個の製品を入手することで10通りの秘密情報の全てを知得できる可能性が高い。一方で、秘密情報のバリエーションを増やすことは、装置に組み込まれる不揮発性メモリの規模の増大をもたらし、コストを上昇させる。
【0006】
本発明は、上述した点に鑑み、コストの上昇を抑制しつつ情報解析型の攻撃に対する耐性を向上させた認証方式を提供しようとするものである。
【課題を解決するための手段】
【0007】
ある観点によれば、被認証装置を認証するための認証装置であって、前記被認証装置は、前記認証装置から受信される認証要求に対して応答することを許可するか否かの判定に使用される第1許可データを予め記憶しており、前記認証装置は、前記認証装置が通電されている時間を計測する計測部と、前記計測部により計測される前記時間が予め設定される基準時間に到達した後に読み出し可能となる制限データを記憶している記憶部と、前記被認証装置により前記第1許可データを用いて検証される第2許可データであって、前記記憶部から読み出される前記制限データに基づく当該第2許可データを、前記被認証装置へ送信する通信部と、前記被認証装置において前記第1許可データを用いた前記第2許可データの検証が成功した場合に前記被認証装置から受信される認証応答に基づいて、前記被認証装置を認証する認証部と、を備える認証装置が提供される。前記認証装置を備える画像形成装置もまた提供される。
【発明の効果】
【0008】
本発明によれば、コストの上昇を抑制しつつ情報解析型の攻撃に対する耐性を向上させた認証方式を提供することができる。
【図面の簡単な説明】
【0009】
図1】一実施形態においてプロセスカートリッジが画像形成装置へ接続されている様子を示すブロック図。
図2】第1実施例に係る認証チップの構成の一例を示すブロック図。
図3】第1実施例に係る被認証チップの構成の一例を示すブロック図。
図4】第1実施例に係る認証チップ及び被認証チップのメモリに格納されるデータを生成するためのデータ生成処理の流れの一例を示すフローチャート。
図5】第1実施例に係る認証システムにおける全体的な処理の流れの一例を示すフローチャート。
図6】第1実施例に係る認証処理の詳細な流れの一例を示すシーケンス図。
図7】第2実施例に係る認証チップの構成の一例を示すブロック図。
図8】第2実施例に係る被認証チップの構成の一例を示すブロック図。
図9】第2実施例に係る認証チップ及び被認証チップのメモリに格納されるデータを生成するためのデータ生成処理の流れの一例を示すフローチャート。
図10】第2実施例に係る認証処理の詳細な流れの一例を示すシーケンス図。
図11】第3実施例に係る認証チップの構成の一例を示すブロック図。
図12】第3実施例に係る被認証チップの構成の一例を示すブロック図。
図13】第3実施例に係る認証チップ及び被認証チップのメモリに格納されるデータを生成するためのデータ生成処理の流れの一例を示すフローチャート。
図14】第3実施例に係る認証システムにおける全体的な処理の流れの一例を示すフローチャート。
図15】第3実施例に係る認証処理の詳細な流れの一例を示すシーケンス図。
図16】第4実施例に係る認証チップの構成の一例を示すブロック図。
図17】第4実施例に係る認証処理の詳細な流れの一例を示すシーケンス図。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
<1.基本的な構成>
以下に説明する実施形態では、画像形成装置へ接続されるプロセスカートリッジを、画像形成装置に搭載される認証チップが認証するものとする。したがって、画像形成装置を認証装置、プロセスカートリッジを被認証装置、両者をまとめて認証システムと称することがある。プロセスカートリッジは、画像形成装置にとっての交換可能部品の一例である。但し、本開示に係る技術は、画像形成装置及びプロセスカートリッジの組合せには限定されず、様々な電子機器と交換可能部品との組合せに適用可能である。
【0012】
図1は、プロセスカートリッジ200が画像形成装置100へ接続されている様子を示している。画像形成装置100は、例えば、プリンタ、コピー機又は複合機であってよく、電子写真プロセスに従ってシートに画像を形成する。プロセスカートリッジ200は、電子写真プロセスに関与する交換可能部品である。例えば、ユーザは、画像形成装置100の筐体に配設されるカバー(図示せず)を開けて、画像形成装置100に対しプロセスカートリッジ200を着脱することができる。プロセスカートリッジ200は、例えば、感光体、及び当該感光体の表面にトナー像を形成するための1つ以上の部材を含む。画像形成装置100は、エンジンコントローラ101を備える。エンジンコントローラ101は、例えば、シートの搬送、トナー像の形成、シートへのトナー像の転写、及びシート上のトナー像の定着といった、シートに画像を形成するための画像形成装置100の画像形成部(図示せず)の動作全般を制御する。
【0013】
画像形成装置100に非正規のプロセスカートリッジが接続されると、装置の故障、動作不良、又は印刷品質の低下といった不具合が生じる虞がある。そこで、画像形成装置100は、装置に装着されたプロセスカートリッジが正規品であるかを認証するための仕組みを有する。この認証の仕組みに関連する構成要素として、エンジンコントローラ101は、接続インタフェース(I/F)103、センサ105、制御部107、及び認証チップ110を備える。プロセスカートリッジ200は、被認証チップ210を備える。典型的には、認証チップ110及び被認証チップ210は、耐タンパ性を有する。
【0014】
接続I/F103は、被認証チップ210へ通信可能に接続される。接続I/F103と被認証チップ210との間の接続は、電気的な接点を介する有線接続であってもよく、又はアンテナを介する無線接続であってもよい。センサ105は、画像形成装置100へプロセスカートリッジが装着されているか否かを検知するための検知部である。制御部107は、画像形成装置100の動作を統括的に制御するコントローラである。認証チップ110は、被認証チップ210から接続I/F103を介して受信される認証データに基づいて、プロセスカートリッジ200が正規品であるかを認証する機能を有する集積回路(IC)チップである。被認証チップ210は、プロセスカートリッジ200の認証データを予め記憶しているメモリを内蔵するICチップである。
【0015】
本実施形態において、被認証チップ210は、認証チップ110から受信される認証要求に対して応答することを許可するか否かの判定に使用される第1許可データを予め記憶している。一方、認証チップ110は、被認証チップ210により第1許可データを用いて検証される第2許可データの導出の基礎となる制限データを予め記憶している。被認証チップ210におけるメモリからの制限データの読み出しは、認証チップ110が通電されている時間が予め設定される基準時間に到達した後に可能とされる。画像形成装置100へプロセスカートリッジ200が装着されたことをセンサ105が検知すると、制御部107は、認証処理を開始する。その認証処理において、認証チップ110は、認証チップ110の通電時間が基準時間に到達済みである場合にのみ、メモリから制限データを読み出し、第2許可データを被認証チップ210へ送信する。そして、認証チップ110は、被認証チップ210において第1許可データを用いた第2許可データの検証が成功した場合に、チャレンジレスポンス型の認証方式に従って被認証チップ210を認証する。
【0016】
このように、認証チップ110の通電時間が基準時間(時間閾値ともいう)へ到達するまで被認証チップ210へ第2許可データを送信しないことで、攻撃者が製品を解析する際の所要時間が増大する。通電時間が基準時間へ到達する前は、認証を経ることなく、画像形成装置100によるプロセスカートリッジ200の利用が許可されてもよく、その利用が何らかの形で制限されてもよい。次節より、こうした認証方式のいくつかの実施例について詳しく説明する。
【0017】
<2.第1実施例>
<2-1.認証チップの構成例>
図2は、第1実施例に係る認証チップ110の構成の一例を示すブロック図である。図2を参照すると、認証チップ110は、内部バス111、入出力回路112、制御回路113、揮発性メモリ114、不揮発性メモリ115、暗号処理回路121、乱数生成回路122、タイマ回路123、及び鍵アクセス器124を含む。
【0018】
内部バス111は、制御回路113、揮発性メモリ114、不揮発性メモリ115、暗号処理回路121、乱数生成回路122、タイマ回路123、及び鍵アクセス器124を相互に接続する信号線である。入出力回路112は、制御部107と認証チップ110の制御回路113との間でデータを中継する通信部である。制御回路113は、被認証装置との通信を制御する。制御回路113は、例えば中央演算装置(CPU)、マイクロコントローラ又はマイクロプロセッサであってよく、制御部107から入力されるコマンドに従って様々な処理を行う。揮発性メモリ114は、例えばランダムアクセスメモリ(RAM)であってよく、演算のための一時的な記憶領域を制御回路113に提供する。不揮発性メモリ115は、例えば半導体メモリ又はハードディスクを含み得る記憶部である。
【0019】
本実施例において、不揮発性メモリ115は、制御回路113により実行される1つ以上のコンピュータプログラム116、パスワード元鍵(KPO)117、認証元鍵(KAO)118、及びタイマカウンタ(C)119を記憶する。パスワード元鍵117は、上述した制限データの一例である。後に説明するパスワードは、パスワード元鍵117に基づいて導出される。認証元鍵118は、チャレンジレスポンス認証に使用される認証鍵の導出の基礎となる鍵である。認証チップ110は認証元鍵118を記憶している一方で、後に説明するように、被認証チップ210は対応する認証鍵218を記憶している。図2において破線で示したように、パスワード元鍵117及び認証元鍵118は、不揮発性メモリ115の制限付き記憶領域115aに記憶される。制限付き記憶領域115aへのアクセス(例えば、データの読み出し)は、鍵アクセス器124を介してのみ可能とされる。
【0020】
タイマカウンタ119は、認証チップ110が通電されている間の時間の経過を監視するためのカウンタ値である。例えば、タイマカウンタ119は、初期値として上述した基準時間に等しい値を有し、認証チップ110が通電されている期間中にその値はカウントダウンされ得る。この場合、タイマカウンタ119の値がゼロになると、基準時間が経過したと判定されることになる。
【0021】
暗号処理回路121は、ハッシュ関数の演算又は共通鍵暗号方式での暗号化を含み得る暗号関連の処理を実行する演算部である。乱数生成回路122は、制御回路113から入力されるコマンドに従って、乱数値を生成する生成部である。乱数生成回路122は、例えば、チャレンジレスポンス認証のためのチャレンジデータを生成するために利用される。タイマ回路123は、認証チップ110が通電されている時間を計測する計測部である。図2には示していないものの、認証チップ110は、電力供給回路をさらに含み得る。電力供給回路は、外部電源(例えば、商用電源又はバッテリ)から認証チップ110の各部へ電力を供給する。不揮発性メモリ115は、認証チップ110が通電されていない間であっても、上述したプログラム及びデータを維持することが可能である。鍵アクセス器124は、制限付き記憶領域115aへのアクセスを制限するデバイスである。認証チップ110の通電時間が基準時間に到達する前は、鍵アクセス器124は、制限付き記憶領域115aへのアクセスを遮断する。認証チップ110の通電時間が基準時間に到達すると、鍵アクセス器124は、後述する認証部131による制限付き記憶領域115aからのデータの読み出しを可能にする。
【0022】
本実施例において、制御回路113は、暗号処理回路121、乱数生成回路122及びタイマ回路123と連携して、被認証チップ210を認証するための認証処理を行う認証部131として機能する。認証処理の流れについて、後に詳しく説明する。
【0023】
<2-2.被認証チップの構成例>
図3は、第1実施例に係る被認証チップ210の構成の一例を示すブロック図である。図3を参照すると、被認証チップ210は、内部バス211、接続I/F212、制御回路213、揮発性メモリ214、不揮発性メモリ215、暗号処理回路221、及び鍵アクセス器224を含む。
【0024】
内部バス211は、制御回路213、揮発性メモリ214、不揮発性メモリ215、暗号処理回路221、及び鍵アクセス器224を相互に接続する信号線である。接続I/F212は、認証装置へ通信可能に接続される通信部である。制御回路213は、接続I/F212を介する認証装置との通信を制御する。制御回路213は、例えばCPU、マイクロコントローラ又はマイクロプロセッサであってよい。揮発性メモリ214は、例えばRAMであってよく、演算のための一時的な記憶領域を制御回路213に提供する。不揮発性メモリ215は、例えば半導体メモリを含む記憶部である。
【0025】
本実施例において、不揮発性メモリ215は、制御回路213により実行される1つ以上のコンピュータプログラム216、パスワードハッシュ値(P')217、認証鍵(K')218、及びチップ識別子(CID)219を記憶する。パスワードハッシュ値217は、上述した第1許可データの一例である。後に説明するように、パスワードハッシュ値217は、認証チップ110から受信される認証要求に対して応答することを許可するか否かの判定に使用される。認証鍵218は、チャレンジレスポンス認証におけるレスポンスデータを生成するために使用される鍵(第1認証鍵)である。認証鍵218は、認証チップ110において認証元鍵118に基づいて導出される鍵(第2認証鍵)と共に、共通鍵暗号方式における共通鍵のペアをなす。図3において破線で示したように、認証鍵218は、不揮発性メモリ215の制限付き記憶領域215aに記憶される。制限付き記憶領域215aへのアクセス(例えば、データの読み出し)は、鍵アクセス器224を介してのみ可能とされる。チップ識別子219は、被認証チップ210に固有の識別子である。チップ識別子219は、例えば、プロセスカートリッジ200の個々の製品を一意に識別するシリアルナンバーであってもよい。チップ識別子219は、認証鍵218を予め導出する際に使用され、加えて認証処理の中で認証チップ110に第2認証鍵を導出させるために認証チップ110へ送信される。
【0026】
図3には示していないものの、不揮発性メモリ215は、プロセスカートリッジ200に適した動作条件を示す1つ以上の制御パラメータをさらに記憶していてもよい。ここでの動作条件は、例えば、プロセススピード、感光体の帯電電圧、トナーの転写電圧、及び定着温度のうちの1つ以上を含み得る画像形成条件であってもよい。こうした制御パラメータは、被認証チップ210のメモリへのアクセスが許可される場合に、不揮発性メモリ215から接続I/F103を介して制御部107により読み出され、画像形成装置の動作を制御するために使用され得る。
【0027】
暗号処理回路221は、ハッシュ関数の演算又は共通鍵暗号方式での暗号化を含み得る暗号関連の処理を実行する演算部である。鍵アクセス器224は、制限付き記憶領域215aへのアクセスを制限するデバイスである。鍵アクセス器224は、後述する検証部231によるパスワード検証が成功した場合にのみ、制限付き記憶領域215aからのデータの読み出しを可能にする。
【0028】
本実施例において、制御回路213は、検証部231及び応答部232として機能する。検証部231は、認証チップ110から接続I/F212を介して受信されるパスワード(第2許可データ)を、不揮発性メモリ215から読み出されるパスワードハッシュ値217を用いて検証する。応答部232は、認証チップ110から受信される制御コマンドに対して、チャレンジレスポンス型の認証のための応答を行う。検証部231及び応答部232により実行される処理について、後に詳しく説明する。
【0029】
なお、図2及び図3で制御回路とは別個に示した回路(例えば、乱数生成回路及び暗号処理回路)の各々は、独立した回路として実装される代わりに、制御回路により実行されるソフトウェアモジュールとして実装されてもよい。また、制御回路の機能として説明したモジュール(例えば、認証部、検証部及び応答部)の各々が制御回路とは別個の独立した回路として実装されてもよい。また、図2及び図3には、それぞれ1つの不揮発性メモリを示しているが、図示したメモリの各々は、実際には複数のメモリ回路の集合であってもよい。例えば、認証チップ110の制限付き記憶領域115aは、不揮発性メモリ115とは別個の記憶装置を用いて実装されてもよく、被認証チップ210の制限付き記憶領域215aは、不揮発性メモリ215とは別個の記憶装置を用いて実装されてもよい。
【0030】
<2-3.認証用のデータの生成とメモリへの格納>
画像形成装置100及びプロセスカートリッジ200の製造者は、プロセスカートリッジ200の認証のために使用される上述したデータを製造段階で生成し、認証チップ110及び被認証チップ210のメモリに格納する。本項では、そうした製造段階の処理について説明する。
【0031】
図4は、認証チップ110の不揮発性メモリ115及び被認証チップ210の不揮発性メモリ215に格納されるデータを生成するためのデータ生成処理の流れの一例を示すフローチャートである。図4のデータ生成処理は、例えば工場において、画像形成装置100及びプロセスカートリッジ200とは異なる装置(例えば、汎用コンピュータ)を用いて実行されてよい。なお、以下の説明では、処理ステップを'S'と略記する。
【0032】
図4を参照すると、まず、S10で、認証元鍵KAOが生成される。次いで、S12で、パスワード元鍵KPOが生成される。認証元鍵KAO及びパスワード元鍵KPOは、共に所定の長さを有する乱数値であってよい。次いで、S14で、カウントダウンタイマの初期値、即ち基準時間が決定される。基準時間は、例えば、数秒、数分又は数時間など、情報解析を遅延させるために適した任意の値であってよい。次いで、S16で、認証チップ110の不揮発性メモリ115の制限付き記憶領域115aに、認証元鍵KAO及びパスワード元鍵KPOが格納される。次いで、S18で、認証チップ110のタイマカウンタ119の値Cが、S14で決定された初期値へ設定される。
【0033】
次いで、S20で、被認証チップ210に固有の識別子(チップ識別子)CIDが生成される。チップ識別子CIDは、所定の長さを有する乱数値であってよい。次いで、S22で、チップ識別子CID及び認証元鍵KAOに基づいて、認証鍵K'が導出される。例えば、認証鍵K'は、次の式(1)のように、チップ識別子CIDと認証元鍵KAOとを連結することにより生成した入力データ(ペイロードともいう)をハッシュ関数へ入力することにより生成されてもよい:

' = MSB(h1(CID||KAO)) (1)

ここで、演算子||は、当該演算子の前後の値を連結する演算を表す。関数h1は、一方向性の暗号学的ハッシュ関数である。暗号学的ハッシュ関数の一例として、NIST(National Institute of Standards and Technology)によりFIPS PUB 180-4として定義されたSHA256を利用することができる。関数MSBは、上位Lビットを切り出す(残りのビットを切り捨てる)関数であり、例えばL=128であってよい。式(1)が採用される場合、チップ識別子CID及び認証元鍵KAOから決定論的に認証鍵K'を導出することができ、一方で認証鍵K'から認証元鍵KAOを推測することは困難である。
【0034】
代替的に、認証鍵K'は、次の式(2)のように、認証元鍵KAOを共通鍵として用いてチップ識別子CIDを暗号化することにより生成されてもよい:

' = Enc(KAO,CID||c)) (2)

ここで、Encは、共通鍵暗号方式Xでの暗号化処理を表す関数である。例えば、共通鍵暗号方式Xとして、NISTによりFIPS PUB 197として定義されたブロック暗号の一種であるAES(Advanced Encryption Standard)を利用することができ、ブロック長は例えば128ビットであってよい。関数Encの1番目の引数が共通鍵、2番目の引数が暗号化の対象(平文ともいう)である。式(2)の例では、関数Encの2番目の引数のサイズをブロック長に合わせるために、チップ識別子CIDに所定のビット列cが連結される。式(2)が採用される場合にも、チップ識別子CID及び認証元鍵KAOから決定論的に認証鍵K'を導出することができ、一方で、認証鍵K'から認証元鍵KAOを推測することは困難である。
【0035】
次いで、S24で、パスワードハッシュ値P'が生成される。本実施例において、パスワードハッシュ値P'の生成は、パスワード元鍵KPOからパスワードPWを導出し、導出したパスワードPWからさらにそのハッシュ値P'を導出することにより行われ得る。パスワードPWは、上述した式(1)の引数の認証元鍵KAOをパスワード元鍵KPOに置き換えた次の式(3)に従って導出されてもよい:

PW = MSB(h1(CID||KPO)) (3)
【0036】
代替的に、パスワードPWは、上述した式(2)の引数の認証元鍵KAOをパスワード元鍵KPOに置き換えた次の式(4)に従って導出されてもよい:

PW = Enc(KPO,CID||c)) (4)
【0037】
パスワードハッシュ値P'もまた、例えば、次の式(5)に従って一方向性の暗号学的ハッシュ関数を用いて導出され、又は次の式(6)に従って共通鍵暗号方式Xを用いて導出され得る:

' = MSB(h1(PW)) (5)
' = Enc(PW,c')) (6)

なお、式(6)の関数Encの2番目の引数c'は、ブロック長に等しい長さを有する、予め決定される固定的なビット列であってよい。
【0038】
次いで、S26で、被認証チップ210の不揮発性メモリ215に、パスワードハッシュ値P'、認証鍵K'及びチップ識別子CIDが格納される。認証鍵K'は、制限付き記憶領域215aに格納される。
【0039】
なお、複数のプロセスカートリッジが製造される場合には、S20~S26が複数回反復される。それら反復において、チップ識別子CIDは製造される固体ごとに相違する。また、複数の画像形成装置が製造される場合には、S10~S26が複数回反復されてよい。そして、図4のデータ生成処理は終了する。
【0040】
<2-4.カートリッジの認証>
図5は、本実施例に係る認証システムにおける全体的な処理の流れの一例を示すフローチャートである。
【0041】
図5に示した処理は、例えば、センサ105が画像形成装置100へのプロセスカートリッジ200の装着を検知したことをトリガとして、制御部107が認証チップ110へ認証開始を指示する制御コマンドを送信することで開始され得る。なお、認証開始のトリガは、プロセスカートリッジ200の装着の検知ではなく、例えば、画像形成装置100のユーザインタフェースを介して認証開始を求めるユーザ操作が検知されたことであってもよい。
【0042】
図5を参照すると、まず、S101で、認証チップ110の認証部131は、タイマ回路123を用いて、予め決定される監視周期が経過するまで待機する。1回の監視周期が経過すると、S103で、認証部131は、タイマカウンタの値Cから、監視周期の長さの時間を減算する(即ち、カウントダウンを行う)。次いで、S105で、認証部131は、タイマカウンタの値Cがゼロ以下となったか、即ち、認証チップ110の通電時間が(Cの初期値により表される)基準時間に到達したかを判定する。認証チップ110の通電時間が基準時間に到達した場合、S110の認証処理が実行される。一方、認証チップ110の通電時間が基準時間に到達していない場合、S110の認証処理はスキップされる。
【0043】
図6は、図5のS110において実行される認証処理の詳細な流れの一例を示すシーケンス図である。認証処理には、主に画像形成装置100の認証チップ110及びプロセスカートリッジ200の被認証チップ210が関与する。認証チップ110と被認証チップ210との間の通信経路にはエンジンコントローラ101の接続I/F103が介在するが、図6では接続I/F103は省略されている。
【0044】
まず、S111で、認証部131は、被認証チップ210へ認証開始指示を送信する。認証開始指示は、チップ識別子CIDの読み出しを求める要求を含んでもよい。代替的に、チップ識別子CIDの読み出しを求める信号が、認証開始指示とは別個に送信されてもよい。S113で、被認証チップ210の応答部232は、認証部131からの要求に応じて、不揮発性メモリ215からチップ識別子CIDを読み出して認証チップ110へ送信する。認証チップ110の入出力回路112は、被認証チップ210から送信されたチップ識別子CIDを受信する。
【0045】
次いで、S115で、認証部131は、鍵アクセス器124を介して、不揮発性メモリ115の制限付き記憶領域115aからパスワード元鍵KPOを読み出す。鍵アクセス器124は、通電時間が基準時間に到達済みである場合には、制限付き記憶領域115aへのアクセスを許可する。次いで、S117で、認証部131は、読み出したパスワード元鍵KPO及び受信したチップ識別子CIDに基づいて、パスワードPWを導出する。パスワードPWは、例えば、暗号処理回路121を用いて、上述した式(3)又は式(4)に従って導出され得る。次いで、S119で、認証部131は、乱数生成回路122に、チャレンジデータとしての乱数値DCHを生成させる。
【0046】
次いで、S121で、認証部131は、S117で導出したパスワードPW及びS119で生成したチャレンジデータDCHを含む認証要求を、入出力回路112を介して被認証チップ210へ送信する。ここで送信されるパスワードPWは、制限データとしてのパスワード元鍵KPOに基づく第2許可データとしての役割を有する。被認証チップ210の接続I/F212は、認証チップ110から送信された認証要求を受信する。
【0047】
被認証チップ210の検証部231は、認証チップ110から受信した認証要求に対して応答することを許可するか否かを、パスワードPWの正当性を検証することにより判定する。具体的には、S123で、検証部231は、認証要求と共に受信したパスワードPWに基づいて、検証用ハッシュ値Pを導出する。検証用ハッシュ値Pは、パスワードハッシュ値P'と同様に、上述した式(5)又は式(6)に従って導出され得る。次いで、S125で、検証部231は、導出した検証用ハッシュ値Pを不揮発性メモリ215から読み出されるパスワードハッシュ値P'と比較することにより、パスワードPWの正当性を検証する。ここでのパスワードハッシュ値P'は、第2許可データの検証に使用される第1許可データとしての役割を有する。2つのハッシュ値が互いに一致する場合、パスワード検証は成功したと判定され、鍵アクセス器224を介する制限付き記憶領域215aへのアクセスが可能となる。S125で2つのハッシュ値が一致しない場合、パスワード検証は失敗したと判定され、制限付き記憶領域215aへのアクセスは許可されない。
【0048】
パスワード検証が成功した場合、S127で、被認証チップ210の応答部232は、鍵アクセス器224を介して制限付き記憶領域215aから認証鍵K'を読み出す。次いで、S129で、応答部232は、暗号処理回路221に、認証チップ110から受信したチャレンジデータDCHと認証鍵K'とに基づいて、レスポンスデータDRSを生成させる。例えば、レスポンスデータDRSは、次の式(7)のように、認証鍵K'とチャレンジデータDCHとを連結することにより生成した入力データをハッシュ関数へ入力することにより生成されてもよい:

RS = MSB(h1(K'||DCH)) (7)

上述したように、関数h1は一方向性の暗号学的ハッシュ関数であってよく、関数MSBは引数の上位Lビットを切り出す関数であってよい。代替的に、レスポンスデータDRSは、次の式(8)のように、認証鍵K'を共通鍵として用いてチャレンジデータDCHを暗号化することにより生成されてもよい:

RS = Enc(K',DCH) (8)

上述したように、Encは、共通鍵暗号方式Xでの暗号化処理を表す関数である。例えば、共通鍵暗号方式Xとして、ブロック長128ビットのAES(NIST FIPS PUB 197)が利用されてもよい。代替的に、レスポンスデータDRSは、次の式(9)のように、認証鍵K'を共通鍵として用いてチャレンジデータDCHのメッセージ認証コード(MAC)を導出することにより生成されてもよい:

RS = MAC(K',DCH) (9)

ここで、MACは、メッセージ認証コードを生成するための暗号化処理を表す関数である。例えば、メッセージ認証コードの生成方式Yとして、NIST FIPS PUB 198-1規格で定義されたハッシュベースのMAC(HMAC)、又はNIST SP 800-38Bで定義されたサイファベースのMAC(CMAC)が利用されてもよい。
【0049】
そして、S137で、応答部232は、認証要求に対する応答として、レスポンスデータDRSを認証チップ110へ返送する。なお、S125でのパスワード検証が失敗した場合、応答部232は、認証鍵K'の読み出しを行うことなく、エラー応答を認証チップ110へ返送する。図6には、認証鍵K'の読み出しがスキップされる処理経路が破線で示されている。
【0050】
一方、S121で認証要求を送信した認証チップ110の認証部131は、S131で、鍵アクセス器124を介して制限付き記憶領域115aから認証元鍵KAOを読み出す。次いで、S133で、認証部131は、暗号処理回路121に、被認証チップ210から受信したチップ識別子CID及び読み出した認証元鍵KAOに基づいて認証鍵Kを導出させる。認証鍵Kは、認証鍵K'と同様に、上述した式(1)又は式(2)に従って導出され得る。式(1)が使用される場合、認証鍵K'(第1認証鍵)及び認証鍵K(第2認証鍵)は共に、共通的な認証元鍵KAO及びチップ識別子CIDに基づく入力データを暗号学的ハッシュ関数へ入力することにより導出されることになる。式(2)が使用される場合、認証鍵K'(第1認証鍵)及び認証鍵K(第2認証鍵)は共に、共通的な認証元鍵KAOを暗号鍵として用いてチップ識別子CIDを暗号化することにより導出されることになる。次いで、S135で、認証部131は、被認証チップ210へ送信したチャレンジデータDCH及びS133で生成した認証鍵Kに基づいて、検証用データDVFを生成する。検証用データDVFは、レスポンスデータDRSと同様に、上述した式(7)、式(8)又は式(9)に従って生成され得る。
【0051】
S137で、認証チップ110の入出力回路112は、被認証チップ210から送信された認証応答を受信する。被認証チップ210においてパスワード検証が成功した場合には、認証応答は、レスポンスデータDRSを含む。被認証チップ210においてパスワード検証が失敗した場合には、認証応答は、エラー応答である。認証部131は、この認証応答に基づいて、被認証チップ210を認証する。
【0052】
具体的には、S139で、認証部131は、認証応答に含まれるレスポンスデータDRSがS135で生成した検証用データDVFに一致しているかを判定することにより、レスポンスデータDRSの正当性を検証する。レスポンスデータDRSが検証用データDVFに一致している場合には、認証部131は、プロセスカートリッジ200の認証は成功であると判定する。レスポンスデータDRSが検証用データDVFに一致していない場合、又は認証応答がエラー応答であった場合には、認証部131は、プロセスカートリッジ200の認証は失敗であると判定する。認証部131は、S139で判定した認証の結果を制御部107へ報告する。
【0053】
図5へ戻ると、その後の処理は、S151で、プロセスカートリッジ200(被認証チップ210)の認証が成功したか又は失敗したかに依存して分岐する。認証が成功した場合、プロセスカートリッジ200のメモリへのアクセスは許可される。この場合、S153で、制御部107は、プロセスカートリッジ200のメモリへのアクセスを実行する。例えば、制御部107は、不揮発性メモリ215から上述した動作条件を示す制御パラメータを読み出して、読み出した制御パラメータに従って画像形成部の動作を制御してもよい。S105で認証チップ110の通電時間が基準時間に未到達であると判定された場合にも、プロセスカートリッジ200のメモリへのアクセスは許可される。
【0054】
プロセスカートリッジ200(被認証チップ210)の認証が失敗した場合、プロセスカートリッジ200のメモリへのアクセス(例えば、上述した動作条件を示す制御パラメータの読み出し)は禁止される。この場合、S155で、制御部107は、プロセスカートリッジ200が正規品ではないことをユーザへ警告し得る。ここでの警告は、例えば、画像形成装置100ディスプレイへの警告メッセージの表示、警告灯の点灯、又は警報音の出力など、任意の手法で行われてよい。
【0055】
なお、説明の全体を通じて、フローチャート及びシーケンス図に示した処理ステップは、図示した順序とは異なる順序で行われてもよい。例えば、図6の認証処理における認証チップ110による検証用データDVFの生成は、被認証チップ210への認証要求の送信の前又は被認証チップ210からの認証応答の受信の後など、任意のタイミングで行われてよい。
【0056】
<2-5.第1実施例のまとめ>
上述した第1実施例では、被認証装置(被認証チップ)は、認証装置(認証チップ)から受信される認証要求に対して応答することを許可するか否かの判定に使用される第1許可データ(パスワードハッシュ値)を予め記憶している。そして、被認証装置は、認証装置から正当な第2許可データ(パスワード)が受信されるまで、内部のメモリに記憶されている本認証に使用される認証データ(認証鍵)にアクセスしない。一方、認証装置は、第2許可データの導出の基礎となる制限データ(パスワード元鍵)をメモリに予め記憶しているが、当該メモリからの制限データの読み出しは、認証装置が通電されている時間が予め設定される基準時間に到達した後に可能とされる。そのため、仮に攻撃者が被認証装置を動作させながらマイクロプロービングのような半導体動作解析を試みたとしても、基準時間が経過するまでは、許可データ及び認証データを探知することができない。このように、情報解析型の攻撃に対して有意な情報が露出するタイミングを遅延させることで、現実的な時間の制約の中で攻撃が成功する確率を引き下げ、攻撃に対する耐性を高めることができる。また、こうした遅延は秘密情報のバリエーションに依拠しないため、不揮発性メモリの規模の増大に起因するコストの上昇を回避することができる。
【0057】
また、上述した第1実施例では、被認証装置は、当該装置に固有の識別子(チップ識別子)を予め記憶している。認証装置の認証部は、基準時間が経過した後にメモリから読み出される制限データ及び被認証装置から受信される上記識別子に基づいて、第2許可データを導出する。よって、認証装置から被認証装置へ送信される第2許可データは被認証装置ごとに相違することになるため、ある被認証装置を用いて知得される第2許可データを他の被認証装置のために再利用するような不正を防止することができる。また、第2許可データは一方向性の暗号学的ハッシュ関数を用いて導出されるため、第2許可データの変化を手掛かりにして制限データを推測することも不可能である。
【0058】
また、上述した第1実施例では、被認証装置は、認証装置から認証要求と共に受信されるチャレンジデータからレスポンスデータを生成するために使用される第1認証鍵であって、被認証装置の識別子に基づいて予め導出された当該第1認証鍵を記憶している。認証装置の認証部は、被認証装置の上記識別子に基づいて第2認証鍵を導出し、導出した第2認証鍵を用いて被認証装置からのレスポンスデータを検証することにより、被認証装置を認証する。このように、共通鍵のペアをなす第1認証鍵及び第2認証鍵を被認証装置ごとに相違させてチャレンジレスポンス認証に使用することで、仮にいずれかの認証鍵が漏洩したとしてもその認証鍵を他の装置において再利用することは無意味となる。
【0059】
また、上述した第1実施例では、認証装置の通電時間が基準時間に到達する前は、被認証装置の認証が行われることなく、被認証装置のメモリへのアクセス(例えば、制御パラメータの読み出し)は許可される。したがって、認証のタイミングが遅延されるとしても、ユーザは、被認証装置を搭載した正規の交換可能部品を、その部品を入手した当初から通常通り使用することができる。
【0060】
なお、本明細書において、第1の要素が第2の要素に「基づく」及び第2の要素が第1の要素の「基礎となる」という表現が使用されているが、これら表現は、第1の要素が第2の要素に等しい態様を除外するものではない。例えば、「制限データに基づく第2許可データを送信する」との表現は、制限データをそのまま第2許可データとして送信する態様をも含むことを意図される。
【0061】
<3.第2実施例>
<3-1.認証チップの構成例>
前節で説明した第1実施例は、共通鍵暗号方式に基づくチャレンジレスポンス認証を使用して実装され得るのに対し、本節で説明する第2実施例は、公開鍵暗号方式に基づくチャレンジレスポンス認証を使用して実装され得る。
【0062】
図7は、第2実施例に係る認証チップ110の構成の一例を示すブロック図である。図7を参照すると、認証チップ110は、内部バス111、入出力回路112、制御回路313、揮発性メモリ114、不揮発性メモリ315、暗号処理回路321、乱数生成回路122、タイマ回路123、及び鍵アクセス器124を含む。
【0063】
制御回路313は、被認証装置との通信を制御する。制御回路313は、例えばCPU、マイクロコントローラ又はマイクロプロセッサであってよく、制御部107から入力されるコマンドに従って様々な処理を行う。不揮発性メモリ315は、例えば半導体メモリ又はハードディスクを含み得る記憶部である。
【0064】
本実施例において、不揮発性メモリ315は、1つ以上のコンピュータプログラム316、パスワード元鍵(KPO)117、証明書検証鍵(KCV)318、及びタイマカウンタ(C)119を記憶する。証明書検証鍵318は、被認証チップ210から受信される後述するチップ検証鍵Kの真正性の検証に使用される公開鍵である。図7において破線で示したように、パスワード元鍵117及び証明書検証鍵318は、不揮発性メモリ315の制限付き記憶領域315aに記憶される。制限付き記憶領域315aへのアクセス(例えば、データの読み出し)は、鍵アクセス器124を介してのみ可能とされる。認証チップ110の通電時間が基準時間に到達する前は、鍵アクセス器124は、制限付き記憶領域315aへのアクセスを遮断する。認証チップ110の通電時間が基準時間に到達すると、鍵アクセス器124は、後述する認証部331による制限付き記憶領域315aからのデータの読み出しを可能にする。
【0065】
暗号処理回路321は、ハッシュ関数の演算、共通鍵暗号方式での暗号化、デジタル署名の検証、及び証明書の検証を含み得る暗号関連の処理を実行する演算部である。図7には示していないものの、認証チップ110は、電力供給回路をさらに含み得る。電力供給回路は、外部電源から認証チップ110の各部へ電力を供給する。不揮発性メモリ315は、認証チップ110が通電されていない間であっても、上述したプログラム及びデータを維持することが可能である。
【0066】
本実施例において、制御回路313は、暗号処理回路321、乱数生成回路122及びタイマ回路123と連携して、被認証チップ210を認証するための認証処理を行う認証部331として機能する。認証処理の流れについて、後に詳しく説明する。
【0067】
<3-2.被認証チップの構成例>
図8は、第2実施例に係る被認証チップ210の構成の一例を示すブロック図である。図8を参照すると、被認証チップ210は、内部バス211、接続I/F212、制御回路413、揮発性メモリ214、不揮発性メモリ415、暗号処理回路421、及び鍵アクセス器224を含む。
【0068】
制御回路413は、接続I/F212を介する認証装置との通信を制御する。制御回路413は、例えばCPU、マイクロコントローラ又はマイクロプロセッサであってよい。不揮発性メモリ415は、例えば半導体メモリを含む記憶部である。
【0069】
本実施例において、不揮発性メモリ415は、1つ以上のコンピュータプログラム416、パスワードハッシュ値(P')217、チップ識別子(CID)219、署名鍵(K)417、チップ検証鍵(K)418、及びチップ証明書(C)419を記憶する。署名鍵417は、認証チップ110から認証要求と共に受信されるチャレンジデータのデジタル署名を生成するために使用される、公開鍵暗号方式の秘密鍵である。チップ検証鍵418は、署名鍵417に対応する公開鍵である。チップ証明書419は、チップ検証鍵418の真正性を証明する電子証明書である。図8において破線で示したように、署名鍵417は、不揮発性メモリ415の制限付き記憶領域415aに記憶される。制限付き記憶領域415aへのアクセス(例えば、データの読み出し)は、鍵アクセス器224を介してのみ可能とされる。鍵アクセス器224は、後述する検証部231によるパスワード検証が成功した場合にのみ、制限付き記憶領域415aからのデータの読み出しを可能にする。
【0070】
暗号処理回路421は、ハッシュ関数の演算、共通鍵暗号方式での暗号化、及びデジタル署名の生成を含み得る暗号関連の処理を実行する演算部である。
【0071】
本実施例において、制御回路413は、検証部231及び応答部432として機能する。応答部432は、認証チップ110から受信される制御コマンドに対して、チャレンジレスポンス型の認証のための応答を行う。応答部432により実行される処理について、後に詳しく説明する。
【0072】
なお、図7及び図8で制御回路とは別個に示した回路の各々は、独立した回路として実装される代わりに、制御回路により実行されるソフトウェアモジュールとして実装されてもよい。また、制御回路の機能として説明したモジュールの各々が制御回路とは別個の独立した回路として実装されてもよい。また、図7及び図8には、それぞれ1つの不揮発性メモリを示しているが、図示したメモリの各々は、実際には複数のメモリ回路の集合であってもよい。
【0073】
<3-3.認証用のデータの生成とメモリへの格納>
図9は、認証チップ110の不揮発性メモリ315及び被認証チップ210の不揮発性メモリ415に格納されるデータを生成するためのデータ生成処理の流れの一例を示すフローチャートである。図9のデータ生成処理は、例えば工場において、画像形成装置100及びプロセスカートリッジ200とは異なる装置を用いて実行されてよい。
【0074】
図9を参照すると、まず、S30で、チップ検証鍵K及び対応する署名鍵Kの鍵ペアが生成される。次いで、S31で、証明書検証鍵KCV及び対応する証明書署名鍵KCSの鍵ペアが生成される。次いで、S32で、パスワード元鍵KPOが生成される。次いで、S34で、カウントダウンタイマの初期値、即ち基準時間が決定される。次いで、S36で、認証チップ110の不揮発性メモリ315の制限付き記憶領域315aに、パスワード元鍵KPO及び証明書検証鍵KCVが格納される。次いで、S38で、認証チップ110のタイマカウンタ119の値Cが、S34で決定された初期値へ設定される。
【0075】
次いで、S40で、被認証チップ210に固有の識別子(チップ識別子)CIDが生成される。次いで、S42で、証明書署名鍵KCSを用いて、チップ識別子CID及びチップ検証鍵Kを連結した入力データの真正性を証明するチップ証明書Cが生成される。チップ証明書Cのデジタル署名値σCVは、例えば、次の式(10)に従って生成され得る:

σCV=Sign(KCS,CID||K) (10)

式(10)の関数Signは、デジタル署名アルゴリズムを表す。ここで利用されるデジタル署名アルゴリズムは、例えば、NISTによりFIPS PUB 186-4として定義されたアルゴリズムであってよい。関数Signの1番目の引数は秘密鍵としての証明書署名鍵KCSであり、2番目の引数はチップ識別子CID及びチップ検証鍵Kの連結である。
【0076】
次いで、S44で、第1実施例におけるS24と同様に、パスワード元鍵KPOに基づいてパスワードハッシュ値P'が生成される。次いで、S46で、被認証チップ210の不揮発性メモリ415に、パスワードハッシュ値P'、チップ識別子CID、チップ検証鍵K、チップ証明書C、及び署名鍵Kが格納される。署名鍵Kは、制限付き記憶領域415aに格納される。
【0077】
なお、複数のプロセスカートリッジが製造される場合には、S40~S46が複数回反復される。それら反復において、チップ識別子CIDは製造される固体ごとに相違する。また、複数の画像形成装置が製造される場合には、S30~S46が複数回反復されてよい。そして、図9のデータ生成処理は終了する。
【0078】
<3-4.カートリッジの認証>
本実施例に係る認証システムにおける全体的な処理の流れは、図5を用いて説明した第1実施例における流れと同様であってよい。図10は、図5のS110において実行される認証処理の詳細な流れの一例を示すシーケンス図である。認証処理には、主に画像形成装置100の認証チップ110及びプロセスカートリッジ200の被認証チップ210が関与する。認証チップ110と被認証チップ210との間の通信経路にはエンジンコントローラ101の接続I/F103が介在するが、図10では接続I/F103は省略されている。
【0079】
まず、S311で、認証チップ110の認証部331は、被認証チップ210へ認証開始指示を送信する。認証開始指示は、チップ識別子CIDの読み出しを求める要求を含んでもよい。代替的に、チップ識別子CIDの読み出しを求める信号が、認証開始指示とは別個に送信されてもよい。S313で、被認証チップ210の応答部432は、認証部331からの要求に応じて、不揮発性メモリ415からチップ識別子CID、チップ検証鍵K及びチップ証明書Cを読み出して、読み出したデータを認証チップ110へ送信する。認証チップ110の入出力回路112は、被認証チップ210から送信されたデータを受信する。
【0080】
次いで、S314で、認証部331は、鍵アクセス器124を介して、不揮発性メモリ315の制限付き記憶領域315aから証明書検証鍵KCVを読み出す。次いで、S315で、認証部331は、被認証チップ210から受信したチップ証明書Cに基づいて、チップ検証鍵K(及びチップ識別子CID)の真正性を検証する。例えば、ここでの真正性の検証は、次の式(11)のように表現され得る:

res=Verify(KCV,CID||K,C) (11)

式(11)の関数Verifyは、式(10)で利用したデジタル署名アルゴリズムに対応するデジタル署名検証アルゴリズムを表す。関数Verifyの1番目の引数は証明書署名鍵KCSに対応する公開鍵である証明書検証鍵KCV、2番目の引数はチップ識別子CID及びチップ検証鍵Kの連結、3番目の引数はチップ証明書C(に含まれる署名値)である。関数Verifyの出力resは、署名検証結果、即ち検証が成功したか又は失敗したかを、論理値("真"又は"偽")で示す。S315でチップ検証鍵Kの真正性が確認された場合、チップ検証鍵Kは、その後の本認証において、認証応答に含まれるデジタル署名を検証するために使用される。チップ検証鍵K及びチップ識別子CIDの真正性が確認されない場合、図中に破線で示したように、その後のパスワード認証及び本認証はスキップされる。
【0081】
ここでは、チップ検証鍵K及びチップ識別子CIDの真正性が確認されたものとする。S316で、認証部331は、鍵アクセス器124を介して、不揮発性メモリ315の制限付き記憶領域315aからパスワード元鍵KPOを読み出す。鍵アクセス器124は、通電時間が基準時間に到達済みである場合には、制限付き記憶領域315aへのアクセスを許可する。次いで、S317で、認証部331は、パスワード元鍵KPO及びチップ識別子CIDに基づいて、パスワードPWを導出する。パスワードPWは、例えば、暗号処理回路321を用いて、上述した式(3)又は式(4)に従って導出され得る。次いで、S319で、認証部331は、乱数生成回路122に、チャレンジデータとしての乱数値DCHを生成させる。
【0082】
次いで、S321で、認証部331は、S317で導出したパスワードPW及びS319で生成したチャレンジデータDCHを含む認証要求を、入出力回路112を介して被認証チップ210へ送信する。被認証チップ210の接続I/F212は、認証チップ110から送信された認証要求を受信する。
【0083】
S323及びS325で、被認証チップ210の検証部231は、認証チップ110から受信した認証要求に対して応答することを許可するか否かを、パスワードPWの正当性を検証することにより判定する。S323及びS325は、図6のS123及びS125と同じ処理ステップであってよいため、ここでは説明を省略する。
【0084】
パスワード検証が成功した場合、S327で、被認証チップ210の応答部432は、鍵アクセス器224を介して制限付き記憶領域415aから署名鍵Kを読み出す。次いで、S329で、応答部432は、暗号処理回路421に、認証チップ110から受信したチャレンジデータDCHと署名鍵Kとに基づいて、レスポンスデータσを生成させる。例えば、レスポンスデータσは、次の式(12)に従って生成されるデジタル署名値であってよい:

σ=Sign(K,DCH) (12)

式(12)の関数Signは、式(10)と同じデジタル署名アルゴリズムを表す。但し、ここで式(10)とは異なるデジタル署名アルゴリズムが使用されてもよい。関数Signの1番目の引数は秘密鍵としての署名鍵Kであり、2番目の引数はチャレンジデータDCHである。
【0085】
そして、S337で、応答部432は、認証要求に対する応答として、レスポンスデータσを認証チップ110へ返送する。なお、S325でのパスワード検証が失敗した場合、応答部432は、署名鍵Kの読み出しを行うことなく、エラー応答を認証チップ110へ返送する。図10には、署名鍵Kの読み出しがスキップされる処理経路が破線で示されている。
【0086】
認証チップ110の入出力回路112は、被認証チップ210から送信された認証応答を受信する。被認証チップ210においてパスワード検証が成功した場合には、認証応答は、レスポンスデータ(デジタル署名値)σを含む。被認証チップ210においてパスワード検証が失敗した場合には、認証応答は、エラー応答である。認証部331は、この認証応答に基づいて、被認証チップ210を認証する。
【0087】
具体的には、S339で、認証部331は、認証応答に含まれる署名値σを、チップ検証鍵KとチャレンジデータDCHとを用いて検証することにより、被認証チップ210を認証する。例えば、ここでの署名値σの検証は、次の式(13)のように表現され得る:

res=Verify(K,DCH,σ) (13)

式(13)の関数Verifyは、式(12)で利用したデジタル署名アルゴリズムに対応するデジタル署名検証アルゴリズムを表す。関数Verifyの1番目の引数は署名鍵Kに対応する公開鍵であるチップ検証鍵K、2番目の引数はチャレンジデータDCH、3番目の引数は検証の対象である署名値σである。関数Verifyの出力resは、署名検証結果、即ち検証が成功したか又は失敗したかを、論理値("真"又は"偽")で示す。認証応答と共に受信されるデジタル署名値σが正当であれば、公開鍵暗号の仕組みによって、署名検証結果resは"真"を示す。デジタル署名値σが不正であれば、署名検証結果resは"偽"を示す。
【0088】
署名検証結果resが"真"を示す場合、認証部331は、プロセスカートリッジ200の認証は成功であると判定する。署名検証結果resが"偽"を示す場合、又は認証応答がエラー応答であった場合には、認証部331は、プロセスカートリッジ200の認証は失敗であると判定する。認証部331は、S339で判定した認証の結果を制御部107へ報告する。
【0089】
なお、式(12)の署名関数Sign及び式(13)の署名検証関数Verifyにおけるメッセージ入力(2番目の引数)は、必ずしもチャレンジデータDCHでなくてもよい。メッセージ入力は、認証装置及び被認証装置の双方にとって既知の他のデータ(例えば、チップ識別子CID)とチャレンジデータDCHとの連結であってもよい。代替的に、チップ識別子CIDが、チャレンジデータとして署名関数Sign及び署名検証関数Verifyへ入力されてもよい。この場合には、同じ被認証チップ210から送信されるレスポンスデータは常に同じ値となるものの、許可データ及び認証データが露出するタイミングを遅延させることによるセキュリティ向上の効果は依然として達成され得る。
【0090】
<3-5.第2実施例のまとめ>
上述した第2実施例においても、被認証装置(被認証チップ)は、認証装置(認証チップ)から受信される認証要求に対して応答することを許可するか否かの判定に使用される第1許可データ(パスワードハッシュ値)を予め記憶している。そして、被認証装置は、認証装置から正当な第2許可データ(パスワード)が受信されるまで、内部のメモリに記憶されている本認証に使用される認証データ(署名鍵)にアクセスしない。一方、認証装置は、第2許可データの導出の基礎となる制限データ(パスワード元鍵)をメモリに予め記憶しているが、当該メモリからの制限データの読み出しは、認証装置が通電されている時間が予め設定される基準時間に到達した後に可能とされる。そのため、仮に攻撃者が被認証装置を動作させながらマイクロプロービングのような半導体動作解析を試みたとしても、基準時間が経過するまでは、許可データ及び認証データを探知することができない。このように、情報解析型の攻撃に対して有意な情報が露出するタイミングを遅延させることで、現実的な時間の制約の中で攻撃が成功する確率を引き下げ、攻撃に対する耐性を高めることができる。また、こうした遅延は秘密情報のバリエーションに依拠しないため、不揮発性メモリの規模の増大に起因するコストの上昇を回避することができる。
【0091】
また、上述した第2実施例では、被認証装置は、認証装置から受信されるチャレンジデータのデジタル署名を生成するために使用される公開鍵暗号方式の秘密鍵(署名鍵)を予め記憶している。認証装置の認証部は、認証要求に応じて被認証装置からレスポンスデータとして受信されるデジタル署名を、上記秘密鍵に対応する公開鍵(チップ検証鍵)と上記チャレンジデータとを用いて検証することにより、被認証装置を認証する。したがって、セキュアな公開鍵暗号方式のアルゴリズムを用いた上記デジタル署名の検証を通じて、被認証装置を認証することができる。仮に公開鍵が漏洩したとしても、秘密鍵が漏洩しなければ、攻撃者が準備した被認証装置は、正規な被認証装置になりすますことができない。
【0092】
また、上述した第2実施例では、認証装置の認証部は、被認証装置から受信される電子証明書(チップ証明書)に基づいて上記公開鍵の真正性が確認された場合にのみ、認証応答に含まれる上記デジタル署名を検証する。したがって、攻撃者が準備した被認証装置が不正な認証のために独自の公開鍵を認証装置へ提供したとしても、認証装置がその公開鍵を誤って使用することを防止することができる。
【0093】
なお、本明細書において、「公開鍵」との表現は、単に公開鍵暗号方式において秘密鍵とペアをなす鍵であることを意味するのであって、その鍵が任意の第三者によりアクセス可能な形で公開されることを意味しない。即ち、公開鍵は実際には秘匿されてもよく、公開鍵へのアクセスが様々な態様で制限されてもよい。
【0094】
<4.第3実施例>
<4-1.認証チップの構成例>
上述した第1実施例では、認証装置と被認証装置の1つのペアについて、共通鍵又はパスワードの導出の基礎となる元鍵が1種類だけ用意され得るのに対し、本節で説明する第3実施例では、複数の種類の元鍵が予め用意される。そして、時間の経過につれて認証に使用される元鍵が切替えられ得る。
【0095】
図11は、第3実施例に係る認証チップ110の構成の一例を示すブロック図である。図11を参照すると、認証チップ110は、内部バス111、入出力回路112、制御回路513、揮発性メモリ114、不揮発性メモリ515、暗号処理回路121、乱数生成回路122、タイマ回路123、及び鍵アクセス器524を含む。
【0096】
制御回路513は、被認証装置との通信を制御する。制御回路513は、例えばCPU、マイクロコントローラ又はマイクロプロセッサであってよく、制御部107から入力されるコマンドに従って様々な処理を行う。不揮発性メモリ515は、例えば半導体メモリ又はハードディスクを含み得る記憶部である。
【0097】
本実施例において、不揮発性メモリ515は、1つ以上のコンピュータプログラム516、パスワード元鍵テーブル517、認証元鍵テーブル518、及びタイマカウンタテーブル519を記憶する。パスワード元鍵テーブル517は、上述した制限データの一例として、N個(Nは2以上の整数)の異なるパスワード元鍵KPO_k(k=1,...,N)を保持する。N個のパスワード元鍵KPO_kは、後述する被認証チップ210のパスワードハッシュテーブル617に記憶されるN個のパスワードハッシュ値PH_k'にそれぞれ対応する元値を有する。認証元鍵テーブル518は、各々がチャレンジレスポンス認証に使用される認証鍵の導出の基礎となる、N個の異なる認証元鍵KAO_k(k=1,...,N)を保持する。各認証元鍵KAO_kは、後述する被認証チップ210の認証鍵テーブル618に記憶されるN個の認証鍵KA_k'にそれぞれ対応する元値を有する。図11において破線で示したように、パスワード元鍵テーブル517及び認証元鍵テーブル518は、不揮発性メモリ515の制限付き記憶領域515aに記憶される。制限付き記憶領域515aへのアクセス(例えば、データの読み出し)は、鍵アクセス器524を介してのみ可能とされる。
【0098】
タイマカウンタテーブル519は、認証チップ110が通電されている間の時間の経過を監視するためのN個のカウンタ値を保持する。即ち、本実施例では、N個の異なる基準時間が、N個のタイマカウンタの初期値として予め設定される。これらカウンタ値は、認証チップ110が通電されている期間中に一斉にカウントダウンされ、互いに異なるタイミングでゼロになる。
【0099】
図11には示していないものの、認証チップ110は、電力供給回路をさらに含み得る。電力供給回路は、外部電源から認証チップ110の各部へ電力を供給する。不揮発性メモリ515は、認証チップ110が通電されていない間であっても、上述したプログラム及びデータを維持することが可能である。鍵アクセス器524は、制限付き記憶領域515aへのアクセスを制限するデバイスである。認証チップ110の通電時間がi番目(iは1以上かつN以下の整数)のタイマカウンタの基準時間に到達すると、鍵アクセス器524は、制限付き記憶領域515aからのi番目のパスワード元鍵KPO_i及び認証元鍵KAO_iの読み出しを可能にする。
【0100】
本実施例において、制御回路513は、暗号処理回路121、乱数生成回路122及びタイマ回路123と連携して、被認証チップ210を認証するための認証処理を行う認証部531として機能する。認証処理の流れについて、後に詳しく説明する。
【0101】
<4-2.被認証チップの構成例>
図12は、第3実施例に係る被認証チップ210の構成の一例を示すブロック図である。図12を参照すると、被認証チップ210は、内部バス211、接続I/F212、制御回路613、揮発性メモリ214、不揮発性メモリ615、暗号処理回路221、及び鍵アクセス器224を含む。
【0102】
制御回路613は、例えばCPU、マイクロコントローラ又はマイクロプロセッサであってよい。不揮発性メモリ615は、例えば半導体メモリを含む記憶部である。
【0103】
本実施例において、不揮発性メモリ615は、1つ以上のコンピュータプログラム616、パスワードハッシュテーブル617、認証鍵テーブル618、及びチップ識別子(CID)219を記憶する。パスワードハッシュテーブル617は、上述した第1許可データの一例として、N個の異なるパスワードハッシュ値PH_k'(k=1,...,N)を保持する。各パスワードハッシュ値PH_k'は、認証チップ110から受信される認証要求に対して応答することを許可するか否かの判定のために使用されるハッシュ値である。認証鍵テーブル618は、N個の異なる認証鍵KA_k'(k=1,...,N)を保持する。各認証鍵KA_k'は、認証チップ110から認証要求と共に受信されるチャレンジデータからレスポンスデータを生成するために使用される第1認証鍵である。図12において破線で示したように、認証鍵テーブル618は、不揮発性メモリ615の制限付き記憶領域615aに記憶される。制限付き記憶領域615aへのアクセス(例えば、データの読み出し)は、鍵アクセス器224を介してのみ可能とされる。鍵アクセス器224は、後述する検証部631によるi番目のパスワードPW_kの検証が成功した場合に、認証鍵テーブル618からのi番目の認証鍵KA_k'の読み出しを可能にする。
【0104】
本実施例において、制御回路613は、検証部631及び応答部632として機能する。検証部631は、認証チップ110から接続I/F212を介して受信されるi番目のパスワードPW_iを、不揮発性メモリ615から読み出されるi番目のパスワードハッシュ値PH_i'を用いて検証する。応答部632は、認証チップ110から受信される制御コマンドに対して、チャレンジレスポンス型の認証のための応答を行う。検証部631及び応答部632により実行される処理について、後に詳しく説明する。
【0105】
なお、図11及び図12で制御回路とは別個に示した回路の各々は、独立した回路として実装される代わりに、制御回路により実行されるソフトウェアモジュールとして実装されてもよい。また、制御回路の機能として説明したモジュールの各々が制御回路とは別個の独立した回路として実装されてもよい。また、図11及び図12には、それぞれ1つの不揮発性メモリを示しているが、図示したメモリの各々は、実際には複数のメモリ回路の集合であってもよい。
【0106】
<4-3.認証用のデータの生成とメモリへの格納>
図13は、認証チップ110の不揮発性メモリ515及び被認証チップ210の不揮発性メモリ615に格納されるデータを生成するためのデータ生成処理の流れの一例を示すフローチャートである。図13のデータ生成処理は、例えば工場において、画像形成装置100及びプロセスカートリッジ200とは異なる装置を用いて実行されてよい。
【0107】
図13を参照すると、まず、S50で、N個の認証元鍵KAO_1,...,KAO_Nが生成される。次いで、S52で、N個のパスワード元鍵KPO_1,...,KPO_Nが生成される。次いで、S54で、カウントダウンタイマのN個の異なる初期値、即ちN個の基準時間が決定される。次いで、S56で、認証チップ110の認証元鍵テーブル518に、N個の認証元鍵KAO_1,...,KAO_Nが格納される。次いで、S57で、認証チップ110のパスワード元鍵テーブル517に、N個のパスワード元鍵KPO_1,...,KPO_Nが格納される。次いで、S58で、認証チップ110のタイマカウンタテーブル519のN個のカウンタ値CT_1,...,CT_Nが、S54で決定された初期値へそれぞれ初期化される。なお、本実施例において説明されるテーブルの各エントリは、当該エントリを識別するインデックスと値とのペアにより構成され得る。
【0108】
次いで、S60で、被認証チップ210に固有の識別子(チップ識別子)CIDが生成される。次いで、S62で、チップ識別子CID及びN個の認証元鍵KAO_1,...,KAO_Nに基づいて、N個の認証鍵KA_1',...,KA_N'が導出される。各認証鍵KA_k'は、上述した式(1)又は式(2)に従って、チップ識別子CID及び対応する認証元鍵KAO_kに基づいて生成され得る。
【0109】
次いで、S64で、N個のパスワードハッシュ値PH_1',...,PH_N'が生成される。各パスワードハッシュ値PH_kは、対応するパスワード元鍵KPO_kからパスワードPW_kを導出し、導出したパスワードPW_kからさらにそのハッシュ値PH_k'を導出することにより生成され得る。例えば、パスワードPW_kの導出は上述した式(3)又は式(4)に従って行われ、そのハッシュ値PH_k'の導出は上述した式(5)又は式(6)に従って行われ得る。
【0110】
次いで、S65で、被認証チップ210の認証鍵テーブル618に、N個の認証鍵KA_1',...,KA_N'が格納される。次いで、S66で、被認証チップ210のパスワードハッシュテーブル617に、N個のパスワードハッシュ値PH_1',...,PH_N'が格納される。次いで、S67で、被認証チップ210の不揮発性メモリ615に、チップ識別子CIDが格納される。
【0111】
なお、複数のプロセスカートリッジが製造される場合には、S60~S67が複数回反復される。それら反復において、チップ識別子CIDは製造される固体ごとに相違する。また、複数の画像形成装置が製造される場合には、S50~S67が複数回反復されてよい。そして、図13のデータ生成処理は終了する。
【0112】
<4-4.カートリッジの認証>
図14は、本実施例に係る認証システムにおける全体的な処理の流れの一例を示すフローチャートである。
【0113】
図14に示した処理は、例えば、センサ105が画像形成装置100へのプロセスカートリッジ200の装着を検知したことをトリガとして、制御部107が認証チップ110へ認証開始を指示する制御コマンドを送信することで開始され得る。なお、認証開始のトリガは、プロセスカートリッジ200の装着の検知ではなく、例えば、画像形成装置100のユーザインタフェースを介して認証開始を求めるユーザ操作が検知されたことであってもよい。
【0114】
図14を参照すると、まず、S501で、認証チップ110の認証部131は、タイマ回路123を用いて、予め決定される監視周期が経過するまで待機する。1回の監視周期が経過すると、S503で、認証部131は、タイマカウンタテーブル519のN個のカウンタ値CT_1,...,CT_Nから、監視周期の長さの時間を減算する(即ち、カウントダウンを行う)。次いで、S505で、認証部131は、いずれかのカウンタ値がゼロに到達したか、即ち、認証チップ110の通電時間がいずれかの基準時間に到達したかを判定する。認証チップ110の通電時間がいずれかの基準時間に到達した場合、S510の認証処理が実行される。一方、認証チップ110の通電時間がいずれの基準時間にも到達していない場合、S510の認証処理はスキップされる。
【0115】
図15は、図14のS510において実行される認証処理の詳細な流れの一例を示すシーケンス図である。ここでは、タイマカウンタテーブル519のi番目のカウンタ値CT_iがゼロに到達したために、S510の認証処理が実行されるものとする。
【0116】
まず、S511で、認証部531は、被認証チップ210へ認証開始指示を送信する。S513で、被認証チップ210の応答部632は、認証部531からの要求に応じて、不揮発性メモリ615からチップ識別子CIDを読み出して認証チップ110へ送信する。認証チップ110の入出力回路112は、被認証チップ210から送信されたチップ識別子CIDを受信する。
【0117】
次いで、S515で、認証部531は、鍵アクセス器524を介して、パスワード元鍵テーブル517からi番目のパスワード元鍵KPO_iを読み出す。次いで、S517で、認証部531は、読み出したパスワード元鍵KPO_i及び受信したチップ識別子CIDに基づいて、パスワードPW_iを導出する。パスワードPW_iは、例えば、暗号処理回路121を用いて、上述した式(3)又は式(4)に従って導出され得る。次いで、S519で、認証部531は、乱数生成回路122に、チャレンジデータとしての乱数値DCHを生成させる。
【0118】
次いで、S521で、認証部531は、S517で導出したパスワードPW_i、S519で生成したチャレンジデータDCH、及びインデックスiを含む認証要求を、入出力回路112を介して被認証チップ210へ送信する。被認証チップ210の接続I/F212は、認証チップ110から送信された認証要求を受信する。
【0119】
被認証チップ210の検証部631は、認証チップ110から受信した認証要求に対して応答することを許可するか否かを、パスワードPW_iの正当性を検証することにより判定する。具体的には、S523で、検証部631は、認証要求と共に受信したパスワードPW_iに基づいて、検証用ハッシュ値PH_iを導出する。検証用ハッシュ値PH_iは、パスワードハッシュ値PH_i'と同様に、上述した式(5)又は式(6)に従って導出され得る。次いで、S525で、検証部631は、導出した検証用ハッシュ値PH_iを不揮発性メモリ615から読み出されるi番目のパスワードハッシュ値PH_i'と比較することにより、パスワードPW_iの正当性を検証する。2つのハッシュ値が互いに一致する場合、パスワード検証は成功したと判定され、鍵アクセス器224を介する制限付き記憶領域615aからのi番目の認証鍵KA_i'の読み出しが可能となる。
【0120】
S527で、被認証チップ210の応答部632は、鍵アクセス器224を介して認証鍵テーブル618からi番目の認証鍵KA_i'を読み出す。次いで、S529で、応答部632は、暗号処理回路221に、認証チップ110から受信したチャレンジデータDCHと認証鍵KA_i'とに基づいて、レスポンスデータDRS_iを生成させる。例えば、レスポンスデータDRS_iは、上述した式(7)、式(8)又は式(9)に従って生成され得る。
【0121】
そして、S537で、応答部632は、認証要求に対する応答として、レスポンスデータDRS_iを認証チップ110へ返送する。なお、S525でのパスワード検証が失敗した場合、応答部632は、認証鍵KA_i'の読み出しを行うことなく、エラー応答を認証チップ110へ返送する。図15には、認証鍵KA_i'の読み出しがスキップされる処理経路が破線で示されている。
【0122】
一方、S521で認証要求を送信した認証チップ110の認証部531は、S531で、鍵アクセス器524を介して認証元鍵テーブル518からi番目の認証元鍵KAO_iを読み出す。次いで、S533で、認証部531は、暗号処理回路121に、被認証チップ210から受信したチップ識別子CID及び読み出した認証元鍵KAO_iに基づいて認証鍵KA_iを導出させる。認証鍵KA_iは、認証鍵KA_i'と同様に、上述した式(1)又は式(2)に従って導出され得る。次いで、S535で、認証部531は、被認証チップ210へ送信したチャレンジデータDCH及びS533で生成した認証鍵KA_iに基づいて、検証用データDVF_iを生成する。検証用データDVF_iは、レスポンスデータDRS_iと同様に、上述した式(7)、式(8)又は式(9)に従って生成され得る。
【0123】
S537で、認証チップ110の入出力回路112は、被認証チップ210から送信された認証応答を受信する。被認証チップ210においてパスワード検証が成功した場合には、認証応答は、レスポンスデータDRS_iを含む。被認証チップ210においてパスワード検証が失敗した場合には、認証応答は、エラー応答である。認証部531は、この認証応答に含まれるレスポンスデータDRS_iを検証することにより、被認証チップ210を認証する。
【0124】
具体的には、S539で、認証部531は、認証応答に含まれるレスポンスデータDRS_iを、チャレンジデータDCH及び認証鍵KA_iを用いて生成した検証用データDVF_iと比較することにより、レスポンスデータDRS_iの正当性を検証する。レスポンスデータDRS_iが検証用データDVF_iに一致している場合には、認証部531は、プロセスカートリッジ200の認証は成功であると判定する。レスポンスデータDRS_iが検証用データDVF_iに一致していない場合、又は認証応答がエラー応答であった場合には、認証部531は、プロセスカートリッジ200の認証は失敗であると判定する。認証部531は、S539で判定した認証の結果を制御部107へ報告する。
【0125】
図14へ戻ると、その後の処理は、S551で、プロセスカートリッジ200の認証が成功したか又は失敗したかに依存して分岐する。認証が成功した場合、S553で、制御部107は、プロセスカートリッジ200のメモリへのアクセスを実行する。例えば、制御部107は、プロセスカートリッジ200のメモリに記憶されている動作条件に関連する制御パラメータ(図12には示していない)を読み出して、その後の制御のために利用してもよい。S505で認証チップ110の通電時間がいずれの基準時間にも未到達であると判定された場合にも、プロセスカートリッジ200のメモリへのアクセスは実行されてよい。
【0126】
認証が失敗した場合、S555で、制御部107は、プロセスカートリッジ200が正規品ではないことをユーザへ警告し得る。ここでの警告は、例えば、画像形成装置100ディスプレイへの警告メッセージの表示、警告灯の点灯、又は警報音の出力など、任意の手法で行われてよい。
【0127】
<4-5.変形例>
ここまで、認証チップ110の通電時間がi番目の基準時間に到達した場合に、i番目の(最後にアクセス可能となった)パスワード元鍵KPO_iに基づいて導出されるi番目のパスワードPW_iについての1回のパスワード検証が行われる例を説明した。しかしながら、本実施例は、かかる例には限定されない。ある変形例において、認証装置の通電時間がi番目の基準時間に到達した場合に、1番目からi番目までのパスワード元鍵KPO_1,...,KPO_iに基づいて導出されるi個のパスワードが、パスワード検証のために被認証チップ210へ送信されてもよい。なお、インデックスは基準時間の短い順に割当てられるものとする。被認証チップ210の検証部631は、i個のパスワードPW_1,...,PW_iの正当性を、対応するi個のパスワードハッシュ値PH_1',...,PH_i'を用いてそれぞれ検証する。そして、検証部631は、i個のパスワードの検証が全て成功した場合にのみ、認証鍵テーブル618からi番目の認証鍵KA_i'を読み出して、認証チップ110からの認証要求に応答するために使用する。かかる構成によれば、パスワード検証において検証されるパスワードの数が時間の経過と共に増加していくため、情報解析型の攻撃に対する耐性を一層強化することができる。
【0128】
<4-6.第3実施例のまとめ>
上述した第3実施例では、被認証装置(被認証チップ)は、認証装置(認証チップ)から受信される認証要求に対して応答することを許可するかの判定のために使用される第1許可データのN個のハッシュ値(パスワードハッシュ値)をメモリに予め記憶している。認証装置(認証チップ)は、第1許可データのN個のハッシュ値にそれぞれ対応するN個の元値(パスワード元鍵)を含む制限データをメモリに予め記憶している。また、認証装置において、N個の異なる基準時間が予め設定される。そして、認証装置の通電時間がi番目の基準時間に到達した場合に、制限データのi番目の元値がメモリから読み出され、i番目の元値に基づいて導出される第2許可データ(パスワード)のi番目の値が被認証装置へ送信される。被認証装置は、第2許可データのi番目の値が第1許可データの対応するi番目のハッシュ値を用いて成功裏に検証された後に、本認証のために予め記憶しているN個の第1認証鍵のうちのi番目の第1認証鍵をメモリから読み出す。したがって、本実施例においても、情報解析型の攻撃に対して有意な情報が露出するタイミングを遅延させることで、現実的な時間の制約の中で攻撃が成功する確率を引き下げることができる。
【0129】
また、上述した第3実施例では、時間が経過するにつれてパスワード検証が反復され、パスワードの値が反復の都度変化する。また、チャレンジレスポンス認証のために使用される認証鍵も反復の都度変化する。これによりパスワード及び認証鍵を含み得る情報の解析は一層困難となり、情報解析型の攻撃に対する耐性がさらに高められる。また、攻撃者は、全てのパスワード又は全ての認証鍵を知得するためにより長い解析時間を要するようになる。
【0130】
<5.第4実施例>
<5-1.認証チップの構成例>
上述した第1~第3実施例では、同じ被認証装置が認証装置へ複数回接続された場合に、接続の都度認証装置により被認証装置の認証が行われる。これに対し、本節で説明する第4実施例では、過去に認証済みの被認証装置について認証の再実行を省略する仕組みが取り入れられる。
【0131】
図16は、第4実施例に係る認証チップ110の構成の一例を示すブロック図である。図16を参照すると、認証チップ110は、内部バス111、入出力回路112、制御回路713、揮発性メモリ114、不揮発性メモリ715、暗号処理回路121、乱数生成回路122、タイマ回路123、及び鍵アクセス器524を含む。
【0132】
制御回路713は、被認証装置との通信を制御する。制御回路713は、例えばCPU、マイクロコントローラ又はマイクロプロセッサであってよく、制御部107から入力されるコマンドに従って様々な処理を行う。不揮発性メモリ715は、例えば半導体メモリ又はハードディスクを含み得る記憶部である。
【0133】
本実施例において、不揮発性メモリ715は、1つ以上のコンピュータプログラム716、パスワード元鍵テーブル517、認証元鍵テーブル518、タイマカウンタテーブル519、及び履歴テーブル740を記憶する。
【0134】
履歴テーブル740は、認証応答に基づいて成功裏に認証された被認証チップ210のチップ識別子CIDを記憶する。履歴テーブル740は、過去に成功裏に認証された1つ以上の被認証チップのチップ識別子のリストを記憶してもよく、又は過去に認証を試行した1つ以上の被認証チップのチップ識別子をそれぞれの認証結果(成功又は失敗)に関連付けて記憶してもよい。
【0135】
本実施例において、制御回路713は、暗号処理回路121、乱数生成回路122及びタイマ回路123と連携して、被認証チップ210を認証するための認証処理を行う認証部731として機能する。認証部731は、認証チップ110に接続した被認証チップ210からチップ識別子CIDが受信されると、チップ識別子CIDが履歴テーブル740に存在するか(履歴として登録済みであるか)否かを判定する。認証部731は、チップ識別子CIDが履歴テーブル740に存在する場合には、接続した被認証チップ210へ認証要求を送信することなく、接続した被認証チップ210は認証済みであると判定する。過去の認証においてその被認証チップ210の認証が成功していた場合には、その被認証チップ210のメモリからのさらなるデータ(例えば、最適な動作条件を示す制御パラメータ)の読み出しが可能とされる。過去の認証においてその被認証チップ210の認証が失敗していた場合には、その被認証チップ210との接続は拒否され、又はその被認証チップ210のメモリへのアクセスは禁止され得る。こうした処理の流れについて、後に詳しく説明する。
【0136】
本実施例に係る被認証チップ210の構成は、第3実施例に関連して図12を用いて説明した構成と同様であってよい。また、製品の製造段階において予め生成したデータを認証チップ110及び被認証チップ210のメモリへ格納する処理の流れは、第3実施例に関連して図13を用いて説明した流れと同様であってよい。但し、本実施例では、認証チップ110の不揮発性メモリ715に(製造時には空である)履歴テーブル740が追加的に生成される。
【0137】
<5-2.カートリッジの認証>
本実施例に係る認証システムにおける全体的な処理の流れは、図14を用いて説明した第3実施例における流れと同様であってよい。図17は、図14のS510において実行される認証処理の詳細な流れの一例を示すシーケンス図である。ここでは、タイマカウンタテーブル519のi番目のカウンタ値CT_iがゼロに到達したために、S510の認証処理が実行されるものとする。
【0138】
まず、S711で、認証部731は、被認証チップ210へ認証開始指示を送信する。S712で、被認証チップ210の応答部632は、認証部731からの要求に応じて、不揮発性メモリ615からチップ識別子CIDを読み出して認証チップ110へ送信する。認証チップ110の入出力回路112は、被認証チップ210から送信されたチップ識別子CIDを受信する。
【0139】
次いで、S713で、認証部731は、履歴テーブル740を検索して、被認証チップ210から受信したチップ識別子CIDが存在するかを判定する。その後の処理は、S714で、履歴テーブル740にチップ識別子CIDが存在するか否かに依存して分岐する。履歴テーブル740にチップ識別子CIDが存在しない場合(S714-NO)、S715~S739で、パスワード検証及びチャレンジレスポンス認証が行われる。S715~S739は、第3実施例に関連して図15を用いて説明したS515~S539と同様の処理ステップであってよい。S739で被認証チップ210の認証が完了すると、認証部731は、S741で、認証結果を履歴テーブル740に登録する(例えば、認証に成功した被認証チップ210のチップ識別子CIDを示すレコードを履歴テーブル740に追加する)。
【0140】
履歴テーブル740にチップ識別子CIDが存在する場合(S714-YES)、パスワード検証及びチャレンジレスポンス認証はスキップされる。この場合、認証部731は、履歴テーブル740により示される過去の認証の結果を制御部107へ報告する。過去に認証が既に成功していた場合、制御部107は、プロセスカートリッジ200のメモリへのアクセスを直ちに実行し得る。
【0141】
<5-3.第4実施例のまとめ>
上述した第4実施例では、認証装置(認証チップ)は、成功裏に認証された被認証装置の識別子を記憶するテーブル(履歴テーブル)を有する。認証装置の認証部は、新たに接続した被認証装置から受信される識別子が上記テーブルに存在する場合に、当該被認証装置へ認証要求を送信することなく、当該被認証装置は認証済みであると判定する。したがって、同じ被認証装置の認証に要するデータがチップ上の配線及びチップ間の通信線を何度も流れることがないため、それらラインを流れるデータの統計的な解析が困難となる。これにより、マイクロプロービングのような情報解析型の攻撃に対する耐性は一層向上する。仮にテーブルに登録されている識別子が漏洩したとしても、その識別子は特定の被認証装置についてのみ有効である。したがって、履歴テーブルに対する攻撃は、被認証装置を模造しようとする不正な目的のためには有益でない。
【0142】
なお、本明細書で説明した様々な実施例及び変形例は、互いにどのように組み合わされてもよい。例えば、第4実施例において説明した履歴テーブルが第1実施例又は第2実施例において採用されてもよい。概して、ある実施例に関連して説明した効果は、共通する特徴を有する他の実施例においても同様に達成され得る。
【0143】
<6.その他の実施形態>
上記実施形態は、1つ以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出して実行する処理の形式でも実現可能である。また、1つ以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0144】
本明細書の開示は、少なくとも以下の認証装置及び画像形成装置を含む。
(項目1)
被認証装置を認証するための認証装置であって、
前記被認証装置は、前記認証装置から受信される認証要求に対して応答することを許可するか否かの判定に使用される第1許可データを予め記憶しており、
前記認証装置は、
前記認証装置が通電されている時間を計測する計測部と、
前記計測部により計測される前記時間が予め設定される基準時間に到達した後に読み出し可能となる制限データを記憶している記憶部と、
前記被認証装置により前記第1許可データを用いて検証される第2許可データであって、前記記憶部から読み出される前記制限データに基づく当該第2許可データを、前記被認証装置へ送信する通信部と、
前記被認証装置において前記第1許可データを用いた前記第2許可データの検証が成功した場合に前記被認証装置から受信される認証応答に基づいて、前記被認証装置を認証する認証部と、
を備える認証装置。
(項目2)
前記被認証装置は、前記被認証装置に固有の識別子を予め記憶しており、
前記通信部は、前記被認証装置から前記識別子を受信し、
前記認証部は、前記制限データ及び前記被認証装置から受信される前記識別子に基づいて、前記第2許可データを導出する、
項目1に記載の認証装置。
(項目3)
前記被認証装置は、前記認証装置から前記認証要求と共に受信されるチャレンジデータからレスポンスデータを生成するために使用される第1認証鍵であって、前記識別子に基づいて導出された当該第1認証鍵を予め記憶しており、
前記通信部は、
前記認証要求と共に前記チャレンジデータを前記被認証装置へ送信し、
前記認証要求に応じて前記被認証装置から送信される、前記レスポンスデータを含む前記認証応答を受信し、
前記認証部は、前記被認証装置へ送信された前記チャレンジデータ、及び前記被認証装置から受信される前記識別子に基づいて導出される第2認証鍵を用いて、前記認証応答に含まれる前記レスポンスデータを検証することにより、前記被認証装置を認証する、
項目2に記載の認証装置。
(項目4)
前記第1認証鍵及び前記第2認証鍵は、共通鍵暗号方式における共通鍵として使用される、項目3に記載の認証装置。
(項目5)
前記第1認証鍵及び前記第2認証鍵は、共通的な元鍵及び前記識別子に基づく入力データを暗号学的ハッシュ関数へ入力することにより導出される、項目4に記載の認証装置。
(項目6)
前記第1認証鍵及び前記第2認証鍵は、共通的な元鍵を暗号鍵として用いて前記識別子を暗号化することにより導出される、項目4に記載の認証装置。
(項目7)
前記被認証装置は、前記認証装置から前記認証要求と共に受信されるチャレンジデータのデジタル署名を生成するために使用される、公開鍵暗号方式の秘密鍵を予め記憶しており、
前記通信部は、
前記認証要求と共に前記チャレンジデータを前記被認証装置へ送信し、
前記認証要求に応じて前記被認証装置から送信される、前記デジタル署名を含む前記認証応答を受信し、
前記認証部は、前記認証応答に含まれる前記デジタル署名を、前記秘密鍵に対応する公開鍵及び前記被認証装置へ送信された前記チャレンジデータを用いて検証することにより、前記被認証装置を認証する、
項目1に記載の認証装置。
(項目8)
前記被認証装置は、前記秘密鍵に対応する前記公開鍵、及び前記公開鍵の真正性を証明する電子証明書を予め記憶しており、
前記通信部は、前記被認証装置から前記公開鍵及び前記電子証明書を受信し、
前記認証部は、前記被認証装置から受信される前記電子証明書に基づいて前記公開鍵の真正性が確認された場合に、前記公開鍵を用いて前記認証応答に含まれる前記デジタル署名を検証する、
項目7に記載の認証装置。
(項目9)
前記記憶部は、成功裏に認証された装置の識別子を記憶するテーブルを有し、
前記認証部は、前記認証装置に接続した前記被認証装置から前記通信部により受信される識別子が前記テーブルに存在する場合に、当該被認証装置へ認証要求を送信することなく、当該被認証装置は認証済みであると判定する、
項目1~8のいずれか1項に記載の認証装置。
(項目10)
前記記憶部は、前記認証装置が通電されている間の時間の経過を監視するためのカウンタ値を記憶している、項目1~9のいずれか1項に記載の認証装置。
(項目11)
前記記憶部は、不揮発性メモリである、項目10に記載の認証装置。
(項目12)
前記第1許可データは、前記認証要求に対して応答することを許可するか否かの判定のために使用されるN個(Nは2以上の整数)のハッシュ値を含み、
前記制限データは、前記N個のハッシュ値にそれぞれ対応するN個の元値を含み、
N個の異なる基準時間が予め設定され、
前記通信部は、前記計測部により計測される前記時間がi番目(iは1以上かつN以下の整数)の基準時間に到達した場合に、前記制限データのi番目の元値に基づいて導出される前記第2許可データのi番目の値を、前記第1許可データの対応するi番目のハッシュ値を用いた検証のために前記被認証装置へ送信する、
項目1~11のいずれか1項に記載の認証装置。
(項目13)
前記通信部は、前記計測部により計測される前記時間が前記i番目の基準時間に到達した場合に、前記制限データの1番目からi番目までの元値に基づいてそれぞれ導出される前記第2許可データのi個の値を、前記第1許可データの対応するi個のハッシュ値を用いた検証のために前記被認証装置へ送信する、項目12に記載の認証装置。
(項目14)
前記被認証装置は、前記認証装置から前記認証要求と共に受信されるチャレンジデータからレスポンスデータを生成するために各々使用されるN個の第1認証鍵を予め記憶しており、
前記通信部は、
前記認証要求と共に前記チャレンジデータを前記被認証装置へ送信し、
前記認証要求に応じて前記被認証装置から送信される、i番目の第1認証鍵を用いて生成された前記レスポンスデータを含む前記認証応答を受信し、
前記認証部は、前記被認証装置へ送信された前記チャレンジデータ、及び前記i番目の第1認証鍵に対応する第2認証鍵を用いて、前記認証応答に含まれる前記レスポンスデータを検証することにより、前記被認証装置を認証する、
項目12又は13に記載の認証装置。
(項目15)
項目1~14のいずれか1項に記載の認証装置と、
シートに画像を形成する画像形成部と、
を備える画像形成装置。
(項目16)
前記被認証装置は、前記画像形成装置へ装着される交換可能部品である、項目15に記載の画像形成装置。
(項目17)
前記交換可能部品は、前記交換可能部品に適した動作条件を示す制御パラメータを記憶しており、
前記画像形成装置は、
前記認証部による前記交換可能部品の認証が失敗した場合に、前記交換可能部品からの前記制御パラメータの読み出しを禁止する制御部、
をさらに備え、
前記制御部は、前記計測部により計測される前記時間が前記基準時間に到達する前は、前記認証部に前記交換可能部品の認証を行わせることなく、前記交換可能部品の前記制御パラメータの読み出しを許可する、
項目16に記載の画像形成装置。
【0145】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0146】
100:画像形成装置、101:エンジンコントローラ、103:接続I/F、105:センサ、107:制御部、110:認証チップ、115,315,515,715:不揮発性メモリ、117:パスワード元鍵(KPO)、517:パスワード元鍵テーブル、118:認証元鍵(KAO)、318:証明書検証鍵(KCV)、518:認証元鍵テーブル、119:タイマカウンタ(C)、519:タイマカウンタテーブル、123:タイマ回路、124,524:鍵アクセス器、131,331,531,731:認証部、740:履歴テーブル、200:プロセスカートリッジ、210:被認証チップ、215,415,615:不揮発性メモリ、217:パスワードハッシュ値(P')、617:パスワードハッシュテーブル、218:認証鍵(K')、618:認証鍵テーブル、417:署名鍵(K)、418:チップ検証鍵(K)、219:チップ識別子(CID)、419:チップ証明書(C)、224:鍵アクセス器、231,631:検証部、232,432,632:応答部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17