JP2004070499A - メモリデバイスおよび暗号化/復号方法 - Google Patents

メモリデバイスおよび暗号化/復号方法 Download PDF

Info

Publication number
JP2004070499A
JP2004070499A JP2002226204A JP2002226204A JP2004070499A JP 2004070499 A JP2004070499 A JP 2004070499A JP 2002226204 A JP2002226204 A JP 2002226204A JP 2002226204 A JP2002226204 A JP 2002226204A JP 2004070499 A JP2004070499 A JP 2004070499A
Authority
JP
Japan
Prior art keywords
circuit
data
encryption
processing
memory
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.)
Pending
Application number
JP2002226204A
Other languages
English (en)
Inventor
Tomokazu Aoki
青木 智一
Takahiro Emori
江森 香弘
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002226204A priority Critical patent/JP2004070499A/ja
Priority to US10/375,123 priority patent/US20040025040A1/en
Publication of JP2004070499A publication Critical patent/JP2004070499A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks

Abstract

【課題】データの暗号化/復号処理に伴うシステム全体の処理効率の低下を防止する。
【解決手段】第1のメモリ回路1bは、外部バス接続端子1aから入力されたデータ1ba,1bb,1bc,・・・を記憶する。第2のメモリ回路1cは、第1のメモリ回路1bに対して内部接続されており、第1のメモリ回路1bに記憶されたデータ1ba,1bb,1bc,・・・の複製データ1ca,1cb,1cc,・・・を取得し、取得した複製データ1ca,1cb,1cc,・・・を記憶する。暗号化/復号回路1dは、第2のメモリ回路1cに対して内部接続されており、外部からの動作指示入力に応答して、第2のメモリ回路1cに記憶された複製データ1ca,1cb,1cc,・・・の暗号化または復号の処理を実行し、処理結果を第2のメモリ回路1cに書き戻す。
【選択図】    図1

Description

