JP2010261768A - 半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム - Google Patents

半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム Download PDF

Info

Publication number
JP2010261768A
JP2010261768A JP2009111748A JP2009111748A JP2010261768A JP 2010261768 A JP2010261768 A JP 2010261768A JP 2009111748 A JP2009111748 A JP 2009111748A JP 2009111748 A JP2009111748 A JP 2009111748A JP 2010261768 A JP2010261768 A JP 2010261768A
Authority
JP
Japan
Prior art keywords
output
scan
branch
circuit
integrated circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009111748A
Other languages
English (en)
Inventor
Yoshikazu Miyato
良和 宮戸
Masafumi Kusakawa
雅文 草川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2009111748A priority Critical patent/JP2010261768A/ja
Priority to US12/765,476 priority patent/US20100281316A1/en
Priority to CN201010159126.5A priority patent/CN101877248A/zh
Publication of JP2010261768A publication Critical patent/JP2010261768A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318536Scan chain arrangements, e.g. connections, test bus, analog signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/30Accessing single arrays
    • G11C2029/3202Scan chain
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/48Arrangements in static stores specially adapted for testing by means external to the store, e.g. using direct memory access [DMA] or using auxiliary access paths

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

【課題】スキャンチェインを介したデータ漏洩を防止した構成を実現する。
【解決手段】LSIなどの集積回路のテスト用パスとして設定されたスキャンチェインの出力部にデータ拡散処理を行うインターリーブ回路を設定した。インターリーブ回路は例えば段数の異なるレジスタによって構成される複数のブランチと、スキャンチェインからのデータ入力および外部出力を行うブランチを選択するセレクタを備え、選択ブランチを逐次変更する制御を実行する。本構成により、スキャンチェインからの出力ビット系列が拡散され外部に出力されることになり、フリップフロップに格納されたデータの漏洩を防止することができる。
【選択図】図3

Description

