JP2006229863A - 暗号化/復号化装置、通信コントローラ及び電子機器 - Google Patents

暗号化/復号化装置、通信コントローラ及び電子機器 Download PDF

Info

Publication number
JP2006229863A
JP2006229863A JP2005044395A JP2005044395A JP2006229863A JP 2006229863 A JP2006229863 A JP 2006229863A JP 2005044395 A JP2005044395 A JP 2005044395A JP 2005044395 A JP2005044395 A JP 2005044395A JP 2006229863 A JP2006229863 A JP 2006229863A
Authority
JP
Japan
Prior art keywords
encryption
data
decryption
processing
content
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
JP2005044395A
Other languages
English (en)
Inventor
Tomonori Kumagai
友則 熊谷
伸之 ▲斎▼藤
Nobuyuki Saito
Mitsuhiro Matsuo
光浩 松尾
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2005044395A priority Critical patent/JP2006229863A/ja
Priority to US11/355,999 priority patent/US20060188098A1/en
Publication of JP2006229863A publication Critical patent/JP2006229863A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化/復号化装置、通信コントローラ及び電子機器を提供する。
【解決手段】 暗号化号化/復号化装置100は、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、コンテンツデータを分割した各分割データに対して暗号化又は復号化処理を行う暗号化/復号化処理部と、コンテンツ毎に暗号化/復号化処理部の処理結果又は入力値が保存される中間値記憶部とを含む。第2のコンテンツデータの1つの分割データに対して暗号化/復号化処理部が行った処理結果又は入力値が中間値記憶部に保存された後に、第1のコンテンツデータの第Kの分割データに対する処理結果又は入力値が中間値記憶部から読み出され、第1のコンテンツデータの第(K+1)の分割データに対し暗号化/復号化処理部が該処理結果又は入力値を用いて暗号化又は復号化処理を行う。
【選択図】 図10

Description