【0001】
【発明の属する技術分野】
本発明はメモリデバイスおよびメモリデバイスに格納されたデータの暗号化/復号方法に関し、特に暗号化対象データまたは復号対象データの一時記憶として利用されるメモリデバイスおよびそのようなメモリデバイスに記憶されたデータの暗号化/復号方法に関する。
【0002】
【従来の技術】
近年、インターネットのような広域ネットワークを利用した情報通信が盛んに行われている。インターネットを介して情報を送受信する場合、伝送系路上で、第三者にデータの内容を覗かれる危険がある。そこで、データを暗号化して通信することが行われている。強度な暗号化技術を用いてデータを暗号化しておけば、ネットワーク上で伝送されるデータを第三者が不正に取得してもデータを復号するのは困難である。これにより、情報の漏洩を防止できる。
【0003】
図26は、従来の機密保持機能を備えたコンピュータの概略構成を示す図である。図26に示すように、機密保持機能を備えたコンピュータは、CPU(Central Processing Unit)910、暗号化/復号部920、記憶装置930などを有している。CPU910はコンピュータシステム全体を制御しており、暗号化/復号部920や記憶装置930との間でデータの受け渡しを行う。暗号化/復号部920は、入力されたデータの暗号化、または復号処理を行う。暗号化/復号部920は、ハードウェアで構成しても、ソフトウェアで構成してもよい。記憶装置930は、たとえば、RAM(Random Access Memory)である。
【0004】
このようなコンピュータシステムを用いて暗号化通信を行う場合、外部から暗号化して送られてきたデータ931,932,・・・,933,934(暗号文)は、記憶装置930に格納される。データ931,932,・・・,933,934は、たとえば、1ワード(64ビット)単位で、「Data#1」から「Data#N」までのNワード(Nは自然数)に分割されて格納される。
【0005】
CPU910は、記憶装置930から1ワードずつのデータ931,932,・・・,933,934を順次読み出し(ステップS71)、暗号化/復号部920に渡す(ステップS72)。暗号化/復号部920は、暗号化されているデータを復号し、復号された平文のデータをCPU910に渡す(ステップS73)。CPU910は、平文のデータを受け取ると、そのデータを記憶装置930内の元の位置に書き込む(ステップS74)。
【0006】
逆に、平文のデータを暗号化して送信する場合も復号の場合と同様に、CPU910が暗号化/復号部920に順次データを渡すことで、ワード単位のデータが順次暗号化される。
【0007】
このようにして、ネットワークを経由した情報通信において、送受信されるデータの機密を保持することが可能となる。
データの機密を保ちつつ情報通信を行うための装置として、VPN(Virtual Private Network)装置がある。VPN装置は、インターネットなどの広域ネットワークを経由して送受信するパケットの暗号化や復号処理を行う。
【0008】
図27は、従来のVPN装置の構成例を示す図である。従来のVPN装置940では、CPU941に対してメモリバス948を介さずにDES(Data Encryption Standard)処理部947が接続されている。また、CPU941には、メモリバス948を介して、ROM(Read Only Memory)942、RAM943、DMA(Direct Memory Access)装置944が接続されている。DMA装置944には、ネットワークインタフェースカード(NIC)945,946が接続されている。
【0009】
たとえば、NIC945に入力されたパケット951を暗号化する場合の処理を説明する。
[暗号化ステップ1]NIC945から入力されたパケット951がDMA装置944によりDMA転送され、RAM943に格納される。
【0010】
[暗号化ステップ2]CPU941はRAM943中におかれたパケット951のIPヘッダを解析(チェックサム、フィルタリング、IPアドレス検索によるルーティング情報収得、プロトコルタイプの変更等)する。
【0011】
[暗号化ステップ3]CPU941は、RAM943中におかれたパケット951のペイロードデータ部よりデータを64ビットずつ取り込み、DES処理部947に渡す。すると、DES処理部947がDES処理(暗号化)を行う。なお、図27の例では、DES処理をCPU外部にあるDES処理部947で行っているが、CPU941によりソフトウェア的にDES処理を行うこともできる。DES処理(暗号化)後のデータは、RAM943に書き戻される。
【0012】
[暗号化ステップ4]CPU941は、DES処理後の暗号化されたデータから認証用のデータを作成する。
[暗号化ステップ5]CPU941はトンネル用のIPヘッダを作成する。
【0013】
[暗号化ステップ6]この時点で1パケット分の暗号化済みのパケットが生成され、DMA装置944がDMA転送によりNIC946へパケットを転送する。すると、NIC946から暗号パケット952が送出される。
【0014】
逆に、NIC946に入力された暗号パケット952を復号する場合について説明する。
[復号ステップ1]NIC946から入力された暗号パケット952は、DMA装置944によりDMA転送され、RAM943に格納される。
【0015】
[復号ステップ2]CPU941は、RAM943中におかれた暗号パケット952のIPヘッダを解析(チェックサム、フィルタリング、IPアドレス検索によるルーティング情報収得、プロトコルタイプの変更等)する。
【0016】
[復号ステップ3]CPU941は、暗号化されたデータをリードし、認証用データを作成する。そして、暗号パケット952に含まれている認証用データとの比較により、認証を行う。
【0017】
[復号ステップ4]CPU941は、RAM943中におかれた暗号パケット952のペイロードデータ部よりデータを64ビットずつ取り込み、DES処理部947に渡す。すると、DES処理部947がDES処理(復号)を行う。なお、図27の例では、DES処理をCPU外部にあるDES処理部947で行っているが、CPU941によりソフトウェア的にDES処理を行うこともできる。DES処理(復号)後のデータは、RAM943に書き戻される。
【0018】
[復号ステップ5]この時点で1パケット分の復号済みのパケット951が生成され、DMA装置944によりNIC945にDMA転送される。すると、NIC945からパケット951が出力される。
【0019】
【発明が解決しようとする課題】
しかし、従来の技術においては、暗号化や復号を行うために、CPU+暗号化/復号部(たとえば、DES処理部)+記憶装置(たとえば、RAM)が必要である。そのため、処理対象のデータの格納に記憶装置上の所定のバッファ領域を利用する場合、平文→暗号文あるいは暗号文→平文にするために、リードとライトの動作を、処理するデータ長に比例した回数実行しなければならなかった。
【0020】
このリードとライト動作には、システムクロックの数サイクルから数十サイクル要するため、データ長が長くなるほど、デッドサイクル(CPU910がデータ待ちのために待機する時間)も大きくなる。また、これらのリードとライト動作はCPUもしくはDMA装置が実行することとなる。すると、処理対象のデータを転送する間メモリバスが専有されるため、暗号化または復号処理が終了するまで実質上システムの動作を先に進めることができなかった。
【0021】
ここで、従来技術におけるバス専有率の高さを、図27に示したVPN装置940における処理の流れを用いて説明する。
主にバス専有は下記工程で発生する。これらの工程はシーケンシャルに実行される。
【0022】
暗号化の場合:1.DMA転送→2.CPUによるIPヘッダ解析のためのヘッダリード→3.CPUによるDES処理(暗号化)のためのデータリード・ライト→4.DES処理後のデータから認証データを作成するためのデータのリード・ライト→5.DMA転送
復号の場合:1.DMA転送→2.CPUによるトンネルIPヘッダ解析のためのヘッダリード→3.暗号化データから認証データを作成し、比較するためのリード・ライト→4.CPUによるDES処理(復号)のためのデータリード・ライト→5.DMA転送
この中で暗号化、復号共に、1.2.3.4.5.の全ての工程において、その処理にメモリバスを占有することとなる。そのため、これらの工程は順番に処理しなければならない。しかも、DES処理の工程は、64ビット単位でCPUからのリードとライトが(パケット長÷64ビット)回発生するため、その間もメモリバスがCPUによって占有されてしまう。
【0023】
本発明はこのような点に鑑みてなされたものであり、データの暗号化/復号処理に伴うシステム全体の処理効率の低下を防止することができるメモリデバイスおよび暗号化/復号方法を提供することを目的とする。
【0024】
【課題を解決するための手段】
本発明では上記課題を解決するために、図1に示すようなメモリデバイス1が提供される。本発明に係るメモリデバイス1は、第1のメモリ回路1b、第2のメモリ回路1c、及び暗号化/復号回路1dを有している。
【0025】
第1のメモリ回路1bは、外部バス接続端子1aから入力されたデータ1ba,1bb,1bc,・・・を記憶する。第2のメモリ回路1cは、第1のメモリ回路1bに対して内部接続されており、第1のメモリ回路1bに記憶されたデータ1ba,1bb,1bc,・・・の複製データ1ca,1cb,1cc,・・・を取得し、取得した複製データ1ca,1cb,1cc,・・・を記憶する。暗号化/復号回路1dは、第2のメモリ回路1cに対して内部接続されており、外部からの動作指示入力に応答して、第2のメモリ回路1cに記憶された複製データ1ca,1cb,1cc,・・・の暗号化または復号の処理を実行し、処理結果を第2のメモリ回路1cに書き戻す。
【0026】
このようなメモリデバイスによれば、外部バス接続端子1aからデータ1ba,1bb,1bc,・・・が入力されると、まず第1のメモリ1bに記憶され、その複製データ1ca,1cb,1cc,・・・が第2のメモリ回路1cに記憶される。すると、暗号化/復号回路1dによって複製データ1ca,1cb,1cc,・・・に対する暗号化または復号処理が実行され、処理結果が第2のメモリ回路1cに書き戻される。
【0027】
また、本発明では上記課題を解決するために、メモリデバイスに入出力されるデータの暗号化/復号処理を行うための暗号化/復号方法において、外部バス接続端子から前記メモリデバイスに入力されたデータを前記メモリデバイス内の第1のメモリ回路に格納し、外部からの動作指示入力に応答して、前記第1のメモリ回路に対して前記メモリデバイス内で内部接続されている暗号化/復号回路を用いて、前記第1のメモリ回路に格納された前記データの複製データに対して暗号化または復号の処理を実行し、暗号化または復号の処理結果を、前記暗号化/復号回路に内部接続された第2のメモリ回路に格納する、ことを特徴とする暗号化/復号方法が提供される。
【0028】
このような暗号化/復号方法によれば、外部バス接続端子からメモリデバイスにデータが入力されると、そのデータがメモリデバイス内の第1のメモリ回路に格納される。次に、外部からの動作指示入力に応答して、第1のメモリ回路に対してメモリデバイス内で内部接続されている暗号化/復号回路により、第1のメモリ回路に格納されたデータの複製データに対して暗号化または復号の処理が実行される。暗号化または復号の処理結果は、暗号化/復号回路に内部接続された第2のメモリ回路に格納される。
【0029】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
【0030】
図1は、実施の形態に適用される発明の概念図である。図1に示すメモリデバイス1は、外部バス接続端子1a、第1のメモリ回路1b、第2のメモリ回路1c、暗号化/復号回路1dおよび内部バス1e,1fを有している。
【0031】
外部バス接続端子1aは、メモリデバイス1を外部バス2に接続するための接続端子である。外部バス2は、たとえば、CPUに接続されるメモリバスである。
【0032】
第1のメモリ回路1bは、外部バス接続端子1aから入力されたデータ1ba,1bb,1bc,・・・を記憶する。データ1ba,1bb,1bc,・・・は、たとえば、所定のデータ長の単位データに分割して記憶される。単位データは、たとえば、64ビット長のデータ(ワード)である。なお、第1のメモリ回路1bは、外部バス2を介したメモリアクセスによって書き込み(ライト)と読み出し(リード)を行うことができる。
【0033】
第2のメモリ回路1cは、第1のメモリ回路1bに対して内部接続されている。たとえば、内部バス1eを介して、第1のメモリ回路1bと第2のメモリ回路1cとが接続されている。第2のメモリ回路1cは、第1のメモリ回路1bに記憶されたデータ1ba,1bb,1bc,・・・の複製データ1ca,1cb,1cc,・・・を取得し、取得した複製データ1ca,1cb,1cc,・・・を記憶する。なお、第2のメモリ回路1cは、外部バス2を介したメモリアクセスによって読み出し(リード)を行うことができる。
【0034】
暗号化/復号回路1dは、第2のメモリ回路1cに対して内部接続されている。たとえば、内部バス1fを介して、第2のメモリ回路1cと暗号化/復号回路1dとが接続されている。暗号化/復号回路1dは、外部からの動作指示入力(暗号化処理を実行するのか、復号処理を実行するのかが指示される)に応答して、第2のメモリ回路1cに記憶された複製データ1ca,1cb,1cc,・・・の暗号化または復号の処理を実行し、処理結果を第2のメモリ回路1cに書き戻す。
【0035】
このようなメモリデバイスによれば、外部バス接続端子1aからデータ1ba,1bb,1bc,・・・が入力されると、まず第1のメモリ1bに記憶され、その複製データ1ca,1cb,1cc,・・・が第2のメモリ回路1cに記憶される。すると、暗号化/復号回路1dによって複製データ1ca,1cb,1cc,・・・に対する暗号化または復号処理が実行され、処理結果が第2のメモリ回路1cに書き戻される。
【0036】
これにより、暗号化または復号すべきデータをメモリデバイス1に入力すれば、暗号化または復号の処理実行後のデータが第2のメモリ回路1c内に生成される。暗号化または復号の処理はメモリデバイス1内で実行されるため、処理中に外部バス2が占有されることがない。しかも、暗号化/復号処理は、複製データ1ca,1cb,1cc,・・・に対して行われるため、その処理中であっても第1のメモリ回路1bは通常の主記憶装置と同様に使用できる。すなわち、暗号化/復号の処理中でも、メモリ回路1b内のデータ1ba,1bb,1bc,・・・に対して、書き込みや読み出し等の操作を行うことが可能である。
【0037】
その結果、データの暗号化/復号に関する処理の効率化が図れ、処理速度が向上する。
以下、暗号化/復号技術としてDES(Data Encryption Standard)を採用した場合の本発明の実施の形態を詳しく説明する。
【0038】
なお、DESには、CBCモード(Cipher Block Chaining Mode)、ECBモード(Electronic Code Book Mode)、および3(トリプル)DES(CBCモードとECBモードとがある)という方式がある。以下の実施の形態では、方式毎の実施の形態を実現する装置を説明し、その後、暗号化/復号処理方式を任意に選択可能な装置、およびその他の応用例について説明する。
【0039】
[第1の実施の形態]
第1の実施の形態は、DES−CBCモードにより暗号化/復号を行うシステムに本発明を適用した場合の例である。DES−CBCモードは、最初の1ワード(64ビット)の暗号文出力と次の1ワードの入力との排他的論理和(XOR)を演算し、その演算結果を次段のDES演算への入力としている。
【0040】
ところで、図1に示すメモリデバイスを1つのメモリモジュール上に実装しておけば、既存のRAMのメモリモジュールが接続されるメモリバスに容易に接続することができる。そこで、以下の第1の実施の形態では、メモリモジュール上に機密データ保護機能を実装するものとする。
【0041】
図2は、DES−CBCモードの動作を説明する図である。図2では、平文のデータがN個(Nは自然数)のワード11,12,13に分割されている。ここで、最初のワード11の内容を「P1」とする。2番目のワード12の内容を「P2」とする。そして、最後のワード13の内容を「PN」とする。また、予めIV(Initial Vector)10が用意されている。
【0042】
平文を暗号化する場合、内容が「P1」の最初のワード11は、排他的論理和演算部21によって、IV10との間で排他的論理和が演算される。その演算結果のデータが暗号化部31によって暗号化され、内容が「C1」に暗号化されたワード14が生成される。
【0043】
内容が「P2」の2番目のワード12は、排他的論理和演算部22によって、前段の処理で暗号化されたワード14との間で排他的論理和が演算される。その演算結果のデータが暗号化部32によって暗号化され、内容が「C2」に暗号化されたワード15が生成される。
【0044】
同様に、各ワードの暗号化が行われる。そして、内容が「PN」のN番目のワード13は、排他的論理和演算部23によって、N−1段目の処理で暗号化されたワードとの間で排他的論理和が演算される。その演算結果のデータが暗号化部33によって暗号化され、内容が「CN」に暗号化されたワード16が生成される。
【0045】
暗号化された各データ14,15,16によって暗号文が構成される。暗号文を平文化(復号)する場合、内容が「C1」の最初のデータ14は、復号部34によって復号される。そして、排他的論理和演算部24によって、復号されたデータとIV10との間の排他的論理和が演算される。その結果、内容が「P1」のワード17が生成される。
【0046】
内容が「C2」の2番目のワード15は、復号部35によって復号される。復号されたデータは、排他的論理和演算部25によって、内容が「C1」のワード14との間の排他的論理和が演算される。その結果、内容が「P2」のワード18が生成される。
【0047】
同様に、各ワードの復号が行われる。そして、内容が「CN」のN番目のワード16は、復号部36によって復号される。復号されたデータは、排他的論理和演算部26によって、前段で処理された平分の状態のワードとの間の排他的論理和が演算される。その結果、内容が「PN」のワード19が生成される。
【0048】
このようにして生成されたワード17,18,19で構成される平文の内容は、ワード11,12,13で構成される平文と同じである。
このように暗号化/復号処理を、前段のブロックから連鎖的に実行することで、不正行為による暗号解読を困難にしている。
【0049】
このようなDES−CBCモードによって暗号化すれば、インターネットを介してデータを受け渡しても、そのデータの秘匿性を保つことができる。このような技術を利用して、たとえば、VPNを構築することができる。なお、VPNとは、インターネットのようにだれもが利用できる公共のネットワークを利用して構築されたプライベートな(データの秘匿性が保たれた)ネットワーク環境である。
【0050】
VPNを構築する場合、広域ネットワークとプライベートなネットワークとの間にVPN装置を配置し、VPN装置がパケットを中継する。VPN装置内に、秘密保持機能を備えたメモリモジュールを実装することで、VPN装置のスループット(インターネットとイントラネットとの間のデータの受け渡しの速度)を向上させることができる。以下、機密保持のための暗号化/復号機能が内部に実装されたメモリモジュールを、機密データ保護メモリモジュールと呼ぶ。
【0051】
図3は、VPNのシステム構成例を示す図である。VPNでは、インターネット42を介して、2つのVPN装置100,200が接続されている。VPN装置200はイントラネット41に接続されており、イントラネット41にはコンピュータ310が接続されている。VPN装置100はイントラネット43に接続されており、イントラネット43にはコンピュータ320が接続されている。
【0052】
ここで、たとえば、コンピュータ310からコンピュータ320へデータを送信する場合について説明する。
まず、コンピュータ310から生のIP(Internet Protocol)パケット(生パケット)51が出力される。生パケット51は、IPヘッダ51aやペイロードデータ(送信されるデータの内容)51bなどで構成される。生パケット51は、イントラネット41を経由してVPN装置200に送られる。
【0053】
VPN装置200は、生パケット51を暗号化して暗号パケット52を生成する。暗号パケット52には、トンネル用IPヘッダ52a、ESP(Encapsulating Security Payload)ヘッダ52b、暗号化されたパケット52c、認証データ52dなどで構成される。トンネル用IPヘッダ52aは、インターネット42経由で暗号パケット52をVPN装置100に送信するためのヘッダ情報である。ESPヘッダ52bは、暗号化のアルゴリズムや鍵情報などに関する情報である。暗号化されたパケット52cは、生パケット51をIPヘッダ51a毎に暗号化したときの暗号データである。認証データ52dは、IPヘッダ51aのチェックサムなどを含む認証用のデータである。暗号パケット52は、インターネット42を介して、VPN装置100に渡される。
【0054】
VPN装置100は、ESPヘッダ52bを用いて、暗号化されたパケット52cを復号する。さらに、VPN装置100は、認証データ52dによって、改竄されていない正規なパケットであることを認証する。その後、VPN装置100は、復号された生パケット53を出力する。生パケット53は、IPヘッダ53aとペイロードデータ53bとを有している。生パケット53は、イントラネット43を経由して、コンピュータ320に渡される。
【0055】
このようにして、インターネット42上を伝送するときのデータの秘匿性が確保される。
図4は、VPN装置の内部構造を示す図である。VPN装置100は、CPU101によって装置全体が制御されている。CPU101には、メモリバス107を介して、ROM102、RAM103、DMA装置104、および機密データ保護メモリモジュール110が接続されている。
【0056】
ROM102には、VPN装置100の基本動作を記述したプログラムが格納されている。CPU101は、ROM102に格納されたプログラムを読み出して、VPN装置100を制御する。RAM103には、CPU101が実行する処理に必要なデータや命令が、一時的に格納される。
【0057】
DMA装置104は、RAM103や機密データ保護メモリモジュール110に対してダイレクトメモリアクセス(DMA)を行うことができる。DMA装置104には、2つのネットワークインタフェースカード(NIC)105,106が接続されている。NIC105は、イントラネット43に接続されたネットワーク制御回路である。また、NIC106は、インターネット42に接続されたネットワーク制御回路である。
【0058】
DMA装置104は、NIC105、106を介して入出力されるパケットのDMA転送を行う。たとえば、NIC105に対して、インターネット42経由で送信すべき生パケット53が入力されると、DMA装置104は、生パケット53を機密データ保護メモリモジュール110にDMA転送する。その生パケット53が暗号化されると、DMA装置104は、暗号化されたパケット(暗号パケット52)を機密データ保護メモリモジュール110から取り出し、NIC106にDMA転送する。
【0059】
また、NIC106に対して、イントラネット43経由で送信すべき暗号パケット52が入力されると、DMA装置104は、暗号パケット52を機密データ保護メモリモジュール110にDMA転送する。その暗号パケット52が復号されると、DMA装置104は、復号されたパケット(生パケット53)を機密データ保護メモリモジュール110から取り出し、NIC105にDMA転送する。
【0060】
機密データ保護メモリモジュール110は、入力されたパケットを記憶し、そのパケットの暗号化または復号処理を行うことができるメモリモジュールである。たとえば、機密データ保護メモリモジュール110は、DESの技術を用いてデータの暗号化/復号を行う。第1の実施の形態では、DES−CBCモードの秘密保持機能を備えている。
【0061】
図5は、第1の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。DES−CBCモードの秘密保持機能を備えたメモリモジュールは、IVレジスタ111、キーコードレジスタ112、データ長レジスタ113、動作指定ビット114、クリアビット115、第1段メモリ116、第2段メモリ117、排他論理和回路118a,118b,118c、DES回路119a,119b,119c、カウンタ回路120a,120b,120c、エラーレジスタ121、割り込み通知回路122、及びアドレスデコーダ回路123を有している。
【0062】
IVレジスタ111は、排他的論理和回路118aに接続されている。キーコードレジスタ112は、DES回路119a,119b,119cに接続されている。データ長レジスタ113は、第1段メモリ116と第2段メモリ117とに接続されている。動作指定ビット114は、DES回路119a,119b,119cに接続されている。クリアビット115は、DES回路119a,119b,119c、カウンタ回路120a,120b,120c、エラーレジスタ121、およびデータ長レジスタ113に接続されている。
【0063】
第1段メモリ116は、CPU101からリード/ライトが可能な複数のバッファ領域116a,116b,116cに区分けされている。第2段メモリ117は、CPU101からリード可能な複数のバッファ領域117a,117b,117cに区分けされている。第1段メモリ116と第2段メモリ117とは、バッファ領域同士が一対一で対応づけられており、対応するバッファ領域同士が接続されている。なお、バッファ領域116aとバッファ領域117aとを接続する信号線には、カウンタ回路120aが接続されている。バッファ領域116bとバッファ領域117bとを接続する信号線には、カウンタ回路120bが接続されている。バッファ領域116cとバッファ領域117cとを接続する信号線には、カウンタ回路120cが接続されている。
【0064】
さらに、第2段メモリ117内のバッファ領域117aは、排他的論理和回路118a、DES回路119a、排他的論理和回路118bに接続されている。DES回路119aからバッファ領域117aにデータを送る信号線と、排他的論理和回路118aからバッファ領域117aにデータを送る信号線とには、カウンタ回路120aが接続されている。
【0065】
バッファ領域117bは、排他的論理和回路118b、DES回路119b、排他的論理和回路118cに接続されている。DES回路119bからバッファ領域117bにデータを送る信号線と、排他的論理和回路118bからバッファ領域117bにデータを送る信号線とには、カウンタ回路120bが接続されている。
【0066】
バッファ領域117cは、排他的論理和回路118c、DES回路119c、図示されていない次の処理段の排他的論理和回路に接続されている。DES回路119cからバッファ領域117cにデータを送る信号線と、排他的論理和回路118cからバッファ領域117cにデータを送る信号線とには、カウンタ回路120cが接続されている。
【0067】
カウンタ回路120aは、既に説明した接続関係に加え、カウンタ回路120b、DES回路119a、およびエラーレジスタ121に接続されている。カウンタ回路120bは、既に説明した接続関係に加え、カウンタ回路120c、DES回路119b、およびエラーレジスタ121に接続されている。カウンタ回路120cは、既に説明した接続関係に加え、図示していないカウンタ回路、DES回路119c、およびエラーレジスタ121に接続されている。
【0068】
割り込み通知回路122は、データ長レジスタ113とエラーレジスタ121とに接続されているとともに、CPU101に対する割り込み通知信号の出力線に接続されている。アドレスデコーダ回路123は、第1段メモリ116と第2段メモリ117とに接続されている。
【0069】
IVレジスタ111は、IVを設定する64ビットのレジスタである。IVとは、1ワード目のデータとの間で排他的論理和の演算を行うべき入力データ(初期ベクトル)である。IVレジスタ111は、CPU101からのアクセスによって書き込みは可能であるが、読み取りはできない。
【0070】
キーコードレジスタ112は、キーコードを設定するための64ビットのレジスタである。詳細には、キーコードレジスタ112内の56ビットがキーコードであり、他の8ビットがパリティビットである。IVレジスタ111は、CPU101からのアクセスによって書き込みは可能であるが、読み取りはできない。
【0071】
データ長レジスタ113は、DES処理済みのデータ長(ワード数)を表示する64ビットのレジスタである。データ長レジスタ113は、上位32ビットによって第1段メモリ116にストアされたワード数が示され、下位32ビットによってDES処理後、第2段メモリ117にストアされたワード数が示される。IVレジスタ111は、CPU101からのアクセスによって書き込みはできないが、読み取りは可能である。
【0072】
動作指定ビット114は、入力されたデータに対して実行する処理がデコード(復号)かエンコード(暗号化)かを設定するビットデータ(フラグ)である。動作指定ビット114は、CPU101からのアクセスによって書き込みも読み取りも可能である。
【0073】
クリアビット115は、回路を初期化するためのビットデータ(フラグ)である。クリアビット115は、CPU101からのアクセスによって書き込みも読み取りも可能である。
【0074】
第1段メモリ116は、DES処理の対象とするデータをストアするための64ビット幅のRAMメモリ回路である。第1段メモリ116は、CPU101からのアクセスによって書き込みも読み取りも可能である。すなわち、第1段メモリ116は、CPU101から通常のRAMと同様に、主記憶装置として利用することができる。
【0075】
第2段メモリ117は、第1段メモリ116にストアされたデータのコピーをストアし、DES処理実行後の暗号もしくは複合されたデータを保持するための64ビット幅のRAMメモリ回路である。第2段メモリ117は、CPU101からのアクセスによって書き込みはできないが、読み取りは可能である。
【0076】
排他的論理和回路118a,118b,118cは、ワード単位で排他的論理和の論理演算を実行する回路である。
DES回路119a,119b,119cは、DESによる暗号化または復号処理を実行する回路である。
【0077】
カウンタ回路120a,120b,120cは、データの書き変わりをワードごとにカウントし、DES処理の実行開始をコントロールする回路である。換言すると、各カウンタ回路120a,120b,120cは、処理順が前後するもの同士で連携処理を行い、各ワードの処理順の検出を行う回路である。
【0078】
連携処理の内容は、次の通りである。すなわち、各カウンタ回路120a,120b,120cは、DES処理の対象となるワードに関連づけられている。そして、関連づけられたワードのDES処理が完了すると、カウンタ回路120a,120b,120cに所定の値が設定される。
【0079】
そこで、各カウンタ回路120a,120b,120cは、前の段のカウンタ回路の値を監視する。そして、処理順が直前となるワードに対する暗号化または復号の処理の実行の有無を、前の段のカウンタ回路に所定の値になったかどうかで判断する。そして、処理順が直前となるワードに対する暗号化または復号の処理の実行完了を確認したら、自身に対応するワードに対するDES処理の実行開始をDES回路に指示する。
【0080】
エラーレジスタ121は、不正アクセスが行われたときにエラーを表示するレジスタである。
割り込み通知回路122は、エラーレジスタ121にエラー表示がされたときと、データ長レジスタ113において、0以外の値において、上位32ビットの値=下位32ビットの値となったとき、CPU101に対して割り込み通知を行う回路である。
【0081】
アドレスデコーダ回路123は、第1段メモリ116と第2段メモリ117とに接続されている。また、アドレスデコーダ回路123は、外部のバスを介してCPU101に接続されている。
【0082】
アドレスデコーダ回路123は、メモリ領域をアクセス時に、ワード単位のセレクションと1段目か2段目かの選択を行うデコード回路である。たとえば、割り込み通知回路122は、アドレス信号の下位1ビット目を見て、0ならば1段目のメモリをアクセス対象とし、1ならば2段目のメモリをアクセス対象とする。
【0083】
なお、図5の例では、複数のDES回路119a,119b,119cが示されているが、DESの暗号化/復号処理は、ワード単位で順番に実行されるため、実際にはDES回路は一つでよい。このようにDES回路を各ワードで共有することにより回路規模を低減することができる。
【0084】
以下、実際のデータ処理の流れに沿って、CPU101による機密データ保護メモリモジュール110の操作、および機密データ保護メモリモジュール110内の各機能の働きを説明する。
【0085】
[ステップS1]クリアビット115による初期化
CPU101は、機密データ保護メモリモジュール110へのパケットの格納に先立ち、まず、クリアビット115に1を設定する。クリアビット115に1が設定されると、回路が初期化される。具体的には、エラー表示を行うエラーレジスタ121とデータ長を示すデータ長レジスタ113とには、それぞれ0が設定される。また、カウンタ回路120a,120b,120cにも0が設定される。DES回路119a,119b,119cは、前回の暗号化/復号処理で設定された値がクリアされる(たとえば、0が設定される)。
【0086】
回路が初期化された後、クリアビット115は1→0となり、初期化の終了を表示する。
[ステップS2]IV、キーコードの設定
CPU101は、DES処理に利用するIVとキーコードとを、それぞれIVレジスタ111とキーコードレジスタ112とに設定する。IVレジスタ111に設定されたIVは、1ワード目の処理に利用される排他的論理和回路118aに入力される。キーコードレジスタ112に設定されたキーコードは、DES回路119a,119b,119cに入力される。
【0087】
[ステップS3]暗号化か複合(平文化)の動作設定
CPU101は、暗号化するのか複合するのか、モードを動作指定ビット114に設定する。本実施の形態では、復号(Decode)のとき1に設定し、暗号化(Encode)のとき0に設定する。動作指定ビット114に設定された値は、DES回路119a,119b,119cに入力される。
【0088】
[ステップS4]DES処理
CPU101は、第1段メモリ116へ処理対象のパケットを書き込む。イントラネット43からインターネット42へ転送されるパケットであれば、第1段メモリ116に書き込まれるパケットは生パケットである。逆に、インターネット42からイントラネット43へ転送されるパケットであれば、第1段メモリ116に書き込まれるパケットは暗号パケットである。
【0089】
第1段メモリ116へは、パケットが64ビット単位で、バッファ領域116a,116b,116cに書き込まれる。格納されたパケットのデータ長(ワード数)が、データ長レジスタ113の上位32ビットに設定される。これにより、データ長レジスタ113の上位32ビットを参照して、処理対象パケットのデータ長が分かる。
【0090】
第1段メモリ116に格納されたパケットは、すぐに、第2段メモリ117にコピーされる。すると、複数のカウンタ回路120a,120b,120cが連携することにより、第2段メモリ117内のバッファ領域117a,117b,117cに格納されたワードの処理タイミングが制御される。その結果、DES処理が1ワード目(バッファ領域117aに格納されたワード)から順次実行される。なお、カウンタ回路120a,120b,120cの連携処理については後述する。
【0091】
処理が開始されると、まず、動作指定ビット114の内容により暗号化か復号かが判断される。具体的には、動作指定ビット114の値が1であれば復号であり、動作指定ビット114の値が0であれば暗号化である。
【0092】
暗号化であれば、最初のワードが格納されたバッファ領域117aのデータが排他的論理和回路118aに入力される。すると、排他的論理和回路118aにおいて、入力されたワードとIVとの排他的論理和が演算され、演算結果がDES回路119aに入力される。DES回路119aは、動作指定ビット114の値に応じたDES処理を行う。具体的には、DES回路119aは、キーコードレジスタ112に格納されているキーコードを用いて、入力されたデータを暗号化する。DES処理が行われたデータは、元のバッファ領域117aに格納される。
【0093】
復号であれば、最初のワードが格納されたバッファ領域117aのデータがDES回路119aに入力される。DES回路119aは、動作指定ビット114の値に応じたDES処理を行う。具体的には、DES回路119aは、キーコードレジスタ112に格納されているキーコードを用いて、入力されたデータを復号する。DES処理が行われたデータは、排他的論理和回路118aに入力される。すると、排他的論理和回路118aにおいて、入力されたワードとIVとの排他的論理和が演算され、演算結果が元のバッファ領域117aに格納される。
【0094】
次に、次のワードが格納されたバッファ領域117bのデータに対する暗号化または復号の処理が行われる。
暗号化であれば、次のワードが格納されたバッファ領域117bのデータが排他的論理和回路118bに入力される。すると、排他的論理和回路118bにおいて、入力されたワードと前の段のDES処理結果であるバッファ領域117aのデータとの排他的論理和が演算され、演算結果がDES回路119bに入力される。DES回路119bは、動作指定ビット114の値に応じたDES処理(暗号化)を行う。DES処理が行われたデータは、元のバッファ領域117bに格納される。
【0095】
復号であれば、次のワードが格納されたバッファ領域117bのデータがDES回路119bに入力される。DES回路119bは、動作指定ビット114の値に応じたDES処理(復号)を行う。DES処理が行われたデータは、排他的論理和回路118bに入力される。すると、排他的論理和回路118bにおいて、入力されたワードと前の段のDES処理結果であるバッファ領域117aのデータとの排他的論理和が演算され、演算結果が元のバッファ領域117bに格納される。
【0096】
以後、同様に、第2段メモリ117に格納されたワード単位のデータに対するDES処理が行われる。DES処理が行われる毎に、処理後のデータが第2段メモリ117内の元のバッファ領域に格納される。
【0097】
なお、第1段メモリ116に格納されているパケットは、第2段メモリ117に格納されたデータへのDES処理実行中であっても、CPU101によりリード可能である。
【0098】
[ステップS5]処理済みのデータ長の設定
DES処理され、第2段メモリ117に格納されたデータ長(ワード数)がデータ長レジスタ113の下位32ビットに設定される。これにより、データ長レジスタ113の下位32ビットを参照して、処理対象パケットのうちDES処理が完了したデータのデータ長が分かる。
【0099】
[ステップS6]第2段メモリ117より暗号化もしくは複合済みのデータのリード
CPU101は、第2段メモリ117にアクセスし、DESによる暗号化処理、または復号処理が完了したデータを、適宜読み出す。なお、データ長レジスタ113の下位32ビットにDES処理済みのデータ長(ワード数)が示されているため、CPU101はデータ長レジスタ113を参照することで、処理済みのデータだけ読み出すことが可能である。
【0100】
また、データ長レジスタ113の上位32ビットの値=下位32ビットの値となったとき、割り込み通知回路122からCPU101へ割り込み通知が行われる。この割り込み通知の信号により、CPU101は、全ての処理が終了したことを知ることができる。なお、割り込み通知信号は、データ長レジスタ113をCPU101がリードすることにより、ディアサート(ネゲート)される。
【0101】
[ステップS7]エラー発生時のエラー通知
不正なオペレーションが生じたときエラーレジスタ121にエラーを示す情報が設定される。エラーレジスタ121にエラー内容が設定されると、割り込み通知回路122により、CPU101に割り込み通知信号が出される。これにより、CPU101がエラーの発生を認識し、エラーレジスタ121の内容を読み取る。割り込み信号は、CPU101がエラーレジスタ121の内容を読み込んだときにディアサートされる。
【0102】
以上の様にして、機密データ保護メモリモジュール110において暗号化、または復号処理が行われる。
以下、カウンタ回路120a,120b,120cの役割について説明する。
【0103】
カウンタ回路120a,120b,120cは、ワード単位のバッファ領域に対応づけて備えられている。第1段メモリ116に格納されているワードが、第2段メモリ117にコピーされたとき、対応するカウンタ回路が0→1にインクリメントされる。
【0104】
DES処理されたデータが第2段メモリ117に書き戻されると、書き戻されたバッファ領域に対応するカウンタ回路が1→2にインクリメントされる。
ワード単位に設けられたカウンタ回路120a,120b,120cは前後で連係している。すなわち、1ワード目に対応するカウンタ回路120aは、1の値が設定されると、DES処理の開始指示の信号を出す。また、2ワード目以降に対応するカウンタ回路120b,120cは、前の段(図5中、1つ上に位置する)のカウンタ回路の値が2になったことを確認すると、DES処理の開始指示の信号を出す。このように、2段目以降のカウンタ回路120b,120cは、前段のカウンタ回路の値を参照して、前のワードのDES処理が実行終了したか否かを判定し、次のDES処理に移ってよいかどうかを判定する。
【0105】
より、具体的な説明を行う。1ワード目のカウンタ回路120aは0→1になった時点でDES処理を実行に指示を出す。2ワード目のカウンタ回路120bは、0→1になった時点で1ワード目のカウンタ値を参照し、その値が2であればDES処理を実行に移し、1であれば2にインクリメントされるまで待つ。また、各カウンタ回路120a,120b,120cは、それ以外の値の場合は、誤操作が起きたとみなし、エラーレジスタ121へエラー情報を出力する。この機構により、不正な不連続の書き込み動作を防ぐことができる。
【0106】
このように各カウンタ回路120a,120b,120cが動作していれば、カウンタ回路120a,120b,120cの値を参照することで、DES処理済みのデータのデータ長が分かる。すなわち、値が2であるカウンタ回路の数がDES処理済みのデータ長(ワード数)を示す。従って、値が2であるカウンタ回路の数がデータ長レジスタ113の下位32ビットに設定される。
【0107】
次に、カウンタ回路120a,120b,120cの処理内容について説明する。
図6は、カウンタ回路のステートマシンを示す図である。図6に示すように、カウンタ回路120a,120b,120cには、5つの状態がある。第1の状態(Idle)ST1は、アイドル状態であり、カウンタの値は0である。第2の状態(Cnt1)ST2は、ワードコピー完了状態であり、カウンタの値は1である。第3の状態(DESgo)ST3は、DES処理開始信号出力状態であり、カウンタの値は1である。第4の状態(Cnt2)ST4は、DES処理完了状態であり、カウンタの値は2である。第5の状態(Error)ST5は、エラー発生状態であり、カウンタは様々な値を採り得る。
【0108】
ここで、カウンタ回路120a,120b,120cに入力される信号は、以下の通りである。
・CopyWrite:第1段メモリ116から第2段メモリ117にデータコピーするためのライト信号
・AfterDESWrite:DES処理後のデータを第2段メモリ117にデータを書き込むためのライト信号
・NextCounter[1:0]:次段のカウンタ回路のカウンタ値
・PreCounter[1:0]:前段のカウンタ回路のカウンタ値(ただし、一番初段のカウンタ回路では、カウント値2が固定値で設定されている。)
・Clear:クリア信号
・SystemClock:クロック信号
また、カウンタ回路から出力される信号は、以下の通りである。
・ErrorSignal:エラー信号
・DESgo:DES処理実行を開始させるための信号
・Cnt[1:0]:カウンタ値
これらの入出力信号に応じて、カウンタ回路120a,120b,120cの状態が遷移する。
【0109】
まず、第1の状態ST1では、カウンタの値に0が設定される。カウンタの値が0の間、第1の状態ST1が維持される。ここで、CopyWrite信号がアサートされると、第2の状態ST2に遷移する。なお、次段のカウンタの値を示す信号(NextCounter[1:0])が0より大きな値を示した場合、第1の状態ST1から第5の状態ST5に遷移する。
【0110】
第2の状態ST2では、カウンタの値に1が設定される。ここで、前段のカウンタ回路のカウンタ値(PreCounter)が2未満の場合、第2の状態ST2が維持される。前段のカウンタ回路のカウンタ値(PreCounter)が2になると、第3の状態ST3に遷移する。また、クリア信号(Clear)が出力されると、第1の状態ST1に遷移する。さらに、前段のカウンタ回路のカウンタ値(PreCounter)が0になるか、次段のカウンタ回路のカウンタ値(NextCounter)が2になると、第5の状態ST5に遷移する。
【0111】
第3の状態ST3では、DES処理実行を開始させるための信号(DESgo)の出力処理が行われる。この信号出力に応じて、カウンタ回路に対応する(同じ処理段の)DES回路によってDES処理が実行される。DES処理が実行され、DES処理後のデータを第2段メモリ117にデータを書き込むためのライト信号(AfterDESWrite)がアサートされると、第4の状態ST4に遷移する。そして、クリア信号(Clear)が出力されると、第1の状態ST1に遷移する。
【0112】
第4の状態ST4では、カウンタ回路のカウンタ値に2が設定される。クリア信号(Clear)が出力されると、第1の状態ST1に遷移する。前段のカウンタ回路のカウンタ値(PreCounter)が2未満になると、第5の状態ST5に遷移する。
【0113】
第5の状態ST5では、エラー処理が行われる。そして、クリア信号(Clear)が出力されると、第1の状態ST1に遷移する。
以上の仕組みにより、データの暗号化/復号処理を効率よく行うことができる。たとえば、処理対象のパケットを、第1段メモリ116から第2段メモリ117にすぐにコピーして、第2段メモリ117上でDES処理を実行するため、DES処理中であっても第1段メモリ116内のデータの入出力が可能である。また、データ長レジスタ113を参照することで、DES処理が完了したデータのデータ長を知ることができるため、DES処理が完了したデータから順に、CPU101による解析処理等に利用することができる。さらに、1ワードが第2段メモリ117のバッファ領域に書き込まれる毎に逐次DES処理を行うことができる。すなわち、処理対象のパケット全体が格納されるのを待たずに、DES処理を進めることが可能となる。
【0114】
[第2の実施の形態]
次に本発明の第2の実施の形態について説明する。第2の実施の形態は、DES−ECBモードによる暗号化/復号を行うシステムに本発明を適用したものである。
【0115】
図7は、DES−ECBモードの動作を説明する図である。図7では、平文のデータがN個(Nは自然数)のワード61,62,63に分割されている。ここで、最初のワード61の内容を「P11」とする。2番目のワード62の内容を「P12」とする。そして、最後のワード63の内容を「P1N」とする。
【0116】
平文を暗号化する場合、内容が「P11」の最初のワード61は、暗号化部71によって暗号化され、内容が「C11」の暗号化されたワード64が生成される。
【0117】
内容が「P12」の2番目のワード62は、暗号化部72によって暗号化され、内容が「C12」の暗号化されたワード65が生成される。
同様に、各ワードの暗号化が行われる。そして、内容が「P1N」のN番目のワード63は、暗号化部73によって暗号化され、内容が「C1N」の暗号化されたワード66が生成される。
【0118】
暗号化された各ワード64,65,66によって暗号文が構成される。暗号文を平文化(復号)する場合、内容が「C11」の最初のワード64は、復号部74によって復号され、内容が「P11」のワード67が生成される。
【0119】
内容が「C12」の2番目のワード65は、復号部75によって復号され、内容が「P12」のワード68が生成される。
同様に、各ワードの復号が行われる。そして、内容が「C1N」のN番目のワード66は、復号部76によって復号され、内容が「P1N」のワード69が生成される。
【0120】
このようにして生成されたワード67,68,69で構成される平文の内容は、ワード61,62,63で構成される平文と同じである。
このようにワード毎の暗号化/復号処理を実行することができる。DES−ECBモードは、ワード毎の連鎖を伴わず、ワード単位に独立した処理を行っているため、各ワードのDES処理を並列に実行することが可能となる。並列にDES処理を実行すれば、処理を高速に行うことができる。
【0121】
第2の実施の形態におけるシステム構成例は、図3に示した第1の実施の形態のシステム構成と同様である。図3に示すVPN装置100を第2の実施の形態に係るVPN装置に置き換えた場合を想定して、第2の実施の形態の具体的な内容を説明する。また、第2の実施の形態に係るVPN装置のハードウェア構成は、図4に示した第1の実施の形態のハードウェア構成とほぼ同様である。ただし、図4に示す機密データ保護メモリモジュール110は、DES−ECBモードの処理を実行する機密データ保護メモリモジュールに置き換えられる。
【0122】
以下の説明では、機密データ保護メモリモジュール以外の構成については図3,図4に示した各要素の符号を用いて、第2の実施の形態の詳細について説明する(第3の実施の形態以降の他の実施の形態の説明についても同様)。
【0123】
図8は、第2の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。DES−ECBモードの秘密保持機能を備えたメモリモジュールの構成は、図5に示した第1の実施の形態の構成とほぼ同じである。そこで、図8においては、第1の実施の形態と同じ要素には同一の符号を付し、説明を省略する。
【0124】
第1の実施の形態と異なるのは、図5に示すIVレジスタ111と排他的論理和回路118a,118b,118cが無いことである。そのため、図8に示す各要素間の接続関係では、第2段メモリ117のバッファ領域117a,117b,117cそれぞれのデータが、対応するDES回路119a,119b,119cに直接入力されている。なお、第2の実施の形態においても、DES回路119a,119b,119cは、共有の1つの回路で実現してもよいものとする。したがって、DES処理は、1ワード目から順番に行われる。
【0125】
また、図8に示す各要素の機能は、図5に示したDEC−CBCモードの機能を備えた機密データ保護メモリモジュールの同名の要素の機能と同様である。ただし、DES回路119a,119b,119cは、排他論理和回路の論理演算結果ではなく、第2段メモリ117のバッファ領域117a,117b,117cに格納されているワードに対して、DES処理を施す。
【0126】
次に、このような構成の機密データ保護メモリモジュール内の各機能の働きを説明する。なお、図5に示した第1の実施の形態に係る機密データ保護メモリモジュールと同じ部分については説明を省略し、異なる処理が行われる部分について説明する。
【0127】
第1の実施の形態と異なるのは、「IV、キーコードの設定(ステップS2)」の処理と「DES処理(ステップS4)」の処理である。他の処理(「クリアビット115による初期化(ステップS1)」、「暗号化か複合(平文化)の動作設定(ステップS3)」、「処理済みのデータ長の設定(ステップS5)」、「第2段メモリ117より暗号化もしくは複合済みのデータのリード(ステップS6)」、「エラー発生時のエラー通知(ステップS7)」)については、第1の実施の形態の動作と同じである。
【0128】
[ステップS2a]キーコードの設定
DES−ECBモードでは、IVは用いないため、「IV、キーコードの設定(ステップS2)」処理に代えてキーコードの設定が行われる。具体的には、CPU101は、DES処理に利用するキーコードを、キーコードレジスタ112に設定する。キーコードレジスタ112に設定されたキーコードは、DES回路119a,119b,119cに入力される。
【0129】
[ステップS4a]DES処理
第1段メモリ116への処理対象のパケットを書き込み処理と、第1段メモリ116から第2段メモリ117へのコピー処理とが、第1の実施の形態と同様に行われる。すると、複数のカウンタ回路120a,120b,120cが連携することにより、第2段メモリ117内のバッファ領域117a,117b,117cに格納されたワードの処理タイミングが制御される。その結果、DES処理が1ワード目(バッファ領域117aに格納されたワード)から順次実行される。
【0130】
処理が開始されると、まず、最初のワードが格納されたバッファ領域117aのデータがDES回路119aに入力される。DES回路119aは、動作指定ビット114の値に応じたDES処理を行う。具体的には、動作指定ビット114の値が1であれば、DES回路119aは、キーコードレジスタ112に格納されているキーコードを用いて入力されたデータを復号する。また、動作指定ビット114の値が0であれば、DES回路119aは、キーコードレジスタ112に格納されているキーコードを用いて入力されたデータを暗号化する。DES処理が行われたデータは、元のバッファ領域117aに格納される。
【0131】
次に、次のワードが格納されたバッファ領域117bのデータがDES回路119bに入力される。DES回路119bは、動作指定ビット114の値に応じたDES処理を行う。DES処理が行われたデータは、元のバッファ領域117bに格納される。
【0132】
以後、同様に、第2段メモリ117に格納されたワード単位のデータに対するDES処理が行われる。DES処理が行われる毎に、処理後のデータが第2段メモリ117内の元のバッファ領域に格納される。
【0133】
このようにして、DES−ECBモードによる暗号化/復号処理が行われる。DES−ECBモードで暗号化/復号を行えば、機密データ保護メモリモジュールの内部構成を簡略化することができる。
【0134】
[第3の実施の形態]
第3の実施の形態は、3DESによりデータの暗号化/復号処理を行う場合の例である。
【0135】
図9は、3DESの処理の手順を示す図である。図9(A)は、3DESの暗号化処理を示しており、図9(B)は、3DESの復号処理を示している。
3DESでは、DES処理が3回繰り返して行われる。DES処理の度に異なるキーコード81〜83が使用される。
【0136】
3DESの暗号化処理では、まず、値が「キーコード#1」であるキーコード81を用いて暗号化処理91を行う。次に、値が「キーコード#2」であるキーコード82を用いて復号処理92を行う。最後に、値が「キーコード#3」であるキーコード83を用いて再度暗号化処理93を行う。これにより、3重のDES処理がかけられた強度の高い暗号データが得られる。
【0137】
このようにして暗号化された暗号データの復号処理(3DES復号処理)では、まず、値が「キーコード#3」であるキーコード83を用いて復号処理94を行う。次に、値が「キーコード#2」であるキーコード82を用いて暗号化処理95を行う。最後に、値が「キーコード#1」であるキーコード81を用いて再度復号処理96を行う。これにより、3重のDES処理がかけられた暗号データを復号することができる。
【0138】
なお、このような処理手順は、CBCモードでもECBモードでも同じである。
3DESを実現するための機密データ保護メモリモジュールの構成は、図5に示す第1の実施の形態の回路構成のうち、DES回路119a,119b,119cとキーコードレジスタ112との構成を変更したものである。以下、第1の実施の形態と異なる部分について説明する。
【0139】
図10は、第3の実施の形態に係る暗号化/復号処理を実現するための回路構成を示す図である。第3の実施の形態では、図5に示すキーコードレジスタ112がキーコードレジスタ群130に置き換えられ、図5に示すDES回路119aがDES処理部140に置き換えられている。
【0140】
キーコードレジスタ群130には、3つのキーコードレジスタ131,132,133が含まれている。ここで、キーコードレジスタ131に設定されたキーコードの値を「キーコード#1」、キーコードレジスタ132に設定されたキーコードの値を「キーコード#2」、キーコードレジスタ133に設定されたキーコードの値を「キーコード#3」とする。
【0141】
DES処理部140は、DES回路141、スイッチ回路142、および64ビットバッファ143を有している。動作指定ビット114の値は、DES回路141とスイッチ回路142とに入力される。キーコードレジスタ群130内の各キーコードレジスタ131〜133の値は、DES回路141に入力される。DES回路141の出力は、64ビットバッファ143に入力される。64ビットバッファ143の出力は、スイッチ回路142に入力される。スイッチ回路142の出力は、DES回路141に入力される。
【0142】
また、スイッチ回路142は、第2段メモリ117に接続されている。だだし、CBCモードの場合、第2段メモリ117からスイッチ回路142に入力されるデータは、排他的論理和回路118aを経由して入力される。スイッチ回路142から第2段メモリ117に出力されるデータは、他の処理回路を経由せずに第2段メモリ117に入力される。
【0143】
DES回路141は、動作指定ビット114に設定された値に応じて、3回のDES処理を行う。
たとえば、動作指定ビット114の値が0であれば、DES回路141は、暗号化処理、復号処理、暗号化処理の順でDES処理を行う。このとき、最初の暗号化処理では、キーコードレジスタ131に設定された「キーコード#1」を用いて、スイッチ回路142から入力されたデータを暗号化する。復号処理では、キーコードレジスタ132に設定された「キーコード#2」を用いて、スイッチ回路142から入力されたデータを復号する。2回目の暗号化処理では、キーコードレジスタ133に設定された「キーコード#3」を用いて、スイッチ回路142から入力されたデータを暗号化する。
【0144】
また、動作指定ビット114の値が1であれば、DES回路141は、復号処理、暗号化処理、復号処理の順でDES処理を行う。このとき、最初の復号処理では、キーコードレジスタ133に設定された「キーコード#3」を用いて、スイッチ回路142から入力されたデータを復号する。暗号化処理では、キーコードレジスタ132に設定された「キーコード#2」を用いて、スイッチ回路142から入力されたデータを暗号化する。2回目の復号処理では、キーコードレジスタ131に設定された「キーコード#1」を用いて、スイッチ回路142から入力されたデータを復号する。
【0145】
DES回路141は、DES処理が完了する毎に、処理結果を64ビットバッファ143に格納する。64ビットバッファ143は、DES回路141によってDES処理が行われた結果得られるデータを格納する記憶領域である。
【0146】
スイッチ回路142は、DES回路141への入力を制御する回路である。3DESの処理開始の信号が出されると、スイッチ回路142は、まず、第2段メモリ117の対応するバッファ領域117aから出力されたデータの排他的論理和の演算結果をDES回路141に入力する。次に、64ビットバッファ143にDES処理の結果が格納されたことを確認すると、スイッチ回路142は、64ビットバッファ143に格納されたデータを、DES回路141に入力する。
【0147】
その後、64ビットバッファ143にDES処理の結果が格納されたことを確認すると、スイッチ回路142は、64ビットバッファ143に格納されたデータを、再度DES回路141に入力する。さらにその後、64ビットバッファ143にDES処理の結果が格納されたことを確認すると、スイッチ回路142は、64ビットバッファ143に格納されたデータを第2段メモリ117のバッファ領域117aに対して出力する。
【0148】
図5に示す他のDES回路119b、119cも、DES処理部140と同様の回路に置き換えられる。
このような構成の機密データ保護メモリモジュールによれば、たとえば、第2段メモリ117に暗号化対象の生パケットが格納されると、バッファ領域117aに格納されたワードは、排他的論理和回路118aで論理演算されたのち、スイッチ回路142を経由してDES回路141に入力される。DES回路141は、「キーコード#1」を用いて入力されたワードを暗号化し、64ビットバッファ143に格納する。
【0149】
すると、64ビットバッファ143に格納されたデータが、スイッチ回路142を経由して、DES回路141に入力される。DES回路141は、「キーコード#2」を用いて入力されたワードを復号し、64ビットバッファ143に格納する。
【0150】
その後、64ビットバッファ143に格納されたデータが、スイッチ回路142を経由して、DES回路141に入力される。DES回路141は、「キーコード#3」を用いて入力されたワードを暗号化し、64ビットバッファ143に格納する。
【0151】
64ビットバッファ143に格納されたデータが、スイッチ回路142を経由して、第2段メモリ117に出力される。
このようにして、生パケットが暗号化され、暗号化パケットが第2段メモリ117に格納される。
【0152】
復号すべき暗号化パケットが第2段メモリ117に格納されたときは、ワード単位で、「キーコード#3」による復号、「キーコード#2」による暗号化、「キーコード#1」による復号が行われる。その結果、復号された生パケットが第2段メモリ117に格納される。
【0153】
このようにして、第2段メモリ117に格納されたパケットに対して、3DESによる暗号化/復号を行うことができる。
[第4の実施の形態]
第4の実施の形態は、モード切替により、暗号化/復号処理の方式を切り替えることができる機密データ保護メモリモジュールの例である。本実施の形態では、以下の4つの暗号化/復号の方式を選択的に適用することができる。
・DES−CBCモード
・DES−ECBモード
・3DES−CBCモード
・3DES−ECBモード
図11は、第4の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。図11に示す構成は、ほとんどの要素が図5に示した第1の実施の形態の構成要素と同じであるため、同じ要素には同一の符号を付し説明を省略する。
【0154】
図5に示した第1の実施の形態の構成と異なる点として、まず、モードレジスタ124が追加されている。モードレジスタ124は、暗号化/復号処理のモードを指定する値が設定される記憶領域である。モードレジスタ124の内容は、CPU101によって設定される。たとえば、DES−CBCモードのときは、モードレジスタ124に0が設定される。DES−ECBモードのときは、モードレジスタ124に1が設定される。3DES−CBCモードのときは、モードレジスタ124に2が設定される。3DES−ECBモードモードのときは、モードレジスタ124に3が設定される。
【0155】
DES回路119a,119b,119cは、DES処理部140a,140b,140cに置き換えられている。DES処理部140a,140b,140cの内部構成は、図10に示した第3の実施の形態のDES処理部140とほぼ同じである。
【0156】
ただし、第4の実施の形態に係るDES処理部140a,140b,140cは、モードレジスタ124の値が入力されており、モードレジスタの値に応じてDES処理を実行するか、3DES処理を実行するかの判別機能を有している。
【0157】
DES処理を実行する場合、DES回路で最初のDES処理が実行され、処理結果が64ビットバッファに格納されると、スイッチ回路は64ビットバッファの内容を、第2段メモリ117に対して出力する。3DES処理を実行する場合の処理手順は、図10の説明で示したとおりである。
【0158】
キーコードレジスタ112は、キーコードレジスタ群130aに置き換えられている。キーコードレジスタ群130aの内部構成は、図10に示した第3の実施の形態のキーコードレジスタ群130と同様である。すなわち、キーコードレジスタ群130aは、3つのキーコードレジスタを有しており、各キーコードレジスタにキーコードが設定されている。
【0159】
また、排他的論理和回路118d,118e,118fは、図5に示した第1の実施の形態に係る排他的論理和回路118a,118b,118cの機能に加え、モードレジスタ124の値を参照して、論理演算の要否を判断する機能を有している。すなわち、モードレジスタ124においてDES−CBCモードまたは3DES−CBCモードが指定されている場合には、排他的論理和回路118d,118e,118fは、排他的論理和演算を実行する。一方、モードレジスタ124においてDES−ECBモード、3DES−ECBモードが指定されていた場合には、排他的論理和回路118d,118e,118fは、排他的論理和演算を行わず、第2段メモリ117から取り出したデータを、そのままDES処理部140a,140b,140cに渡す。
【0160】
このような構成の機密データ保護メモリモジュールによれば、第2段メモリ117に格納されたパケットは、ワード単位にDES処理が施される。たとえば、バッファ領域117aに格納されたワードは、排他的論理和回路118dに入力される。排他的論理和回路118dは、モードレジスタ124を参照し、CBCモードが指定されていれば、入力されたデータとIVレジスタ111に格納されたIVとの排他的論理和を演算し、演算結果をDES処理部140aに渡す。また、排他的論理和回路118dは、モードレジスタ124においてECBモードが指定されていれば、バッファ領域117aのデータをそのままDES処理部140aに渡す。
【0161】
DES処理部140aは、モードレジスタ124を参照し、DES処理が指定されていれば、動作指定ビット114の値に応じたDES処理(暗号化または復号)を1回だけ行い、処理結果をバッファ領域117aに格納する。また、DES処理部140aは、モードレジスタ124において3DES処理が指定されていれば、動作指定ビット114の値に応じたDES処理を3回(暗号化→復号→暗号化または復号→暗号化→復号)繰り返して行い、処理結果をバッファ領域117aに格納する。
【0162】
このようにして、モード切替により、暗号化の強度や処理速度等を考慮した適切な暗号化/復号方式を実行することができる。
[第5の実施の形態]
第5の実施の形態は、第2段メモリの一部の記憶領域に対してのみ暗号化/復号処理を施すことができる機密データ保護メモリモジュールの例である。
【0163】
すなわち、機密データ保護メモリモジュールをVPN装置に実装した場合、メモリ上の特定領域を暗号化もしくは複合したい場合が多い。たとえば、図3に示したように、インターネット経由で暗号パケット52を受け取ったVPN装置100では、暗号パケット52内の暗号化されたパケット52cのみを復号すればよい。メモリに格納されたパケットの一部に対する暗号化/復号処理を行う機能を有している場合、暗号パケット52をそのまま機密データ保護メモリモジュールにDMA転送すればよい。
【0164】
図12は、暗号化/復号対象データを限定した場合のメモリ領域を示す図である。図12に示すように、第2段メモリ150の記憶領域が、暗号化/復号の非対象領域151,153、暗号化/復号対象領域152に分けられている。たとえば、ワード数がZ(Zは自然数)のパケットが格納されたとき、iワード目(iは、0<i<Zの自然数)を暗号化/復号開始ワードとして指定し、jワード目(jは、i<j<Zの自然数)を暗号化/復号終了ワードとして指定することができる。これにより、iワード目からjワード目までの範囲に限定して、暗号化/復号対象領域152とすることができる。
【0165】
図13は、第5の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。図13では、DES−CBCモードによる暗号化/復号処理を行う場合のkワード目の1ワード分の暗号化/復号回路170が示されている。
【0166】
図13において、暗号化/復号回路170の外部に示されている要素は、機密データ保護メモリモジュール内に1つだけ設けられた要素である。暗号化/復号回路170内の要素は、処理対象となるワード毎に、ワード数分設けられる要素である。
【0167】
第5の実施の形態では、図5に示す第1の実施の形態の構成と比較し、機密データ保護メモリモジュール内に、スタートワード指定レジスタ161、エンドワード指定レジスタ162、スタートビット163、及びエンドビット164が追加されている。
【0168】
スタートワード指定レジスタ161は、暗号化もしくは複合化を開始するスタートワードを設定するレジスタである。スタートワード指定レジスタ161は、CPU101からの書き込みも、読み出しも可能である。
【0169】
エンドワード指定レジスタ162は、暗号化もしくは複合化処理の最終ワードを設定するレジスタである。エンドワード指定レジスタ162は、CPU101による書き込みも、読み出しも可能である。
【0170】
スタートビット163は、処理の開始を指示するビットデータである。スタートビット163は、CPU101からの書き込みも、読み出しも可能である。
エンドビット164は、処理の終了を示すビットデータである。エンドビット164は、CPU101による書き込みも、読み出しも可能である。
【0171】
割り込み通知回路122aは、図5に示した第1の実施の形態の割り込み通知回路122と異なり、エンドビット164に処理終了を示すビットデータが設定されると、CPU101に対する割り込み信号を発生する。
【0172】
IVレジスタ111、キーコードレジスタ112、動作指定ビット114、およびクリアビット115については、図5に示した同名の構成要素と同じ機能である。
【0173】
1ワード分の暗号化/復号回路170は、第1段メモリ116のk番目のバッファ領域116k、第2段メモリ117のk番目のバッファ領域117k、排他的論理和回路171、DES回路172、カウンタ回路173、比較器174、比較器175、マルチプレクサ(MUX)回路176、比較器177で構成される。ここで、バッファ領域116k、バッファ領域117k、排他的論理和回路171、DES回路172、及びカウンタ回路173の接続関係は、図5に示した構成の同名の構成要素同士(たとえば、バッファ領域116a,117a、排他的論理和回路118a、DES回路119aおよびカウンタ回路120a)の接続関係と同様である。
【0174】
比較器174には、スタートワード指定レジスタ161とスタートビット163との値が入力されている。比較器174の出力は、カウンタ回路173に入力される。比較器175には、スタートワード指定レジスタ161の値が入力されている。比較器175の出力は、MUX回路176に入力されている。MUX回路176は、比較器175の出力以外に、前段の処理済みデータ(第2段メモリ117のk−1番目のバッファ領域のデータ)と、IVレジスタ111の値とが入力されている。MUX回路176の出力は、排他的論理和回路171に入力される。比較器177には、エンドワード指定レジスタ162の値とカウンタ回路173の値とが入力される。比較器177の出力は、エンドビット164に入力される。
【0175】
比較器174は、スタートビット163に処理開始を示すビットデータが設定されると、スタートワード指定レジスタ161に設定されたスタートワードと、暗号化/復号回路170に含まれるバッファ領域117kに格納されるワードを示す値とを比較する。そして、スタートワードがバッファ領域117kに格納されるワードである場合、処理開始を示す信号を、カウンタ回路173に通知する。
【0176】
比較器175は、スタートワード指定レジスタ161に設定されたスタートワードと、暗号化/復号回路170に含まれるバッファ領域117kに格納されるワードを示す値とを比較する。そして、スタートワードがバッファ領域117kに格納されるワードである場合、バッファ領域117kに格納されたワードが最初のワードであることを示す信号を、MUX回路176に通知する。
【0177】
MUX回路176は、比較器175からの信号に応じて、IVレジスタ111の値と前段の処理済みのデータとの何れか一方を、排他的論理和回路171に入力する。具体的には、MUX回路176は、比較器175からの信号によりバッファ領域117k内のワードが最初のワードであることが示されたときには、IVレジスタ111の値を排他的論理和回路171に入力する。また、MUX回路176は、比較器175からの信号によりバッファ領域117k内のワードが最初のワードではないことが示されたときには、前段の処理済みのデータを排他的論理和回路171に入力する。
【0178】
比較器177は、暗号化もしくは複合化処理の終了ワードを設定するエンドワード指定レジスタ162のワード値がバッファ領域117k内のワードである場合、カウンタ回路173からの信号を受けて、そのワードのデータ処理が終了した時点で、処理の終了をエンドビット164とカウンタ回路173へ通知する。
【0179】
カウンタ回路173は、初期状態では0が設定されており、ワードが第1段メモリ116のバッファ領域116kから第2段メモリ117のバッファ領域117kにコピーされたときに1が設定される。そして、カウンタ回路173は、比較器174によってバッファ領域117k内のワードが開始ワードであることが示されたとき、または前段のカウンタ回路の値が2になったときに、DES回路172に対してDES処理の開始を指示する。また、カウンタ回路173は、DES回路172により処理されたデータがバッファ領域117kに格納されると、カウンタ値を2に設定する。
【0180】
DES回路172の動作は、図5に示した第1の実施の形態のDES回路119a,119b,119cと同様である。
次に、カウンタ回路173の処理内容について詳細に説明する。
【0181】
図14は、カウンタ回路のステートマシンを示す図である。図14に示すように、カウンタ回路173には、5つの状態がある。第1の状態(Idle)ST11は、アイドル状態であり、カウンタの値は0である。第2の状態(Cnt1)ST12は、ワードコピー完了状態であり、カウンタの値は1である。第3の状態(DESgo)ST13は、DES処理開始信号出力状態であり、カウンタの値は1である。第4の状態(Cnt2)ST14は、DES処理完了状態であり、カウンタの値は2である。第5の状態(Error)ST15は、エラー発生状態であり、カウンタは様々な値を採り得る。
【0182】
ここで、カウンタ回路173に入力される信号は、以下の通りである。
・CopyWrite:第1段メモリ116から第2段メモリ117にデータコピーするためのライト信号
・AfterDESWrite:DES処理後のデータを第2段メモリ117にストアするためのライト信号
・NextCounter[1:0]:次段のカウンタ回路のカウンタ値
・PreCounter[1:0]:前段のカウンタ回路のカウンタ値
・Clear:クリア信号
・SystemClock:クロック信号
・STW:同じ段のバッファ領域に格納されたワードがスタートワードであることを示す信号
・ENDW:同じ段のバッファ領域に格納されたワードがエンドワードであることを示す信号
・MIDW:同じ段のバッファ領域に格納されたワードがスタートワードとエンドワードの間にあることを示す信号(ただし、スタートワードでもなく、エンドワードでもない)
・Start:処理開始信号
また、カウンタ回路から出力される信号は、以下の通りである。
・ErrorSignal:エラー信号
・DESgo:DES処理実行を開始させるための信号
・Cnt[1:0]:カウンタ値
・EndSignal:エンドワードまでの処理が終了したことを通知する信号
これらの入出力信号に応じて、カウンタ回路173の状態が遷移する。
【0183】
まず、第1の状態ST11では、カウンタの値に0が設定される。カウンタの値が0の間、第1の状態ST11が維持される。ここで、CopyWrite信号がアサートされ、且つSTW、ENDW、およびMIDWの何れかの信号が1にアサートされると、第2の状態ST12に遷移する。なお、STW、ENDW、およびMIDWの何れかの信号が1にアサートされ、且つ次段のカウンタの値を示す信号(NextCounter[1:0])が0より大きな値を示した場合、第1の状態ST11から第5の状態ST15に遷移する。
【0184】
第2の状態ST12では、カウンタの値に1が設定される。ここで、前段のカウンタ回路のカウンタ値(PreCounter)が2未満の場合、第2の状態ST12が維持される。前段のカウンタ回路のカウンタ値(PreCounter)が2になるか、STWとStartとの何れかの信号が1になると、第3の状態ST13に遷移する。また、クリア信号(Clear)が出力されると、第1の状態ST11に遷移する。さらに、ENDWとMIDWとの何れかの値が1にアサートされ、且つ前段のカウンタ回路のカウンタ値(PreCounter)が0になった場合、あるいは、次段のカウンタ回路のカウンタ値(NextCounter)が2になった場合には、第5の状態ST15に遷移する。
【0185】
第3の状態ST13では、DES処理実行を開始させるための信号(DESgo)の出力処理が行われる。この信号出力に応じて、カウンタ回路に対応する(同じ処理段の)DES回路によってDES処理が実行される。DES処理が実行され、DES処理後のデータを第2段メモリ117にデータを書き込むためのライト信号(AfterDESWrite)がアサートされると、第4の状態ST14に遷移する。そして、クリア信号(Clear)が出力されると、第1の状態ST11に遷移する。
【0186】
第4の状態ST14では、カウンタ回路のカウンタ値に2が設定される。クリア信号(Clear)が出力されると、第1の状態ST11に遷移する。前段のカウンタ回路のカウンタ値(PreCounter)が2未満になると、第5の状態ST15に遷移する。
【0187】
第5の状態ST15では、エラー処理が行われる。そして、クリア信号(Clear)が出力されると、第1の状態ST11に遷移する。
このような機密データ保護メモリモジュールを搭載したVPN装置では、第1の実施の形態と同様に、「クリアビット115による初期化(ステップS1)」、「IV、キーコードの設定(ステップS2)」、「暗号化か複合(平文化)の動作設定(ステップS3)」が行われる。その後、DES処理が行われるが、DES処理の内容が第1の実施の形態と異なる。
【0188】
[ステップS4b]DES処理
CPU101は、第1段メモリ116へ処理対象のパケットを書き込む。第1段メモリ116へは、パケットが64ビット単位で、バッファ領域116a,116b,116cに書き込まれる。格納されたパケットのデータ長(ワード数)が、データ長レジスタ113の上位32ビットに設定される。
【0189】
第1段メモリ116に格納されたパケットは、すぐに、第2段メモリ117にコピーされる。すると、CPU101は、格納されたパケットのうち、DES処理の対象となるデータの開始ワードと終了ワードとを判別する。そして、CPU101は、開始ワードを示す値を、スタートワード指定レジスタ161に設定し、終了ワードを示す値を、エンドワード指定レジスタ162に設定する。
【0190】
その後、CPU101は、スタートビット163に、DES処理の開始を指示する値を設定する。すると、第2段メモリ117に格納されたワード毎の暗号化/復号回路の処理が開始される。
【0191】
たとえば、k番目のワードが開始ワードの場合の暗号化/復号回路170の動作を以下に示す。
k番目のワードに対応する暗号化/復号回路170では、比較器174によって、k番目のワードが開始ワードか否かが判定される。k番目のワードが開始ワードであれば、その旨がSTWによって比較器174からカウンタ回路173に伝えられる。すると、カウンタ回路173からDES回路172へ、DESgoの信号が出力される。
【0192】
また、比較器175によってk番目のワードが開始ワードであることが判定されると、MUX回路176により、IVレジスタ111に設定されているIVが排他的論理和回路171に渡される。すると、排他的論理和回路171によって、バッファ領域117kに格納されたk番目のワードとIVとの排他的論理和演算が行われ、DES回路172に入力される。
【0193】
DES回路172では、カウンタ回路173から出力されたDESgoの信号に応じて、動作指定ビット114で指定されたDES処理(暗号化または復号)が実行される。なお、DES処理は、キーコードレジスタ112に格納されたキーコードを用いて行われる。DES処理の結果は、バッファ領域117kに格納される。
【0194】
すると、カウンタ回路173には、AfterDESWrite信号が入力され、カウンタ値に2が設定される。カウンタ回路173の値が次の段のワードに対する暗号化/復号回路内のカウンタ回路に入力され、次の段のワードに対するDES処理が行われる。以後、ワード毎のDES処理が、終了ワードに達するまで実行される。
【0195】
ここで、k番目のワードが終了ワードの場合の暗号化/復号回路170の動作を以下に示す。
k番目のワードに対応する暗号化/復号回路170では、比較器174によって、k番目のワードが開始ワードか否かが判定される。k番目のワードが開始ワードでなければ、カウンタ回路173は前段の暗号化/復号回路170内のカウンタ回路の値が2になるのを待つ。前段のカウンタ回路の値が2になると、カウンタ回路173からDES回路172へ、DESgoの信号が出力される。
【0196】
また、比較器175によってk番目のワードが開始ワードではないことが判定されると、MUX回路176により、前段のDES処理完了後のワードが排他的論理和回路171に渡される。すると、排他的論理和回路171によって、バッファ領域117kに格納されたk番目のワードと前段のDES処理済みのワードとの排他的論理和演算が行われ、DES回路172に入力される。
【0197】
DES回路172では、カウンタ回路173から出力されたDESgoの信号に応じて、動作指定ビット114で指定されたDES処理(暗号化または復号)が実行される。なお、DES処理は、キーコードレジスタ112に格納されたキーコードを用いて行われる。DES処理の結果は、バッファ領域117kに格納される。
【0198】
すると、カウンタ回路173には、AfterDESWrite信号が入力され、カウンタ値に2が設定される。カウンタ回路173の値が2になると、比較器177によってエンドワード指定レジスタ162に設定された終了ワードが参照され、k番目のワードが終了ワードか否かが判定される。ここで、k番目のワードが終了ワードであると判定されると、エンドワードまでの処理が終了したことを示すEndSignalが比較器177から出力され、エンドビット164に処理終了を示すフラグが立てられる。すると、割り込み通知回路122によって、CPU101に対して割り込み信号が出力される。
【0199】
以上のようにして、機密データ保護メモリモジュール内に転送されたデータの一部に対して、暗号化/復号の処理を実施することが可能となる。
[第6の実施の形態]
第6の実施の形態は、前述の各実施の形態を組み合わせた機密データ保護メモリモジュールを実装したVPN装置の例である。すなわち、第6の実施の形態に係る機密データ保護メモリモジュールは、第4の実施の形態に示すように、モード切替により暗号化/復号の方式を選択することができ(第1〜第3の実施の形態の機能が含まれる)、且つ、第5の実施の形態に示すように、機密データ保護メモリモジュール内に転送されたデータの一部に対して暗号化/復号の処理を実施することができる。
【0200】
図15は、第6の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。図15には、第6の実施の形態に係る機密データ保護メモリモジュールの1ワード分の暗号化/復号回路170aを示している。図15では、図13に示した第5の実施の形態の機密データ保護メモリモジュールと同じ構成要素には同一の符号を付し、説明を省略する。
【0201】
第6の実施の形態では、図13に示した第5の実施の形態の構成に対して、モードレジスタ124が追加されている。また、キーコードレジスタ112は、キーコードレジスタ群130に置き換えられている。暗号化/復号回路170a内にでは、DES回路172がDES処理部172aに置き換えられている。排他的論理和回路171は、排他的論理和回路171aに置き換えられている。DES処理部172aは、図11に示した第4の実施の形態のDES処理部140a,140b,140cと同じ機能を有している。排他的論理和回路171aは、図11に示した第4の実施の形態の排他的論理和回路118d,118e,118fと同じ機能を有している。
【0202】
機密データ保護メモリモジュールをこのような構成とすることにより、モード切替により暗号化/復号の方式を選択でき、且つ、機密データ保護メモリモジュール内に転送されたデータの一部に対して暗号化/復号の処理を実施することができる。
【0203】
以下、第6の実施の形態に係る機密データ保護メモリモジュールを実装したVPN装置が、DES−CBCでトンネルモードを利用してデータの送受信を行う場合の例を用いて、処理内容を具体的に説明する。
【0204】
まず、暗号化パケット生成の流れを説明する。
図16は、生パケット受信中の状態を示す図である。生パケットを受信すると、DMA装置104から機密データ保護メモリモジュール110aに対して生パケット(IPヘッダ510とデータ520とで構成される)がDMA転送される。DMA転送されたパケットは、機密データ保護メモリモジュール110aの第1段メモリ116に格納される。そして、第1段メモリ116に格納されたパケットは、そのパケットを構成するワード毎に瞬時に第2段メモリ117へコピーされてゆく。これにより、第2段メモリ117内に、生パケットの複製(IPヘッダ511とデータ521とで構成される)が格納される。
【0205】
CPU101は、この間に第1段メモリ116に格納されたIPヘッダ510の解析を行い、パケット長を知る。また、CPU101は、生パケットの宛先等から暗号化すべきか、あるいは復号すべきかを判断する。たとえば、図3に示すように、イントラネット41からインターネット42へ転送されるパケットは、暗号化の対象となる。逆に、インターネット42からイントラネット43へ転送されるパケットは、復号の対象となる。
【0206】
CPU101は、暗号化するパケットであると判定した場合、機密データ保護メモリモジュール110aにIV、キーコード、動作指定(暗号化)、モード(DES−CBC)、スタートワード、エンドワードを、それぞれIVレジスタ111、キーコードレジスタ群130内のキーコードレジスタ、動作指定ビット114、モードレジスタ124、スタートワード指定レジスタ161、エンドワード指定レジスタ162に設定した後、スタートビット163を設定する。スタートビットが設定されることで、機密データ保護メモリモジュール110aに対して、暗号化の開始が指示される。すると、機密データ保護メモリモジュール110aは1ワード単位での暗号化処理を開始する。この暗号化処理は、エンドワードまで続く。
【0207】
図17は、暗号化処理終了後の状態を示す図である。図17には、機密データ保護メモリモジュール110a上での暗号化処理が終了し、CPU101への割り込み通知が行われたときの状態を示している。このとき、CPU101はエンドビット164のステータスリードにより、処理の終了を確認する。その後、CPU101は、第2段メモリ117より暗号化されたIPパケット530をリードして、認証データ作成を開始する。
【0208】
図18は、トンネルモード用のデータ生成後の状態を示す図である。CPU101は、トンネルモードで暗号パケットを転送するために、トンネル用IPヘッダ540、ESPヘッダ550、認証データ560を作成する。そして、CPU101は、作成したトンネル用IPヘッダ540、ESPヘッダ550、認証データ560を第1段メモリ116に書き込む。書き込まれた各データは、第2段メモリ117にコピーされる。これにより、複製されたトンネル用IPヘッダ541、ESPヘッダ551、認証データ561が第2段メモリ117に格納される。これら全てのデータの書込処理が終了した時点で、DMA装置104により、暗号化パケット(トンネル用IPヘッダ541、ESPヘッダ551、暗号化されたIPパケット530、認証データ561で構成される)が他のデバイス(NIC等)に転送される。
【0209】
次に、暗号化パケットからの復号の流れを説明する。
図19は、暗号化パケット受信中の状態を示す図である。暗号化パケットを受信すると、DMA装置104によりDMA転送が行われる。その結果、暗号化パケットを構成するトンネル用IPヘッダ640、ESPヘッダ650、暗号化されたIPパケット630などが機密データ保護メモリモジュール110aの第1段メモリ116に格納される。そして、瞬時に第2段メモリ117にコピーされる。これにより、複製されたトンネル用IPヘッダ641、ESPヘッダ651、暗号化されたIPパケット631などが第2段メモリ117に格納される。
【0210】
CPU101はこの間、トンネル用IPヘッダ640の解析、ESPヘッダ650の解析を行い、パケット長、暗号化モードや暗号鍵を知る。そして、CPU101は、機密データ保護メモリモジュール110aのIVレジスタ111,キーコードレジスタ群130内のキーコードレジスタ、動作指定ビット114、モードレジスタ124、スタートワード指定レジスタ161、エンドワード指定レジスタ162に、それぞれIV、キーコード、動作指定(復号)、モード(DES−CBC)、開始ワード(暗号化されたIPパケット631の先頭のワード)、終了ワード(暗号化されたIPパケット631の最後のワード)を設定する。その後、CPU101は、スタートビット163に処理開始を示す値を設定し、復号の開始を指示する。すると、機密データ保護メモリモジュール110aは、1ワード単位での復号処理を開始する。復号処理は、暗号化されたIPパケットの最後の1ワードまで続けられる。
【0211】
図20は、復号処理中に行われる認証処理の状況を示す図である。CPU101は、暗号化されたIPパケット630を読み取り、認証データを作成する。そして、CPU101は、生成した認証データと、暗号化パケットに含まれる認証データ660とを照合し、合致するか否かにより認証を行う。この間にも、機密データ保護メモリモジュール110a上では復号処理が実行される。そして、復号が済んだ段階で、DMA装置104により、生パケットがDMA転送される。
【0212】
以上のようにして、本発明の実施の形態によれば、VPN装置による暗号パケットの送受信処理を、効率よく行うことができる。
以下、本発明の実施の形態に係るVPN装置を用いることによる処理の効率化の効果を、従来技術を用いたVPN装置と比較して説明する。
【0213】
図21は、暗号化の処理効率を比較する図である。図21(A)は、従来手法による暗号化処理の流れを示しており、図21(B)は、本実施の形態による暗号化処理の流れを示している。
【0214】
従来手法による暗号化処理は、DMA転送(ステップS11)、CPUによるヘッダ解析(ステップS12)、DESによる暗号化(ステップS13)、認証データの作成(ステップS14)、DMA転送(ステップS15)の順で行われる。
【0215】
本実施の形態による暗号化処理は、IPヘッダのDMA転送(1)(ステップS21)、CPUによるヘッダ解析(ステップS22)、DMA転送(2)(ステップS23)、並列動作のDESによる暗号化(ステップS24)、DMA転送完了後の認証データの作成(ステップS25)、暗号化と認証データの作成との完了後のDMA転送(ステップS26)の順で行われる。なお、DMA転送が2段階に分かれているのは、ヘッダ解析のためメモリバスがCPUによって一時的に使用されるからである。
【0216】
図22は、復号の処理効率を比較する図である。図22(A)は、従来手法による復号処理の流れを示しており、図22(B)は、本実施の形態による復号処理の流れを示している。
【0217】
従来手法による復号処理は、DMA転送(ステップS31)、CPUによるヘッダ解析(ステップS32)、認証確認(ステップS33)、DESによる復号(ステップS34)、DMA転送(ステップS35)の順で行われる。
【0218】
本実施の形態による復号処理は、IPヘッダのDMA転送(1)(ステップS41)、CPUによるヘッダ解析(ステップS42)、DMA転送(2)(ステップS43)、並列動作のDESによる復号(ステップS44)、DMA転送完了後の認証データの作成(ステップS45)、復号と認証データの作成との完了後のDMA転送(ステップS46)の順で行われる。なお、DMA転送が2段階に分かれているのは、ヘッダ解析のためメモリバスがCPUによって一時的に使用されるからである。
【0219】
図21,図22に示したように、本実施の形態によれば、DES処理が並列的に行えるため、パケットの暗号化や復号の処理時間が短縮される。たとえば、1500バイトのフレームを処理する場合の、従来技術と本実施の形態とのおよそのサイクル数を計算する。なお、計算結果の比較を分かり易くするため、生パケットと暗号パケットとは、共に200ワードで構成されるものとして計算する。
【0220】
[従来手法(暗号化)]
DMA転送:200×4=800サイクル
ヘッダ解析:2000サイクル
DES処理:200×16+200×(4+4)=4800サイクル
認証ヘッダ作成:3000サイクル
DMA転送:200×4=800サイクル
計:11,400サイクル
[本発明の手法(暗号化)]
DMA転送(1):3×4=12サイクル(IPヘッダの転送)
ヘッダ解析:2000サイクル
DMA転送(2):788サイクル
DES処理:200×16=3200サイクル
認証ヘッダ作成:3000サイクル
DMA転送:200×4=800サイクル
計:12+2000+788+3000+800=6600サイクル
[従来手法(復号)]
DMA転送:200×4=800サイクル
ヘッダ解析:2000サイクル
DES処理:200×16+200×(4+4)=4800サイクル
認証:3000サイクル
DMA転送:200×4=800サイクル
計:1,1400サイクル
[本発明の手法(復号)]
DMA転送(1):3×4=12サイクル(IPヘッダの転送)
ヘッダ解析:2000サイクル
DMA転送(2):788サイクル
DES処理:200×16=3200サイクル
認証:3000サイクル
DMA転送:200×4=800サイクル
計:12+2000+788+3000+800=6600サイクル
ただし、DMA転送には1ワードあたり4サイクル、CPUによるリードとライトにはそれぞれ1ワードあたり4サイクルとしている。
【0221】
以上の結果から、機密データ保護メモリモジュールを使用すると2倍近くのパフォーマンスを得ることができる。
[第7の実施の形態]
第7の実施の形態は、VPN装置におけるメモリを、機密データ保護メモリモジュールによってリングバッファを構成し、処理の高速化を図ったものである。
【0222】
図23は、第7の実施の形態に適用するリングバッファの構成を示す図である。図23に示すように、リングバッファ710は、複数のパケットバッファ711〜714で構成されている。各パケットバッファ711〜714の内部構造は、たとえば、第6の実施の形態に係る機密データ保護メモリモジュール110aと同じである。
【0223】
このように機密データ保護メモリ110aによってリングバッファ710を構成することで、入力されたパケットの暗号化/復号の処理(たとえば、DES処理)を、各パケットに対して並列に実行することができる。その結果、VPN装置としてのデータ処理速度が向上する。
【0224】
[第8の実施の形態]
第8の実施の形態は、機密データ保護メモリモジュールを内蔵したIDカードを個人認証に利用する場合の例である。
【0225】
図24は、第8の実施の形態に係るIDカードの例を示す図である。図24に示すように、個人認証を行うための認証システム720は、認証用データベース721とCPU722とを有している。認証用データベース721には、個人認証を行うためのIDカード730の利用者毎の識別情報が格納されている。
【0226】
IDカード730は、カード番号(No.)731と機密データ保護メモリモジュール732とを有している。カード番号731には、認証システム720がIDカード730を一意に識別するための識別番号が登録されている。また、機密データ保護メモリモジュール732には、認証システム720に登録されているキーコードやIVによって暗号化された利用者本人を特定するためのID情報が含まれている。
【0227】
IDカード730が認証システム720に接続されると、認証システム720は、IDカード730のカード番号731を読み取る。そして、認証システム720は、認証用データベース721から、カード番号731に対応するユーザ情報を抽出し、IDカード730の持ち主を特定する。持ち主が特定されたら、認証システム720は、その持ち主に対応するキーコードとIVとを取り出す。さらに、認証システム720は、取り出したキーコードとIVとを、IDカード730の機密データ保護メモリモジュール732に入力する。すると、IDカード730において、暗号化された状態のID情報が復号される。その結果、認証システム720は、IDカード730に格納されたID情報を読み取り、解釈することができる。
【0228】
このようにして、IDカード730の利用者の本人の特定を確実に行うことができる。
[第9の実施の形態]
第9の実施の形態は、第8の実施の形態の機密性を高めたものである。
【0229】
図25は、第9の実施の形態に係るIDカードの例を示す図である。第9の実施の形態では、偽造カードによるキーコードやIVの不正取得を防ぐために、多段階の認証を行う。たとえば、図25に示すようにIDカード740は、カード番号741、本人特定用認証番号742aが格納された機密データ保護メモリモジュール742、本人のID情報743aが格納された機密データ保護メモリモジュール743を有する。ここで、本人特定用認証番号742aはDESで暗号化された状態で機密データ保護メモリモジュール742に格納される。また、本人のID情報743aは、3DESで暗号化された状態で機密データ保護メモリモジュール743に格納される。
【0230】
このように、データの機密性の度合いに応じて暗号の強度を変更することで、不正の行為の困難性を高めることができる。
[その他の変形例]
上記の各実施の形態で示した機密データ保護メモリモジュールの有する機能を、半導体1チップ(半導体メモリチップ)に実装することもできる。
【0231】
また、暗号化/復号の技術としてDESを用いた場合の例を示したが、他の暗号化/復号技術を用いることもできる。
(付記1) 外部バス接続端子から入力されたデータを記憶する第1のメモリ回路と、
前記第1のメモリ回路に対して内部接続されており、前記第1のメモリ回路に記憶された前記データの複製データを取得し、取得した前記複製データを記憶する第2のメモリ回路と、
前記第2のメモリ回路に対して内部接続されており、外部からの動作指示入力に応答して、前記第2のメモリ回路に記憶された前記複製データの暗号化または復号の処理を実行し、処理結果を前記第2のメモリ回路に書き戻す暗号化/復号回路と、
を有することを特徴とするメモリデバイス。
【0232】
(付記2) 前記暗号化/復号回路は、前記第2のメモリ回路の記憶領域のうち処理対象とすべき格納領域が指定されると、指定された前記格納領域に格納されたデータに対してのみ、暗号化または復号の処理を実行することを特徴とする付記1記載のメモリデバイス。
【0233】
(付記3) 前記第2のメモリ回路は、前記データを構成する部分データが前記第1のメモリ回路に格納される毎に、逐次前記部分データの複製を記憶することを特徴とする付記1記載のメモリデバイス。
【0234】
(付記4) 前記第2のメモリ回路は、前記複製データを、所定データ長の単位データに分割して記憶し、
前記暗号化/復号回路は、前記単位データが前記第2のメモリ回路に記憶される毎に、順次前記単位データに対する暗号化または復号の処理を実行することを特徴とする付記3記載のメモリデバイス。
【0235】
(付記5) 前記暗号化/復号回路は、
複数の前記単位データそれぞれに対応づけて設けられ、処理順が直前となる前記単位データに対する暗号化または復号の処理の実行の有無を監視し、直前の前記単位データに対する処理の実行完了を検出する処理順検出回路と、
前記処理順検出回路によって直前の前記単位データに対する処理の実行完了が検出されると、前記処理順検出回路に対応する前記単位データに対する暗号化または復号処理を実行する暗号化/復号処理実行回路と、
を有することを特徴とする付記4記載のメモリデバイス。
【0236】
(付記6) 前記処理順検出回路は、対応関係にある前記単位データの暗号化または復号の処理が完了すると所定の値を出力し、処理順が直前となる前記単位データに対応する前段の前記処理順検出回路の出力が前記所定の値になったときに、直前の前記単位データに対する処理の実行が完了したと判断することを特徴とする付記5記載のメモリデバイス。
【0237】
(付記7) 前記暗号化/復号回路は、暗号化または復号に関する複数の処理方式の処理機能を有しており、外部からの入力に応じて、実行する暗号化または復号の処理方式を決定することを特徴とする付記1記載のメモリデバイス。
【0238】
(付記8) 前記複写データの暗号化または復号の処理が完了すると、割り込み信号を出力する割り込み通知回路を更に有することを特徴とする付記1記載のメモリデバイス。
【0239】
(付記9) 前記割り込み通知回路は、前記第1のメモリに記憶された前記複写データのデータ長と、前記第2のメモリに記憶された前記複写データのうち暗号化または復号の処理が完了した前記単位データのデータ長とが一致したときに、割り込み信号を出力することを特徴とする付記8記載のメモリデバイス。
【0240】
(付記10) 前記割り込み通知回路は、予め終了単位データとして指定された単位データの暗号化または復号の処理が完了したときに、割り込み信号を出力することを特徴とする付記8記載のメモリデバイス。
【0241】
(付記11) 外部から入力されたデータを記憶する第1のメモリ回路と、
前記第1のメモリ回路に記憶された前記データの複製データを生成し、取得した前記複製データを記憶する第2のメモリ回路と、
外部からの動作指示入力に応答して、前記第2のメモリ回路に記憶された前記複製データの暗号化または復号の処理を実行し、処理結果を前記第2のメモリ回路に書き戻す暗号化/復号回路と、
を有することを特徴とする半導体メモリチップ。
【0242】
(付記12) メモリデバイスに入出力されるデータの暗号化/復号処理を行うための暗号化/復号方法において、
外部バス接続端子から前記メモリデバイスに入力されたデータを前記メモリデバイス内の第1のメモリ回路に格納し、
外部からの動作指示入力に応答して、前記第1のメモリ回路に対して前記メモリデバイス内で内部接続されている暗号化/復号回路を用いて、前記第1のメモリ回路に格納された前記データの複製データに対して暗号化または復号の処理を実行し、
暗号化または復号の処理結果を、前記暗号化/復号回路に内部接続された第2のメモリ回路に格納する、
ことを特徴とする暗号化/復号方法。
【0243】
【発明の効果】
以上説明したように本発明では、外部バス接続端子から入力されて第1のメモリに記憶されたデータの複製データを、内部接続された第2のメモリ回路に記憶し、第2のメモリ回路に記憶された複製データに対して暗号化または復号の処理を実行するようにしたため、データの暗号化や復号処理中のために外部バスが占有することが無くなる。その結果、暗号化や復号処理中であっても、第1のメモリ回路に記憶されたデータへの外部からのアクセスが可能となり、入力されたデータを用いた処理の効率が向上する。
【図面の簡単な説明】
【図1】実施の形態に適用される発明の概念図である。
【図2】DES−CBCモードの動作を説明する図である。
【図3】VPNのシステム構成例を示す図である。
【図4】VPN装置の内部構造を示す図である。
【図5】第1の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図6】カウンタ回路のステートマシンを示す図である。
【図7】DES−ECBモードの動作を説明する図である。
【図8】第2の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図9】3DESの処理の手順を示す図である。図9(A)は、3DESの暗号化処理を示しており、図9(B)は、3DESの復号処理を示している。
【図10】第3の実施の形態に係る暗号化/復号処理を実現するための回路構成を示す図である。
【図11】第4の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図12】暗号化/復号対象データを限定した場合のメモリ領域を示す図である。
【図13】第5の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図14】カウンタ回路のステートマシンを示す図である。
【図15】第6の実施の形態に係る機密データ保護メモリモジュールの構成例を示す図である。
【図16】生パケット受信中の状態を示す図である。
【図17】暗号化処理終了後の状態を示す図である。
【図18】トンネルモード用のデータ生成後の状態を示す図である。
【図19】暗号化パケット受信中の状態を示す図である。
【図20】復号処理中に行われる認証処理の状況を示す図である。
【図21】暗号化の処理効率を比較する図である。図21(A)は、従来手法による暗号化処理の流れを示しており、図21(B)は、本実施の形態による暗号化処理の流れを示している。
【図22】復号の処理効率を比較する図である。図22(A)は、従来手法による復号処理の流れを示しており、図22(B)は、本実施の形態による復号処理の流れを示している。
【図23】第7の実施の形態に適用するリングバッファの構成を示す図である。
【図24】第8の実施の形態に係るIDカードの例を示す図である。
【図25】第9の実施の形態に係るIDカードの例を示す図である。
【図26】従来の機密保持機能を備えたコンピュータの概略構成を示す図である。
【図27】従来のVPN装置の構成例を示す図である。
【符号の説明】
1 メモリデバイス
1a 外部バス接続端子
1b 第1のメモリ回路
1c 第2のメモリ回路
1d 暗号化/復号回路
1e,1f 内部バス
2 外部バス
110 機密データ保護メモリモジュール
111 IVレジスタ
112 キーコードレジスタ
113 データ長レジスタ
114 動作指定ビット
115 クリアビット
116 第1段メモリ
117 第2段メモリ
118a,118b,118c 排他的論理和回路
119a,119b,119c DES回路
120a,120b,120c カウンタ回路
121 エラーレジスタ
122 割り込み通知回路
123 アドレスデコード回路