本発明は、半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラムに関する。さらに詳細には、半導体集積回路のテスト用回路であるスキャン回路からの情報漏洩を防止する構成を持つ半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラムに関する。
半導体集積回路にはフリップフロップ(FF)が多数利用されている。フリップフロップ(FF)は、ビット値(0,1)を保持し、ビット値入出力を高速に行うことが可能であり、例えばキャッシュメモリやレジスタ、その他の電子回路を構成する素子として多く利用されている。なお、以下、本明細書においてフリップフロップをFFとして略して表現する場合がある。
半導体集積回路を試験する方法として、スキャンテストが知られている。[特許文献1]に記載されているスキャンテスト構成について図1を参照して説明する。図1に示すように、半導体集積回路100内には、様々なデータ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路121,122がある。さらに、組み合わせ回路121,122に対する入力データや、組み合わせ回路121,122からの出力データを保持、転送するフリップフロップ(FF)が複数存在する。図1に示すスキャンFF111,112,113である。
なお、図1に示すスキャンFF111,112,113の各々は、1つのスキャンFFに限らず複数のスキャンFFを含む構成であってもよい。図1に示すスキャンFF111,112,113を連結する接続ラインが回路テスト用のスキャンチェインとして設定され、半導体集積回路の製造段階のテストなどに利用される。
テストは、組み合わせ回路の前後にあるフリップフロップ(FF)を組み合わせ回路に対するデータ入力および出力部に見立て行われる。フリップフロップ(FF)にテスト用のデータを設定し、組み合わせ回路の処理結果を後段のFFに格納し、これを外部に取り出すことによって、組み合わせ回路が正常な動作がなされているか否かを確認する。このスキャンチェインを利用した回路テストはスキャンテストと呼ばれる。
図1に示すように、半導体集積回路100の外部端子としてスキャンイン(Scan−in)131、スキャンクロック(SCK)132、スキャンイネーブル(Scan−enable)133、およびスキャンアウト(Scan−out)134がある。
スキャンイン(Scan−in)131はスキャンテスト時にスキャンFFに格納する値を入力する端子である。
スキャンクロック(SCK)132はスキャンテスト時に使われるクロックを入力するための端子であり、各スキャンFFのスキャンクロック(SCK)入力部に供給される。
スキャンイネーブル(Scan−enable)133は、スキャンFFの入力を切り替えるための端子で、各スキャンFFのスキャンイネーブル入力部(SE)に供給される。
さらに、スキャンアウト(Scan−out)134はスキャンFFに格納された値を外部へ取り出すための端子である。
図1に示すスキャンFF111,112,113の間に挟まれているのが組み合わせ回路121,122である。スキャンテストではこの組み合わせ回路121,122とスキャンFF111,112,113とのデータ入出力を実行させて試験を行う。
スキャンFF111,112,113の内部回路構成について図2を参照して説明する。なお、スキャンチェインに接続されテストデータとその他のデータとの選択入力を可能とした構成を持つフリップフロップ(FF)をスキャンFFと呼ぶ。スキャンFF111,112,113の内部回路は、図2に示す構成を持つ。図2には、スキャンFF111を示しているが、スキャンFF112,113も同様の構成である。
スキャンFF111は、図2に示すように、マルチプレクサ151とフリップフロップ(FF)152で構成されている。図2に示すように、スキャンFF111に入力されるスキャンクロック(SCK)は、フリップフロップ(FF)152のスキャンクロック入力部(SCK)に供給され、クロックの立ち上りでFF152のD端子の値をラッチする。ラッチされた値はFF152のQ端子から出力され、スキャンFF111の出力Q端子へ供給される。
また、スキャンFF111に入力されるスキャンイネーブル(SE)信号はマルチプレクサ151のDinとSI(Scan In)のどちらかを選択するマルチプレクサ151のセレクタ信号であり、スキャンイネーブル(SE)がHighのときはSIの信号を、LowのときはDinを選択する。マルチプレクサ151はSEで選択された信号をマルチプレクサ152の出力信号として出力し、FF152の入力部D端子に供給する。
次に図1を用いてスキャン回路を使った半導体集積回路の試験方法について説明する。
まず半導体集積回路100のスキャンイネーブル(Scan−enable)133を[High]に設定し、スキャンイン(Scan−in)131からクロックサイクルごとに予め設定したテスト用のシリアルにデータを入力して。スキャンFF111,112,113にテスト用の値を設定する。スキャンFF111、112、113はシリアルに接続されている。前述したスキャンチェインである。スキャンチェインで接続されたスキャンFF111〜113はシフトレジスタ動作を行い、入力データを伝達していく。
その後、スキャンイネーブル(Scan−enable)133を[Low]に設定して、1サイクルのクロックパルスをスキャンクロック(SCK)132に与えて、キャプチャー動作を行う。このキャプチャー動作により、組み合わせ回路の前段に接続されたスキャンFFの値に対応する演算結果が後段のスキャンFFに格納される。
例えばスキャンFF111に格納された値は組み合わせ回路121に供給され、その出力はスキャンFF112に格納される。同時にスキャンFF112に格納されていた値は組み合わせ回路122に供給され、その出力がスキャンFF113に格納される。このようなキャプチャー動作を行った後、再びスキャンイネーブル(Scan−enable)133を[High]にして、スキャンクロック(SCK)132にクロックを印加する。この処理によって、各スキャンFF111〜113に格納された値はシフトレジスタ動作を行いながらスキャンアウト(Scan−out)134を介して外部に出力される。
この作業を、様々なテスト用データを適用して複数回行い、スキャンアウト(Scan−out)134から出てきた値を解析することにより、組み合わせ回路のテストを行うのである。
前述したスキャンチェインの配線を含むスキャン回路を半導体集積回路にどのように設定するかについては半導体集積回路の設計段階で決定される。通常、これらの設計は設計用ツールによって自動的に行われ、効率的なスキャンチェイン配線を行うように処理がなされる。結果として、機械的に近くのスキャンFFを順次接続するように配線される可能性が高い。
従って、スキャンチェインによって接続される複数のFFは必然的に同等の機能を有する複数のスキャンFFが直列に並んだ状態に設定されることが多い。例えば、組み合わせ回路が暗号処理回路である場合、この暗号処理回路に鍵データなどを入力する複数のFFが設定された構成では、n個のFFから演算回路に対してnビットの秘密鍵情報が入力される設定とされる。このようなn個のFFがスキャンチェインによって接続されると、秘密情報としてのnビットの鍵情報のMSBあるいはLSBのビット列に従ってシリアルにスキャンチェインも接続されることが考えられる。
このようにスキャンチェインが接続されてしまうと、スキャンアウト(Scan−out)134から出てきた値も、FFの接続順、すなわち、MSBまたはLSBのビットデータがそのまま出力されてしまうことになる。
また、半導体集積回路のテスト終了後には、スキャンイン(Scan−in)131、スキャンアウト(Scan−out)134、これらの端子は多くの場合、削除されて出荷されるが、スキャンチェインは削除されずユーザに提供されることになる。従って出荷後の半導体集積回路上にもスキャンチェインは残存する。従って、このスキャンチェインを悪用して出力を確認するといった処理が行われると、半導体集積回路の回路を利用して通常のデータ処理を行ったスキャンチェインを利用してFFに設定された情報の取り出しが行われる可能性がある。例えば、暗号処理に適用する鍵情報などの秘密情報が漏洩してしまう可能性がある。
このような秘密情報漏洩を防止するため、スキャンチェインを利用したスキャンテストモードに移行する際、スキャンチェインに接続されたスキャンFFを初期化し、スャンFFに保持されたデータをリセットする対策を行っているものもある。これにより、攻撃者がその動作途中に回路をスキャンテストモードに移行させたとしても、スキャンアウトされた値から鍵等の重要情報を取得、解析することは困難となっている。
特許第3671948号公報
上述したように、スキャンチェインを悪用されると、スキャンチェインに接続されたFFから秘密情報が漏洩する可能性がある。例えば、スキャンアウトされる数百ビットの情報に鍵等の重要情報が含まれており、かつビット列がMSBまたはLSBから順に出力される状況の場合、以下のような鍵解析が行われる可能性がある。攻撃者は予め公開通信路上を流れる平文と暗号文のペアを取得しておき、その後、スキャンアウトによって出力されたビット列を1ビットずつずらした値を鍵候補として既知の平文を暗号化し、予め保持していた既知の暗号文との比較を繰り返す。この処理によって鍵の特定が可能となる。このようにスキャンチェインを介してスキャンアウトされた値がMSBまたはLSBから整然と並んでいた場合には、鍵の特定が総当たりによる特定と比較して非常に簡単になるという問題点が存在する。
また、スキャンテストモード移行時にスキャンチェインに接続されたスキャンFFをリセットする対策も秘密情報の漏洩対策としては不十分である。
例えば、電源投入後スキャンテストモードに入り、キャプチャー動作を何度か行い、スキャンFFに鍵等の秘密情報が格納されたのちに、スキャンアウトで外部に取り出せてしまえば、後は前述の方法と同様の探索によってスキャンアウトされた値を解析することで鍵データを特定できてしまうといった問題点が存在する。
スキャンテストは半導体集積回路の故障検出システムとして必要不可欠なものであり、特別なことがないかぎり、半導体集積回路に組み込まれる。セキュリティ機能を備えた半導体集積回路も例外ではない。しかしながらセキュリティ機能を備えた半導体集積回路の場合には特に、スキャン回路による故障検出を実現しつつ、鍵等の内部情報が容易に特定されない仕組みが要求される。すなわち、スキャンアウトによって、鍵情報を含んだビット列が出力されたとしても、正当なテスト実施者はその出力値を容易に解析可能であるが、回路構成を知らない攻撃者がスキャンアウトによって得られた値を解析しても、鍵を特定することが困難となる仕組みを実現する必要がある。
しかしながら、前述のように、従来構成においては、スキャンチェインに接続されたスキャンFFの格納値を出力させて解析可能であり、鍵データなどの秘密情報の漏洩対策が不十分であるという問題が存在していた。
本発明は、例えば上述の状況に鑑みてなされたものであり、半導体集積回路のスキャンチェインを利用した情報漏洩の防止を実現する半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラムを提供することを目的とする。
本発明の第1の側面は、
集積回路のテスト用接続経路であり複数のフリップフロップを接続したスキャンチェインと、
前記スキャンチェインの出力部に設けられたインターリーブ回路を有し、
前記インターリーブ回路は、
段数の異なる記憶素子からなる複数のブランチと、
前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行う入出力ブランチを選択するセレクタと、
前記入出力ブランチを、所定タイミング毎に切り替える処理を実行するセレクタ制御部、
を有する半導体集積回路にある。
さらに、本発明の半導体集積回路の一実施態様において、前記セレクタ制御部は、前記入出力ブランチを、前記スキャンチェインからのデータ入力毎に切り替える処理を実行する。
さらに、本発明の半導体集積回路の一実施態様において、前記セレクタ制御部は、段数の異なる記憶素子からなる複数のブランチを、予め設定された切り替えシーケンスに従って切り替える処理を実行する。
さらに、本発明の半導体集積回路の一実施態様において、前記半導体集積回路は、前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行うブランチを選択するためのブランチ選択表であり、メモリアドレスとブランチ識別子とを対応付けたブランチ選択表を格納したメモリと、所定タイミング毎にカウント値をカウントするカウンタと、前記ブランチ選択表から、前記カウンタのカウント値に応じたメモリアドレスに対応するブランチ識別子を前記インターリーブ回路のセレクタ制御部に出力する制御部を有する制御回路を備え、前記セレクタ制御部は、前記制御回路から入力するブランチ識別子に対応するブランチを前記入出力ブランチとして選択する処理を行う。
さらに、本発明の半導体集積回路の一実施態様において、前記ブランチ選択表は、前記メモリアドレスに対してランダムにブランチ識別子を対応付けた設定を有し、前記セレクタ制御部は、前記制御回路から入力するランダムシーケンスのブランチ識別子に対応させて、前記入出力ブランチをランダムに選択する処理を行う。
さらに、本発明の半導体集積回路の一実施態様において、前記半導体集積回路は、さらに、前記複数のブランチに設定された記憶素子の初期値を設定する初期化処理部を有する。
さらに、本発明の半導体集積回路の一実施態様において、前記初期化処理部は、乱数生成部を有し、前記乱数生成部の生成乱数を前記複数のブランチに設定された記憶素子の初期値として入力する初期化処理を行なう。
さらに、本発明の半導体集積回路の一実施態様において、前記記憶素子は、レジスタである。
さらに、本発明の第2の側面は、前記請求項1〜7いずれかに記載の半導体集積回路を備えた情報処理装置にある。
さらに、本発明の第3の側面は、
情報処理装置において実行する出力データ拡散方法であり、
インターリーブ回路において、集積回路のテスト用接続経路であり複数のフリップフロップを接続したスキャンチェインからの出力の拡散処理を実行するデータ拡散ステップを有し、
前記データ拡散ステップは、
段数の異なる記憶素子からなる複数のブランチに対する、前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行う入出力ブランチを順次切り替えるブランチ選択ステップを有する出力データ拡散方法にある。
さらに、本発明の第4の側面は、
情報処理装置において出力データ拡散処理を実行させるプログラムであり、
インターリーブ回路において、集積回路のテスト用接続経路であり複数のフリップフロップを接続したスキャンチェインからの出力の拡散処理を実行させるデータ拡散ステップを有し、
前記データ拡散ステップは、
段数の異なる記憶素子からなる複数のブランチに対する、前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行う入出力ブランチを順次切り替えるブランチ選択ステップを有するプログラムにある。
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な画像処理装置やコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、画像処理装置やコンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の一実施例によれば、LSIなどの集積回路のテスト用パスとして設定されたスキャンチェインの出力部にデータ拡散処理を行うインターリーブ回路を設定した。インターリーブ回路は例えば段数の異なるレジスタによって構成される複数のブランチと、スキャンチェインからのデータ入力および外部出力を行うブランチを選択するセレクタを備え、選択ブランチを逐次変更する制御を実行する。本構成により、スキャンチェインからの出力ビット系列が拡散され外部に出力されることになり、フリップフロップに格納されたデータの漏洩を防止することができる。
半導体集積回路におけるスキャンチェインについて説明する図である。 スキャンチェインに接続されたフリップフロップを持つスキャンFFの構成を示す図である。 本発明の第1の実施形態に係る半導体集積回路の構成例について説明する図である。 本発明の第1の実施形態に係る半導体集積回路に設定されるインターリーブ回路の構成例について説明する図である。 本発明の第1の実施形態に係る半導体集積回路におけるインターリーブ回路を適用したデータ拡散処理シーケンスの例について説明する図である。 本発明の第2の実施形態に係る半導体集積回路の構成例について説明する図である。 本発明の第2の実施形態に係る半導体集積回路に設定されるインターリーブ回路および制御回路の構成例について説明する図である。 本発明の第2の実施形態に係る半導体集積回路に設定される制御回路内のROMの格納するブランチ選択表の構成例について説明する図である。 本発明の第2の実施形態に係る半導体集積回路におけるインターリーブ回路を適用したデータ拡散処理シーケンスの例について説明する図である。 本発明の第3の実施形態に係る半導体集積回路の構成例について説明する図である。 本発明の第3の実施形態に係る半導体集積回路に設定されるインターリーブ回路および初期化処理部の構成例について説明する図である。 本発明の第3の実施形態に係る半導体集積回路におけるインターリーブ回路を適用したデータ拡散処理シーケンスの例について説明する図である。
以下、図面を参照しながら本発明の半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
1.本発明の第1の実施形態の構成および処理について
2.本発明の第2の実施形態の構成および処理について
3.本発明の第3の実施形態の構成および処理について
[1.本発明の第1の実施形態の構成および処理について]
図3以下を参照して本発明の第1の実施形態について説明する。図3は本発明の第1の実施形態に係る半導体集積回路200を示す図である。
図3に示す本実施例の半導体集積回路200の回路部210は、先に図1を参照して説明した回路と同様の回路である。すなわち、様々なデータ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路221,222と、組み合わせ回路221,222に対する入力データや、組み合わせ回路221,222からの出力データを保持、転送するフリップフロップ(FF)211〜213を有する。
なお、図3に示すスキャンFF211〜213の各々は、1つのスキャンFFに限らず複数のスキャンFFを含む構成であってもよい。図3に示すスキャンFF211〜213を連結する1つの接続ラインが回路テスト用のスキャンチェインとして設定され、半導体集積回路の製造段階のテストなどに利用される。
半導体集積回路200の外部端子の構成も先に図1を参照して説明した構成と同様であり、スキャンイン(Scan−in)231、スキャンクロック(SCK)232、スキャンイネーブル(Scan−enable)233、およびスキャンアウト(Scan−out)234を有する。
図3に示す半導体集積回路200は、図1の構成と異なり、インターリーブ回路300を有する。インターリーブ回路300は、スキャンアウト(Scan−out)234の前段に設定される。すなわち、半導体集積回路200内のスキャンFF211〜213を接続するスキャンチェインの最後尾に位置するスキャンFF213の出力部側のスキャンアウト(Scan−out)234の前段にインターリーブ回路300が設けられる。
インターリーブ回路300は、スキャンFF213の出力を入力して、入力データを拡散するインターリーブ処理を実行し、処理データをスキャンアウト(Scan−out)234を介して出力する。
半導体集積回路200の外部端子は図1における半導体集積回路100と同一であり、これらの端子はスキャンテストにおいて使用される。スキャンテストにおいて、キャプチャー動作後、スキャンアウトするためにスキャンFF211〜213と組み合わせ回路221〜222からの最終出力ビット系列がインターリーブ回路300を経てスキャンアウト(Scan−out)234を介して出力される。
インターリーブ回路300の詳細を図4に示す。インターリーブ回路300は、図4に示すように、入力側、出力側ともN個のブランチを備えるセレクタ301およびセレクタ302を有しており、セレクタ制御部303がクロックサイクルごとに順にブランチを選択する構成となっている。
すなわちスキャンクロック(SCK)232にクロックが印加される度に、セレクタ制御部303がブランチ0、ブランチ1、ブランチ2、…と各ブランチをクロックに応じてN−1まで順に選択する。ブランチN−1が選択された後には、ブランチ0にもどり、前述の動作を繰り返す。このセレクタ301,302との間にはレジスタ311〜314がある。なお、本実施例ではレジスタを利用しているが、その他のメモリなど、様々な記憶素子を利用する構成としてもよい。
図には、4つのブランチのみを示しているが、0〜N−1のN個のブランチが設定されている。各ブランチのレジスタ数は、レジスタ311が1個、レジスタ312が2個、レジスタ313が3個と順次、1つずつ増加し、最終のブランチN−1のレジスタ314のレジスタ数はN個となっている。このように各ブランチは段数の異なるレジスタによって構成される。
すなわち、ブランチi(i=0、1、...、N−1)の各々に対してi+1個のレジスタが接続されている。
各ブランチにおけるレジスタはシフトレジスタを構成しており、セレクタ301によって選択されたブランチにあるレジスタには、セレクタ301からの出力値が入力として供給され、スキャンクロック(SCK)によりクロックが印加された場合には、すでに格納されている値を隣接(図中の例では右隣)レジスタに格納する、すなわちシフト動作を行うと共に、セレクタ301より供給されている値が格納される。つまりFIFO(First−In−First−Out)の動作を行う。このとき、セレクタ301およびセレクタ302によって選択されていないブランチにあるレジスタは、スキャンクロック(SCK)によらず値を保持する。
以下、インターリーブ回路300の機能を具体的に説明する。以下の説明では、ブランチ数N=4として説明する。
セレクタのブランチ選択は、セレクタ制御部303によって、セレクタ301およびセレクタ302とも、0、1、2、3、0、1、2、3、0、…と、クロックサイクルごとに同じブランチが同期して選択される。レジスタも先の説明と同様で、セレクタ301の選択ブランチにあるレジスタに入力が供給され、クロックサイクルごとにFIFO動作を行う。
インターリーブ回路300は、スキャンチェインの最終出力を入力したビット系列の拡散処理を実行する。インターリーブ回路300でビット系列がどのように拡散されるかについて、図5に示すタイミングチャートを用いて説明する。まず図5に記載の信号について説明する。
SCKはスキャンクロックを示す。
入力はセレクタ301への入力値を示し、そのビット系列を今{b0,b1,b2,b3,b4,b5,b6,b7,...}とする。
ブランチは、セレクタ301およびセレクタ302が選択しているブランチを示している。
レジスタ311、レジスタ312、レジスタ313およびレジスタ314はそれぞれ格納している値を示し、初期状態は簡単のためすべて0としている。
さらに出力はインターリーブ回路300の出力であるセレクタ302の出力を示している。
まず時刻t0ではインターリーブ回路300内の各レジスタ311〜314が0で初期化されている。入力セレクタ301にはスキャンチェインからの最初の出力ビットが供給されている。図に示す[入力]のb0である。セレクタ301および302はブランチ0を選択している。ただし、時間t0時点では、入力値b0はセレクタ301のブランチ0を経由してレジスタ311に格納されていない。格納処理は、クロック印加を契機として行われる。従って、インターリーブ回路300の出力はセレクタ302が選択しているブランチ0に接続されているレジスタ311の値となる。すなわち0が出力されている。
次に、時刻t1でSCKにクロックが印加されると、セレクタ301への入力値b0はセレクタ301のブランチ0を経由してレジスタ311に格納される。他のレジスタ312、レジスタ313およびレジスタ314の値は保持(オール0)される。同時にセレクタ301および302はブランチ1に切り替わり、セレクタ301にはb1が供給される。セレクタ302はブランチ1を選択しているため、その出力はブランチ1に接続されているレジスタ312の右端の値、すなわち0となる。
さらに時刻t2でSCKにクロックが印加されると、レジスタ312がシフト動作を実施すると共に、セレクタ301への入力値b1がセレクタ301のブランチ1を経由してレジスタ312の左端のレジスタに格納され、結果としてレジスタ312には{b1,0}が格納されることとなる。他のレジスタ311、313および314の値は保持したままである。同時にセレクタ301および302はブランチ2に切り替わり、セレクタ301にはb2が供給される。セレクタ302はブランチ2を選択しているため、出力はブランチ2に接続されているレジスタ313の右端の値、すなわち0となる。
以降、同様にして時刻t3ではレジスタ313の左端にセレクタ301への入力値b2が格納され{b2,0,0}となり、レジスタ314の右端の値すなわち0が出力される。時刻t4ではレジスタ314の左端にセレクタ301への入力値b3が格納され、{b3,0,0,0}となり、セレクタ301および302のセレクタはブランチ0に戻るので、レジスタ311の値、すなわちb0が出力される。時刻t5以降は図5のタイミングチャートを見れば明らかであるので、説明は割愛する。
図5に示すタイミングチャートから理解されるように、インターリーブ回路300に対する入力ビット系列と出力ビット系列は以下のような設定となる。
入力ビット系列
{b0,b1,b2,b3,b4,…}
は、インターリーブ回路300を経由することによって、
出力ビット系列
{0,0,0,0,b0,0,0,0,b4,b1,0,0,b8,b5,b2,0,b12,b9,b6,b3,b16,…}
となる。
このように、インターリーブ回路300の処理によって、インターリーブ回路300入力時に隣接していたビットが出力時には拡散される。すなわち、インターリーブ回路300に入力されたビット系列は、インターリーブ回路300から入力ビット系列と異なる拡散されたビット系列として出力される。
なお、正当なスキャンテストの実行者は、インターリーブ回路300において実行されるインターリーブ処理のアルゴリズムを知っている。従って、インターリーブ処理の逆処理を実行するアルゴリズムを例えばソフトウェアを適用して実行する。この処理によって、インターリーブ前のビット系列を取得してテスト処理を行うことが可能である。
一方、悪意のある解析者は、インターリーブ処理のアルゴリズムを知らないため、インターリーブ回路によって拡散されたデータのみからスキャンチェインに接続されたスキャンFFの保持値の解析を行うことになる。
以下、スキャンチェインに接続されたスキャンFFに秘密情報である暗号鍵データが格納されていたと仮定し、インターリーブ回路によって拡散されたデータを用いて鍵解析を実行する場合の鍵探索に必要な試行回数について考察する。ここでは、簡単のため、スキャンチェインを介してスキャンアウトされる値を256ビットのビット列とし、ここに128ビットの鍵が含まれているものとする。
インターリーブ回路を有さない従来の回路、例えば、図1に示す半導体集積回路100からスキャンアウトされたビット列の端から連続する128ビットをひとつの鍵候補として取り出し、そこから1ビットずつずらした値を各々鍵候補とすると、全部で128の鍵候補が得られる。この128組の鍵候補に対して、既知の平文を暗号化し、あらかじめ保持していた既知の暗号文との比較を繰り返すことにより、最大でも128回の試行で、スキャンアウトされたビット系列から容易に鍵を特定することができる。
これに対し、図3〜図5を参照して説明したインターリーブ回路300によって拡散されたビット系列を用いた鍵データの解析は以下のようになる。攻撃者はスキャン回路に対して実施されている対策、すなわちインターリーブ回路300が設けられていることを知らないと仮定した場合、攻撃者は少なくとも、スキャンアウトされた256ビットから128ビットの全鍵候補に関して鍵確認を行う必要がある。
この場合、鍵として取りうる値は、256ビットのスキャンアウト出力値から、128ビットの順序を考慮した上で重複なく取得した値となるため、攻撃者が実施する必要のある鍵確認試行回数は、
256128>>2128>>128
となる。このように、図3〜図5を参照して説明したインターリーブ回路300を持つ構成では、従来方式と比較して試行回数を大幅に増加させることが可能となる。
次に、少し条件を緩めて、攻撃者はスキャン回路に対して、インターリーブ回路によるビット拡散対策が実施されていることを知っているが、そのブランチ数Nは未知であると仮定する。
この場合、攻撃者は、インターリーブ回路のブランチ数Nを仮定してその逆関数をあらかじめ構成しておき、スキャンアウトから得られたビット系列を、前記Nを仮定したインターリーブ回路の逆関数に入力することによって、スキャンアウト(SO)出力時点でのビット系列候補、すなわち拡散されていないビット系列候補を得る。その後、得られたビット系列候補に対して、従来方式の場合と同様の攻撃を適用することにより、鍵候補を取得する。ここで攻撃者は、前述の攻撃手順を、想定されるブランチ数である2からNまでのすべてに対して実施する必要があるため、攻撃者が実施する必要のある試行回数は128(N−1)≧128となる。したがって、N>2の場合、従来方式と比較して攻撃者の試行回数を増加させることが可能となる。
一方、正当にスキャンテストを行うことができる製造業者は、前述のようにインターリーブ回路が適用されていること、およびそのブランチ数Nを知っているため、事前にインターリーブ回路の逆関数を構成することが可能となる。よってスキャンテスト時には、スキャンアウトされたビット系列を、この逆関数を利用して拡散前のビット系列に変換することにより、通常のスキャンテストを行うことができる。
上述したように、図3〜図5を参照して説明したインターリーブ回路300をスキャンチェインにおけるスキャンアウト前段に設定した半導体集積回路200は、スキャンアウトされるビット系列からスキャンFFに保持されたビット列を解析する困難性を著しく高めることが可能となる。従って秘匿性の高いデータを扱う半導体集積回路においてスキャンチェインを介した秘密情報の漏洩を効果的に防止することが可能となる。
なお、本実施例では、インターリーブ回路300を図4に示すようにセレクタとレジスタを用いて構成したが、同様のデータ拡散機能が実現可能な構成であれば、このようなセレクタとレジスタの組み合わせに限らず、その他の回路構成としてもよい。例えば、データ変換処理を行う演算回路や、暗号処理回路を適用した構成としてもよい。
[2.本発明の第2の実施形態の構成および処理について]
次に、図6以下を参照して本発明の第2の実施形態について説明する。図6は本発明の第2の実施形態に係る半導体集積回路400を示す図である。
図6に示す本実施例の半導体集積回路400の回路部210は、先に図1を参照して説明した回路と同様の回路である。すなわち、様々なデータ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路221,222と、組み合わせ回路221,222に対する入力データや、組み合わせ回路221,222からの出力データを保持、転送するフリップフロップ(FF)211〜213を有する。
なお、図6に示すスキャンFF211〜213の各々は、1つのスキャンFFに限らず複数のスキャンFFを含む構成であってもよい。図6に示すスキャンFF211〜213を連結する1つの接続ラインが回路テスト用のスキャンチェインとして設定され、半導体集積回路の製造段階のテストなどに利用される。
半導体集積回路400の外部端子の構成も先に図1を参照して説明した構成と同様であり、スキャンイン(Scan−in)231、スキャンクロック(SCK)232、スキャンイネーブル(Scan−enable)233、およびスキャンアウト(Scan−out)234を有する。
図6に示す半導体集積回路200は、先に図3〜図5を参照して説明した第1の実施形態と同様のインターリーブ回路300を有する。インターリーブ回路300は、スキャンアウト(Scan−out)234の前段に設定される。すなわち、半導体集積回路200内のスキャンFF211〜213を接続するスキャンチェインの最後尾に位置するスキャンFF213の出力部側のスキャンアウト(Scan−out)234の前段にインターリーブ回路300が設けられる。
インターリーブ回路300は、スキャンFF213の出力を入力して、入力データを拡散するインターリーブ処理を実行し、処理データをスキャンアウト(Scan−out)234を介して出力する。
図6に示す本実施例の半導体集積回路400は、さらに、制御回路450を有する。制御回路450はインターリーブ回路300におけるセレクタの制御、すなわちブランチの選択制御を行う。
半導体集積回路400の外部端子は図1における半導体集積回路100と同一であり、これらの端子はスキャンテストにおいて使用される。スキャンテストにおいて、キャプチャー動作後、スキャンアウトするためにスキャンFF211〜213と組み合わせ回路221〜222からの最終出力ビット系列がインターリーブ回路300を経てスキャンアウト(Scan−out)234を介して出力される。
インターリーブ回路300および制御回路450の具体的な構成例を図7に示す。制御回路450は、制御部451、カウンタ452、ROM453を有する。ROM453は、インターリーブ回路300のセレクタ301,302によるブランチの選択順序を記載したブランチ選択表を格納した記憶部である。
以下の説明では、ブランチ数N=4として説明する。
ブランチ選択表のアドレスに対応する要素を除いた要素数をMとし、ブランチ数N=4、要素数M=16とした場合のROM453に記憶されるブランチ選択表の例を図8に示す。図8に示すように、ブランチ選択表は、ROM453におけるブランチ選択表の各アドレス(address)に、0から3までのブランチ番号(Data)が順不同に格納されたリストである。
一方、カウンタ452は、0からM−1までをカウントするM進カウンタである。制御部451の制御により、スキャンクロック(SCK)に応じてカウント値を更新する。制御部451の制御により、ROM453に対してカウンタ452で生成したカウント値(0〜M−1)をアドレスとして供給する。
ROM453は、図8に示すブランチ選択表から、カウンタ452から供給されたカウント値(0〜M−1)に相当するアドレスを選択し、選択したアドレスに対応付けて記録されたブランチ番号(Data)を取得する。取得したブランチ番号(Data)が、制御部451の制御の下、各クロックタイミング毎にインターリーブ回路300のセレクタ制御部303に供給される。
インターリーブ回路300のセレクタ制御部303は、制御回路450から供給されたブランチ番号をセレクタ301および302のセレクト信号として適用する。この処理により、インターリーブ回路300には、制御回路450のROM450に格納されたブランチ選択表に設定されたブランチ番号が、順次提供される。
図8に示すブランチ選択表を適用した場合、インターリーブ回路300には、0,3,1,2,1,2,0,3・・・の各ブランチ番号がクロックタイミング毎に提供される。インターリーブ回路300のセレクタ制御部303は、制御回路450から供給されたこのブランチ番号をセレクタ301および302のセレクト信号として、クロックタイミング毎に順次適用する。
ROM453に格納するブランチ選択表を図8に示すような設定、すなわち、ブランチ選択順序を順不同なものとすることにより、セレクタ301および302におけるブランチが見かけ上ランダムに選択されているように動作させることが可能となる。
以下、第2の実施形態における制御回路450の動作と、それに伴うインターリーブ回路300の動作シーケンスについて説明する。今、簡単のため、N=4、M=16とし、制御回路450のROM453には図8に示すブランチ選択表が記憶されているものとする。この場合、カウンタ452は16進カウンタとなる。
制御回路450では、はじめにカウンタ452の初期値(ここでは仮に0とする)がROM453のアドレスに供給され、ROM453からはアドレス0x00に対応するブランチ選択表の値、すなわち0が出力される。これにより、インターリーブ回路300におけるセレクタ301および302ではブランチ0が選択される。
次に、スキャンクロック(SCK)が入力されると、カウンタ452がカウントアップし、ROM453には1が供給される。これに伴い、ROM453はアドレス0x01に対応するブランチ選択表の値、すなわち3を出力する。したがって、セレクタ301および302ではブランチ3が選択されることとなる。
以下、制御回路450は、スキャンクロック(SCK)が入力される度に同様の動作を実行する。これにより、セレクタ301および302では、ROM453に格納されたブランチ選択表に従ってブランチが選択されるため、ブランチ選択表に記載の選択順序を順不同なものとすることにより、見かけ上ランダムにブランチが選択されているよう動作させることが可能となっている。
以上の動作による拡散処理、すなわちインターリーブ回路300に入力されたビット系列{b0,b1,b2,b3,…}がどのように拡散するかについて、図9のタイミングチャートを用いて説明する。図9の信号名は、先に説明した実施例1に対応する図5に示す信号名と同様である。なお、図5同様、簡単のため各レジスタ及びカウンタにおける初期値は0であるものとする。
時刻t0では、入力セレクタ301にはスキャンチェインからの最初の出力ビットが供給されている。図に示す[入力]のb0である。この時点で、制御回路450のカウンタ452からの出力は初期値0であるため、ROM453の出力も0となり、セレクタ301および302が選択するブランチは0となる。ただし、時間t0時点では、入力値b0はセレクタ301のブランチ0を経由してレジスタ311に格納されていない。格納処理は、クロック印加を契機として行われる。従って、インターリーブ回路300の出力はセレクタ302が選択しているブランチ0に接続されているレジスタ311の値となる。すなわち0が出力されている。
次に、時刻t1でSCKにクロックが印加されると、セレクタ301への入力値b0はセレクタ301のブランチ0を経由してレジスタ311に格納される。このときレジスタ312、313および314の値は保持(オール0)される。同時にカウンタ452がインクリメントされ1となる。これは、図8に示すブランチ選択表のアドレス0x01に対応する。
ROM453のブランチ選択表のアドレス0x01に対応するブランチ番号3が、インターリーブ回路300のセレクタ制御部303に供給される。これによりセレクタ301および302のセレクタはブランチ3に切り替わり、セレクタ302の出力はレジスタ314の右端の値、すなわち0となる。また、セレクタ301にはb1が供給され、それがレジスタ314に供給される。
さらに時刻t2でSCKにクロックが印加されると、レジスタ314が1−bitシフト動作を行うと共に、b1がセレクタ301のブランチ3を経由してレジスタ314の左端のレジスタに格納される。この結果、レジスタ314の値は{b1,0,0,0}となる。同時にカウンタ452がインクリメントされ、2となる。するとROM453はセレクタ301および302のセレクト信号に1を供給する。これによりセレクタ301および302のセレクタはブランチ1に切り替わり、セレクタ302の出力はレジスタ312の右端の値、すなわち0となり、セレクタ301にはb2が供給される。
時刻t3以降も同様であり、図9のタイミングチャートにより動作が確認できるので説明は省略する。
図9のタイミングチャートから理解されるように、インターリーブ回路300に対する入力ビット系列と出力ビット系列は以下のような設定となる。
入力ビット系列
{b0,b1,b2,b3,b4,…}
は、インターリーブ回路300を経由することによって、
出力ビット系列
{0,0,0,0,0,0,b0,0,0,b6,0,b2,0,b3,b4,b9,b15,b1,b11,b5,…}
となる。
このように、インターリーブ回路300の処理によって、インターリーブ回路300入力時に隣接していたビットが出力時には拡散される。すなわち、インターリーブ回路300に入力されたビット系列は、インターリーブ回路300から入力ビット系列と異なる拡散されたビット系列として出力される。
なお、正当なスキャンテストの実行者は、インターリーブ回路300において実行されるインターリーブ処理のアルゴリズムを知っている。従って、インターリーブ処理の逆処理を実行するアルゴリズムを例えばソフトウェアを適用して実行する。この処理によって、インターリーブ前のビット系列を取得してテスト処理を行うことが可能である。
一方、悪意のある解析者は、インターリーブ処理のアルゴリズムを知らないため、インターリーブ回路によって拡散されたデータのみからスキャンチェインに接続されたスキャンFFの保持値の解析を行うことになる。
以下、スキャンチェインに接続されたスキャンFFに秘密情報である暗号鍵データが格納されていたと仮定し、インターリーブ回路によって拡散されたデータを用いて鍵解析を実行する場合の鍵探索に必要な試行回数について考察する。ここでは、簡単のため、スキャンチェインを介してスキャンアウトされる値を256ビットのビット列とし、ここに128ビットの鍵が含まれているものとする。
まず、攻撃者がスキャン回路に対して実施されている対策に関して未知である場合について考察する。この場合、第1の実施形態同様、攻撃者はスキャンアウトされた出力から、取りうるすべての鍵候補に関して試行を実施する必要があるため、その最大試行回数は256128となる。よって、第1の実施形態同様、攻撃者に対してその試行回数を大幅に増加させることが可能となっている。
次に、スキャン回路に対してインターリーブ回路が対策として利用されていることが既知である一方、ブランチ数NおよびROMに記憶されているブランチ選択表が未知である場合について考える。この場合攻撃者は、第1の実施形態同様、インターリーブ回路におけるブランチ数Nを探索する必要があることに加え、ROMに格納されたブランチ選択表にあるブランチ選択順序をも探索する必要がある。
以下、攻撃者が実施する手順について具体的に説明する。攻撃者はまず、ブランチ数をiと仮定した上で、ROMに記憶されている表のブランチ選択順序として取りうるすべての組み合わせに対して試行を行う。このため、拡散されたビット系列をSOからの出力に戻すための試行回数は、仮定したブランチ数iに対して最大i!となる。これに加えて攻撃者は、前述の試行の各々において、256ビットの出力から128ビットの鍵を順に探索するという試行が必要となるため、仮定したブランチ数iに対して攻撃者が行う必要のある試行回数は、最大128×i!となる。さらに攻撃者は、ブランチ数iとして2からNまでの全候補に前述した試行を適用する必要がある。このため、攻撃者が行うべき試行の最大回数は、以下の値となる。
Figure 2010261768
また、ROMに格納されているブランチ選択表の要素数Mは、通常M≧Nであるため、この場合には最大、以下の試行回数となる。
Figure 2010261768
また図8のブランチ選択表は、ブランチ選択順序が重複しないようにその要素を選択しているが、攻撃者の試行回数を増加させるために、重複するよう選択してもよい。この場合には最大試行回数は、以下の回数となり、さらに試行回数が増加する。
Figure 2010261768
上述したように、ランダムなブランチ選択を可能とした第2の実施形態の構成を適用することにより、前述の第1の実施形態よりもさらに攻撃者の試行回数を増加させることが可能となる。なお、第2の実施形態では、攻撃者はインターリーブ回路のブランチ数Nに加え、ブランチ選択表の各要素をも特定する必要がある。さらに、ブランチ選択表の要素数MはROMのサイズに合わせて増加させることが可能であるため、インターリーブ回路の利用が既知である場合においても、攻撃者の試行回数を増加させることが可能となっている。
一方、正当にスキャンテストを行うことができる製造業者は、前述のようにインターリーブ回路が適用されていること、およびそのブランチ数Nおよびブランチ選択表の内容を知っているため、事前にインターリーブ回路の逆関数を構成することが可能となる。よってスキャンテスト時には、スキャンアウトされたビット系列を、この逆関数を利用して拡散前のビット系列に変換することにより、通常のスキャンテストを行うことができる。
以上、説明した第2の実施形態では、ブランチが見かけ上ランダムに選択されているように動作させる一形態として、ROMに格納されたブランチ選択表を用いてブランチ選択の信号を発生させている。しかしながら、その本質は、ブランチをランダムに選択することによって、攻撃者が実施すべき試行回数を増加させることにあり、これを達成するものであれば、この方法に限定されないことは明らかである。例えば、カウンタとROMを利用する代わりに、乱数発生器を用いてブランチの選択信号を発生させるといった構成を適用してもよい。
[3.本発明の第3の実施形態の構成および処理について]
最後に図6以下を参照して本発明の第1の実施形態について説明する。図3は本発明の第1の実施形態に係る半導体集積回路400を示す図である。
この第3の実施形態は、前述の第1の実施形態、または第2の実施形態と組み合わせて適用することが可能な実施例である。前述の第1および第2の実施形態では、インターリーブ回路を用いてビット系列を拡散することで、攻撃者に対して、ビット系列に含まれる鍵などの重要情報の解析を困難にしている。
しかしながら、前述の第1,2の実施形態において説明した処理例をそのまま適用すると、攻撃者は各実施形態において説明した試行回数よりもはるかに少ない試行回数で鍵を特定できてしまう可能性が存在する。これを第1の実施形態を例として具体的に説明する。
第1の実施形態では、簡単のためインターリーブ回路内の各レジスタを0のような固定値で初期化していた。このような初期化設定を行った場合には、拡散された最初のビット系列であるb0が出力されるまで、0または1といった同一の値が出力されることとなる。ここで、第1の実施形態において示したインターリーブ回路の特性から、スキャンアウト(Scan−out)より出力される最初のNビットは、インターリーブ回路内に存在する各レジスタの初期値となることが分かる。よって攻撃者は、スキャンテスト実施開始時から出力される固定値の出力回数を測定することによって、インターリーブ回路におけるブランチ数Nを類推可能となる。よって、第1および第2の実施形態を実際に適用する場合には、各レジスタの初期値を固定化しないことが求められる。これを満たす構成を以下、第3の実施形態として説明する。
第3の実施形態では、インターリーブ回路内のレジスタを乱数で初期化する。つまり第3の実施形態は第1および第2の実施形態に対する付加機能として位置づけられる。
図10は、本発明の第3の実施形態に係る半導体集積回路500を示す図である。図10に示す例は、先に図3を参照して説明した前述の第1の実施形態の半導体集積回路200に初期化処理部550を追加した構成である。
図10に示す本実施例の半導体集積回路500の回路部210は、先に図1を参照して説明した回路と同様の回路である。すなわち、様々なデータ処理や演算処理を実行する複数の回路素子からなる組み合わせ回路221,222と、組み合わせ回路221,222に対する入力データや、組み合わせ回路221,222からの出力データを保持、転送するフリップフロップ(FF)211〜213を有する。
インターリーブ回路300は、先に説明した第1の実施形態のインターリーブ回路と同様の処理を実行する回路である。スキャンFF213の出力を入力して、入力データを拡散するインターリーブ処理を実行し、処理データをスキャンアウト(Scan−out)234を介して出力する。
インターリーブ回路300および初期化処理部550の具体的な構成例を図11に示す。初期化処理部550は、制御部551および乱数生成部552を有する。制御部551はインターリーブ回路300内にあるレジスタの初期化処理制御を行い、乱数生成部552はインターリーブ回路300内にあるレジスタを初期化するための設定値を乱数として生成する処理を行う。
制御部551はインターリーブ回路300内のレジスタ入力を乱数生成部552からの入力に切り替え、SCKにクロックを印加すると、すべてのレジスタが一度に乱数で初期化される構成になっている。
乱数生成部552は、インターリーブ回路300内のレジスタの初期化に必要な乱数列を発生する。つまり、インターリーブ回路300内にZビット分のレジスタがあれば、Zビットの乱数列を発生し、これが各レジスタの初期化処理時に各レジスタに供給される。
以下、乱数列によって初期化された各レジスタの具体的な値を例示する。
インターリーブ回路300のブランチ数N=4の場合を例として説明する。ブランチ数N=4の場合、インターリーブ回路300のレジスタ数は、
1+2+3+4=10となる。
乱数生成部552は、10個のレジスタ設定値に対応する
乱数列{r0,r1,r2,…,r9}を生成する。
これらの値によって各レジスタが初期化される。この場合、例えば、レジスタ311の値は{r0}、レジスタ312は{r2,r1}、レジスタ313は{r5,r4,r3}、レジスタ314は{r9,r8,r7,r6}となる。
図12は第1の実施形態に対して前述の乱数によるレジスタの初期化を行った場合のタイミングチャートである。各信号は図5を参照して説明した信号と同様である。
時刻t0のとき、初期化され、各レジスタには前述の乱数値が格納されている状態である。時刻t1以降、スキャンチェインでつながったスキャンFFに格納された値がインターリーブ回路300内のレジスタに格納されていく。インターリーブ回路300に入力されるビット系列は{b0,b1,b2,b3,b4,…}であり、これは第1の実施形態の動作説明での入力ビット系列と同様である。第1の実施形態と同様なので、詳細な動作説明は省略する。
図12に示すタイミングチャートから理解されるように、インターリーブ回路300に対する入力ビット系列と出力ビット系列は以下のような設定となる。
入力ビット系列
{b0,b1,b2,b3,b4,…}
は、インターリーブ回路300を経由することによって、
{r0,r1,r3,r6,b0,r2,r4,r7,b4,b1,r5,r8,…}
となる。
第1の実施形態で示した図5のスキャンアウトされたビット系列には、初期化されていた値、すなわち0が出力されていた。ところが、第3の実施形態では、0が出力されていた部分に、乱数が出力される。これにより次のような効果が得られる。
第1の実施形態で例示したように、インターリーブ回路内の各レジスタを固定値で初期化した場合には、スキャンテスト開始時から出力される固定値(第1の実施形態における例では0)の連続回数からインターリーブ回路のブランチ数Nが推測可能となるため、インターリーブ回路によるビット拡散の効果を無効化可能となっていた。しかしながら、第3の実施形態を適用することにより、連続して出力される固定値部分が乱数となっているため、スキャンアウトによって出力されたビット系列からブランチ数を推測することが困難となり、攻撃者は各実施形態において示した通り、ブランチ数候補を全探索する必要がある。
一方、正当にスキャンテストを行うことができる製造業者は、インターリーブ回路の逆関数を用意しておき、スキャンアウトのビット系列をインターリーブ入力前のビット系列に変換することにより、通常のスキャンテストを行うことができる。つまり初期化する機能を付加しても、それによってスキャンアウトされたビット系列に対して新たな操作を必要としない。
第3の実施形態ではインターリーブ回路内のレジスタの初期化の一例を示したが、これ以外にも、インターリーブ回路内の各レジスタを、攻撃者にとって未知である値に毎回初期化する機能を備えるものであればよい。
なお、上述した説明では、第1の実施形態に初期化処理部を追加した構成例を説明したが、第2の実施形態に初期化処理部を組み合わせてもよい。初期化処理部を追加することで、秘密情報の解析困難性を高めることが可能となる。
なお、先にも簡単に説明したが、インターリーブ回路300は、データ拡散機能が実現可能な構成であれば、このようなセレクタとレジスタの組み合わせに限らず、その他の回路構成としてもよい。例えば、データ変換処理を行う演算回路や、暗号処理回路を適用した構成としてもよい。また、秘密情報の漏洩防止の観点から、スキャンチェインを鍵情報などの秘密情報が格納されるレジスタを連続して接続するのではなく、秘密情報の格納されるレジスタを不連続になるような設定としたスキャンチェインのレイアウトとすることが効果的である。すなわち、例えば暗号鍵のような秘密譲歩が格納される複数のレジスタを、連続接続することなく不連続な接続としたスキャンチェインを設定することで、スキャンチェインを介した出力からのデータ解析困難性をさらに高めることが可能となる。
なお、上記実施例においては集積回路の構成を中心として説明したが、上記の実施例において説明した半導体集積回路を例えばPC等の情報処理装置に装着し、情報処理装置内において上述した各実施例の半導体集積回路におけるデータ拡散処理に対する制御を行う構成としてもよい。この処理制御は、上記の実施例において説明した半導体集積回路内部の制御部において、半導体集積回路内のメモリに格納したプログラムを利用して実行することが可能である。あるいは、情報処理装置内の半導体集積回路と接続された他のLSI素子などに形成された制御部やメモリを利用して、プログラムを実行して上記の構成を持つ半導体集積回路にコマンドを入力してインターリーブ処理などのデータ拡散処理に対する制御を行う構成としてもよい。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
以上、説明したように、本発明の一実施例構成によれば、LSIなどの集積回路のテスト用パスとして設定されたスキャンチェインの出力部にデータ拡散処理を行うインターリーブ回路を設定した。インターリーブ回路は例えば段数の異なるレジスタによって構成される複数のブランチと、スキャンチェインからのデータ入力および外部出力を行うブランチを選択するセレクタを備え、選択ブランチを逐次変更する制御を実行する。本構成により、スキャンチェインからの出力ビット系列が拡散され外部に出力されることになり、フリップフロップに格納されたデータの漏洩を防止することができる。
100 半導体集積回路
111〜113 スキャンFF
121,122 組み合わせ回路
131 スキャンイン(Scan−in)
132 スキャンクロック(SCK)
133 スキャンイネーブル(Scan−enable)
134 スキャンアウト(Scan−out)
151 マルチプレクサ
152 フリップフロップ(FF)
200 半導体集積回路
211〜213 スキャンFF
221,222 組み合わせ回路
231 スキャンイン(Scan−in)
232 スキャンクロック(SCK)
233 スキャンイネーブル(Scan−enable)
234 スキャンアウト(Scan−out)
300 インターリーブ回路
301,302 セレクタ
303 セレクタ制御部
311〜314 レジスタ
400 半導体集積回路
450 制御回路
451 制御部
452 カウンタ
453 ROM
500 半導体集積回路
550 初期化処理部
551 制御部
552 乱数生成部