本発明は、暗号化/復号化装置、通信コントローラ及び電子機器に関する。
近年、MPEG(Moving Picture Experts Group、より具体的にはMPEG2)ストリームを配信するBSデジタル放送等のデジタル放送が脚光を浴び、デジタル放送チューナやデジタル放送のコンテンツの記録・再生装置等の電子機器の普及が著しい。このため、コンテンツの内容がデジタル的に不正に複製されるのを防止すべく、複製防止技術が導入されている。
デジタル放送チューナと記録・再生装置は、例えばIEEE(Institute of Electrical and Electronics Engineers)1394に代表される汎用高速シリアルインタフェースを介して接続される。IEEE1394向けの複製防止技術として、DTCP(Digital Transmission Content Protect)規格が策定されている。現在では、このDTCP規格が、インターネットの普及等に伴うAVネットワークの複製防止技術として利用されている(例えばDTCPoverIP)。DTCP規格の詳細は、「Digital Transmission Content Protection Specification Volume1 (Informational Version)」(Revision 1.3, January 7, 2004)に記載されている。
DTCPoverIP規格では、DES(Data Encryption Standard)に代わる米国の次世代標準化暗号化アルゴリズムであるAES(Advanced Encryption Standard)を採用する必要がある。AESは、DESに比べて解読されにくい。DESは、64ビットのデータ長を1ブロックとして暗号化処理又は復号化処理を行い、AESは、例えば128ビットのデータ長を1ブロックとして暗号化処理又は復号化処理を行う。AES及びDESのようにブロック単位で処理される方式は、ブロック暗号方式と呼ばれている。
ブロック暗号方式では、入力データが同じ場合、出力データも同じとなる。このような暗号強度の低下を防止するため、ブロック暗号方式では種々の操作モード(mode of operation)が定められる。ブロック暗号方式の操作モードとして、例えばECB(electronic codebook)モード、CBC(cipher block chaining)モード、CFB(cipher feedback)モード、及びOFB(output feedback)モードがある。ECBモードを除くCBCモード、CFBモード、及びOFBモードでは、処理中のブロック以外のブロックのデータを当該ブロックの処理に反映させることで、入力データが同じであっても出力データを異ならせることができる。その一方、CBCモード、CFBモード、及びOFBモードで復号化処理を行う場合、上記の処理中のブロック以外のブロックのデータが必要となる。
このようなブロック暗号方式の暗号化処理を行う装置として、例えば特許文献1には、CBCモードとCFBモードの両方を実行するために初期ベクトル、処理中間値又は処理最終結果を格納するデータ格納手段を設けたものが開示されている。
また例えば特許文献2には、CBCモードにおいてブロック単位に中間値を格納し、該中間値を用いてメッセージの改ざんをチェックするようにした装置が開示されている。
特開2001−211149号公報 特開2000−75785号公報
ところで、DTCPoverIP規格で規定された複製防止技術が採用されたコンテンツデータが、ネットワーク経由で複数の電子機器間で送受信される。この場合、認証された機器同士で鍵が供給されるため、相手側の機器に対応した鍵の管理が必要となる。
一方、DTCPoverIPでは、コンテンツデータのデータサイズが最大128メガバイトと規定されている。そのため、複数の電子機器からコンテンツデータを受信した場合、各コンテンツデータを分割し、分割したデータに対してコンテンツデータに対応した鍵を用いる必要がある。
しかしながら、CBCモードのように他のブロックのデータを用いて暗号化されたコンテンツデータを復号化するためには、該他のブロックのデータが復号化処理時に必要となる。そのため、特許文献1や特許文献2に開示されている技術では、供給元で暗号化処理が行われた単位で復号化処理を行わざるを得ず、例えば128メガバイトの容量を有するバッファを備えておく必要がある。また、一方のコンテンツデータの復号化処理が行われている間、他方のコンテンツデータの復号化処理を行うことができず、コンテンツデータのリアルタイム性を損なう事態も生じてしまう。
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化/復号化装置、通信コントローラ及び電子機器を提供することにある。
上記課題を解決するために本発明は、
第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化/復号化装置であって、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して暗号化処理又は復号化処理を行う暗号化/復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化/復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記第2のコンテンツデータを分割した複数の分割データの1つの分割データに対して前記暗号化/復号化処理部が行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存された後に、
前記第1のコンテンツデータを分割した複数の分割データのうち第K(Kは自然数)の分割データに対する前記暗号化/復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データに対し前記暗号化/復号化処理部が前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化/復号化装置に関係する。
また本発明に係る暗号化/復号化装置では、
前記中間値記憶部には、
コンテンツ毎に、鍵、初期値、前記暗号化/復号化処理部の処理結果、又は入力値が保存されてもよい。
これらの発明においては、暗号化/復号化処理部が、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対して処理を行い、中間値記憶部にはコンテンツ毎に暗号化/復号化処理部の処理結果、又は入力値が保存される。このため、第1のコンテンツデータの暗号化又は復号化処理が中断した場合であっても、中間値記憶部から保存された処理結果、又は入力値を読み出し、第1のコンテンツデータの別の分割データの処理に、該処理結果、又は入力値を反映させた暗号化又は復号化処理を行うことができる。こうすることで、複数のコンテンツデータの暗号化又は復号化処理のリアルタイム性を維持させることができる。また、分割データをバッファリングするためのメモリの容量を大幅に削減できるようになる。
また本発明は、
第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化/復号化装置であって、
前記複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第1の暗号化処理又は第1の復号化処理を行う第1の暗号化/復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第2の暗号化処理又は第2の復号化処理を行う第2の暗号化/復号化処理部と、
コンテンツ毎に、ブロック単位で処理された前記第1及び第2の暗号化/復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第1及び第2の暗号化/復号化処理部の一方が行った前記第1又は第2の復号化処理後の復号化データが前記記憶部に保存されると共に、
前記第1又は第2の復号化処理後の前記復号化データに対して前記第1及び第2の暗号化/復号化処理部の他方が行った前記第1又は第2の暗号化処理後のデータが前記出力データとして前記記憶部に保存され、
前記第2のコンテンツデータを分割した複数の分割データの1つの分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第1のコンテンツデータを分割した複数の分割データのうち第K(Kは自然数)の分割データに対する前記第1又は第2の暗号化/復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化/復号化装置に関係する。
また本発明に係る暗号化/復号化装置では、
前記記憶部の記憶領域のうち前記復号化データの記憶領域が、前記暗号化/復号化装置の外部からアクセス不可となるように構成されてもよい。
また本発明は、
第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化/復号化装置であって、
前記暗号化/復号化装置の外部からアクセス可能な記憶部であって前記複数の分割データの各分割データを入力データとして記憶するための第1の記憶部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第1の暗号化処理又は第1の復号化処理を行う第1の暗号化/復号化処理部と、
ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、ブロック暗号方式の操作モードで、前記複数の分割データの各分割データに対して第2の暗号化処理又は第2の復号化処理を行う第2の暗号化/復号化処理部と、
前記暗号化/復号化装置の外部からアクセス不可能な記憶部であって前記入力データに対する前記第1又は第2の復号化処理後の復号化データを記憶するための第2の記憶部と、
前記暗号化/復号化装置の外部からアクセス可能な記憶部であって前記入力データに対する暗号化処理又は復号化処理後の出力データを記憶する第3の記憶部と、
コンテンツ毎に、ブロック単位で処理された前記暗号化/復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
前記入力データに対して前記第1及び第2の暗号化/復号化処理部の一方が行った前記第1又は第2の復号化処理後の復号化データが前記第2の記憶部に保存されると共に、
前記第1又は第2の復号化処理後の前記復号化データに対して前記第1及び第2の暗号化/復号化処理部の他方が行った前記第1又は第2の暗号化処理後のデータが前記出力データとして前記第3の記憶部に保存され、
前記第2のコンテンツデータを分割した複数の分割データの1つの分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
前記第1のコンテンツデータを分割した複数の分割データのうち第K(Kは自然数)の分割データに対する前記暗号化/復号化処理部の処理結果、又は入力値が前記中間値記憶部から読み出され、前記第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行う暗号化/復号化装置に関係する。
ここで、3種類以上の暗号化/復号化処理部を有する暗号化/復号化装置も上記のいずれかの発明は含む。
上記のいずれかの発明においては、暗号化/復号化処理部が、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対して処理を行い、中間値記憶部にはコンテンツ毎に暗号化/復号化処理部の処理結果、又は入力値が保存される。このため、第1のコンテンツデータの暗号化又は復号化処理が中断した場合であっても、中間値記憶部から保存された処理結果、又は入力値を読み出し、第1のコンテンツデータの別の分割データの処理に、該処理結果、又は入力値を反映させた暗号化又は復号化処理を行うことができる。こうすることで、複数のコンテンツデータの暗号化又は復号化処理のリアルタイム性を維持させることができる。また、分割データをバッファリングするためのメモリの容量を大幅に削減できるようになる。
更に、上記のいずれかの発明においては、暗号化/復号化装置の入力データ及び出力データが、第1又は第2の暗号化処理後のデータとなる。その際、入力データを第1又は第2の復号化処理した後の復号化データは、暗号化/復号化装置の外部からアクセス不可の記憶領域にバッファリングされる。従って、上記のいずれかの発明によれば、暗号化/復号化装置に対して入力データを設定する処理部において、第1及び第2の暗号化/復号化処理部の処理負荷を軽減できると共に、該処理部との間で暗号化された状態でデータをやり取りできる。そのため、データがデジタル的に不正に複製されることなく、処理部のスループットの向上に貢献できるようになり、コンテンツの暗号化及び復号化処理を高速に実現する暗号化/復号化装置を提供できるようになる。
また本発明に係る暗号化/復号化装置では、
前記第1〜第3の記憶部の各記憶部が、
1つのメモリ空間内に分割された記憶領域に割り当てられ、
各記憶領域が、
可変であってもよい。
本発明によれば、第1の暗号化及び復号化処理、第2の暗号化及び復号化処理の処理単位に応じて各記憶部の記憶領域を設定できるようになるので、記憶部の記憶領域を有効活用できるようになる。
また本発明に係る暗号化/復号化装置では、
前記中間値記憶部には、
コンテンツ毎に、前記第1の暗号化/復号化処理部の鍵、前記第1の暗号化/復号化処理部の初期値、前記第1の暗号化/復号化処理部の処理結果、又は入力値が保存されると共に、
コンテンツ毎に、前記第2の暗号化/復号化処理部の処理結果、又は入力値が保存されてもよい。
また本発明に係る暗号化/復号化装置では、
前記中間値記憶部には、
コンテンツ毎に、前記第1の暗号化/復号化処理部の鍵、前記第1の暗号化/復号化処理部の初期値、前記第1の暗号化/復号化処理部の処理結果、又は入力値が保存され、
前記第2の暗号化/復号化処理部は、
前記第1のコンテンツデータの前記第Kの分割データに対する前記第2の暗号化処理又は第2の復号化処理の処理結果、又は入力値を前記中間値記憶部から読み出すことなく、所定の初期値を用いて前記第1のコンテンツデータの前記第(K+1)の分割データを前記入力データとして前記第2の暗号化処理又は第2の復号化処理を行うことができる。
本発明によれば、第2の暗号化又は復号化処理の処理結果、又は入力値を中間値記憶部に保存する必要がなくなるので、リソースの有効活用を図ることができる。
また本発明に係る暗号化/復号化装置では、
前記第1の暗号化/復号化処理部が、
AES(Advanced Encryption Standard)に準拠した暗号化処理及び復号化処理を行い、
前記第2の暗号化/復号化処理部が、
DES(Data Encryption Standard)に準拠した暗号化処理及び復号化処理を行うことができる。
また本発明に係る暗号化/復号化装置では、
前記操作モードは、
CBC(cipher block chaining)モード、CFB(cipher feedback)モード、及びOFB(output feedback)モードのいずれか1つのモードであってもよい。
また本発明に係る暗号化/復号化装置では、
前記入力データに付加されたヘッダ情報を解析するヘッダ解析部を含み、
前記ヘッダ情報に含まれる識別情報に基づいて、前記分割データが前記第1及び第2のコンテンツデータのいずれのコンテンツデータの分割データであるかが判別されてもよい。
本発明によれば、ヘッダ情報に基づいて、暗号化処理及び復号化処理の制御を行うことができるようになるので、暗号化/復号化装置の構成及び制御の簡素化を図ることができるようになる。
また本発明は、
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
前記ネットワークに送信される通信データ又は前記ネットワークから受信される通信データに対して暗号化又は復号化処理を行う上記のいずれか記載の暗号化/復号化装置とを含む通信コントローラに関係する。
また本発明は、
ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
前記通信データの送信処理及び受信処理を行う通信処理部と、
上記のいずれか記載の暗号化/復号化装置とを含み、
前記通信データの受信時には、
前記通信処理部によって解析されたヘッダ情報のレイヤより上位のレイヤの前記第1の暗号化処理後のデータを前記入力データとして前記暗号化/復号化装置が前記第1の復号化処理した後に前記第2の暗号化処理したデータを前記出力データとして出力し、
前記通信データの送信時には、
送信データを前記入力データとして前記暗号化/復号化装置が前記第2の復号化処理した後に前記第1の暗号化処理したデータを前記出力データとして出力し、前記通信処理部が該出力データに、上位レイヤのヘッダ情報を付加して前記ネットワークに送信する通信コントローラに関係する。
これらの発明によれば、リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化/復号化装置を含む通信コントローラを提供できる。
また本発明は、
上記記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを前記通信コントローラに供給する処理部とを含む電子機器に関係する。
また本発明は、
上記記載の通信コントローラと、
コンテンツデータを分割した複数のコンテンツデータを生成すると共に、前記第2の暗号化処理及び第2の復号化処理を行う処理部とを含み、
前記通信データの受信時には、
前記通信コントローラが、前記処理部に対して前記第2の暗号化処理後のデータを供給し、
前記通信データの送信時には、
前記処理部が、前記第2の暗号化処理後のデータを前記入力データとして前記通信コントローラに供給する電子機器に関係する。
これらの発明によれば、リアルタイム性を損なうことなく、複数のコンテンツデータの暗号化及び復号化処理を行う暗号化/復号化装置を含む電子機器を提供できる。
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
1. 通信システム
図1に、以下で説明する実施形態における暗号化/復号化装置を含む通信システムの構成例を示す。
この通信システムは、デジタルコンテンツを含む通信データが送受信される電子機器10、20、30を含む。電子機器10、20、30は、ネットワークを介して接続される。コンテンツデータの不正な複製、不正な取り出し、又は不正な改ざんを防止するため、電子機器10、20、30の各電子機器間では、DTCP規格に準拠したアルゴリズムで暗号化されたコンテンツデータが送受信される。従って、電子機器間で認証されたことを条件に、コンテンツ鍵が共有される。例えば電子機器10では、電子機器10、20の間で認証されたときに共有されるコンテンツ鍵と電子機器10、30の間で認証されたときに共有されるコンテンツ鍵とを区別して管理する必要がある。ここでは、互いに認証された電子機器10、20の間で送受信される第1のコンテンツデータの識別情報IDが0、互いに認証された電子機器10、30の間で送受信される第2のコンテンツデータの識別情報IDが1であるものとする。
図1では、例えば電子機器10、20、30は、イーサネット(登録商標)ケーブルを介して接続され、レイヤ構造の通信データを送受信するが、無線ネットワークを介してレイヤ構造の通信データを送受信してもよい。
図2に、図1の電子機器10の構成要部を示す。
図2では、電子機器10の構成のみを示しているが、電子機器20、30の構成を電子機器10と同様の構成にすることができる。
図2において、電子機器10は、メインCPU(Central Processing Unit)(広義には処理部)40、通信コントローラ(ネットワークコントローラ)50を含む。メインCPU40は、電子機器10の全体の制御を司る。通信コントローラ50は、イーサネット(登録商標)ケーブルを介して送受信される通信データの送信処理及び受信処理を行う。
通信コントローラ50は、上位レイヤ解析部として動作するTCP/IP(Transmission Control Protocol/Internet Protocol)処理部(広義には通信処理部)60と暗号化/復号化装置(或いは暗号化復号化装置、暗号化・復号化装置)100とを含む。
TCP/IP処理部60は、イーサネット(登録商標)ケーブルを介して伝送されるコンテンツデータに付加されたTCP/IPヘッダの生成及び解析を行う。
暗号化/復号化装置100は、DTCP規格で規定されたAESのアルゴリズムに従った暗号化及び復号化処理を行い、メインCPU40の処理負荷を軽減させる。なお暗号化/復号化装置100とメインCPU40との間でやり取りされるコンテンツデータの不正な複製等を防止するため、該コンテンツデータを暗号化された状態でやり取りしたり、暗号化/復号化装置100とメインCPU40との間の信号線を樹脂等で覆ったり、該信号線を実装基板の内部に設けたりする等の不正複製防止対策を講ずることが望ましい。ここで、暗号化された状態でメインCPU40との間でコンテンツデータのやりとりを行う場合、暗号化/復号化装置100は、AESの暗号化及び復号化処理の他に、メインCPU40との間で予め取り決めたアルゴリズムの暗号化及び復号化処理も行うようにすることができる。この場合、暗号化/復号化装置100は、メインCPU40との間でDESのアルゴリズムの暗号化及び復号化処理を行うようにすることができる。
1.1 DTCP
図3に、図1の電子機器間で行われるDTCP規格に準拠した処理の一例を示す。
DTCP規格では、まずソース(Source)と呼ばれるコンテンツデータの送信側の機器とシンク(Sink)と呼ばれるコンテンツデータの受信側の機器との間で認証処理を行い、認証された機器同士でコンテンツ鍵Kcが共有される。
即ち、まず暗号化されたコンテンツデータを復号化するため、受信側機器が送信側機器に対して認証要求を行う(SEQ1)。
これに伴って、ソースとシンクとの間で機器認証が行われる(SEQ2)。この機器認証は、公開鍵暗号技術を用いたFull Authenticationと、共通鍵暗号技術を用いたRestricted Authenticationとがあり、コンテンツデータの複製制限情報や機器の特性等に応じて使い分けられ、例えば、イーサネットケーブル上で転送されるコンテンツデータの保護に使用されるDTCPoverIP規格ではFull Authenticationのみ使用することが許可されている。
機器認証の結果、両方の機器が互いに相手側の機器を認証した場合、鍵交換が行われる(SEQ3)。この結果、両方の機器の間で乱数Ncと交換鍵Kxとが共有される。そして各機器において次式に示す関数を用いて、それぞれ別個にコンテンツ鍵Kcを生成する(SEQ4、SEQ5)。
Kc=Func(Kx,C,Nc) ・・・(1)
ここで、各機器では、予め決められた関数Func()と定数Cとを用いて、コンテンツ鍵Kcを求める。
その後、送信側機器が、コンテンツ鍵Kcを用いて、AESのアルゴリズムに従ってコンテンツデータの暗号化処理を行って、受信側機器に送信する(SEQ6、SEQ7)。受信側機器は、コンテンツ鍵Kcを用いて、受信したコンテンツデータの復号化処理を行って、コンテンツデータを取得する。
その後は、同様に、認証されている機器同士で、コンテンツ鍵Kcを用いてコンテンツデータの暗号化処理及び復号化処理を行って、コンテンツデータのやりとりを行う。
コンテンツデータは、PCP(Protected Content Packets)単位で送信側機器と受信側機器との間で送受信され、このPCP単位で鍵更新が行われる。
従って、コンテンツ鍵Kcを用いて暗号化処理及び復号化処理(SEQ9、SEQ10)を行った後、PCP単位のコンテンツデータの暗号化処理が終了すると、送信側機器は、コンテンツ鍵の更新を行う。また受信側機器においても、PCP単位のコンテンツデータの復号化処理が終了すると、コンテンツ鍵の更新を行う。送信側機器及び受信側機器は、次式に示す関数を用いて、更新後のコンテンツ鍵Kc´を生成する(SEQ11、SEQ12)。
Kc´=Func(Kx,C,Nc+1) ・・・(2)
そして、再び、送信側機器が、コンテンツ鍵Kc´を用いて、AESのアルゴリズムに従ってコンテンツデータの暗号化処理を行って、受信側機器に送信する(SEQ13)。受信側機器は、コンテンツ鍵Kc´を用いて、受信したコンテンツデータの復号化処理を行って、コンテンツデータを取得する(SEQ14)。
その後、同様に、認証されている機器同士で、PCP単位でコンテンツ鍵Kc´を用いてコンテンツデータの暗号化処理及び復号化処理を行って、コンテンツデータのやりとりを行う。
なおDTCP規格の詳細は、「Digital Transmission Content Protection Specification Volume1 (Informational Version)」(Revision 1.3, January 7, 2004)と「DTCP Volume 1 Supplement E Mapping DTCP to IP (Informational Version)」(Revision 1.0, November 24, 2003)に記載されている。
図2において、上記の認証処理はメインCPU40において行い、AESの暗号化及び復号化処理(コンテンツ鍵の生成も含む)を暗号化/復号化装置100において行うことができる。また、暗号化/復号化装置100の内部又は外部にアクセラレータを設けて、該アクセラレータが該認証処理を行うようにしてもよい。
1.2 動作の概要
図4に、図1及び図2の通信システムにおける各種のパケットの構成例を示す。
イーサネット(登録商標)ケーブルを介して、受信側機器として電子機器10で受信されたパケットは、AESで暗号化されたコンテンツデータに、PCPヘッダ、HTTP(Hypertext Transfer Protocol)ヘッダ、TCP/IPヘッダが付加されたデータである。TCP/IP処理部60は、TCP/IPヘッダの宛先等の解析や、TCP/IPヘッダの生成及び付加する処理を行う。
メインCPU40とTCP/IP処理部60との間では、TCP/IPヘッダが付加されるレイヤより上位のレイヤのデータがやり取りされる。メインCPU40は、HTTPヘッダの解析や、HTTPヘッダの生成及び付加する処理を行う。更にメインCPU40は、暗号化/復号化装置100の制御用のCOMヘッダを生成する。またメインCPU40は、PCPヘッダを拡張したPCPExtendヘッダを生成し、PCPExtendヘッダ及びCOMヘッダを暗号化されたコンテンツデータに付加したパケットデータを暗号化/復号化装置100に供給する。ここで、PCPExtendヘッダは、PCPヘッダの情報をそのまま含む。
暗号化/復号化装置100は、メインCPU40との間で暗号化された状態でコンテンツデータを送受信するために、暗号化処理及び復号化処理を行う。より具体的には、メインCPU40を介してTCP/IP処理部60との間で送受信されるコンテンツデータについては、暗号化/復号化装置100は、メインCPU40との間で、DTCP規格で規定されたAESのアルゴリズムで暗号化処理されたコンテンツデータの送受信を行う。また、TCP/IP処理部60に供されることなく、メインCPU40との間で送受信されるコンテンツデータについては、暗号化/復号化装置100は、メインCPU40との間で予め取り決められたアルゴリズムで暗号化処理されたコンテンツデータの送受信を行うことができる。
図5に、図1及び図2の通信システムにおけるコンテンツデータの受信処理の一例のシーケンスを示す。
ここでは、TCP/IP処理部60に供されないコンテンツデータについては、予めDESのアルゴリズムで暗号化されたコンテンツデータが暗号化/復号化装置100とメインCPU40との間でやり取りされるものとする。
まず、通信コントローラ50では、AESのアルゴリズムで暗号化されたコンテンツデータを含むパケットが受信される。TCP/IP処理部60は、該パケットのTCP/IPヘッダの送信元や受信先等を解析し(SEQ30)、自分宛のパケットであると判別すると、TCP/IPヘッダが付加されるレイヤより上位のレイヤのデータ及び、送信元や受信先を識別するための情報を、メインCPU40に供給する(SEQ31)。
メインCPU40では、必要に応じてHTTPヘッダを解析し(SEQ32)、TCP/IP処理部60より転送されてきた情報を基に、コンテンツデータの供給元を判別して、該供給元に対応した識別情報IDを含むCOMヘッダを生成し、PCPヘッダを含むPCPExtendヘッダを生成する。メインCPU40は、コンテンツデータに、PCPExtendヘッダ及びCOMヘッダを付加し(SEQ33)、通信コントローラ50の暗号化/復号化装置100に対して送信する(SEQ34)。
暗号化/復号化装置100では、COMヘッダを解析し(SEQ35)、その解析結果に基づいて、コンテンツデータをAESのアルゴリズムで復号化処理後(SEQ36)、該復号化処理後のコンテンツデータをDESのアルゴリズムで暗号化処理する(SEQ37)。AESの復号化処理時には、COMヘッダの識別情報IDに応じた鍵が用いられる。DESのアルゴリズムで暗号化処理されたコンテンツデータは、メインCPU40に送信される(SEQ38)。
メインCPU40は、DESのアルゴリズムで暗号化されたコンテンツデータを受信後、DESのアルゴリズムで復号化処理する(SEQ39)。
このように受信処理時には、メインCPU40と通信コントローラ50との間で、コンテンツデータは、AES又はDESのアルゴリズムで暗号化された状態でやり取りされる。そのため、不正にコンテンツデータが複製されることなく、電子機器20又は電子機器30から送信されたコンテンツデータを取得できる。
そして暗号化/復号化装置100が、処理負荷の重いAESのアルゴリズムの復号化処理をメインCPU40に代わって行う。メインCPU40と暗号化/復号化装置100との間で暗号化された状態でコンテンツデータをやり取りするが、メインCPU40は、AESのアルゴリズムより処理負荷の軽いDESのアルゴリズムで復号化処理を行うことができればよいので、メインCPU40の処理能力を他の処理に割り当てることができ、スループットを向上させることができる。
更に、通信コントローラ50のTCP/IP処理部60でTCP/IPヘッダを解析後、一旦メインCPU40に渡した後に、通信コントローラ50の暗号化/復号化装置100にPCPヘッダ以降の上位のレイヤを戻すようにしている。こうすることで、HTTPヘッダが付加されるレイヤとPCPヘッダが付加されるレイヤとの間の中間レイヤが今後設けられた場合でも、ハードウェア構成を変更する必要がなく、柔軟に対応できる。なぜなら、ソフトウェアで実現されるメインCPU40の機能に、HTTPヘッダが付加されるレイヤのみならず、該中間レイヤの解析機能を容易に追加できるからである。
図6に、図1及び図2の通信システムにおけるコンテンツデータの送信処理の一例のシーケンスを示す。
ここでは、TCP/IP処理部60に供されないコンテンツデータについては、予めDESのアルゴリズムで暗号化されたコンテンツデータが暗号化/復号化装置100とメインCPU40との間でやり取りされるものとする。
まず、メインCPU40は、電子機器20又は電子機器30に送信したいコンテンツデータを、DESのアルゴリズムで暗号化処理する(SEQ50)。そして、メインCPU40は、送信先に対応した識別情報IDを指定すると共に、暗号化/復号化装置100においてDESで復号化処理後にAESで暗号化処理を行う旨の制御情報を含むPCPExtendヘッダ、COMヘッダを生成し、該PCPExtendヘッダ及びCOMヘッダが付加されたコンテンツデータを通信コントローラ50に送信する(SEQ51、SEQ52)。
通信コントローラ50の暗号化/復号化装置100は、COMヘッダを解析し(SEQ53)、その解析結果に基づいて、コンテンツデータをDESのアルゴリズムで復号化処理後(SEQ54)、該復号化処理後のコンテンツデータをAESのアルゴリズムで暗号化処理する(SEQ55)。AESの暗号化処理時には、COMヘッダの識別情報IDに応じた鍵が用いられる。AESのアルゴリズムで暗号化処理されたコンテンツデータは、メインCPU40に送信される(SEQ56)。
メインCPU40では、HTTPヘッダを作成し、PCPExtendヘッダをPCPヘッダに変換する。そして、PCPヘッダ、HTTPヘッダをコンテンツデータに付加し(SEQ57)、識別情報IDと共に、TCP/IP処理部60に送信する(SEQ58)。
TCP/IP処理部60は、電子機器20又は電子機器30に対応した送信先を特定するTCP/IPヘッダを付加し(SEQ59)、電子機器20又は電子機器30に対して送信する。
このように送信処理時においても、メインCPU40と通信コントローラ50との間で、コンテンツデータは、AES又はDESのアルゴリズムで暗号化された状態でやり取りされる。そのため、不正にコンテンツデータが複製されることなく、コンテンツデータを電子機器20又は電子機器30に送信できる。
そして暗号化/復号化装置100が、処理負荷の重いAESのアルゴリズムの暗号化処理をメインCPU40に代わって行う。メインCPU40と暗号化/復号化装置100との間で暗号化された状態でコンテンツデータをやり取りするが、メインCPU40は、AESのアルゴリズムより処理負荷の軽いDESのアルゴリズムで暗号化処理を行うことができればよいので、メインCPU40の処理能力を他の処理に割り当てることができ、スループットを向上させることができる。
更に、通信コントローラ50の暗号化/復号化装置100においてコンテンツデータをAESのアルゴリズムで暗号化して一旦メインCPU40に渡した後に、通信コントローラ50のTCP/IP処理部60に戻すようにしている。こうすることで、HTTPヘッダが付加されるレイヤとPCPヘッダが付加されるレイヤとの間の中間レイヤが今後設けられた場合でも、ハードウェア構成を変更する必要がなく、柔軟に対応できる。なぜなら、ソフトウェアで実現されるメインCPU40の機能に、HTTPヘッダが付加されるレイヤのみならず、該中間レイヤのヘッダの生成及び追加機能を容易に追加できるからである。
1.3 コンテンツデータの分割
図7(A)、図7(B)に、コンテンツデータの分割についての説明図を示す。
DTCPoverIP規格では、コンテンツデータのデータサイズが最大128メガバイトとして規定されている。その一方、DTCPoverIP規格では、ブロック暗号方式であるAESが採用される。そのためメインCPU40がコンテンツデータを分割した複数の分割データを生成し、該複数の分割データを入力データとして暗号化/復号化装置100に供給する。そして暗号化/復号化装置100は、16バイト単位でAESの暗号化又は復号化処理を行う。
図1又は図2に示すように、複数のコンテンツデータが受信されると、メインCPU40は、コンテンツデータに識別情報IDを付与すると共に、各コンテンツデータを分割して各分割データを暗号化/復号化装置100に供給する。その際、メインCPU40は、暗号化/復号化装置100のブロック暗号方式のブロックサイズや分割データのバッファリングサイズ等を考慮したパケットデータサイズとなるようにコンテンツデータを分割する。
識別情報IDが0のコンテンツデータを第1のコンテンツデータCD1とすると、メインCPU40は、第1のコンテンツデータCD1をM(Mは2以上の整数)分割し、各分割データにCOMヘッダを付加する。ここでは、PCPヘッダを拡張したPCPExtendヘッダが、最初の分割データCD11にのみ付加される。
同様に識別情報IDが1のコンテンツデータを第2のコンテンツデータCD2とすると、メインCPU40は、第2のコンテンツデータCD2をN(Nは2以上の整数)分割し、各分割データにCOMヘッダを付加する。ここでは、PCPヘッダを拡張したPCPExtendヘッダが、最初の分割データCD21にのみ付加される。
ところが、DTCPoverIP規格では、ブロック暗号方式の操作モードとしてCBCモードを用いることが規定されている。そのため、第1及び第2のコンテンツデータCD1、CD2の各コンテンツデータは、CBCモードで暗号化又は復号化処理される。こうすることで、暗号化処理前のコンテンツデータが同じであっても、暗号化処理後のデータが同じになることはない。
このようなブロック暗号方式の操作モードは、処理中のブロック以外のブロックのデータを用いる操作モードと言うことができ、例えばCBCモード、CFBモード及びOFBモードがある。暗号化/復号化装置100は、ブロック暗号方式であるAESのECBモード、CBCモードを実行できる。更に暗号化/復号化装置100は、ECBモードを除くCBCモード、CFBモード及びOFBモードのすべて、あるいはいずれか1つのモードで処理することができても良い。
図8に、CBCモードで暗号化又は復号化処理される第1及び第2のコンテンツデータの説明図を示す。
第1のコンテンツデータCD1が、例えば8個の分割データCD11〜CD18に分割され、第2のコンテンツデータCD2が、例えば8個の分割データCD21〜CD28に分割されるものとする。この場合、分割データCD11は初期値(初期ベクトル)IV1を用いてブロック暗号化され、分割データCD12は分割データCD11を用いてブロック暗号化され、分割データCD13は分割データCD12を用いてブロック暗号化される。同様に分割データCD21は初期値(初期ベクトル)IV2を用いてブロック暗号化され、分割データCD22は分割データCD21を用いてブロック暗号化され、分割データCD23は分割データCD22を用いてブロック暗号化される。
従って、復号化処理後の第1のコンテンツデータCD1を取得しようとすると、第1のコンテンツデータCD1を分割した分割データCD11〜CD18が必要となる。同様に、復号化処理後の第2のコンテンツデータCD2を取得しようとすると、第2のコンテンツデータCD2を分割した分割データCD21〜CD28が必要となる。
即ち、暗号化/復号化装置100では、第1のコンテンツデータCD1の暗号化復号化処理が終了しない限り、第2のコンテンツデータCD2の暗号化復号化処理を開始できない事態が考えられる。特に、ネットワークを介して複数の電子機器から複数のコンテンツデータを同時に受信処理する場合、供給元の電子機器で暗号化された単位のデータが揃うまで復号化処理を開始できない。そのため、分割データがバッファリングされるメモリの容量が増大してしまうばかりでなく、復号化処理の処理時間が長くなってしまう。
そこで暗号化/復号化装置100では、以下のようにブロック暗号化/復号化方式でブロック単位で求められた暗号化処理結果、又は復号化入力値をコンテンツ毎に保存できる中間値記憶部を設けている。
図9に、暗号化/復号化装置100においてCBCモードで暗号化又は復号化処理される第1及び第2のコンテンツデータの説明図を示す。
暗号化/復号化装置100は、中間値記憶部110を含む。中間値記憶部110には、コンテンツ毎に、ブロック単位で処理された暗号化処理結果又は復号化入力値が保存される。暗号化/復号化装置100は、第1のコンテンツデータを分割した複数の分割データCD11〜CD18のうち分割データCD11から順次暗号化を行い、分割データCD14に対して暗号化処理を行った後、その処理結果MV1を中間値記憶部110に保存する。又は分割データCD11から順次復号化処理を行い、分割データCD14(復号化入力値)を中間値記憶部110に保存する。
そして暗号化/復号化装置100は、第2のコンテンツデータCD2の暗号化又は復号化処理を開始する。このとき、第2のコンテンツデータCD2を分割した複数の分割データCD21〜CD28のうち分割データCD21から順次暗号化を行い、分割データCD24(第2のコンテンツデータを分割した複数の分割データの1つの分割データ)に対して暗号化処理を行った後、その処理結果MV2を中間値記憶部110に保存する。又は分割データCD21から順次復号化処理を行い、分割データCD24(復号化入力値)を中間値記憶部110に保存する。
そして、暗号化/復号化装置100は、分割データCD14(第1のコンテンツデータCD1を分割した複数の分割データCD11〜CD18のうち第K(Kは自然数)の分割データ)に対する処理結果又は入力値MV1を中間値記憶部110から読み出し、分割データCD15(第1のコンテンツデータCD1を分割した複数の分割データCD11〜CD18のうち第(K+1)の分割データ)に対しMV1を用いて暗号化又は復号化処理を行う。こうして、分割データCD18まで順次各分割データに対して暗号化又は復号化処理を行う。
その後、暗号化/復号化装置100は、分割データCD24に対する処理結果又は入力値MV2を中間値記憶部110から読み出し、分割データCD25に対しMV2を用いて暗号化又は復号化処理を行う。こうして、分割データCD28まで順次各分割データに対して暗号化又は復号化処理を行う。
こうすることで、暗号化/復号化装置100は、分割データがバッファリングされるメモリの容量を削減できるばかりでなく、暗号化又は復号化処理の処理時間を短くできるようになる。その結果、コンテンツデータ(分割データ)をバッファリングするためのメモリの容量を削減できる上に、コンテンツデータの処理のリアルタイム性を維持できる。
2. 暗号化/復号化装置
2.1 第1の実施形態
図10に、第1の実施形態における暗号化/復号化装置の構成例のブロック図を示す。
暗号化/復号化装置100は、1種類の暗号化/復号化アルゴリズムの処理を実行することができる。例えばこの構成例では、第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、AESのアルゴリズムに従った暗号化処理又は復号化処理を行う。
暗号化/復号化装置100は、暗号化/復号化処理部としてのAES処理部200と、中間値記憶部110としての鍵メモリ210とを含む。AES処理部200は、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、各分割データに対して暗号化処理又は復号化処理を行う。鍵メモリ210は、コンテンツ毎に、ブロック単位で処理されたAES処理部200の処理結果が保存される。
鍵メモリ210の機能は、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)等のメモリ素子、レジスタ回路、FIFO(First-In First-Out)機能を有するメモリ素子等により実現される。
AES処理部200は、第2のコンテンツデータCD2を分割した複数の分割データCD21〜CD28の1つの分割データに対して暗号化処理結果又は復号処理入力値を鍵メモリ210に保存する。更にその後、第1のコンテンツデータCD1を分割した複数の分割データCD11〜CD18のうち第Kの分割データに対するAES処理部200の処理結果又は入力値を鍵メモリ210から読み出し、第1のコンテンツデータCD1を分割した複数の分割データCD11〜CD18のうち第(K+1)の分割データに対し上記の処理結果を用いて暗号化又は復号化処理を行う。
より具体的には、鍵メモリ210には、コンテンツ毎に(コンテンツデータに対応した識別情報毎に)、鍵、初期値、AES処理部200の処理結果(中間値)が保存される。
図11に、図10の鍵メモリ210に保存されるデータの一例を示す。
鍵メモリ210には、コンテンツデータに付与された識別情報により区別されるコンテンツ毎に、コンテンツデータ特有の情報が保存される。コンテンツデータ特有の情報として、AES処理部200において暗号化又は復号化処理するためのAES鍵と、初期値IV、暗号化処理結果又は復号化入力値(中間値)MV、カウント値CNTがある。AES鍵は、ラウンド毎に変更されるため、各ラウンドの鍵が鍵メモリ210に保存することが可能である。初期値IVは、AESのCBCモードで最初のブロックに用いられる初期ベクトル値である。カウント値CNTは、AESのCBCモードで処理すべき残りブロック数に対応した値である。
鍵メモリ210には、このようなコンテンツデータ特有の情報が16種類保存される。
図10に示すように、鍵メモリ210にアクセスするため、暗号化/復号化装置100は、鍵メモリ制御部220を含み、鍵メモリ制御部220が、鍵メモリ210からの読み出し制御と鍵メモリ210への書き込み制御とを行う。
また暗号化/復号化装置100は、記憶部230を含むことができる。記憶部230の記憶領域は、入力エリア(InputArea)及び出力エリア(OutputArea)を有する。記憶部230の機能は、SRAMやDRAM等のメモリ素子、レジスタ回路、FIFO機能を有するメモリ素子等により実現される。
暗号化/復号化装置100に暗号化又は復号化処理を行わせるとき、メインCPU40は、入力エリアに分割データを入力データとして順次設定していく。暗号化/復号化装置100では、入力データ転送用のInDMACが、入力エリアから分割データを読み出して、AES処理部200がブロック暗号方式で暗号化又は復号化処理する。その後、出力データ転送用のOutDMACが、AES処理部200からの処理データを、順次出力エリアに設定していく。メインCPU40は、出力エリアに設定されたデータを出力データとして、記憶部230から順次取り出していく。
記憶部230の各エリアの書き込み領域及び読み出し領域は、ポインタ管理部240によって管理される。より具体的には、ポインタ管理部240は、入力エリアの書き込みポインタ及び読み出しポインタ、出力エリアの書き込みポインタ及び読み出しポインタの設定及び更新を行う。各書き込みポインタは、各エリアの書き込み領域を指定する。各読み出しポインタは、各エリアの読み出し領域を指定する。
暗号化/復号化装置100の各部は、ステート制御部250によって制御される。ステート制御部250は、予め定められた複数のステートの間を遷移させて遷移先のステートに対応した制御信号を暗号化/復号化装置100の各部に供給する。タイミング発生部260は、ステート制御部250からの制御信号に基づいて、鍵メモリ210からの読み出しタイミングと、鍵メモリ210への書き込みタイミングを生成する。
メインCPU40からのコンテンツデータには、制御用の情報が格納されるCOMヘッダが付与されている。そのため暗号化/復号化装置100は、ヘッダ解析部270を有し、ヘッダ解析部270がCOMヘッダの内容を解析する。COMヘッダに含まれる識別情報IDに基づいてコンテンツデータを区別する。即ち、ヘッダ解析部270は、ヘッダ情報に含まれる識別情報に基づいて、入力されたコンテンツデータが第1及び第2のコンテンツデータのいずれのコンテンツデータの分割データであるかを判別できる。そして鍵メモリ制御部220は、該識別情報IDに基づいて、鍵メモリ210に保存すべき情報の書き込みアドレス、鍵メモリ210から読み出すべき情報の読み出しアドレスを生成する。また鍵メモリ制御部220は、カウント値CNTが0のとき、識別情報IDに対応した初期値IVを読み出し、カウント値CNTが0ではない値のとき、識別情報IDに対応した処理結果又は入力値(中間値)MVを読み出す。
更に暗号化/復号化装置100は、コントローラとしての中央演算処理装置(Central Processing Unit:以下、CPUと略す)280を含むことができる。CPU280は、プログラムメモリ290に保存されたプログラムデータに対応した処理を実行でき、AESの鍵の生成、鍵の更新を行う。
図12(A)、図12(B)に、AES処理部200の処理の概要のフローを示す。
図12(A)に、AES処理部200によって行われる暗号化処理の概要を示す。CPU280は、図3で説明したようにして取得したコンテンツ鍵Kcに基づいて拡張処理を行ってラウンド毎の鍵K、K・・・、KNrを生成する。そしてAES処理部200は、平文である入力データの128ビット分の長さを1ブロックとして、ブロック単位にラウンド毎に鍵を変更しながら暗号化操作をしていく。
初段暗号化操作では、鍵Kを用いてAddRoundkey操作が行われる。その後、ラウンド1〜ラウンド(Nr−1)まで、各ラウンド毎の鍵を用いてSubBytes操作、ShiftRows操作、MixColumns操作及びAddRoundKey操作を行い、最終段暗号化操作では、SubBytes操作、ShiftRows操作及びAddRoundkey操作が行われる。
図12(B)に、AES処理部200によって行われる復号化処理の概要を示す。CPU280は、図3で説明したようにして取得したコンテンツ鍵Kcに基づいて拡張処理を行ってラウンド毎の鍵iKNr、iKNr−1・・・、iKを生成する。そしてAES処理部200は、暗号文である入力データの128ビット分の長さを1ブロックとして、ブロック単位にラウンド毎に鍵を変更しながら復号化操作をしていく。
初段復号化操作では、鍵iKNrを用いてAddRoundkey操作が行われる。その後、ラウンド(Nr−1)〜ラウンド1まで、各ラウンド毎の鍵を用いてInvShiftrows操作、InvSubBytes操作、AddRoundkey操作及びInvMixColumns操作を行い、最終段復号化操作では、InvShifRows操作、InvSubBytes操作及びAddRoundkey操作が行われる。
なお暗号化操作及び復号化操作における各操作の内容の詳細は、例えば「Announcing the ADVANCED ENCRYPTION STANDARD(AES)」(November 26,2001、FIPS PUB 197)に記載されているため、その説明は省略する。
このようにAES処理部200の処理は同じ操作を繰り返し行うため、ハードウェア化した場合により一層の処理の高速化を図ることができる。
2.1.1 ブロック暗号方式の操作モード
ここでブロック暗号方式の操作モードについて具体的に説明する。
図13(A)に、CBCモードの説明図を示す。
CBCモードで暗号化処理を行う場合、処理中のブロックの1つ前のブロックの暗号文がレジスタに保存される。そして、処理中のブロックの平文とレジスタに保存した暗号文との間でビット単位に排他的論理和演算が行われ、その結果に対して暗号化処理が行われる。コンテンツデータの最初のブロックでは、レジスタに保存した暗号文ではなく、処理中のブロックの平文と初期値IVとの間でビット単位に排他的論理和演算が行われる。
CBCモードで復号化処理を行う場合、処理中のブロックの1つ前のブロックの暗号文入力値がレジスタに保存される。そして、処理中のブロックの復号化処理結果とレジスタに保存した暗号文入力値との間でビット単位に排他的論理和演算が行われて、平文が得られる。コンテンツデータの最初のブロックでは、レジスタに保存した暗号文ではなく、処理中のブロックの平文と初期値IVとの間でビット単位に排他的論理和演算が行われる。
なお図10のAES処理部200において、図13(A)のnを128とすることができる。
図13(B)に、CFBモードの説明図を示す。
CFBモードで暗号化処理を行う場合、処理中のブロックの1つ前のブロックの暗号文をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のnビットのデータに対して暗号化処理が行われ、そのうちのj(1≦j≦n、jは整数)ビットのデータと平文との間でビット単位に排他的論理和演算が行われてjビットの暗号文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値IVに対して暗号化処理が行われ、該処理結果と処理中のブロックの平文との間でビット単位に排他的論理和演算が行われる。
CFBモードで復号化処理を行う場合、処理中のブロックの1つ前のブロックの暗号文をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のnビットのデータに対して暗号化処理が行われ、そのうちのjビットのデータと暗号文との間でビット単位に排他的論理和演算が行われて、jビットの平文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値IVに対して暗号化処理を行って、該処理結果と処理中のブロックの暗号文との間でビット単位に排他的論理和演算が行われる。
図13(C)に、OFBモードの説明図を示す。
OFBモードで暗号化処理を行う場合、処理中のブロックの1つ前のブロックの暗号化処理結果をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のnビットのデータに対して暗号化処理が行われ、そのうちのk(1≦k≦n、kは整数)ビットが暗号化処理結果となる。この暗号化処理結果と平文との間でビット単位に排他的論理和演算が行われ、kビットの暗号文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値IVに対して暗号化処理が行われ、該処理結果と処理中のブロックの平文との間でビット単位に排他的論理和演算が行われる。
OFBモードで復号化処理を行う場合、処理中のブロックの1つ前のブロックの暗号化処理結果をシフトレジスタに供給し、シフトレジスタ内でシフトさせる。そして、シフトレジスタに保存された最新のnビットのデータに対して暗号化処理を行い、そのうちのkビットが、暗号化処理結果となる。この暗号化処理結果と暗号文との間でビット単位に排他的論理和演算が行われ、kビットの平文として出力される。コンテンツデータの最初のブロックでは、シフトレジスタからのデータではなく、初期値IVに対して暗号化処理を行って、該処理結果と処理中のブロックの暗号文との間でビット単位に排他的論理和演算が行われる。
なおブロック暗号方式の操作モードとしては、CBCモード、CFBモード及びOFBモードの他にECBモードがある。ECBモードで暗号化処理を行う場合、平文をそのまま暗号化するだけである。またECBモードで復号化処理を行う場合、暗号文をそのまま復号化するだけである。
2.1.2 中間値の保存
図14に、CBCモード暗号化で第1の実施形態における鍵メモリ210を用いた動作説明図を示す。
ここでは説明を簡略化するため、第1のコンテンツデータが4分割される場合を示す。この場合、カウント値CNTが3に設定される。
CBCモードでコンテンツデータの暗号化処理が開始されると、まず第1のコンテンツデータを分割した分割データCD11と初期値IV1との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データE11が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが2となる。そして分割データCD12と暗号化データE11との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データE12が得られる。
ここで、別の識別情報IDを有するコンテンツデータ(例えば第2のコンテンツデータ)に対する処理を行うため、次のブロックの暗号化処理に必要な暗号化データE12とカウント値CNTの値とが中間値記憶部としての鍵メモリ210に保存される。即ち、処理結果である暗号化データE12とカウント値CNTの値とが中間値ということができる。図14では処理結果とカウント値CNTを中間値として示したが、その他にブロック単位で行われる暗号化処理に必要な鍵(ラウンド毎の鍵)や初期値も中間値として保存される。
その後、第1のコンテンツデータに対する処理が再開されると、再び鍵メモリ210から暗号化データE12とカウント値CNTの値とが読み出される。
そして次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが1となる。そして分割データCD13と暗号化データE12との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データE13が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが0となる。そして分割データCD14と暗号化データE13との間でビット単位に排他的論理和演算が行われた後、暗号化処理を行って暗号化データE14が得られる。
その後、カウント値CNTが0であるため、第1のコンテンツデータの暗号化処理が終了する。
次に、図15に、CBCモード復号化で第1の実施形態における鍵メモリ210を用いた動作説明図を示す。
まず第1のコンテンツデータを分割した分割データCD11を復号化処理した後に、初期値IV1との間でビット単位に排他的論理和演算が行われ、復号化データD11が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが2となる。そして分割データCD12を復号化処理した後に、前の入力値データCD11との間でビット単位に排他的論理和演算が行われ、復号化データD12が得られる。
ここで、別の識別情報IDを有するコンテンツデータ(例えば第2のコンテンツデータ)に対する処理を行うため、前の入力値データCD12とカウント値CNTの値とが中間値記憶部としての鍵メモリ210に保存される。即ち、入力値である暗号化データCD12とカウント値CNTの値とが中間値ということができる。図15では処理結果とカウント値CNTを中間値として示したが、その他にブロック単位で行われる復号化処理に必要な鍵(ラウンド毎の鍵)や初期値も中間値として保存される。
その後、第1のコンテンツデータに対する処理が再開されると、再び鍵メモリ210から前の入力値データCD12とカウント値CNTの値とが読み出される。
そして次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが1となる。そして分割データCD13を復号化処理した後に、前の入力値データCD12との間でビット単位に排他的論理和演算が行われ、復号化データD13が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが0となる。同様の復号化処理の後、カウント値CNTが0であるため、第1のコンテンツデータの復号化処理が終了する。
図16に、CFBモードで第1の実施形態における鍵メモリ210を用いた動作説明図を示す。
ここでは説明を簡略化するため、第1のコンテンツデータが4分割される場合を示す。この場合、カウント値CNTが3に設定される。
CFBモードでコンテンツデータの暗号化処理が開始されると、まず初期値IV1が暗号化され、第1のコンテンツデータを分割した分割データCD11と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE11が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが2となる。そして排他的論理和演算データE11のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、第1のコンテンツデータを分割した分割データCD11と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE12が得られる。
ここで、別の識別情報IDを有するコンテンツデータ(例えば第2のコンテンツデータ)に対する処理を行うため、次のブロックの暗号化処理に必要な排他的論理和演算データE12とカウント値CNTの値とが中間値記憶部としての鍵メモリ210に保存される。即ち、処理結果である排他的論理和演算データE12とカウント値CNTの値とが中間値ということができる。図16では処理結果とカウント値CNTを中間値として示したが、その他にブロック単位で行われる暗号化処理に必要な鍵(ラウンド毎の鍵)や初期値も中間値として保存される。
その後、第1のコンテンツデータに対する処理が再開されると、再び鍵メモリ210から排他的論理和演算データE12とカウント値CNTの値とが読み出される。
そして次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが1となる。そして排他的論理和演算データE12のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、第1のコンテンツデータを分割した分割データCD13と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE13が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが0となる。そして排他的論理和演算データE13のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、第1のコンテンツデータを分割した分割データCD14と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE14が得られる。
その後、カウント値CNTが0であるため、第1のコンテンツデータの暗号化処理が終了する。
なお図16では、CFBモードでの暗号化処理について説明したが、CFBモードでの復号化処理についても同様である。
図17に、OFBモードで第1の実施形態における鍵メモリ210を用いた動作説明図を示す。
ここでは説明を簡略化するため、第1のコンテンツデータが4分割される場合を示す。この場合、カウント値CNTが3に設定される。
OFBモードでコンテンツデータの暗号化処理が開始されると、まず初期値IV1が暗号化され、第1のコンテンツデータを分割した分割データCD11と暗号化データとの間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE11が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが2となる。そして初期値IV1を暗号化した暗号化データW11がシフトされ、シフト動作後の所定ビットのシフトデータが暗号化される。この暗号化データと第1のコンテンツデータを分割した分割データCD12との間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE12が得られる。
ここで、別の識別情報IDを有するコンテンツデータ(例えば第2のコンテンツデータ)に対する処理を行うため、次のブロックの暗号化処理に必要な暗号化データW12とカウント値CNTの値とが中間値記憶部としての鍵メモリ210に保存される。ここで暗号化データW12は、暗号化データW11のシフト動作後の所定ビットのデータを再暗号化したデータである。即ち、処理結果である暗号化データW12とカウント値CNTの値とが中間値ということができる。図17では処理結果とカウント値CNTを中間値として示したが、その他にブロック単位で行われる暗号化処理に必要な鍵(ラウンド毎の鍵)や初期値も中間値として保存される。
その後、第1のコンテンツデータに対する処理が再開されると、再び鍵メモリ210から暗号化データW12とカウント値CNTの値とが読み出される。
そして次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが1となる。そして暗号化データW12のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、この暗号化データと第1のコンテンツデータを分割した分割データCD13との間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE13が得られる。
次のブロックでは、カウント値CNTがデクリメントされ、カウント値CNTが0となる。そして暗号化データW13のシフト動作を行う。シフト動作後の所定ビットが暗号化された後、この暗号化データと第1のコンテンツデータを分割した分割データCD14との間でビット単位に排他的論理和演算が行われる。その結果、排他的論理和演算データE14が得られる。
その後、カウント値CNTが0であるため、第1のコンテンツデータの暗号化処理が終了する。
なお図17では、OFBモードでの暗号化処理について説明したが、OFBモードでの復号化処理についても同様である。
2.1.3 ヘッダ情報
上述のような分割データには、COMヘッダが付加される。COMヘッダは、メインCPU40によって付加される。暗号化/復号化装置100のヘッダ解析部270は、COMヘッダの内容を解析することで上記のような制御を行う。このようなヘッダ解析部270を設けることで、暗号化/復号化装置100の処理手順を指定するためにメインCPU40がアクセス可能な制御レジスタ等を設ける必要がなくなり、暗号化/復号化装置100の制御及び構成の簡素化を図ることができるようになる。
図18に、第1の実施形態におけるCOMヘッダの構成例を示す。
COMヘッダは、16ビット長のSYNCフィールド、4ビット長のTranTYPEフィールド、1ビットのExFlgフィールド、32ビット長のPacketLengthフィールドを含む。
SYNCフィールドには、COMヘッダであることを確認するための同期パターンが設定される。この同期パターンのパターンマッチングを行うことで、メインCPU40との間の同期ずれが検出される。
IDフィールドには、通信相手を判別するための識別情報IDが設定される。この識別情報IDを判別することで、暗号化/復号化装置100は、AES処理部200においてコンテンツデータに対応した鍵を変更できる。
ExFlgフィールドには、PCPExtendフィールドが付加されている事を示す情報が設定される。この情報を参照することで、PCPの区切りの位置を特定できるようになり、鍵更新の基準タイミングとすることができる。
PacketLengthフィールドには、このCOMヘッダが付加されているパケットのサイズを示す情報が設定される。この情報は、パケットのうちCOMヘッダを除くデータのサイズを示す。
また第1の実施形態では、「DTCP Volume 1 Supplement E Mapping DTCP to IP (Informational Version)」(Revision 1.0, November 24, 2003)に規定されたPCPヘッダを、PCPExtendヘッダに拡張している。
図19に、PCPExtendヘッダとPCPヘッダの説明図を示す。
CAフィールドには、PCPヘッダのC_Aフィールドの情報が設定される。C_Aフィールドには、128ビット長を1ブロックとするAESか、オプショナルなアルゴリズムかを指定する情報が設定される。
EMIフィールドには、PCPヘッダのE−EMIフィールドの情報が設定される。E−EMIフィールドには、Copy-never、Copy-one-generation、No-more-copies、Copy-free等の複製制限に関する情報が設定される。
ExchangeKeyLabelフィールドには、PCPヘッダのexchange_key_labelフィールドの情報が設定される。exchange_key_labelフィールドには、交換鍵Kxが設定される。
Ncフィールドには、PCPヘッダのNcフィールドの情報が設定される。Ncフィールドには、式(1)、式(2)で用いられる乱数が設定される。
ContentLengthフィールドには、PCPヘッダのCLフィールドの情報が設定される。CLフィールドには、コンテンツデータのバイト長が設定される。従って、ブロック暗号化の処理単位が既知であるため、例えばContentLengthフィールドの情報に基づいてカウント値CNTを求めることができる。
PCPExtendヘッダがPCPヘッダと異なる点は、Reservedフィールドが3ビットから19ビットに拡張された点である。こうすることで、COMヘッダ及びPCPExtendヘッダを含むパケットの長さを、AESの処理単位である16バイトの倍数とすることができ、回路構成の簡素化を図ることができるようになる。
2.1.4 動作の概要
次に、図10に示す暗号化/復号化装置100の動作の概要について説明する。暗号化/復号化装置100の各部は、ステート制御部250によって制御される。
図20に、図10のステート制御部250の処理の説明図を示す。
ステート制御部250は、図20の状態遷移図に従って動作する。即ち、各ステートの間を遷移し、遷移先のステートに対応した制御信号を暗号化/復号化装置100の各部に対して出力する。
IDLEステートでは、記憶部230に対してデータが入出力され、内部でデータ転送等が行われない状態である。IDLEステートにおいて、記憶部230の入力エリアにデータの設定が開始され、ポインタ管理部240で管理されるポインタに基づいてCOMヘッダのデータサイズ分のデータが設定されたと判断されたとき、HdrInがアクティブとなってCOMヘッダが検出されたことを示すHDRDETステートに遷移する。
HDRDETステートでは、COMヘッダの解析が行われる。即ち、図18に示すCOMヘッダの情報に基づいて、IDフィールドの情報に対応したコンテンツの区別、PacketLengthフィールドの情報に対応してInDAMC及びOutDMACに対しデータ転送サイズ等の設定を行う。また、CPU280は、カウント値CNTをAES処理部200に設定する。
HDRDETステートにおいて、COMヘッダのExFlgフィールドの情報に基づいてPCPExtendヘッダが付加されていると判断されるとき、PCPExtendFlagをアクティブにしてPCPHDRDETステートに遷移する。またHDRDETステートにおいて、COMヘッダのExFlgフィールドの情報に基づいてPCPExtendヘッダが付加されていないと判断されるとき、HdrAnalyzeCompleteをアクティブにしてLOADCBCステートに遷移する。
PCPHDRDETステートへの遷移が、PCP単位で行われる鍵更新の基準タイミングとなる。図20では、ステート制御部250が、ExFlgフィールドの情報に基づいてPCPExtendヘッダが付加されていると検出したとき、CPU280に対して割り込み要求を通知する。CPU280は、更新される鍵を再生成し、内部バスを介して鍵メモリ210に設定する。AES処理部200は、鍵メモリ210に設定された鍵を用いて暗号化又は復号化処理を行うようになっている。このような鍵更新が終了すると、PCPExtendヘッダの解析完了を通知するため、CPU280は、暗号化/復号化装置100の図示しない起動制御レジスタをアクセスする。該起動制御レジスタへのアクセスに伴い、PCPExtendAnalyzeCompleteがアクティブとなって、ステート制御部250では、LOADCBCステートへの遷移が行われる。
LOADCBCステートでは、カウント値CNTが0のとき、識別情報IDに対応して鍵メモリ210に保存された初期値IVと鍵が読み出され、カウント値CNTがではないとき、識別情報IDに対応して鍵メモリ210に保存された中間値MVと鍵が読み出される。LOADCBCステートにおいて、鍵メモリ210からのデータ読み出しが完了すると、LOADCompleteがアクティブとなってTRANDATAステートへの遷移が行われる。
TRANDATAステートでは、InDMACが記憶部230の入力エリアからデータを読み出して転送を行い、AES処理部200が暗号化又は復号化処理を行い、最終的にOutDMACが記憶部230の出力エリアに処理結果のデータを保存する。OutDMACの転送が完了すると、OutDMACCompleteがアクティブになり、SAVECBCステートへの遷移が行われる。
SAVECBCステートでは、中間値の保存が行われる。即ち、鍵メモリ制御部220が、鍵メモリ210に処理結果及びカウント値を保存する制御を行う。
その後、鍵メモリ210への保存が完了するとSaveCompleteがアクティブとなって、IDLEステートへの遷移が行われる。
このように第1の実施形態では、ステート制御部250が、COMヘッダのデータサイズ分の暗号化又は復号化処理を行う度に鍵メモリ210に対して中間値等の保存を行うことで、制御及び構成の簡素化を図っている。しかしながら、一連のコンテンツデータの暗号化又は復号化処理の中断時にのみ中間値等の保存を行うようにしてもよいことは言うまでもない。
2.2 第2の実施形態
第1の実施形態では、1つの暗号化アルゴリズムに対応した処理を行う暗号化/復号化装置について説明したが、第2の実施形態では2つの暗号化アルゴリズムに対応した処理を行うことができる。
図21に、第2の実施形態における暗号化/復号化装置の構成例のブロック図を示す。
図2の電子機器10の通信コントローラ50は、第1の実施形態における暗号化/復号化装置100に代えて第2の実施形態における暗号化/復号化装置400を含むことができる。
暗号化/復号化装置400は、複数の暗号化/復号化アルゴリズムの処理を実行することができる。例えば、この構成例では、第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、AES及びDESのアルゴリズムに従った暗号化処理又は復号化処理を行うことができるものとする。また、この構成例では、DESのアルゴリズムに従った暗号化/復号化処理はメインCPU40との間で予め取り決められた方法によるものとする。
暗号化/復号化装置400は、記憶部410と、AES処理部(広義には第1の暗号化/復号化処理部)420と、DES処理部(広義には第2の暗号化/復号化処理部)430と、鍵メモリ(広義には中間値記憶部)440とを含む。記憶部410は、コンテンツデータを分割した複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する。
AES処理部420は、図10のAES処理部200と同様に、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対してAESのアルゴリズムに従った暗号化又は復号化処理(第1の暗号化処理又は第1の復号化処理)を行う。
DES処理部430は、ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、複数の分割データの各分割データに対してDESのアルゴリズムに従った暗号化又は復号化処理(第2の暗号化処理又は第2の復号化処理)を行う。
鍵メモリ440は、図10の鍵メモリ210と同様に、コンテンツ毎に、ブロック単位で処理されたAES処理部420の処理結果及びDES処理部430の処理結果が保存される。
そして入力データに対してAES処理部420及びDES処理部430(第1及び第2の暗号化/復号化処理部)の一方が行ったAESのアルゴリズムに従った暗号化又は復号化処理、或いはDESのアルゴリズムに従った暗号化又は復号化処理(第1又は第2の復号化処理)後の復号化データが記憶部230に保存される。また該復号化データに対してAES処理部420及びDES処理部430(第1及び第2の暗号化/復号化処理部)の他方が行った暗号化処理後のデータが出力データとして記憶部230に保存される。
AES処理部420及びDES処理部430の少なくとも1つは、第2のコンテンツデータを分割した複数の分割データの1つの分割データを入力データとして暗号化又は復号化処理を行った後、その処理結果を鍵メモリ440に保存する。またAES処理部420及びDES処理部430の少なくとも1つは、第1のコンテンツデータを分割した複数の分割データのうち第Kの分割データに対する暗号化/復号化処理部の処理結果を鍵メモリ440から読み出し、第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データを入力データとして上記の処理結果を用いて暗号化又は復号化処理を行う。このとき、記憶部410の記憶領域のうち復号化データの記憶領域が、暗号化/復号化装置400の外部からアクセス不可となるように構成される。
図22に、図21の鍵メモリ440に保存されるデータの一例を示す。
鍵メモリ440には、コンテンツデータに付与された識別情報により区別されるコンテンツ毎に、コンテンツデータ特有の情報が保存される。コンテンツデータ特有の情報として、AES処理部420において暗号化又は復号化処理するためのAES鍵と、初期値IV、処理結果(中間値)MV、カウント値CNTがある。AES鍵は各ラウンドの鍵を鍵メモリ440に保存することができる。初期値IVは、AESのCBCモードで最初のブロックに用いられる初期ベクトル値である。カウント値CNTは、AESのCBCモードで処理すべき残りブロック数に対応した値である。
またコンテンツデータ特有の情報として、DES処理部430において暗号化又は復号化処理するための処理結果(中間値)MV、カウント値CNTがある。カウント値CNTは、DESのCBCモードで処理すべき残りブロック数に対応した値である。
なおDES処理部430で用いる初期値IVは、メインCPU40との間で鍵が共有されていればよいので、コンテンツ毎に保有することなく各コンテンツ共通の情報としている。
このような鍵メモリ440にアクセスするため、暗号化/復号化装置400は、鍵メモリ制御部442を含み、鍵メモリ制御部442が、鍵メモリ440からの読み出し制御と鍵メモリ440への書き込み制御とを行う。鍵メモリ制御部442の動作は、図10の鍵メモリ制御部220と同様である。
以上のような暗号化/復号化装置400は、切換回路450を含むことができる。切換回路450は、入力データをAES処理部420又はDES処理部430に供給するための経路切り換えを行うことができる。また切換回路450は、AES処理部420で行われた暗号化又は復号化処理後のデータを、記憶部410の出力データの記憶領域又は復号化データの記憶領域に供給するための経路切り換えを行うことができる。更に切換回路450は、DES処理部430で行われた暗号化又は復号化処理後のデータを、記憶部410の出力データの記憶領域又は復号化データの記憶領域に供給するための経路切り換えを行うことができる。
暗号化/復号化装置400は、図10のCPU280に相当するコントローラとしてのCPU460によって制御される。例えばCPU460は、AES処理部420の暗号化及び復号化処理のための鍵の設定、DES処理部430の暗号化及び復号化処理のための鍵の設定を行うことができる。CPU460は、プログラムメモリ470に記憶されたプログラムに従って暗号化/復号化装置400の制御を行う。
図23に、DES処理部430の処理の概要のフローを示す。
暗号化/復号化装置400は、メインCPU40との間で共通秘密鍵を共有しており、該共通秘密鍵に基づいて各ラウンド毎を保持している。そしてDES処理部430は、平文である入力データの64ビット分の長さを1ブロックとして、ブロック単位にラウンド毎に鍵を変更しながら暗号化操作をしていく。
初段暗号化操作では、初期転置やビット分割等の暗号化操作が行われる。その後、ラウンド1〜ラウンド16まで、拡大転置、各ラウンド毎の鍵を用いた排他的論理和演算、圧縮換字変換、転置処理等の暗号化操作を行い、最終段暗号化操作では、ビットの入れ替え及び最終転置が行われる。
なおDES処理部430で行われる復号化処理は、図23に示す手順と逆の手順で各操作を行うことで実現できる。この場合、鍵は暗号化処理とは逆に、K16、K15、・・・、Kの順番で用いる。
DES処理部430における各操作の内容は公知であるため、その説明は省略する。
このようにDES処理部430の処理は同じ操作を繰り返し行うため、ハードウェア化した場合により一層の処理の高速化を図ることができる。
以上のように、図21に示す暗号化/復号化装置400は、AES及びDESのアルゴリズムの暗号化処理及び復号化処理を行うことができる上に、入力データ及び出力データの暗号化及び復号化方式を変更できる。従って、暗号化/復号化装置400に入力される入力データ、及び暗号化/復号化装置400から出力された出力データは、AES又はDESのアルゴリズムで暗号化処理された後のデータとすることができる。
そのため記憶部410のうち入力データ及び出力データの記憶領域が、暗号化/復号化装置400の外部からアクセス可能に構成されていても、入力データ及び出力データが不正に複製されることがない。また、復号化データを、暗号化/復号化装置400の外部からアクセス不可となる記憶部410の記憶領域に保存したため、復号化データが不正に複製されることがない。
なお図21において、記憶部410は、それぞれ入力エリア、中間エリア及び出力エリアとして第1〜第3の記憶部412、414、416の各記憶部が、それぞれ別個に設けられていてもよい。入力エリアとしての第1の記憶部412は、暗号化/復号化装置400の外部からアクセス可能な記憶部であって入力データを記憶する。中間エリアとしての第2の記憶部414は、暗号化/復号化装置400の外部からアクセス不可能な記憶部であって入力データに対するAES又はDESのアルゴリズムに従った復号化処理後の復号化データを記憶する。出力エリアとしての第3の記憶部416は、暗号化/復号化装置400の外部からアクセス可能な記憶部であって出力データを記憶する。
そして、暗号化/復号化装置400は、AES処理部420及びDES処理部430の一方が復号化データを第2の記憶部412に保存すると共に、AES処理部420及びDES処理部430の他方が復号化データに対して行ったAES又はDESのアルゴリズムに従った暗号化処理後のデータを出力データとして第3の記憶部416に保存する。
また、第1〜第3の記憶部412、414、416の各記憶部が、それぞれ入力エリア(InputArea)、中間エリア(MediumArea)、出力エリア(OutputArea)として、1つのメモリ空間内に分割された記憶領域に割り当てられ、各記憶領域が、可変であってもよい。
図24に、各記憶領域が可変に設定される図21の記憶部410の構成例を示す。
記憶部410の記憶領域のうちベースアドレスBaseAddrを基準に、入力エリア、中間エリア及び出力エリアの各記憶領域が特定される。暗号化/復号化装置400は、図示しない制御レジスタとしての記憶領域設定レジスタを含み、メインCPUが該記憶領域設定レジスタの設定内容を変更する。
例えば記憶領域設定レジスタは、中間エリア開始位置設定レジスタ、中間エリア終了位置設定レジスタ、出力エリア終了位置設定レジスタを含むことができる。中間エリア開始位置設定レジスタには、中間エリア開始アドレスMedStarAddrが設定される。中間エリア終了位置設定レジスタには、中間エリア終了アドレスMedEndAddrが設定される。出力エリア終了位置設定レジスタには、出力エリア終了アドレスOutEndAddrが設定される。この結果、記憶部410の記憶領域のうちアドレスBaseAddrからアドレス(MedStartAddr-1)までの記憶領域を、入力エリアの記憶領域とすることができる。記憶部410の記憶領域のうちアドレスMedStartAddrからアドレスMedEndAddrまでの記憶領域を、中間エリアの記憶領域とすることができる。記憶部410の記憶領域のうちアドレス(MedEndAddr+1)からアドレスOutEndAddr(又は(OutEndAddr-1))までの記憶領域を、出力エリアの記憶領域とすることができる。
メインCPUは、コンテンツデータを分割する単位に基づいて、中間エリア開始位置設定レジスタ、中間エリア終了位置設定レジスタ及び出力エリア終了位置設定レジスタの各レジスタの設定内容を変更することが望ましい。ベースアドレスBaseAddrを変更できるようにすれば、記憶部410の任意の位置に入力エリア、中間エリア及び出力エリアの各記憶領域を設定できる。
なお暗号化/復号化装置400では、入力エリア、中間エリア及び出力エリアの各エリアがリングバッファとしてアクセスされる。各エリアは、データの読み出し位置を指定するリードポインタ(InAreaRdPtr、MedAreaRdPtr、OutAreaRdPtr)と、データの書き込み位置を指定するライトポインタ(InAreaWrPtr、MedAreaWrPtr、OutAreaWrPtr)とにより管理される。そして、各ポインタがエリアの最終アドレスに到達すると、ポインタの更新時に該エリアの開始アドレスに設定されるようになっている。
図21のポインタ管理部480は、図10のポインタ管理部240に相当する。ポインタ管理部480は、記憶部410の各エリアの書き込みポインタ及び読み出しポインタの管理及び更新する制御を行う。図21のタイミング発生部490は、図10のタイミング発生部260に相当する。図21のヘッダ解析部500は、図10のヘッダ解析部270に相当する。図21のステート制御部510は、図10のステート制御部250に相当する。
図21では、InDMAC1が入力エリアからデータを読み出して切換回路450に出力する。OutDMAC1が、切換回路450からのデータを中間エリアに出力する。InDAMC2が中間エリアからデータを読み出して切換回路450に出力する。OutDMAC2が、切換回路450からのデータを出力エリアに出力する。
2.2.1 動作の概要
次に、図21に示す暗号化/復号化装置400の動作の概要について説明する。暗号化/復号化装置400の各部は、ステート制御部510によって制御される。
図25に、図21のステート制御部510の処理の説明図を示す。
なお図20と図25が異なる主な点は、TRANDATAステートでは、ヘッダ解析部500の解析結果に基づいてAES処理部420及びDES処理部430の一方の処理結果を中間エリアに保存後、再び該処理結果を読み出してAES処理部420及びDES処理部430の他方に処理させ、その処理結果を出力エリアに戻す点である。そして、OutDMAC2のデータ転送が完了したことを示すOutDMAC2Completeがアクティブになったことを条件に、TRANDATAステートからSAVECBCステートへの遷移が行われる点が異なる。
なおSAVECBCステートでは、図22で説明したようなデータが中間値として保存される。
また第2の実施形態では、第1の実施形態と同様にCOMヘッダの情報に基づいて暗号化/復号化装置の制御を行うことができるのに加えて、AES処理部420、DES処理部430及び切換回路450を用いた制御を行うことができる。
図26に、第2の実施形態におけるCOMヘッダの構成例を示す。
第2の実施形態におけるCOMヘッダが、図18に示す第1の実施形態におけるCOMヘッダと異なる点は、第2の実施形態におけるCOMヘッダが4ビット長のTranTYPEフィールドを含む点である。
TranTYPEフィールドには、AES処理部420及びDES処理部430で行われる暗号化処理及び復号化処理のタイプを指定する情報が設定される。この情報を設定することで、動作モードを変更でき、例えば図5又は図6に示すようにコンテンツデータの暗号化処理及び復号化処理の順序を変更したりすることができるようになる。
図27に、図26のTranTYPEフィールドの説明図を示す。
図28(A)〜図28(D)、図29(A)〜図29(C)及び図30に、TranTYPEフィールドの設定情報に対応した動作モードの説明図を示す。図28(A)〜図28(D)、図29(A)〜図29(C)及び図30において、図21と同一部分には同一符号を付し、適宜説明を省略する。
暗号化/復号化装置400は、TranTYPEフィールドの設定情報に対応した動作モードで動作する。
TranTYPEフィールドに0h(hは16進数表示であることを表す)が設定されたとき、暗号化/復号化装置400は、デバッグ用のモードとして動作する。即ち、図28(A)に示すように、メインCPUによって書き込まれたコンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをそのまま中間エリア(第2の記憶部)に出力し、中間エリアにコンテンツデータが保存される。そして、中間エリアから再びコンテンツデータが読み出されて切換回路450に供給された後、切換回路450は、該コンテンツデータをそのまま出力エリア(第3の記憶部)に出力し、出力エリアに出力データとして該コンテンツデータが保存される。その結果、メインCPUによって読み出される出力データは、入力データと同じデータとなる。
TranTYPEフィールドに1hが設定されたとき、暗号化/復号化装置400は、第2の動作モードとして動作する。即ち、図28(B)に示すように、メインCPUが、入力データとしてDESの暗号化処理後のコンテンツデータを入力エリア(第1の記憶部)に格納する。そして、コンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをDES処理部430に供給する。DES処理部430は、該コンテンツデータに対し、DESのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路450に供給する。切換回路450は、復号化データを中間エリア(第2の記憶部)に出力し、中間エリアに復号化データが格納される。そして、中間エリアから再び復号化データが読み出されて切換回路450に供給された後、切換回路450は、該復号化データをAES処理部420に供給する。AES処理部420は、該復号化データに対し、AESのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを出力データとして切換回路450に供給する。切換回路450は、該出力データを出力エリア(第3の記憶部)に出力し、出力エリアに出力データが格納される。その結果、メインCPUによって読み出される出力データがAESの暗号化処理後のデータであるのに対し、メインCPUが格納した入力データはDESの暗号化処理後のデータとなる。例えば通信コントローラ50がコンテンツデータの送信処理を行う場合に、暗号化/復号化装置400は、第2の動作モードに設定される。
TranTYPEフィールドに2hが設定されたとき、暗号化/復号化装置400は、第3の動作モードとして動作する。即ち、図28(C)に示すように、メインCPUが、入力データとしてDESの暗号化処理後のコンテンツデータを入力エリア(第1の記憶部)に格納する。そして、コンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをDES処理部430に供給する。DES処理部430は、該コンテンツデータに対し、DESのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路450に供給する。切換回路450は、復号化データを出力データとして出力エリア(第3の記憶部)に出力し、出力エリアに出力データが格納される。その結果、メインCPUによって読み出される出力データがDESの復号化処理後のデータであるのに対し、メインCPUが格納した入力データはDESの復号化処理前のデータとなる。例えば暗号化/復号化装置400をDESの復号器として用いる場合に、暗号化/復号化装置400は第3の動作モードに設定される。
TranTYPEフィールドに3hが設定されたとき、暗号化/復号化装置400は、第4の動作モードとして動作する。即ち、図28(D)に示すように、メインCPUによって格納されたコンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをAES処理部420に供給する。AES処理部420は、該コンテンツデータに対し、AESのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを切換回路450に供給する。切換回路450は、暗号化処理後のデータを出力データとして出力エリア(第3の記憶部)に出力し、出力エリアに出力データが格納される。その結果、メインCPUによって読み出される出力データがAESの暗号化処理後のデータであるのに対し、メインCPUが格納した入力データはAESの暗号化処理前のデータとなる。例えば暗号化/復号化装置400をAESの暗号器として用いる場合に、暗号化/復号化装置400は第4の動作モードに設定される。
TranTYPEフィールドに4hが設定されたとき、暗号化/復号化装置400は、第1の動作モードとして動作する。即ち、図29(A)に示すように、メインCPUが、入力データとしてAESの暗号化処理後のコンテンツデータを入力エリア(第1の記憶部)に格納する。そして、コンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをAES処理部420に供給する。AES処理部420は、該コンテンツデータに対し、AESのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路450に供給する。切換回路450は、復号化データを中間エリア(第2の記憶部)に出力し、中間エリアに復号化データが格納される。そして、中間エリアから再び復号化データが読み出されて切換回路450に供給された後、切換回路450は、該復号化データをDES処理部430に供給する。DES処理部430は、該復号化データに対し、DESのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを出力データとして切換回路450に供給する。切換回路450は、該出力データを出力エリア(第3の記憶部)に出力し、出力エリアに出力データが格納される。その結果、メインCPUから読み出される出力データがDESの暗号化処理後のデータであるのに対し、メインCPUが格納した入力データはAESの暗号化処理後のデータとなる。例えば通信コントローラ50がコンテンツデータの受信処理を行う場合に、暗号化/復号化装置400は、第1の動作モードに設定される。
TranTYPEフィールドに5hが設定されたとき、暗号化/復号化装置400は、第5の動作モードとして動作する。即ち、図29(B)に示すように、メインCPUによって格納されたコンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをDES処理部430に供給する。DES処理部430は、該コンテンツデータに対し、DESのアルゴリズムに従った暗号化処理を行い、暗号化処理後のデータを出力データとして切換回路450に供給する。切換回路450は、出力データを出力エリア(第3の記憶部)に出力し、出力エリアに出力データが格納される。その結果、メインCPUによって読み出される出力データがDESの暗号化処理後のデータであるのに対し、メインCPUが格納した入力データはDESの暗号化処理前のデータとなる。例えば暗号化/復号化装置400をDESの暗号器として用いる場合に、暗号化/復号化装置400は第5の動作モードに設定される。
TranTYPEフィールドに6hが設定されたとき、暗号化/復号化装置400は、第6の動作モードとして動作する。即ち、図29(C)に示すように、メインCPUが、入力データとしてAESの暗号化処理後のコンテンツデータを入力エリア(第1の記憶部)に格納する。そして、コンテンツデータ(入力データ)が入力エリア(第1の記憶部)から読み出されて切換回路450に供給される。切換回路450は、該コンテンツデータをAES処理部420に供給する。AES処理部420は、該コンテンツデータに対し、AESのアルゴリズムに従った復号化処理を行い、復号化処理後のデータを復号化データとして切換回路450に供給する。切換回路450は、復号化データを出力データとして出力エリア(第3の記憶部)に出力し、出力エリアに出力データが格納される。その結果、メインCPUによって読み出される出力データがAESの復号化処理後のデータであるのに対し、メインCPUが格納する入力データはAESの復号化処理前のデータとなる。例えば暗号化/復号化装置400をAESの復号器として用いる場合に、暗号化/復号化装置400は第6の動作モードに設定される。
以上のように、第1及び第2の動作モードでは、メインCPUと暗号化/復号化装置400との間で暗号化された状態のコンテンツデータをやり取りできる上に、単なるAES又はDESの暗号器又は復号器として機能させることも可能となる。
更に本実施形態では、以下に説明するようにプログラム復号モードとして動作させることもできる。
即ち、TranTYPEフィールドに7hが設定されたとき、暗号化/復号化装置400は、プログラム復号モードとして動作する。プログラム復号モードでは、CPU460の動作を指定する暗号化されたプログラムデータが、メインCPUから供給される場合に、暗号化/復号化装置400が該プログラムデータを復号化処理後にプログラムメモリ470に転送する。
そのため、図30に示すように、メインCPU40に、予めDESのアルゴリズムで暗号化されたプログラムデータを記憶するフラッシュROM(Read Only Memory)42が接続され、CPU460に、予めブート用のプログラムコードを記憶するブートROM472が接続されることが望ましい。フラッシュROM42に格納されるプログラムデータは、AES及びDESの暗号化処理を行うための暗号鍵とAESとDESの復号化処理を行うための復号鍵とを生成するためのデータを有し、CPU460の動作を指定するためのプログラムデータである。従って、復号化データがプログラムデータとしてプログラムメモリ470に転送された後、CPU460が該プログラムデータに基づいて暗号化/復号化装置400の動作を制御することができる。
図31に、プログラム復号モードにおけるシーケンスを示す。
まず、リセット信号が入力されメインCPU40が初期化されると、フラッシュROM42から、予め暗号化されたプログラムデータを取り出す(SEQ60)。同様にしてCPU460もまた初期化され、ブートROM472に格納されたブート用のプログラムコードで動作を開始し(SEQ61)、暗号化/復号化装置400の各部の初期化を行う(SEQ62)。なおブート用のプログラムコードには、予めDESの復号化鍵が設定されているものとする。
メインCPU40は、続いてTranTYPEフィールドが7hに設定されたCOMヘッダを該プログラムデータに付加して(SEQ63)、入力エリアに設定する(SEQ64)。
暗号化/復号化装置400は、COMヘッダを解析し(SEQ65)、TranTYPEフィールドが7hに設定されてプログラム復号モードに指定されたことを判別すると、入力エリアから暗号化されたプログラムデータを読み出して切換回路450に供給する。切換回路450は、該プログラムデータをDES処理部430に出力する。DES処理部430は、該プログラムデータを、DESのアルゴリズムに従った復号化処理を行い(SET66)、復号化データとして切換回路450に出力する。切換回路450は、この復号化データを中間エリアに出力し、中間エリアには復号化データが格納される(SEQ67)。
中間エリアに格納された復号化データは、プログラムメモリ470に転送され(SEQ68)、その後中間エリアの内容がクリアされる(SEQ69)。そして、CPU460は、プログラムメモリ470に新たに格納されたプログラムデータで動作を開始する(SEQ70)。
プログラムメモリ470に格納されるプログラムデータは、上述のようにAESの鍵生成を行うための手順やデータを含むため、メインCPU40から暗号化/復号化装置400に供給されるときには暗号化された状態でなければならない。従って、プログラム復号モードを用いることで、AESの鍵生成を行うための手順やデータの機密性を維持しながら、例えば中間エリアとしての第2の記憶部414を有効に利用できる。
なお第2の実施形態では、2つの暗号化アルゴリズムを処理できるものとして説明したが、3以上の暗号化アルゴリズムを処理できるようにしてもよい。
第2の実施形態における暗号化/復号化装置400を適用することで、図2の通信コントローラ50は、通信データの送信処理及び受信処理を行う通信処理部と、いずれか記載の暗号化/復号化装置とを含むことができる。そして、通信データの受信時には、図5に示すようにTCP/IP処理部(通信処理部)60によって解析されたヘッダ情報のレイヤより上位のレイヤのAESの暗号化処理後(第1の暗号化処理後)のデータを入力データとして暗号化/復号化装置400がAESの復号化処理(第1の復号化処理)した後にDESの暗号化処理を行って該処理後のデータ(第2の暗号化処理したデータ)を出力データとして出力する。また通信データの送信時には、図6に示すように送信データを入力データとして暗号化/復号化装置400がDESの復号化処理(第2の復号化処理)した後にAESの暗号化処理(第1の暗号化処理)したデータを出力データとして出力し、TCP/IP処理部60が該出力データに、上位レイヤのヘッダ情報を付加してネットワークに送信する。
そして、電子機器10は、上記の通信コントローラ50と、コンテンツデータを分割した複数のコンテンツデータを生成すると共に、DESの暗号化及び復号化処理を行う処理部としてのメインCPUとを含むことができる。通信データの受信時には、通信コントローラ50が、メインCPUに対してDESの暗号化処理後のデータを供給し、通信データの送信時には、メインCPU40が、DESの暗号化処理後のデータを入力データとして通信コントローラ50に供給できる。
3. 変形例
第2の実施形態では、メインCPU40と暗号化/復号化装置400との間で暗号化アルゴリズムが取り決められていればよい。そのため、コンテンツデータを正しく処理するために、AESのCBCモード等のブロック暗号方式では正しく中間値等の処理結果を保存しておく必要がある。これに対して、予め処理結果を用いないことがメインCPU40と暗号化/復号化装置400との間で取り決められていれば、DESのCBCモード等のブロック暗号方式の操作モードを正しく行う必要がない。
図32に、本変形例におけるAES及びDESのCBCモードで暗号化又は復号化処理される第1及び第2のコンテンツデータの説明図を示す。
図32では、第1のコンテンツデータがAESで暗号化又は復号化処理され、第2のコンテンツデータがDESで暗号化又は復号化処理されるものとする。
本変形例では、第1のコンテンツデータを分割した複数の分割データCD11〜CD18のうち分割データCD11から順次暗号化又は復号化処理を行い、分割データCD14に対して暗号化処理又は復号化処理を行った後、その処理結果又は入力値MV1を中間値記憶部610に格納する。これは、第1のコンテンツデータがDTCP規格で規定された方式で処理されたデータだからである。
次に暗号化/復号化装置400は、第2のコンテンツデータCD2の暗号化又は復号化処理を開始する。このとき、初期値IV2を読み出して、第2のコンテンツデータCD2を分割した複数の分割データCD21〜CD28のうち分割データCD21から順次暗号化又は復号化処理を行う。このとき、分割データCD24に対して暗号化処理又は復号化処理を行った結果である処理結果又は入力値MV2を中間値記憶部610に保存しない。
その後、暗号化/復号化装置400は、再び、第1のコンテンツデータCD1の暗号化又は復号化処理を開始する。このとき、中間値記憶部610から処理結果又は入力値MV1を読み出し、該処理結果又は入力値MV1を用いて分割データCD15に対して暗号化/復号化処理を行う。そして、分割データCD18まで順次暗号化処理又は復号化処理を行う。
その後、暗号化/復号化装置400は、第2のコンテンツデータCD2の暗号化又は復号化処理を開始する。このとき、中間値記憶部610から処理結果を読み出すことなく、再度初期値IV2を用いて、第2のコンテンツデータCD2を分割した複数の分割データCD21〜CD28のうち分割データCD21から順次暗号化又は復号化処理を行い、分割データCD28まで順次暗号化処理又は復号化処理を行う。
メインCPU40では、DESの暗号化又は復号化処理において、再開されるたびに中間値を読み出すことなく初期値IV2を用いればよく、結果的にメインCPU40と暗号化/復号化装置との間では暗号化された状態でデータのやり取りを行うことができる。従って、中間値記憶部610の容量を削減できるばかりでなく、暗号化又は復号化処理を簡素化できる。
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。例えば、本発明に係るブロック暗号方式は上述のAES、DESに適用されるものに限らず、M6やその他の暗号化及び復号化処理のアルゴリズムに限定されるものではない。またブロック暗号方式の操作モードとして、CBCモード、CFBモード及びOFBモードについて説明したが、これらに限定されるものではない。本発明は、CBCモード、CFBモード及びOFBモードのいずれかを発展、改良した操作モードに適用できることは言うまでもない。
また図2、図10及び図21の各ブロックをすべて含む必要はなく、その一部のブロックが省略された構成であってもよい。
更にまた、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
第1及び第2の実施形態における暗号化/復号化装置を含む通信システムの構成例の図。 図1の電子機器の構成要部を示す図。 図1又は図2の電子機器間で行われるDTCP規格に準拠した処理の一例の図。 図1又は図2の通信システムにおける各種のパケットの構成例を示す図。 図1又は図2の通信システムにおけるコンテンツデータの受信処理の一例のシーケンスを示す図。 図1又は図2の通信システムにおけるコンテンツデータの送信処理の一例のシーケンスを示す図。 図7(A)、図7(B)はコンテンツデータの分割についての説明図。 CBCモードで暗号化又は復号化処理される第1及び第2のコンテンツデータの説明図。 第1の実施形態における暗号化/復号化装置においてCBCモードで暗号化又は復号化処理される第1及び第2のコンテンツデータの説明図を示す。 第1の実施形態における暗号化/復号化装置の構成例のブロック図。 図10の鍵メモリに保存されるデータの一例を示す図。 図12(A)、図12(B)はAES処理部の処理の概要を示すフロー図。 図13(A)はCBCモードの説明図。図13(B)はCFBモードの説明図。図13(C)はOFBモードの説明図。 第1の実施形態におけるCBCモード暗号化での鍵メモリを用いた動作説明図。 第1の実施形態におけるCBCモード復号化での鍵メモリを用いた動作説明図。 第1の実施形態におけるCFBモードでの鍵メモリを用いた動作説明図。 第1の実施形態におけるOFBモードでの鍵メモリを用いた動作説明図。 第1の実施形態におけるCOMヘッダの説明図。 第1の実施形態におけるPCPExtendヘッダとPCPヘッダの説明図。 図10のステート制御部の処理の説明図。 第2の実施形態における暗号化/復号化装置の構成例のブロック図。 図21の鍵メモリに保存されるデータの一例を示す図。 DES処理部の処理の概要を示すフロー図。 各記憶領域が可変に設定される図21の記憶部の構成例を示す図。 図21のステート制御部の処理の説明図。 第2の実施形態におけるCOMヘッダの説明図。 図26のTranTYPEフィールドの説明図。 図28(A)〜図28(D)は、TranTYPEフィールドの設定情報に対応した動作モードの説明図。 図29(A)〜図29(C)は、TranTYPEフィールドの設定情報に対応した動作モードの説明図。 TranTYPEフィールドの設定情報に対応した動作モードの説明図。 プログラム復号モードにおけるシーケンスを示す図。 変形例の動作説明図。
符号の説明
10、20、30 電子機器、 40 メインCPU、 50 通信コントローラ、
60 TCP/IP処理部、 100、400 暗号化/復号化装置、
200、420 AES処理部、 210、440 鍵メモリ、
220、442 鍵メモリ制御部、 230、410 記憶部、
240、480 ポインタ管理部、 250、510 ステート制御部、
260、490 タイミング発生部、 270、500 ヘッダ解析部、
280、460 CPU、 290、470 プログラムメモリ、
412 入力エリア、 414 中間エリア、 416 出力エリア、
430 DES処理部、 450 切換回路