Claims (10)

  1. 外部バス接続端子から入力されたデータを記憶する第1のメモリ回路と、
    前記第1のメモリ回路に対して内部接続されており、前記第1のメモリ回路に記憶された前記データの複製データを取得し、取得した前記複製データを記憶する第2のメモリ回路と、
    前記第2のメモリ回路に対して内部接続されており、外部からの動作指示入力に応答して、前記第2のメモリ回路に記憶された前記複製データの暗号化または復号の処理を実行し、処理結果を前記第2のメモリ回路に書き戻す暗号化/復号回路と、
    を有することを特徴とするメモリデバイス。
  2. 前記暗号化/復号回路は、前記第2のメモリ回路の記憶領域のうち処理対象とすべき格納領域が指定されると、指定された前記格納領域に格納されたデータに対してのみ、暗号化または復号の処理を実行することを特徴とする請求項1記載のメモリデバイス。
  3. 前記第2のメモリ回路は、前記データを構成する部分データが前記第1のメモリ回路に格納される毎に、逐次前記部分データの複製を記憶することを特徴とする請求項1記載のメモリデバイス。
  4. 前記第2のメモリ回路は、前記複製データを、所定データ長の単位データに分割して記憶し、
    前記暗号化/復号回路は、前記単位データが前記第2のメモリ回路に記憶される毎に、順次前記単位データに対する暗号化または復号の処理を実行することを特徴とする請求項3記載のメモリデバイス。
  5. 前記暗号化/復号回路は、
    複数の前記単位データそれぞれに対応づけて設けられ、処理順が直前となる前記単位データに対する暗号化または復号の処理の実行の有無を監視し、直前の前記単位データに対する処理の実行完了を検出する処理順検出回路と、
    前記処理順検出回路によって直前の前記単位データに対する処理の実行完了が検出されると、前記処理順検出回路に対応する前記単位データに対する暗号化または復号処理を実行する暗号化/復号処理実行回路と、
    を有することを特徴とする請求項4記載のメモリデバイス。
  6. 前記暗号化/復号回路は、暗号化または復号に関する複数の処理方式の処理機能を有しており、外部からの入力に応じて、実行する暗号化または復号の処理方式を決定することを特徴とする請求項1記載のメモリデバイス。
  7. 前記複写データの暗号化または復号の処理が完了すると、割り込み信号を出力する割り込み通知回路を更に有することを特徴とする請求項1記載のメモリデバイス。
  8. 前記割り込み通知回路は、前記第1のメモリに記憶された前記複写データのデータ長と、前記第2のメモリに記憶された前記複写データのうち暗号化または復号の処理が完了した前記単位データのデータ長とが一致したときに、割り込み信号を出力することを特徴とする請求項7記載のメモリデバイス。
  9. 前記割り込み通知回路は、予め終了単位データとして指定された単位データの暗号化または復号の処理が完了したときに、割り込み信号を出力することを特徴とする請求項7記載のメモリデバイス。
  10. メモリデバイスに入出力されるデータの暗号化/復号処理を行うための暗号化/復号方法において、
    外部バス接続端子から前記メモリデバイスに入力されたデータを前記メモリデバイス内の第1のメモリ回路に格納し、
    外部からの動作指示入力に応答して、前記第1のメモリ回路に対して前記メモリデバイス内で内部接続されている暗号化/復号回路を用いて、前記第1のメモリ回路に格納された前記データの複製データに対して暗号化または復号の処理を実行し、
    暗号化または復号の処理結果を、前記暗号化/復号回路に内部接続された第2のメモリ回路に格納する、
    ことを特徴とする暗号化/復号方法。