Claims (11)

  1. 集積回路のテスト用接続経路であり複数のフリップフロップを接続したスキャンチェインと、
    前記スキャンチェインの出力部に設けられたインターリーブ回路を有し、
    前記インターリーブ回路は、
    段数の異なる記憶素子からなる複数のブランチと、
    前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行う入出力ブランチを選択するセレクタと、
    前記入出力ブランチを、所定タイミング毎に切り替える処理を実行するセレクタ制御部、
    を有する半導体集積回路。
  2. 前記セレクタ制御部は、
    前記入出力ブランチを、前記スキャンチェインからのデータ入力毎に切り替える処理を実行する請求項1に記載の半導体集積回路。
  3. 前記セレクタ制御部は、
    段数の異なる記憶素子からなる複数のブランチを、予め設定された切り替えシーケンスに従って切り替える処理を実行する請求項1に記載の半導体集積回路。
  4. 前記半導体集積回路は、
    前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行うブランチを選択するためのブランチ選択表であり、メモリアドレスとブランチ識別子とを対応付けたブランチ選択表を格納したメモリと、
    所定タイミング毎にカウント値をカウントするカウンタと、
    前記ブランチ選択表から、前記カウンタのカウント値に応じたメモリアドレスに対応するブランチ識別子を前記インターリーブ回路のセレクタ制御部に出力する制御部を有する制御回路を備え、
    前記セレクタ制御部は、前記制御回路から入力するブランチ識別子に対応するブランチを前記入出力ブランチとして選択する処理を行う請求項1に記載の半導体集積回路。
  5. 前記ブランチ選択表は、前記メモリアドレスに対してランダムにブランチ識別子を対応付けた設定を有し、
    前記セレクタ制御部は、前記制御回路から入力するランダムシーケンスのブランチ識別子に対応させて、前記入出力ブランチをランダムに選択する処理を行う請求項4に記載の半導体集積回路。
  6. 前記半導体集積回路は、さらに、
    前記複数のブランチに設定された記憶素子の初期値を設定する初期化処理部を有する請求項1〜5いずれかに記載の半導体集積回路。
  7. 前記初期化処理部は、
    乱数生成部を有し、
    前記乱数生成部の生成乱数を前記複数のブランチに設定された記憶素子の初期値として入力する初期化処理を行なう請求項6に記載の半導体集積回路。
  8. 前記記憶素子は、レジスタである請求項1〜7いずれかに記載の半導体集積回路。
  9. 前記請求項1〜8いずれかに記載の半導体集積回路を備えた情報処理装置。
  10. 情報処理装置において実行する出力データ拡散方法であり、
    インターリーブ回路において、集積回路のテスト用接続経路であり複数のフリップフロップを接続したスキャンチェインからの出力の拡散処理を実行するデータ拡散ステップを有し、
    前記データ拡散ステップは、
    段数の異なる記憶素子からなる複数のブランチに対する、前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行う入出力ブランチを順次切り替えるブランチ選択ステップを有する出力データ拡散方法。
  11. 情報処理装置において出力データ拡散処理を実行させるプログラムであり、
    インターリーブ回路において、集積回路のテスト用接続経路であり複数のフリップフロップを接続したスキャンチェインからの出力の拡散処理を実行させるデータ拡散ステップを有し、
    前記データ拡散ステップは、
    段数の異なる記憶素子からなる複数のブランチに対する、前記スキャンチェインからのデータ入力と、前記インターリーブ回路からの出力を行う入出力ブランチを順次切り替えるブランチ選択ステップを有するプログラム。