Claims (15)

  1. 第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化/復号化装置であって、
    ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して暗号化処理又は復号化処理を行う暗号化/復号化処理部と、
    コンテンツ毎に、ブロック単位で処理された前記暗号化/復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
    前記第2のコンテンツデータを分割した複数の分割データの1つの分割データに対して前記暗号化/復号化処理部が行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存された後に、
    前記第1のコンテンツデータを分割した複数の分割データのうち第K(Kは自然数)の分割データに対する前記暗号化/復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データに対し前記暗号化/復号化処理部が前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化/復号化装置。
  2. 請求項1において、
    前記中間値記憶部には、
    コンテンツ毎に、鍵、初期値、前記暗号化/復号化処理部の処理結果、又は入力値が保存されることを特徴とする暗号化/復号化装置。
  3. 第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化/復号化装置であって、
    前記複数の分割データの各分割データを入力データとして記憶すると共に、該入力データに対する暗号化処理又は復号化処理後の出力データを記憶する記憶部と、
    ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第1の暗号化処理又は第1の復号化処理を行う第1の暗号化/復号化処理部と、
    ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第2の暗号化処理又は第2の復号化処理を行う第2の暗号化/復号化処理部と、
    コンテンツ毎に、ブロック単位で処理された前記第1及び第2の暗号化/復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
    前記入力データに対して前記第1及び第2の暗号化/復号化処理部の一方が行った前記第1又は第2の復号化処理後の復号化データが前記記憶部に保存されると共に、
    前記第1又は第2の復号化処理後の前記復号化データに対して前記第1及び第2の暗号化/復号化処理部の他方が行った前記第1又は第2の暗号化処理後のデータが前記出力データとして前記記憶部に保存され、
    前記第2のコンテンツデータを分割した複数の分割データの1つの分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
    前記第1のコンテンツデータを分割した複数の分割データのうち第K(Kは自然数)の分割データに対する前記第1又は第2の暗号化/復号化処理部の保存された処理結果、又は入力値が前記中間値記憶部から読み出され、前記第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化/復号化装置。
  4. 請求項3において、
    前記記憶部の記憶領域のうち前記復号化データの記憶領域が、前記暗号化/復号化装置の外部からアクセス不可となるように構成されることを特徴とする暗号化/復号化装置。
  5. 第1及び第2のコンテンツデータの各コンテンツデータを分割した複数の分割データのそれぞれに対して、暗号化処理又は復号化処理を行う暗号化/復号化装置であって、
    前記暗号化/復号化装置の外部からアクセス可能な記憶部であって前記複数の分割データの各分割データを入力データとして記憶するための第1の記憶部と、
    ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、前記複数の分割データの各分割データに対して第1の暗号化処理又は第1の復号化処理を行う第1の暗号化/復号化処理部と、
    ブロック暗号方式の操作モードのうち処理中のブロック以外のブロックのデータを用いる操作モードで、ブロック暗号方式の操作モードで、前記複数の分割データの各分割データに対して第2の暗号化処理又は第2の復号化処理を行う第2の暗号化/復号化処理部と、
    前記暗号化/復号化装置の外部からアクセス不可能な記憶部であって前記入力データに対する前記第1又は第2の復号化処理後の復号化データを記憶するための第2の記憶部と、
    前記暗号化/復号化装置の外部からアクセス可能な記憶部であって前記入力データに対する暗号化処理又は復号化処理後の出力データを記憶する第3の記憶部と、
    コンテンツ毎に、ブロック単位で処理された前記暗号化/復号化処理部の処理結果、又は入力値が保存される中間値記憶部とを含み、
    前記入力データに対して前記第1及び第2の暗号化/復号化処理部の一方が行った前記第1又は第2の復号化処理後の復号化データが前記第2の記憶部に保存されると共に、
    前記第1又は第2の復号化処理後の前記復号化データに対して前記第1及び第2の暗号化/復号化処理部の他方が行った前記第1又は第2の暗号化処理後のデータが前記出力データとして前記第3の記憶部に保存され、
    前記第2のコンテンツデータを分割した複数の分割データの1つの分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが行った前記暗号化処理又は復号化処理の処理結果、又は入力値が前記中間値記憶部に保存されると共に、
    前記第1のコンテンツデータを分割した複数の分割データのうち第K(Kは自然数)の分割データに対する前記暗号化/復号化処理部の処理結果、又は入力値が前記中間値記憶部から読み出され、前記第1のコンテンツデータを分割した複数の分割データのうち第(K+1)の分割データを前記入力データとして前記第1及び第2の暗号化/復号化処理部の少なくとも1つが前記処理結果、又は入力値を用いて前記暗号化又は復号化処理を行うことを特徴とする暗号化/復号化装置。
  6. 請求項5において、
    前記第1〜第3の記憶部の各記憶部が、
    1つのメモリ空間内に分割された記憶領域に割り当てられ、
    各記憶領域が、
    可変であることを特徴とする暗号化/復号化装置。
  7. 請求項5又は6において、
    前記中間値記憶部には、
    コンテンツ毎に、前記第1の暗号化/復号化処理部の鍵、前記第1の暗号化/復号化処理部の初期値、前記第1の暗号化/復号化処理部の処理結果、又は入力値が保存されると共に、
    コンテンツ毎に、前記第2の暗号化/復号化処理部の処理結果、又は入力値が保存されることを特徴とする暗号化/復号化装置。
  8. 請求項5又は6において、
    前記中間値記憶部には、
    コンテンツ毎に、前記第1の暗号化/復号化処理部の鍵、前記第1の暗号化/復号化処理部の初期値、前記第1の暗号化/復号化処理部の処理結果、又は入力値が保存され、
    前記第2の暗号化/復号化処理部は、
    前記第1のコンテンツデータの前記第Kの分割データに対する前記第2の暗号化処理又は第2の復号化処理の処理結果、又は入力値を前記中間値記憶部から読み出すことなく、所定の初期値を用いて前記第1のコンテンツデータの前記第(K+1)の分割データを前記入力データとして前記第2の暗号化処理又は第2の復号化処理を行うことを特徴とする暗号化/復号化装置。
  9. 請求項5乃至8のいずれかにおいて、
    前記第1の暗号化/復号化処理部が、
    AES(Advanced Encryption Standard)に準拠した暗号化処理及び復号化処理を行い、
    前記第2の暗号化/復号化処理部が、
    DES(Data Encryption Standard)に準拠した暗号化処理及び復号化処理を行うことを特徴とする暗号化/復号化装置。
  10. 請求項1乃至9のいずれかにおいて、
    前記操作モードは、
    CBC(cipher block chaining)モード、CFB(cipher feedback)モード、及びOFB(output feedback)モードのいずれか1つのモードであることを特徴とする暗号化/復号化装置。
  11. 請求項1乃至10のいずれかにおいて、
    前記入力データに付加されたヘッダ情報を解析するヘッダ解析部を含み、
    前記ヘッダ情報に含まれる識別情報に基づいて、前記分割データが前記第1及び第2のコンテンツデータのいずれのコンテンツデータの分割データであるかが判別されることを特徴とする暗号化/復号化装置。
  12. ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
    前記通信データの送信処理及び受信処理を行う通信処理部と、
    前記ネットワークに送信される通信データ又は前記ネットワークから受信される通信データに対して暗号化又は復号化処理を行う請求項1乃至11のいずれか記載の暗号化/復号化装置とを含むことを特徴とする通信コントローラ。
  13. ネットワークを介してレイヤ構造の通信データを送受信するための通信コントローラであって、
    前記通信データの送信処理及び受信処理を行う通信処理部と、
    請求項3乃至9のいずれか記載の暗号化/復号化装置とを含み、
    前記通信データの受信時には、
    前記通信処理部によって解析されたヘッダ情報のレイヤより上位のレイヤの前記第1の暗号化処理後のデータを前記入力データとして前記暗号化/復号化装置が前記第1の復号化処理した後に前記第2の暗号化処理したデータを前記出力データとして出力し、
    前記通信データの送信時には、
    送信データを前記入力データとして前記暗号化/復号化装置が前記第2の復号化処理した後に前記第1の暗号化処理したデータを前記出力データとして出力し、前記通信処理部が該出力データに、上位レイヤのヘッダ情報を付加して前記ネットワークに送信することを特徴とする通信コントローラ。
  14. 請求項12又は13記載の通信コントローラと、
    コンテンツデータを分割した複数のコンテンツデータを前記通信コントローラに供給する処理部とを含むことを特徴とする電子機器。
  15. 請求項13記載の通信コントローラと、
    コンテンツデータを分割した複数のコンテンツデータを生成すると共に、前記第2の暗号化処理及び第2の復号化処理を行う処理部とを含み、
    前記通信データの受信時には、
    前記通信コントローラが、前記処理部に対して前記第2の暗号化処理後のデータを供給し、
    前記通信データの送信時には、
    前記処理部が、前記第2の暗号化処理後のデータを前記入力データとして前記通信コントローラに供給することを特徴とする電子機器。