JP2002226204A 2002-08-02 2002-08-02 メモリデバイスおよび暗号化/復号方法 Pending JP2004070499A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002226204A JP2004070499A (ja) 2002-08-02 2002-08-02 メモリデバイスおよび暗号化/復号方法
US10/375,123 US20040025040A1 (en) 2002-08-02 2003-02-28 Memory device and encryption/decryption method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002226204A JP2004070499A (ja) 2002-08-02 2002-08-02 メモリデバイスおよび暗号化/復号方法

Publications (1)

Publication Number Publication Date
JP2004070499A true JP2004070499A (ja) 2004-03-04

Family

ID=31185068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002226204A Pending JP2004070499A (ja) 2002-08-02 2002-08-02 メモリデバイスおよび暗号化/復号方法

Country Status (2)

Country Link
US (1) US20040025040A1 (ja)
JP (1) JP2004070499A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501895A (ja) * 2006-08-24 2010-01-21 エルエスアイ コーポレーション 単一および多重aes動作をサポートする二重モードaesインプリメンテーション
JP2017021477A (ja) * 2015-07-08 2017-01-26 株式会社 ハンモック ファイル管理システム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162647B2 (en) * 2004-03-11 2007-01-09 Hitachi, Ltd. Method and apparatus for cryptographic conversion in a data storage system
US8521970B2 (en) 2006-04-19 2013-08-27 Lexmark International, Inc. Addressing, command protocol, and electrical interface for non-volatile memories utilized in recording usage counts
US7426613B2 (en) * 2005-06-16 2008-09-16 Lexmark International, Inc. Addressing, command protocol, and electrical interface for non-volatile memories utilized in recording usage counts
US9245591B2 (en) 2005-06-16 2016-01-26 Lexmark International, Inc. Addressing, command protocol, and electrical interface for non-volatile memories utilized in recording usage counts
US8473754B2 (en) 2006-02-22 2013-06-25 Virginia Tech Intellectual Properties, Inc. Hardware-facilitated secure software execution environment
KR20080029687A (ko) * 2006-09-29 2008-04-03 한국전자통신연구원 암호화 기능이 내장된 메모리를 이용한 고속 대용량의암호화 장치 및 그 구현 방법
KR101370829B1 (ko) * 2007-05-08 2014-03-10 삼성전자주식회사 데이터의 암호화/복호화 방법 및 이를 적용한 버스 시스템
US20090172393A1 (en) * 2007-12-31 2009-07-02 Haluk Kent Tanik Method And System For Transferring Data And Instructions Through A Host File System
DE102008046681B4 (de) * 2008-09-10 2011-04-14 Atmel Automotive Gmbh Schaltung, Verfahren und Verwendung eines Speichers zum Senden und/oder Empfangen in einem Funknetz
US8356186B1 (en) * 2009-10-01 2013-01-15 Rockwell Collins, Inc. Decryption system and method for reducing processing latency of stored, encrypted instructions
US9152825B2 (en) * 2012-02-29 2015-10-06 Apple Inc. Using storage controller bus interfaces to secure data transfer between storage devices and hosts
CN106487496A (zh) * 2015-08-25 2017-03-08 中兴通讯股份有限公司 一种控制存储加密的方法和终端
US10339327B2 (en) 2016-06-20 2019-07-02 Intel Corporation Technologies for securely binding a platform manifest to a platform
US10824572B2 (en) * 2016-09-09 2020-11-03 Cylance Inc. Memory space protection
CN109409105B (zh) * 2018-09-30 2022-09-23 联想(北京)有限公司 一种切换方法、处理器及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050213A (en) * 1986-10-14 1991-09-17 Electronic Publishing Resources, Inc. Database usage metering and protection system and method
US5664195A (en) * 1993-04-07 1997-09-02 Sequoia Systems, Inc. Method and apparatus for dynamic installation of a driver on a computer system
US5742686A (en) * 1996-06-14 1998-04-21 Finley; Phillip Scott Device and method for dynamic encryption
US5818939A (en) * 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
JP3815950B2 (ja) * 1999-06-15 2006-08-30 松下電器産業株式会社 デジタルデータ書込装置、デジタルデータ記録装置、デジタルデータ利用装置
US7005733B2 (en) * 1999-12-30 2006-02-28 Koemmerling Oliver Anti tamper encapsulation for an integrated circuit
US6986030B2 (en) * 2000-10-27 2006-01-10 M-Systems Flash Disk Pioneers Ltd. Portable memory device includes software program for interacting with host computing device to provide a customized configuration for the program
US7620759B2 (en) * 2002-11-04 2009-11-17 Ohva, Inc. Secure memory device for smart cards with a modem interface

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010501895A (ja) * 2006-08-24 2010-01-21 エルエスアイ コーポレーション 単一および多重aes動作をサポートする二重モードaesインプリメンテーション
JP2017021477A (ja) * 2015-07-08 2017-01-26 株式会社 ハンモック ファイル管理システム