JP2009111748A 2009-05-01 2009-05-01 半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム Withdrawn JP2010261768A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009111748A JP2010261768A (ja) 2009-05-01 2009-05-01 半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム
US12/765,476 US20100281316A1 (en) 2009-05-01 2010-04-22 Semiconductor integrated circuit, information processing apparatus, output data diffusion method, and program
CN201010159126.5A CN101877248A (zh) 2009-05-01 2010-04-23 半导体集成电路、信息处理装置和输出数据扩散方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009111748A JP2010261768A (ja) 2009-05-01 2009-05-01 半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2010261768A true JP2010261768A (ja) 2010-11-18

Family

ID=43019776

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009111748A Withdrawn JP2010261768A (ja) 2009-05-01 2009-05-01 半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム

Country Status (3)

Country Link
US (1) US20100281316A1 (ja)
JP (1) JP2010261768A (ja)
CN (1) CN101877248A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013002848A (ja) * 2011-06-13 2013-01-07 Fujitsu Semiconductor Ltd 半導体装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9097764B2 (en) * 2013-01-21 2015-08-04 Texas Instruments Incorporated Scan chain in an integrated circuit
US9383411B2 (en) * 2013-06-26 2016-07-05 International Business Machines Corporation Three-dimensional processing system having at least one layer with circuitry dedicated to scan testing and system state checkpointing of other system layers
CN106782644A (zh) * 2016-12-06 2017-05-31 凯芯有限公司 SiDNA序列生成及识别方法和装置
US10976366B2 (en) * 2018-10-19 2021-04-13 Silicon Laboratories Inc. Two pin scan interface for low pin count devices

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4547887A (en) * 1983-11-30 1985-10-15 The United States Of America As Represented By The Secretary Of The Army Pseudo-random convolutional interleaving
US5241563A (en) * 1992-08-10 1993-08-31 General Instrument Corporation Method and apparatus for communicating interleaved data
US5719875A (en) * 1996-06-11 1998-02-17 Lucent Technologies Inc. Systematic convolution interleavers and deinterleavers
KR100237745B1 (ko) * 1997-05-23 2000-01-15 김영환 회전형 인터리버/디인터리버의 메모리 주소 발생장치 및 그 방법
DE69907011T2 (de) * 1998-10-30 2004-03-25 Broadcom Corp., Irvine Verallgemeinerter faltungsver- und -entschachteler
US20020003885A1 (en) * 1999-12-08 2002-01-10 Digital Cinema Systems Corporation Enhanced encryption of digital communication system
FR2812150A1 (fr) * 2000-07-18 2002-01-25 St Microelectronics Sa Dispositif d'emission/reception de donnees numeriques capable de traiter des debits differents, en particulier dans un environnement vdsl
WO2002071231A1 (en) * 2001-02-15 2002-09-12 Nokia Corporation Method and arrangement for protecting information
US7228440B1 (en) * 2002-02-13 2007-06-05 Lsi Corporation Scan and boundary scan disable mechanism on secure device
US7185249B2 (en) * 2002-04-30 2007-02-27 Freescale Semiconductor, Inc. Method and apparatus for secure scan testing
JP3671948B2 (ja) * 2002-09-24 2005-07-13 ソニー株式会社 半導体集積回路とその試験方法
US7565591B2 (en) * 2004-01-19 2009-07-21 Nxp B.V. Testing of circuits with multiple clock domains
US7334173B2 (en) * 2005-06-28 2008-02-19 Transmeta Corporation Method and system for protecting processors from unauthorized debug access
US7546504B2 (en) * 2006-08-11 2009-06-09 International Business Machines Corporation System and method for advanced logic built-in self test with selection of scan channels
CN101251580A (zh) * 2008-04-17 2008-08-27 中国科学院计算技术研究所 一种可诊断扫描链故障的电路装置及其诊断方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013002848A (ja) * 2011-06-13 2013-01-07 Fujitsu Semiconductor Ltd 半導体装置
US8683278B2 (en) 2011-06-13 2014-03-25 Fujitsu Semiconductor Limited Semiconductor device