JP2005044395A 2005-02-21 2005-02-21 暗号化/復号化装置、通信コントローラ及び電子機器 Withdrawn JP2006229863A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005044395A JP2006229863A (ja) 2005-02-21 2005-02-21 暗号化/復号化装置、通信コントローラ及び電子機器
US11/355,999 US20060188098A1 (en) 2005-02-21 2006-02-17 Encryption/decryption device, communication controller, and electronic instrument

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005044395A JP2006229863A (ja) 2005-02-21 2005-02-21 暗号化/復号化装置、通信コントローラ及び電子機器

Publications (1)

Publication Number Publication Date
JP2006229863A true JP2006229863A (ja) 2006-08-31

Family

ID=36912740

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005044395A Withdrawn JP2006229863A (ja) 2005-02-21 2005-02-21 暗号化/復号化装置、通信コントローラ及び電子機器

Country Status (2)

Country Link
US (1) US20060188098A1 (ja)
JP (1) JP2006229863A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007028552A (ja) * 2005-07-21 2007-02-01 Sony Corp 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
WO2010055658A1 (ja) * 2008-11-13 2010-05-20 パナソニック株式会社 コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4596256B2 (ja) * 2005-08-02 2010-12-08 ソニー株式会社 送受信システムおよび方法、送信装置および方法、受信装置および方法、並びにプログラム
US20090316884A1 (en) * 2006-04-07 2009-12-24 Makoto Fujiwara Data encryption method, encrypted data reproduction method, encrypted data production device, encrypted data reproduction device, and encrypted data structure
US7949130B2 (en) * 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
JP2008270870A (ja) * 2007-04-16 2008-11-06 Sony Corp 通信システム、通信装置及び通信方法、並びにコンピュータ・プログラム
JP5177696B2 (ja) * 2007-09-04 2013-04-03 任天堂株式会社 書込み領域セキュリティシステム
US9137015B2 (en) * 2008-01-04 2015-09-15 Arcsoft, Inc. Protection scheme for AACS keys
EP2272203A4 (en) * 2008-04-30 2015-08-26 Mediatek Inc METHOD FOR DERIVING A TRANSPORT KEY
EP2277351A4 (en) * 2008-04-30 2015-12-23 Mediatek Inc METHOD FOR LEADING A TRAFFIC ENCRYPTION KEY
CN106506552B (zh) * 2016-12-28 2020-04-03 北京奇艺世纪科技有限公司 一种http请求传输方法及装置
WO2020186125A1 (en) 2019-03-13 2020-09-17 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
CN110417791A (zh) * 2019-08-02 2019-11-05 成都卫士通信息产业股份有限公司 一种密码设备及处理网络数据方法、装置
CN115757191B (zh) * 2023-01-05 2023-05-16 广州市千钧网络科技有限公司 一种数据处理方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805706A (en) * 1996-04-17 1998-09-08 Intel Corporation Apparatus and method for re-encrypting data without unsecured exposure of its non-encrypted format
JP3679936B2 (ja) * 1998-11-27 2005-08-03 東芝ソリューション株式会社 暗復号装置及び記憶媒体
US7184549B2 (en) * 2000-01-14 2007-02-27 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for encryption, method and apparatus for decryption, and computer-readable medium storing program
JP3623715B2 (ja) * 2000-04-07 2005-02-23 日本電気株式会社 通信端末装置
JP2002202719A (ja) * 2000-11-06 2002-07-19 Sony Corp 暗号化装置及び方法、復号装置及び方法、並びに記憶媒体
CN1592877B (zh) * 2001-09-28 2010-05-26 高密度装置公司 用于对大容量存储设备上数据加密/解密的方法和装置
EP1383265A1 (en) * 2002-07-16 2004-01-21 Nokia Corporation Method for generating proxy signatures
JP2004126323A (ja) * 2002-10-04 2004-04-22 Sony Corp ブロック暗号方法、ブロック暗号回路、暗号装置、ブロック復号方法、ブロック復号回路および復号装置
EP1553735A1 (en) * 2002-10-17 2005-07-13 Matsushita Electric Industrial Co., Ltd. Packet transmission/reception device
US20060053308A1 (en) * 2004-09-08 2006-03-09 Raidy 2 Go Ltd. Secured redundant memory subsystem

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007028552A (ja) * 2005-07-21 2007-02-01 Sony Corp 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
WO2010055658A1 (ja) * 2008-11-13 2010-05-20 パナソニック株式会社 コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路