Also Published As

Publication number Publication date
US20040025040A1 (en) 2004-02-05

Similar Documents

Publication Publication Date Title
US10432393B2 (en) Architecture and instruction set for implementing advanced encryption standard (AES)
US6983366B1 (en) Packet Processor
ES2805125T3 (es) Arquitectura e instrucciones flexibles para el estándar de cifrado avanzado (AES)
JP2004070499A (ja) メモリデバイスおよび暗号化/復号方法
TWI286689B (en) Cryptographic apparatus for supporting multiple modes
US8737606B2 (en) Method and system for high throughput blockwise independent encryption/decryption
CN1655496B (zh) 产生密码钥匙排程的装置及方法
TWI411932B (zh) 用於加密/解密儲存裝置中之非揮發性記憶體中之資料之方法及處理資料之方法
JP5120830B2 (ja) 共用のハードウェアを利用して暗号文及びメッセージ認証コードを生成するための方法及びシステム
EP2711859B1 (en) Secured computing system with asynchronous authentication
US20110255689A1 (en) Multiple-mode cryptographic module usable with memory controllers
US20050188216A1 (en) Apparatus and method for employing cyrptographic functions to generate a message digest
TWI351864B (en) Apparatus and method for employing cyrptographic f
ES2863676T3 (es) Mensaje cifrado con instrucción de autenticación
US20080062803A1 (en) System and method for encrypting data
JP2005505069A (ja) メモリ暗号化
JPH1075240A (ja) データ送信を保護する方法およびデータを暗号化または解読化する装置
JPH06104929A (ja) ホスト対ホストの暗号キーを変更する形式のコンピュータネットワーク
EP3803672B1 (en) Memory-efficient hardware cryptographic engine
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
US11722467B2 (en) Secured communication from within non-volatile memory device
WO2006033347A1 (ja) 機密情報処理方法、機密情報処理装置、およびコンテンツデータ再生装置
US7529368B2 (en) Apparatus and method for performing transparent output feedback mode cryptographic functions
JP2004054128A (ja) 暗号化装置
CN113158203A (zh) 一种soc芯片、电路和soc芯片的外部数据读写方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041126

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080909

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090127