Also Published As

Publication number Publication date
CN101877248A (zh) 2010-11-03
US20100281316A1 (en) 2010-11-04

Similar Documents

Publication Publication Date Title
Cui et al. Static and dynamic obfuscations of scan data against scan-based side-channel attacks
Sengar et al. Secured flipped scan-chain model for crypto-architecture
Chiu et al. A secure test wrapper design against internal and boundary scan attacks for embedded cores
Da Rolt et al. Are advanced DfT structures sufficient for preventing scan-attacks?
Chakraborty et al. Security against hardware Trojan attacks using key-based design obfuscation
Da Rolt et al. New security threats against chips containing scan chain structures
Da Silva et al. Preventing scan attacks on secure circuits through scan chain encryption
Rolt et al. A novel differential scan attack on advanced DFT structures
Das et al. PUF-based secure test wrapper design for cryptographic SoC testing
Lesperance et al. Hardware Trojan detection using exhaustive testing of k-bit subspaces
JP2010261768A (ja) 半導体集積回路、情報処理装置、および出力データ拡散方法、並びにプログラム
Vaghani et al. On securing scan design through test vector encryption
Ege et al. Differential scan attack on AES with X-tolerant and X-masked test response compactor
Valea et al. Stream vs block ciphers for scan encryption
JP2010266417A (ja) 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム
Banik et al. Improved scan-chain based attacks and related countermeasures
Huang et al. Trace buffer attack on the AES cipher
Inoue et al. Partial scan approach for secret information protection
Dhanuskodi et al. Efficient register renaming architectures for 8-bit AES datapath at 0.55 pJ/bit in 16-nm FinFET
Chandran et al. SS-KTC: A high-testability low-overhead scan architecture with multi-level security integration
Talukdar et al. TaintLock: Preventing IP theft through lightweight dynamic scan encryption using taint bits
Cortez et al. Testing PUF-based secure key storage circuits
Chen et al. Balancing testability and security by configurable partial scan design
Ali et al. New scan-based attack using only the test mode and an input corruption countermeasure
Popat et al. A novel countermeasure against differential scan attack in AES algorithm

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120703