Also Published As

Publication number Publication date
US20060188098A1 (en) 2006-08-24

Similar Documents

Publication Publication Date Title
JP2006229863A (ja) 暗号化/復号化装置、通信コントローラ及び電子機器
US20070180270A1 (en) Encryption/decryption device, communication controller, and electronic instrument
US8983061B2 (en) Method and apparatus for cryptographically processing data
US6526144B2 (en) Data protection system
US6542610B2 (en) Content protection for digital transmission systems
US7242766B1 (en) Method and system for encrypting and decrypting data using an external agent
JP3901909B2 (ja) 暗号化装置およびプログラムを記録した記録媒体
US7336783B2 (en) Cryptographic systems and methods supporting multiple modes
US8108674B2 (en) Transmitting/receiving system and method, transmitting apparatus and method, receiving apparatus and method, and program used therewith
WO1998048543A1 (fr) Procede de transfert de donnees
JP2008113172A (ja) コンテンツ送信装置、コンテンツ受信装置及びコンテンツ暗号化方法
JPH0969830A (ja) 暗号通信システム
JP2000287192A (ja) 情報配信装置、受信装置及び通信方法
JP2003508975A (ja) デジタル・ビデオ・コンテンツ伝送の暗号化および解読の方法および装置
JPH05500298A (ja) 暗号化装置
US20100014671A1 (en) Secure interchip transport interface
JP2006523049A (ja) パーソナルビデオレコーダにおけるデジタル音声/映像データの暗号化/復号化のためのチップ毎のユニーク識別子
JP2007028552A (ja) 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
JPH118618A (ja) 機器認証方法及び装置並びに認証システム
WO2007043002A2 (en) Improved security system
KR20060058789A (ko) 홈 네트워크 시스템에서의 데이터 보안 방법 및 장치
JP4277833B2 (ja) コンテンツ暗号化装置、コンテンツ暗号化方法
Aikawa et al. A lightweight encryption method suitable for copyright protection
JP3579022B2 (ja) 暗号化装置、及び復号化装置
JP2005190350A (ja) コンテンツ送信装置及びコンテンツ送信方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090421

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090619