JP2012050066A - セキュアなフィールドプログラマブルゲートアレイ(fpga)アーキテクチャ - Google Patents

セキュアなフィールドプログラマブルゲートアレイ(fpga)アーキテクチャ Download PDF

Info

Publication number
JP2012050066A
JP2012050066A JP2011127714A JP2011127714A JP2012050066A JP 2012050066 A JP2012050066 A JP 2012050066A JP 2011127714 A JP2011127714 A JP 2011127714A JP 2011127714 A JP2011127714 A JP 2011127714A JP 2012050066 A JP2012050066 A JP 2012050066A
Authority
JP
Japan
Prior art keywords
fpga
key
configuration data
encryption
authentication
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.)
Granted
Application number
JP2011127714A
Other languages
English (en)
Other versions
JP5815294B2 (ja
Inventor
R Woodall Thomas
アール. ウッドオール,トーマス
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.)
Raytheon Co
Original Assignee
Raytheon Co
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 Raytheon Co filed Critical Raytheon Co
Publication of JP2012050066A publication Critical patent/JP2012050066A/ja
Application granted granted Critical
Publication of JP5815294B2 publication Critical patent/JP5815294B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/76Protecting 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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]

Abstract

【課題】FPGAを構成するために、コンフィギュレーションデータを暗号化すること、及び、暗号化されたデータをFPGA内又はFPGAに格納する際に、FPGAキー又はFPGAコンフィギュレーションデータの機密性又は認証を確保する堅牢な方法を提供する。
【解決手段】セッションキーは、FPGA及び遠隔キー記憶デバイスの両方に格納され、暗号化されたFPGAコンフィギュレーションデータは、FPGAで受信され、復号化されたFPGAロード復号化キーを用いて復号化及び認証される。FPGAコンフィギュレーションデータを復号化したデータは反復認証に用いる。反復認証のために、FPGAにおいて認証デバイスからチャレンジメッセージが受信される。レスポンスメッセージを生成するために、チャレンジメッセージをセッションキーを使用して暗号化し、認証デバイスに送信する。
【選択図】図1

Description

本発明は、フィールドプログラマブルゲートアレイ(FPGA)デバイスに関し、具体的には、FPGAロードの機密性及びデータの完全性(authenticity)が望まれるセキュアなFPGAデバイスに関する。
従来、FPGAを構成又はプログラムするために、コンフィギュレーションデータを暗号化すること、及び、暗号化されたデータをFPGA内又はFPGAと動作可能に接続された外部記憶デバイス内のメモリユニットに格納することが行われている。FPGAを構成する際にコンフィギュレーションデータを暗号化及び復号化するためのキーは、典型的には、FPGA内のメモリユニットに格納される。当該キーは、FPGAの外部に格納され、回路構成のためにジョイントテストアクショングループ(JTAG)インタフェース等の標準化されたインタフェースを通じてFPGAに提供されることもある。しかしながら、これらのキー管理方法はいずれもFPGAキー又はFPGAコンフィギュレーションデータの機密性又は認証を確保するための十分に堅牢な方法を提供していない。
かかるキー管理方法は、悪意のある者からの攻撃に弱く、FPGAキーに対する無権限アクセスが発生する可能性もある。FPGAキーは、FPGA内のセキュリティが確保されていない記憶ユニットから読み取られたり、JTAGインタフェースにおいてセキュリティが確保されていないデータ転送を行う際に読み取られる可能性がある。読み取られたキーが敵対者に用いられると、FPGAコンフィギュレーションデータを復号化して無権限複製が行われる可能性がある。また、当該コンフィギュレーションデータがFPGAの機能を把握するためにリバースエンジニアリングされ、FPGAが意図しない機能を実行するように改変される可能性もある。
FPGAコンフィギュレーションデータ用の復号キーの機密性を維持し、その後にFPGAコンフィギュレーションデータの認証を繰り返し実行するシステム及び方法が望まれている。
一以上の実施形態において、本開示は、キーをFPGAにローカルに保存せずにFPGAロード用の復号キーの機密性が確立され維持されているセキュアなFPGAデバイス、アーキテクチャ、及び方法の実施形態を提供する。様々な実施形態の他の側面においては、セキュアプロセッサ等の外部ストレージロケーション又はデバイスからFPGAに対して、FPGAロード用復号キーをセキュアにリアルタイム転送するフレキシブルな方法が開示される。また、データの初期の完全性を確立するだけでなく、FPGAのパフォーマンスを劣化させることなくFPGAの動作中に継続的にデータの完全性を維持するメカニズムが開示される。
本開示の一以上の実施形態において、FPGAアーキテクチャには、迂回不能なローダ、及びキー管理プロトコルが含まれる。この迂回不能なローダによって、初期認証及びFPGAコンフィギュレーションデータの復号化だけでなく、FPGAコンフィギュレーションデータの反復認証も可能になる。このキー管理プロトコルによって、FPGAロード復号キーを、当該FPGAの外部にあるストレージ又はデバイスからFPGAにセキュアに送信することができる。
一実施形態において、FPGAを構成するシステムは、キーインタフェース、ロードインタフェース、キーセキュリティユニット、及びコンフィギュレーションデータセキュリティユニットを含む。一部の実施形態においては、キーインタフェース、ロードインタフェース、キーセキュリティユニット、コンフィギュレーションデータセキュリティユニット、及び状態暗号化ユニットの一又は複数が、FPGAの内部にあるかFPGAの一部となっている。このキーインタフェースは、FPGAにおいて、暗号化されたFPGAロード復号キーを遠隔キー記憶デバイスから受信することができる。この遠隔キー記憶デバイスは、FPGAの外部にあるかFPGAに動作可能に接続されている。キーセキュリティ復号化ユニットは、復号化されたFPGAロード復号化キーを提供するために、前記暗号化されたFPGAロード復号キーを一時セッションキーを用いて復号化することができる。一実施形態において、セッションキーは、FPGA又は遠隔キー記憶デバイスのいずれかにおいて、鍵共有プロトコルを用いて計算される。この鍵共有プロトコルは、例えば、Menezes-Qu-Vanstone(MQV)プロトコル、楕円曲線MQV(EC-MQV)プロトコル、又はDiffie-Hellmanプロトコルである。一部の実施形態において、セッションキーは、一時セッションキーとFPGA及び遠隔キー記憶デバイスの両方に格納された共通キーの関数である。一部の実施形態において、遠隔キー記憶デバイスはセキュアプロセッサを含む。このセキュアプロセッサは、FPGAと協調して鍵共有プロトコルを使用し、前記遠隔キー記憶デバイスの出力としてセッションキーの生成を促進するように構成されている。
FPGAロード復号化キーの復号化の後に、又は、復号化と並行して、FPGAを構成するための暗号化されたFPGAコンフィギュレーションデータがFPGAのロードインタフェースにおいて受信される。FPGAコンフィギュレーションデータは、ロードインタフェースにおいてメモリデバイスから受信される。このメモリデバイスは、例えば、プログラマブルROMメモリ(PROM)デバイス、消去可能なPROM(EPROM)デバイス、及び電気的に消去可能なPROM(EEPROM)デバイスの一又は複数を含む不揮発性メモリデバイスである。一部の実施形態においては、FPGAコンフィギュレーションデータが暗号化される。このFPGAコンフィギュレーションデータの暗号化は、新暗号規格の暗号ブロック連鎖メッセージ認証コードを備えたカウンタ(AES-CCM)暗号化モードを用いて実行される。
一部の実施形態において、コンフィギュレーションデータセキュリティユニットは、FPGAロード復号化キーを用いて、FPGAコンフィギュレーションデータを復号化するとともに初期認証を実行する。例えばコンフィギュレーションデータセキュリティユニットが用いて実行されるFPGAコンフィギュレーションデータの復号化及び初期認証は、FPGAを構成するために迂回することができない。一実施形態においては、第2の復号化ユニットが、FPGAコンフィギュレーションデータと対応付けられた暗号化状態を生成することができる。この暗号化状態は、FPGAコンフィギュレーションデータの初期認証及び/又は反復認証に使用される。一実施形態における暗号化状態は、FPGAコンフィギュレーションデータの関数であるか、又は、FPGAコンフィギュレーションデータの少なくとも一部によって決定される。一部の実施形態においては、FPGAロードの反復認証のために、当該システムが、認証入力インタフェース、状態暗号化ユニット、及び認証出力インタフェースをさらに備える。この認証入力インタフェースは、FPGAにおいて認証デバイスからチャレンジメッセージを受信するために用いられる。この認証デバイスは、FPGAの外部にあってFPGAと動作可能に接続されている。一部の実施形態において、前記認証デバイスは、乱数等のチャレンジメッセージを生成する。認証デバイスは、認証入力インタフェースへの送信前に、チャレンジメッセージをさらに暗号化及び署名処理することができる。一部の実施形態において、チャレンジメッセージが認証デバイスによって暗号化及び署名処理された場合には、状態暗号化ユニットは、別の処理を行う前にチャレンジメッセージを認証及び復号化する。状態暗号化ユニットは、次に、暗号化状態及びセッションキーを用いてチャレンジメッセージを暗号化してレスポンスメッセージを生成する。セッションキーは、FPGA及び遠隔キー記憶デバイスに加えて認証デバイスにも格納されている。状態暗号化ユニットは、新暗号規格の暗号ブロック連鎖(AES-CBC)暗号化モードを用いてチャレンジメッセージを暗号化し、レスポンスメッセージを生成することができる。AES-CBC暗号化モードにおいて、暗号化状態は、反復認証の最初のサイクルの初期ベクトル(IV)として用いられる。後続の認証処理に関しては、以前の認証サイクルで得られたレスポンスメッセージをAES-CBC暗号化の初期ベクトルとして用いることができる。このレスポンスメッセージは、認証出力インタフェースを介して認証デバイスに送信される。一部の実施形態において、認証デバイスでは、復号化されたチャレンジメッセージを生成するためにレスポンスメッセージが復号化される。復号化されたチャレンジメッセージが(元の)チャレンジメッセージと同じ場合には、FPGAコンフィギュレーションデータが完全なものと示される。
他の実施形態におけるフィールドプログラマブルゲートアレイ(FPGA)を構成する方法は、FPGAにおいて、暗号化されたFPGAロード復号キーを遠隔キー記憶デバイスから受信することを含む。遠隔キー記憶デバイスは、FPGAの外部にあってFPGAと動作可能に接続される。この暗号化されたFPGAロード復号キーは、復号化されたFPGAロード復号化キーを生成するために、一時セッションキーを用いてキーセキュリティユニットにおいて復号化される。一実施形態において、前記セッションキーは、鍵共有プロトコルを用いて、FPGA、遠隔キー記憶デバイス、又はこれらの両方で計算される。鍵共有プロトコルをは、例えば、Menezes-Qu-Vanstone(MQV)プロトコル、楕円曲線MQV(EC-MQV)プロトコル、又はDiffie-Hellmanプロトコルである。暗号化されたFPGAコンフィギュレーションデータは、FPGAで受信され、コンフィギュレーションデータセキュリティユニットにおいて、復号化されたFPGAロード復号化キーを用いてその復号化及び認証処理が行われる。一部の実施形態においては、FPGAコンフィギュレーションデータが暗号化される。この暗号化は、新暗号規格の暗号ブロック連鎖メッセージ認証コードを備えたカウンタ(AES-CCM)暗号化モードを用いて実行される。一部の実施形態において、FPGAを構成するためには、コンフィギュレーションデータセキュリティユニットにおける復号化及び初期認証の迂回は不可能である。
FPGAコンフィギュレーションデータの復号化は、FPGAコンフィギュレーションデータに対応付けられた暗号化状態を示す。この暗号化状態は、FPGAコンフィギュレーションデータの関数であるか、又は、FPGAコンフィギュレーションデータの少なくとも一部によって決定される。一実施形態における方法は、FPGAコンフィギュレーションデータの反復認証をさらに実行する。かかる反復認証には、チャレンジメッセージ(暗号化されたもの又は暗号化されていないもの)をFPGAにおいて認証デバイスから受信することを含む。認証デバイスは、FPGAの外部にあってFPGAと動作可能に接続されている。受信されたチャレンジメッセージは、レスポンスメッセージを生成するために、暗号化状態及びセッションキーを用いて状態セキュリティユニットにおいて暗号化される。セッションキーは、FPGA及びキー記憶デバイスに加えて認証デバイスにも格納される。チャレンジメッセージは、レスポンスメッセージを生成するために、新暗号規格の暗号ブロック連鎖(AES-CBC)暗号化モードを用いて暗号化される。このAES-CBC暗号化モードにおいては、暗号化状態が、反復認証の最初のサイクルの初期ベクトル(IV)として用いられる。後続の認証処理については、以前の認証サイクルで得られたレスポンスメッセージをAES-CBC暗号化の初期ベクトルとして用いることができる。このレスポンスメッセージは、認証デバイスに送信され、この認証デバイスでは、復号化されたチャレンジメッセージを生成するためにレスポンスメッセージが復号化される。復号化されたチャレンジメッセージが(元の)チャレンジメッセージと同じ場合には、FPGAコンフィギュレーションデータが完全なものと示される。
他の実施形態において、フィールドプログラマブルゲートアレイ(FPGA)を構成するシステムは、暗号化されたFPGAコンフィギュレーションデータをFPGAにおいて受信するロードインタフェースを含む。このFPGAコンフィギュレーションデータは、FPGAロード復号化キーを用いて、コンフィギュレーションデータセキュリティユニットにおいて復号化及び認証処理される。このコンフィギュレーションデータセキュリティユニットは、FPGAコンフィギュレーションデータに対応付けられた暗号化状態を生成することができる。このシステムは、認証入力インタフェース、状態暗号化ユニット、認証出力インタフェース、及びプログラマブルロジック回路をさらに含むことができる。この認証入力インタフェースは、FPGAにおいて、チャレンジメッセージを認証デバイス(FPGAの外部にあってFPGAと動作可能に接続される)から受信することができる。状態暗号化ユニットは、レスポンスメッセージを生成するために、暗号化状態を用いてチャレンジメッセージを暗号化することができる。また、認証出力インタフェースは、このレスポンスメッセージを認証デバイスに送信することができる。認証デバイスは、復号化されたチャレンジメッセージを生成するために、レスポンスメッセージを復号化する。復号化されたチャレンジメッセージが(元の)チャレンジメッセージと同じ場合には、FPGAコンフィギュレーションデータが完全なものと示される。FPGAコンフィギュレーションデータが認証デバイスによって認証されると、プログラマブルロジック回路が当該FPGAコンフィギュレーションデータを用いてプログラムされる。
他の実施形態における製造物は、プロセッサに実行されることによって、FPGAにおいて暗号化されたFPGAロード復号キーを遠隔キー記憶デバイスから受信する機能を実現するコンピュータ命令を含む有形のコンピュータ読み取り可能な媒体を含む。この遠隔キー記憶デバイスは、FPGAの外部にあってFPGAと動作可能に接続されている。この暗号化されたFPGAロード復号キーは、復号化されたFPGAロード復号化キーを生成するために、キーセキュリティユニットにおいて復号化される。暗号化されたFPGAコンフィギュレーションデータは、FPGAで受信され、コンフィギュレーションデータセキュリティユニットにおいて復号化されたFPGAロード復号化キーを用いて復号化(及び認証処理)される。FPGAコンフィギュレーションデータの復号化は、FPGAコンフィギュレーションデータに対応付けられた暗号化状態を示す。この暗号化状態は、FPGAコンフィギュレーションデータの関数であるか、FPGAコンフィギュレーションデータの少なくとも一部によって決定される。一実施形態における方法は、チャレンジメッセージをFPGAにおいて認証デバイスから受信することをさらに含むことができる。この認証デバイスは、FPGAの外部にあってFPGAと動作可能に接続される。このチャレンジメッセージは、状態セキュリティユニットにおいて暗号化状態を用いて暗号化され、レスポンスメッセージが生成される。このレスポンスメッセージは、次に認証デバイスに送信され、この認証デバイスでは、復号化されたチャレンジメッセージを生成するために、レスポンスメッセージが復号化される。この復号化されたチャレンジメッセージが(元の)チャレンジメッセージと同じであれば、FPGAコンフィギュレーションデータは完全であることが示される。
本開示の一実施形態に従ってFPGAを構成する例示的なシステムのブロック図を示す。
本開示のFPGAの例示的な実施形態のブロック図を示す。
本開示の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせにおいて実現される。本開示の様々な態様は、機械読み取り可能な媒体に格納された命令として実現することもできる。この命令は、一又は複数のプロセッサによって読み出されて実行されてもよい。機械読み取り可能な媒体には、機械(例えば、コンピュータデバイス)によって読み取り可能な形式の情報を蓄積又は転送する任意のメカニズムが含まれる。例えば、機械読み取り可能な記憶媒体には、ROM、RAM、磁気ディスク記憶媒体、光学式記憶媒体、フラッシュメモリデバイス、及びこれら以外のものが含まれる。また、本明細書において、ファームウェア、ソフトウェア、ルーチン、又は命令は、所定の動作を実行する具体的な例示的実施形態の観点から説明されるが、かかる説明は便宜上のものにすぎず、かかる動作は、実際には、コンピュータデバイス、プロセッサ、コントローラ、又はファームウェア、ソフトウェア、ルーチン、もしくは命令を実行するこれら以外のデバイスによって実行される。
図1は、FPGA102をセキュアに構成するシステム100の機能ブロック図を示す。FPGA102を構成するために、システム100は、FPGAコンフィギュレーションデータ記憶デバイス104、遠隔キー記憶デバイス106、及び認証デバイス108を含むことができる。FPGAコンフィギュレーションデータ記憶デバイス104は、暗号化又は復号化されたコンフィギュレーションデータ又は「ロード」データを格納し、FPGA102に提供することができる。コンフィギュレーションデータの少なくとも一部分がFPGA102を構成するために使用される。遠隔キー記憶デバイス106は、キーを格納し、コンフィギュレーションデータが暗号化された状態でFPGA102に提供された場合には、コンフィギュレーションデータをFPGA102で復号化するために当該キーをFPGA102にセキュアに提供することができる。一実施形態において、遠隔キー記憶デバイス106は、プロセッサ120、不揮発性メモリユニット122、揮発性メモリユニット124、及び乱数発生器(RNG)126を含むことができる。コンフィギュレーションデータキーを遠隔キー記憶デバイス106に格納し、ローカル以外、すなわちFPGA以外の場所に格納することにより、FPGA102に侵入しようとする者に対するFPGA構成のセキュリティを向上させることができる。このようなハッカーは、無権限でFPGAコンフィギュレーションデータを改変及び/又は複製し、さらにリバースエンジニアリングする可能性がある。
FPGA102においてコンフィギュレーションデータが改変又はその他の改ざんを受けていないことを確認するために、FPGA102は、反復認証プロセスにおいて認証デバイス108と協働することができる。この反復認証プロセスによって、FPGA102の動作の開始時点及び動作期間中におけるコンフィギュレーションデータのセキュリティを確保することができる。図1に示すとおり、一実施形態における認証デバイス108は、乱数発生器(RNG)170、認証−暗号(AC)エンジン172、及びメモリデバイス174を含むことができる。一実施形態において、遠隔キー記憶デバイス106及び/又は認証デバイス108は、FPGA102の外部にありFPGA102と動作可能に接続されたセキュアプロセッサ(又はその一部)である。一部の実施形態において、セキュアプロセッサは、データに対する全ての処理が完全(authentic)で機密が保持されたものとなるように、データ(もしくはプログラムコード、又はその両方)の処理が保護されているプロセッサである。セキュアプロセッサへの全ての入力は、処理を行う前に認証される。セキュアプロセッサにおいては、機密性が要求されないときには、一部のデータを外部メモリに置いておくこともできるが、かかる外部データは、セキュアプロセッサ内の認証プロセスを使用して如何なる改変からも保護されている。一以上の実施形態において、FPGA102、デバイス104、106、108、又はこれらのサブコンポーネント(後述)の各々は、本明細書で説明される機能及び処理を処理するために、一又は複数のプロセッサ及び/又はメモリモジュールを含むことができる。システム100の構造面及び機能面の詳細については後述する。
デバイス104、106及び108は、システム100において個別のコンポーネントとして図示されているが、一以上の実施形態において、デバイス104、106及び108を一又は二のデバイスに実装させることもできる。一実施形態において、FPGA102並びにデバイス104、106及び108は、チップ上の同一の回路に配置され動作するように構成されてもよい。他の実施形態において、FPGA102は、一つのシステムにおけるチップ(例えば、無人飛行機のチップ)上で動作することができる。また、デバイス104、106及び108の一又は複数は、他のシステムの一部であってもよい。この他のシステムは、前記FPGAシステム(例えば、無人飛行機用の遠隔操作システム)から地理的に離れていてもよい。FPGA102がシステム100の他のデバイスから離れて配置されている場合には、デバイス104、106及び108の一又は複数を、必要なインタフェース及びコンポーネントを用い有線又は無線のネットワーク(不図示)を介してFPGA102と動作可能に接続することができる。かかるネットワークは、TCP/IPネットワーク、インターネット、又はプライベート無線周波数(RF)ネットワークもしくは公衆無線周波数ネットワークの一又は複数を含むことができる。遠隔キー記憶デバイス106及び認証デバイス108が二つの別個のデバイス(例えば、二つの別個の回路又はチップ)に実装される場合には、当業者に明らかなように、一又は複数のシステムパラメータ(例えば、セッションキー)は、デバイス106、108の両方によって共有されることになる。
図2は、本開示の一又は複数の実施形態に従った例示的なFPGA102を示す。図示のとおり、FPGA102には、コントローラ202、迂回不能な(non-bypassable)暗号化ローダ(crypto-loader)204、プログラマブルロジック206、及び入出力(I/O)コア208が含まれる。FPGA102を構成するために必要ではなく、又は、FPGA102の構成に無関係なFPGA102のリソース及び/又はコンポーネントは、図2又は本開示における後述の図表に示されていないが、当業者であればそのようなリソースやコンポーネントについて理解することができる。一実施形態において、コントローラ202は、システム100のデバイス104、106及び108と連動してメッセージ及び/又はデータ(例えば、コンフィギュレーションデータ、キー、認証メッセージ等)を送受信する。また、コントローラ202は、特に、迂回不能な暗号化ローダ204、ロジックユニット206、及びI/Oコア208に接続され、これらのFPGAコンポーネントとデータ及び/又はメッセージを交換することによって、これらのFPGAコンポーネントを制御することができる。一以上の実施形態において、コントローラ202は、FPGAインタフェースユニット220、キーセキュリティユニット222、乱数発生器(RNG)224、ワンタイムプログラマブルキーストレージ(OPKS)ユニット226、及び揮発性キーストレージ(VKS)ユニット228を含む。
一実施形態において、FPGAインタフェースユニット220は、FPGA102の内部及び外部にあるコンポーネント間でのメッセージ及び/又はデータの交換を促進するインタフェース(すなわち、キーインタフェース230及び認証インタフェース232)を含む。例えば、FPGAインタフェースユニット220は、キーインタフェース230を用いて、暗号化キー(又は「FPGAロード復号化」キー)を遠隔キー記憶デバイス106から受信することができる。この暗号化キーを用いることによって、暗号化されたFPGAコンフィギュレーションデータを復号化し、FPGA102を構成することができる。上述のように、暗号化キーは、暗号化キーの機密性を保持し、必要に応じてFPGA102にセキュアに送信するために、遠隔キー記憶デバイス106(すなわち、FPGA102の外部)に格納されていてもよい。一実施形態において、暗号化キーは、FPGA102においてキーインタフェース230を介して暗号化された状態で受信される。例えば、暗号化キーは、セッションキーを用いて暗号化される。一実施形態において、セッションキーは、遠隔キー記憶デバイスにおいて計算されて格納されており、暗号化キーとともにFPGA102にセキュアに送信される。他の実施形態において、計算されたセッションキーは、遠隔キー記憶デバイス102及びFPGA102の両方に格納される。セッションキーは、例えば、Menezes-Qu-Vanstone(MQV)プロトコル、楕円曲線MQV(EC-MQV)プロトコル、又はDiffie-Hellmanプロトコル等の様々な鍵共有プロトコルの一又は複数を用いて計算される。セッションキーの計算に用いられる鍵共有プロトコルは、遠隔キー記憶デバイス106に関連付けられた一又は複数のプロセッサ又は処理モジュール(例えば、プロセッサ120)及びFPGAコントローラ202(例えば、キーセキュリティユニット222)と協働し、又は、これらによって実行される。また、遠隔キー記憶デバイス106(例えば、メモリユニット122)及びFPGAコントローラ202(例えば、OPKSユニット226及びVKSユニット228)内の一又は複数のメモリデバイスを用いることにより、鍵共有プロトコルによって生成されたパラメータ及び/又はその他のデータを記憶することができる。FPGAコントローラ202内の乱数発生器224及び/又は遠隔キー記憶デバイス106内の乱数発生器126は、鍵共有プロトコルの実行の一部として用いられる。
一実施形態においては、EC-MQVプロトコルを鍵共有プロトコルとして用いてセッションキーの計算が行われる。EC-MQVプロトコルは、コンフィギュレーションキー(よって、FPGA102のコンフィギュレーションデータ)を、「受動的な」攻撃及び「能動的な」攻撃の両方から保護することができる。「受動的な」攻撃は、敵対者やハッカーが、プロトコルを実行する主体すなわち遠隔キー記憶デバイス106及びキーセキュリティユニット222を単に観察することによってプロトコルの目的達成を阻害しようとするものであり、「能動的な」攻撃は、敵対者が、メッセージを挿入、削除、変更、又は繰り返すことによってプロトコルの実行主体との間の通信を妨害するものである。また、EC-MQVプロトコルは、セキュアな暗号化キー通信について以下の効果を提供することができる。
1.既知キー安全性(Known-key security):遠隔キー記憶デバイス106とキーセキュリティユニット222との間でEC-MQVプロトコルを実行することにより、ユニークな秘密キーを実行の都度生成することができる。このようなキーは、共通セッションキーと呼ばれ、遠隔キー記憶デバイス106において暗号化キーを暗号化し、キーセキュリティユニット222において暗号化された暗号化キーを復号化するために用いられる。EC-MQVプロトコルは、他の共通セッションキーを知っている敵対者を前にした場合であっても、遠隔キー記憶デバイス106からFPGAコントローラ202に暗号化キーをセキュアに送信するという目的を達することができる。
2.完全フォワード秘匿性(Perfect forward secrecy):一又は複数のプロトコル実行主体の長期(long-term)プライベートキーが漏洩した場合に、このプロトコル実行主体によって確立された今までの共通セッションキーの安全性が影響を受けない。
3.キー漏洩なりすなし安全性(Key-compromise impersonation):キーセキュリティユニット222に関連付けられた長期プライベートキーが敵対者によって開示又は盗難された場合には、キーセキュリティユニット222になりすますことができる。しかしながら、EC-MQVプロトコルを用いることにより、当該敵対者はキーセキュリティユニット222に対して他の主体になりすますことができない。
4.未知の鍵共有(Unknown key-share):EC-MQVプロトコルによって、プロトコル実行主体についての情報がない限りプロトコル実行主体(キーセキュリティユニット222又は遠隔キー記憶デバイス106)が、キーを他のプロトコル実行主体と強制的に共有させられることを防止できる。
5.キー制御:いずれのプロトコル実行主体も共通セッションキーを事前に選択された値にする必要がない。
6.低オーバーヘッド:EC-MQVプロトコルは、プロトコル実行主体間におけるパス(プロトコル実行時に交換されるメッセージの数)を最小化することができ、通信オーバーヘッド(送信される総ビット数)を小さくすることができる。
動作時には、遠隔キー記憶デバイス106及びキーセキュリティユニット222の各々は、EC-MQVプロトコルの一部として、固定又は長期のキーペア及び一時又は短期のキーペアを生成する。当該固定キーペアは、所定期間各主体に結び付けられているが、一時キーペアはプロトコルの実行ごとに生成される。遠隔キー記憶デバイス106及びキーセキュリティユニット222については、固定キーペア及び一時キーペアはいずれも、当業者に明らかなEC-MQVプロトコルに特有の所定のパラメータ(ユニット106及び222に共通)を用いて生成される。例えば、かかるパラメータは、有限領域Fq(qは領域サイズ)にわたって定義された特性pの楕円曲線EC、曲線EC上の基底(有限)点P、基底点Pの位数(order)n、及び余因子hを含むことができる。これらのパラメータは、FPGAコントローラ202(例えば、OPKSユニット226)内の不揮発性メモリデバイス及び遠隔キー記憶デバイス106内のメモリユニット122の各々に格納することができる。この不揮発性メモリデバイスは、プログラマブルROM(PROM)デバイス、消去可能なPROM(EPROM)デバイス、及び電気的に消去可能なPROM(EEPROM)デバイスの一又は複数であってもよい。これらのメモリデバイスに格納されたEC-MQVプロトコルパラメータは、キーセキュリティユニット222やデバイス106のプロセッサ120に直接又は間接に関連付けられる。
キーセキュリティユニット222の固定プライベートキー(s222)は、RNG224を用いて生成され、インターバル[1, n-1]で乱数を提供する。その後、キーセキュリティユニットの固定パブリックキー(S222)が、S222 = s222Pとなるように楕円曲線E上の点として計算される。固定キーペア(S222, s222)は、OPKSユニット226に格納される。遠隔キー記憶デバイス106に関する固定キーペア(S106, s106)は、RNG126を用いて同様の方法で生成され、デバイス106の不揮発性メモリ122に格納される。一実施形態において、固定パブリックキーS222及びS106 は、FPGAコントローラ202と遠隔キー記憶デバイス106とによって(例えばインタフェースユニット220を介して)交換され、これらのパブリックキーは不揮発性メモリデバイスの各々に格納される。
また、キーセキュリティユニット222及び遠隔キー記憶デバイス106における一時キーペアは、以下のようにして生成される。まず、キーセキュリティユニット222は、RNG224を用いてインターバル[1, n-1]の乱数として一時プライベートキー(e222)を生成し、一時パブリックキー(E222)をE222 = e222Pとなるように計算し、次に、当該パブリックキーE222を遠隔キー記憶デバイス106に送信する。この一時キーペア(E222, e222)は、OPKSユニット226に格納される。一時キーペア(E106, e106)も同様にして生成され、遠隔キー記憶デバイス106に格納される。この一時パブリックキーE106は、FPGAコントローラ202に送信され、OPKSユニット226に格納される。
キーセキュリティユニット222は、遠隔キー記憶デバイス106から受信したパブリックキーS106及びE106を、EC-MQVプロトコルによって定義されている一又は複数の既知の有効化プロセスを用いて有効化することができる。有効化に成功すると、ユニット222は以下の計算を行う。
I222 = (e222 + E’222 s222) mod n
ユニット222におけるセッションキーK = h I222 (E106 + E’106 S106)
ここで、キーEに対するE’は、(x’ mod 2f/2) + 2f/2として計算される。ただし、x’は、E(楕円曲線EC上)のx座標のバイナリ表現から得られる整数であり、f = log2n + 1である。セッションキーKが0の場合には、キーセキュリティユニット222は、プロトコルを終了し、「フェイル」ステータスをプロトコルを再実行する指示として遠隔キー記憶デバイス106に送信する。
キーセキュリティユニット222と同時に、遠隔キー記憶デバイス106は、パラメータ及びキーペアに基づいて以下の計算を行う。
I106 = (e106 + E’106 s106) mod n
デバイス106におけるセッションキーK = h I106 (E222 + E’222 S222)
ユニット106及び222の両方で計算されるセッションキーKは同一であり、EC-MQVプロトコルの実行の度に計算されるので、セッションキーKは、キーセキュリティユニット222(例えば、VKSユニット228)及び遠隔キー記憶デバイス106(例えば、メモリユニット124内)の内部にある揮発性メモリデバイスに格納される。
セッションキーKを計算した後、遠隔キー記憶デバイス106に格納されている暗号化キー又はFPGAロード復号キーが、セッションキーKを用いて暗号化される。この暗号化されたFPGAロード復号キーは、デバイス106によってFPGA102へ送信される。FPGA102においては、当該FPGAロード復号キーがキーインタフェース230において受信される。キーインタフェース230は、当該暗号化されたキーをキーセキュリティユニット222に渡し、ユニット222が、(前もって計算され格納されている)セッションキーKを用いて当該暗号化されたFPGAロード復号キーを復号化する。このようにして得られた復号化FPGAロード復号キーは、ユニット222から例えばインタフェースユニット220(図2に示されている)を介して暗号化ローダ204に送信される。
一実施形態において、暗号化ローダ204は、コンフィギュレーションデータセキュリティ(CDS)ユニット242、状態暗号化(SE)ユニット244、ロードインタフェース246、メモリ248、及び乱数発生器(RNG)250を含む。一部の実施形態において、RNG224及びRNG250はいずれも、システム100内の単一のデバイスとして実装することができる。暗号化ローダ204は、記憶デバイス104等の外部記憶デバイスから受信されたFPGAコンフィギュレーションデータを復号化し、コンフィギュレーションデータを用いてロジックユニット206を構成するように構成されている。また、暗号化ローダ204は、FPGAコントローラ202及び認証デバイス108と協働して動作し、コンフィギュレーションデータの当初認証及び/又はその後の認証を繰り返し実行する。一実施形態において、FPGA102は、全てのコンフィギュレーションデータの復号化及び認証プロセスが暗号化ローダ204内で実行される方法で実現されてもよい。換言すれば、暗号化ローダ204を迂回してFPGA102を構成することはできない。かかる実装によって、FPGAコンフィギュレーションの実行の都度、コンフィギュレーションデータの機密性及びデータの完全性をチェックすることができる。
動作時には、記憶デバイス104の暗号化されたFPGAコンフィギュレーションデータがロードインタフェース246において受信される。ロードインタフェース246は、当該データを内部でメモリ248に送信し格納する。一実施形態において、インタフェースユニット220から受信されたFPGAロード復号キーは、メモリ248にも格納される。記憶デバイス104は、プログラマブルROM(PROM)デバイス、消去可能なPROM(EPROM)デバイス、及び電気的に消去可能なPROM(EEPROM)デバイスの一又は複数であってもよい(これらのものを含んでもよい)。一実施形態において、CDSユニット242は、メモリ248に動作可能に接続され、暗号化されたFPGAコンフィギュレーションデータ及び前記FPGAロード復号化キーをフェッチすることができる。また、CDSユニット242は、コンフィギュレーションデータの機密性及び初期の完全性を提供可能なブロック暗号アルゴリズムを用いてコンフィギュレーションデータを復号化するように構成される。CDSユニット242は、前記FPGAコンフィギュレーションデータ(記憶デバイス104に格納されている)を暗号かするために用いたものと同じブロック暗号アルゴリズムとを遠隔キー記憶デバイス106に当初格納されているものと同じFPGAロード復号キーとともに使用するものとする。一実施形態において、CDSユニット242は、新暗号規格(AES)アルゴリズムを用いてFPGAコンフィギュレーションデータを復号化する。このAESアルゴリズムは、例えば、電子コードブック(ECB)モード、暗号ブロック連鎖(CBC)モード、伝播CBCモード、カウンタ(CTR)モード、暗号ブロック連鎖メッセージ認証コードを備えたカウンタ(CCM)モード等の様々な動作モードを含むことが知られている。一実施形態において、CDSユニット242は、暗号化(したがって機密性)のためのCTRモードとコンフィギュレーションデータの初期認証のための暗号ブロック連鎖メッセージ認証コード(CBC-MAC)モードとを組み合わせたAES-CCMモードを利用する。一実施形態において、CDSユニット242の動作モードは、コントローラ202によって選択され、「モード」信号を用いて(図2に示す)ローダ204に指示される。一部の実施形態におけるCDSユニット242は、単一のAESモード(例えば、AES-CCMモード)に代えて、2つの別個のアルゴリズムを利用するように構成されてもよい。この2つの別個のアルゴリズムの一つは、コンフィギュレーションデータの暗号化―復号化アルゴリズムで、他方はコンフィギュレーションデータの初期認証アルゴリズムである。
コンフィギュレーションデータを(事前)暗号化するためにCCMモードも用いられたとすると、FPGAコンフィギュレーションデータ(記憶デバイス104から受信される)は、FPGA102を構成するために用いた(元の)データ、及び当該FPGAコンフィギュレーションデータの暗号化状態(暗号化状態)を示すデータを含むことができる。一実施形態において、暗号化状態データは、コンフィギュレーションデータの(事前)暗号化の際に生成されたメッセージ認証コード(MAC)値を含む。例えば、このMAC値は、元のFPGAコンフィギュレーションデータについて実行されたCCMアルゴリズムのCBC-MACモードの出力として生成される。したがって、計算されたMAC値は、元のFPGAコンフィギュレーションデータの少なくとも一部分に基づいているか、そのような一部分の関数である。計算されたMAC値は、CCMアルゴリズムのCTRモードを用いた暗号化のために元のFPGAコンフィギュレーションデータと組み合わされるか又は対応付けられ、暗号化されたFPGAコンフィギュレーションデータが提供される。
CCMモードを用いた復号化及び認証については、CDSユニット242は、まずCTRモードの初期値(IV)としてノンスを用いるとともにFPGAロード復号キー(メモリ248からフェッチされたもの)を用いてCTRモードを実行し、暗号化されたFPGAコンフィギュレーションデータを復号化する。一実施形態において、ノンスは、ローダ204のRNG250を用いて生成される。CTRモードを実行することにより、元のFPGAコンフィギュレーションデータ及び関連付けられたMAC値が復元される。一実施形態において、CDSユニット242は、復元されたFPGAコンフィギュレーションデータ及び/又は復元されたMAC値をメモリ248に複製することができる。次に、CDSユニット242は、復元されたFPGAコンフィギュレーションデータに対し、RNG250を用いて生成された初期値(CTRモードにおいて用いられる値とは異なるもの)とFPGAロード復号化キーとを用いて、CCMアルゴリズムのCBC-MACモードを実行する。CBCモードは、RNG250から得られる値に代えて、初期値としてゼロを用いることができる。CBC-MACモードを実行することにより「新しい」MAC値が得られる。この新しいMAC値は、FPGAコンフィギュレーションデータを認証するために、CDSユニット242によって、復元されたMAC値と比較される。例えば、FPGAコンフィギュレーションデータが(事前)暗号化後に如何なる方法であれ改変又は改ざんされた場合には、CDSユニット242においてCBC-MACモードによって生成されたMAC値は、CTRモードによって復元された元のMAC値と等しくならない。したがって、新しいMAC値が復元されたMAC値と等しくないと判断された場合には、ローダ204は、そのFPGAコンフィギュレーションデータを廃棄し、無権限アクセス及び/又はシステム100におけるコンフィギュレーションデータの改変を示す「ステータス」信号をコントローラ202に送信し、FPGA構成処理を終了する。または、新しいMAC値が復元されたMAC値と同一と判断された場合には、復号化の成功及びFPGAコンフィギュレーションデータの認証を示すステータス信号がコントローラ202に送信され、復元されたFPGAコンフィギュレーションデータがマルチプレクサ252を介してロジックユニット206に送られる。ロジックユニット206は、当該復元されたFPGAコンフィギュレーションデータを用いてプログラムされる。その後、ロジックユニット206は、I/Oコア208と動作可能に接続され、FPGA102の動作に必要なデータを送受信する。コントローラ202は、データアクセスのタイミングやロジックユニット206とI/Oコア208との間の通信を「I/O」信号を用いて制御する。
FPGAコンフィギュレーションデータを復号化し復元した後、敵対者がFPGAの動作を監視し、FPGAコンフィギュレーションデータへのアクセスや同データの変更を試みる可能性がある。かかる無権限のデータアクセスや改変によってFPGAが意図しない機能で動作するおそれがあるため、FPGAコンフィギュレーションデータを繰り返し反復して認証することが重要である。FPGA102についてかかる認証を行う周期は、システム100に事前設定されていてもよく、ユーザによって自由に設定可能としてもよい。したがって、かかる反復認証プロセスに関して、FPGA102は、認証デバイス108と協調して動作する。例えば、FPGA102は、認証デバイス108に動作可能に接続され、認証のためにAES-CBC暗号モードを実行することができる。
CBCモードにおいて認証プロセスを開始するために、認証デバイス108は、チャレンジメッセージを生成することができる。このチャレンジメッセージは、FPGA102に送信され、インタフェースユニット220の認証インタフェース232において受信される。このチャレンジメッセージは、RNG170によって生成され、認証デバイス108のメモリ174に格納された乱数を含むメッセージであってもよい。コントローラ202においては、インタフェース232が、受信したチャレンジメッセージを暗号化ローダ204に渡す。また、VKSユニット228に格納されているセッションキー(キーセキュリティユニット222によって事前に生成されたもの)は、暗号化ローダ204に送信され、メモリ248に格納される。また、動作時には、コントローラは、CBC暗号化モードを指示するモード信号を暗号化ローダ204に送信し、状態暗号化(SE)ユニット244を有効化してCBCモードを実行することができる。SEユニット244は、チャレンジメッセージを入力メッセージ,とし、セッションキーをCBCモードキーとし、CDSユニット242によって生成された新しいMAC値(CCMモード復号化中に生成されたもの)をCBCモード用の初期値として、CBC暗号化モードを実行することができる。SEユニット244は、次に、レスポンスメッセージを出力として生成する。このレスポンスメッセージは、インタフェースユニット220に転送され、認証デバイス108にまで送信される。一実施形態において、インタフェース232は、認証入力インタフェースとしてだけでなく認証出力インタフェースとしても機能し、レスポンスメッセージを認証デバイス108に送信するために用いられる。
認証デバイス108においては、レスポンスメッセージがデバイス108のメモリ174に格納され、ACエンジン172がCBCモードを用いてレスポンスメッセージの復号化を実行するように構成される。CBCモードの復号化を実行するために、ACエンジン172は、FPGA102又は遠隔キー記憶デバイス106から受信したセッションキーを提供される。また、CBCモードの初期値mとして、CDSユニット242において復元されたMAC値がACエンジン172にインタフェース232を介して複製される。ACエンジン172は、受信データに基づいて当該レスポンスメッセージを復号化し、復号化されたチャレンジメッセージを生成する。ACエンジン172は、次に、復号化されたチャレンジメッセージを、当初FPGA102に送られたチャレンジメッセージと比較し、FPGAコンフィギュレーションデータの完全性を決定する。例えば、FPGAコンフィギュレーションデータについて無権限アクセス及び/又は改変があった場合には、SEユニット244においてチャレンジメッセージ暗号化のために初期値として用いられた新しいMAC値は、ACエンジン172によってレスポンスメッセージ復号化のために用いられた復元後のMAC値と異なるようになる。したがって、復号化されたチャレンジメッセージは、当初FPGA102に送られたチャレンジメッセージと同一ではなく、これによって、FPGAコンフィギュレーションデータが完全ではなく、無権限の方法で改変又はアクセスされたことが示される。認証108からのかかる情報を用いて、FPGA構成プロセスは終了される。このプロセスは、無権限の主体が特定及びブロックされ、及び/又は、コンフィギュレーションデータがリロード又は訂正された後に再開される。
反復認証の各サイクルについて、新しいチャレンジメッセージが認証デバイス108によって生成され、以前のCBCモード暗号化において生成されたレスポンスメッセージが次回のCBCモード暗号化のための初期値として利用されてもよい。最初の認証サイクルにおいて用いられたものと同一のセッションキーを、後続の全ての認証サイクルにおいてCBCモードキーとして利用することができる。
上述した公知の暗号アルゴリズム、すなわち、EC-MQVアルゴリズム、CCMアルゴリズム、及びCBCアルゴリズムに関する詳細は、本出願においては説明を省略した。また、上述の実施形態及び本開示の態様は、限定的なものであることを意図するものではなく本発明概念の機能面及び構造面での原理を図示し説明するためのものであり、また、以下の特許請求の範囲の趣旨及び範囲に入る様々な変形を含むことを意図している。

Claims (27)

  1. フィールドプログラマブルゲートアレイ(FPGA)において、前記FPGAの外部にあり前記FPGAと動作可能に接続された遠隔キー記憶デバイスから暗号化されたFPGAロード復号キーを受信し、
    復号化されたFPGAロード復号化キーを提供するために、前記暗号化されたFPGAロード復号キーをキーセキュリティユニット内で復号化し、
    暗号化されたFPGAコンフィギュレーションデータを前記FPGAにおいて受信し、
    コンフィギュレーションデータセキュリティユニットにおいて、前記復号化されたFPGAロード復号化キーを用いて前記FPGAコンフィギュレーションデータの復号化及び認証を行うFPGAを構成する方法。
  2. 前記FPGAコンフィギュレーションデータが、新暗号規格の暗号ブロック連鎖メッセージ認証コードを備えたカウンタ(AES-CCM)暗号化モードを用いて復号化される請求項1の方法。
  3. 前記暗号化されたFPGAコンフィギュレーションデータが、プログラマブルROMメモリ(PROM)デバイスを含むメモリデバイスから受信される請求項1の方法。
  4. 前記FPGAコンフィギュレーションデータを復号化及び認証するステップが、前記FPGAを構成するために迂回不能である請求項1の方法。
  5. 前記FPGAコンフィギュレーションデータを復号化することが、前記FPGAコンフィギュレーションデータに対応付けられた暗号化状態を示し、
    前記FPGAの外部にあって前記FPGAと動作可能に接続された認証デバイスから前記FPGAにおいてチャレンジメッセージを受信し、
    状態暗号化ユニットにおいて、レスポンスメッセージを生成するために前記暗号化状態を用いて前記チャレンジメッセージを暗号化し、
    前記レスポンスメッセージを前記認証デバイスに送信し、前記認証デバイスが、復号化されたチャレンジメッセージを生成するために前記レスポンスメッセージを復号化し、前記FPGAコンフィギュレーションデータの完全性を示すために前記チャレンジメッセージを当該復号化されたチャレンジメッセージと比較する請求項1の方法。
  6. 前記チャレンジメッセージが新暗号規格の暗号ブロック連鎖(AES-CBC)暗号化モードを用いて暗号化される請求項5の方法。
  7. 前記暗号化状態が、前記FPGAコンフィギュレーションデータの少なくとも一部に基づいて決定される請求項5の方法。
  8. 前記暗号化されたFPGAロード復号キーがセッションキーを用いて復号化され、前記共通キーが前記FPGA及び前記遠隔キー記憶デバイスの両方に格納される請求項5の方法。
  9. 前記チャレンジメッセージの前記暗号化が前記セッションキーを用いて実行され、前記セッションキーが前記認証デバイスにも格納される請求項8の方法。
  10. 前記セッションキーが、鍵共有プロトコルを用いて前記FPGA及び前記遠隔キー記憶デバイスにおいて計算される請求項8の方法。
  11. 前記鍵共有プロトコルが、Menezes-Qu-Vanstone(MQV)プロトコル、楕円曲線MQV(EC-MQV)プロトコル、及びDiffie-Hellmanプロトコルの一つを含む請求項10の方法。
  12. フィールドプログラマブルゲートアレイ(FPGA)において、前記FPGAの外部にあり前記FPGAと動作可能に接続された遠隔キー記憶デバイスから暗号化されたFPGAロード復号キーを受信するキーインタフェースと、
    復号化されたFPGAロード復号化キーを提供するために、前記暗号化されたFPGAロード復号キーをキーセキュリティユニット内で復号化するキーセキュリティユニットと、
    前記FPGAにおいて、暗号化されたFPGAコンフィギュレーションデータを受信するロードインタフェースと、
    前記復号化されたFPGAロード復号化キーを用いて前記FPGAコンフィギュレーションデータの復号化及び認証を行うコンフィギュレーションデータセキュリティユニットと、
    を備えるFPGAを構成するシステム。
  13. 前記コンフィギュレーションデータセキュリティユニットが、新暗号規格の暗号ブロック連鎖メッセージ認証コードを備えたカウンタ(AES-CCM)暗号化モードを用いて前記FPGAコンフィギュレーションデータを復号化する請求項12のシステム。
  14. 前記暗号化されたFPGAコンフィギュレーションデータが、プログラマブルROMメモリ(PROM)デバイスを含むメモリデバイスから受信される請求項12のシステム。
  15. 前記キーセキュリティユニット、コンフィギュレーションデータセキュリティユニット、及び前記状態暗号化ユニットの少なくとも一つが、前記FPGA内にある請求項12のシステム。
  16. 前記コンフィギュレーションデータセキュリティユニットが、前記FPGAを構成するために迂回不能である請求項12のシステム。
  17. 前記コンフィギュレーションデータセキュリティユニットが前記FPGAコンフィギュレーションデータに対応付けられた暗号化状態を生成し、
    前記FPGAの外部にあって前記FPGAと動作可能に接続された認証デバイスから前記FPGAにおいてチャレンジメッセージを受信する認証入力インタフェースと、
    レスポンスメッセージを生成するために前記暗号化状態を用いて前記チャレンジメッセージを暗号化する状態暗号化ユニットと、
    前記レスポンスメッセージを前記認証デバイスに送信し、前記認証デバイスが、復号化されたチャレンジメッセージを生成するために前記レスポンスメッセージを復号化し、前記FPGAコンフィギュレーションデータの完全性を示すために前記チャレンジメッセージを当該復号化されたチャレンジメッセージと比較する請求項12のシステム。
  18. 前記チャレンジメッセージが新暗号規格の暗号ブロック連鎖(AES-CBC)暗号化モードを用いて暗号化される請求項16のシステム。
  19. 前記暗号化状態が、前記FPGAコンフィギュレーションデータの少なくとも一部に基づいて決定される請求項17のシステム。
  20. 前記暗号化されたFPGAロード復号キーがセッションキーを用いて復号化され、前記共通キーが前記FPGA及び前記遠隔キー記憶デバイスの両方に格納される請求項17のシステム。
  21. 前記状態暗号化ユニットが前記チャレンジメッセージを暗号化するために前記セッションキーを使用し、前記セッションキーがさらに前記認証デバイスに格納される請求項20のシステム。
  22. 前記セッションキーが、鍵共有プロトコルを用いて前記FPGA及び前記遠隔キー記憶デバイスにおいて計算される請求項20のシステム。
  23. 前記鍵共有プロトコルが、Menezes-Qu-Vanstone(MQV)プロトコル、楕円曲線MQV(EC-MQV)プロトコル、及びDiffie-Hellmanプロトコルの一つを含む請求項22のシステム。
  24. 前記遠隔キー記憶デバイスが、セキュアプロセッサを含み、当該セキュアプロセッサが、前記鍵共有プロトコルを使用するとともに前記遠隔キー記憶デバイスの出力として前記セッションキーの生成を促進するように構成された請求項22のシステム。
  25. フィールドプログラマブルゲートアレイ(FPGA)において暗号化されたFPGAコンフィギュレーションデータを受信するロードインタフェースと、
    FPGAロード復号化キーを用いてFPGAコンフィギュレーションデータの復号化及び認証を行い、前記FPGAコンフィギュレーションデータに対応付けられた暗号化状態を生成するコンフィギュレーションデータセキュリティユニットと、
    前記FPGAの外部にあるとともに前記FPGAと動作可能に接続され、前記FPGAにおいて認証デバイスからチャレンジメッセージを受信する認証入力インタフェースと、
    レスポンスメッセージを生成するために、前記暗号化状態を用いて前記チャレンジメッセージを暗号化する状態暗号化ユニットと、
    前記レスポンスメッセージを前記認証デバイスに送信する認証出力インタフェースと、
    を備え、
    前記認証デバイスは、復号化されたチャレンジメッセージを生成するために前記レスポンスメッセージを復号化し、前記FPGAコンフィギュレーションデータの完全性を示すために前記チャレンジメッセージを当該復号化されたチャレンジメッセージと比較する、
    FPGAを構成するシステム。
  26. 前記FPGAコンフィギュレーションデータを用いてプログラムされるプログラマブルロジック回路をさらに備えた請求項25のシステム。
  27. プロセッサに実行されることによって請求項2の方法を実行するコンピュータ命令を含む有形のコンピュータ読み取り可能な媒体を有する製造物。
JP2011127714A 2010-08-23 2011-06-07 セキュアなフィールドプログラマブルゲートアレイ(fpga)アーキテクチャ Active JP5815294B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/861,586 US8516268B2 (en) 2010-08-23 2010-08-23 Secure field-programmable gate array (FPGA) architecture
US12/861,586 2010-08-23

Publications (2)

Publication Number Publication Date
JP2012050066A true JP2012050066A (ja) 2012-03-08
JP5815294B2 JP5815294B2 (ja) 2015-11-17

Family

ID=45062845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011127714A Active JP5815294B2 (ja) 2010-08-23 2011-06-07 セキュアなフィールドプログラマブルゲートアレイ(fpga)アーキテクチャ

Country Status (3)

Country Link
US (3) US8516268B2 (ja)
EP (1) EP2423843A1 (ja)
JP (1) JP5815294B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012527190A (ja) * 2009-05-13 2012-11-01 リビア テクノロジーズ,エルエルシー 対称暗号化システムにおいてデバイスを安全に識別し認証するためのシステムおよび方法

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
CN104040542B (zh) 2011-12-08 2017-10-10 甲骨文国际公司 用于在易失性存储器内保持关系型数据的列向量的技术
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US9230091B2 (en) * 2012-06-20 2016-01-05 Microsoft Technology Licensing, Llc Managing use of a field programmable gate array with isolated components
US8898480B2 (en) 2012-06-20 2014-11-25 Microsoft Corporation Managing use of a field programmable gate array with reprogammable cryptographic operations
US9298438B2 (en) 2012-06-20 2016-03-29 Microsoft Technology Licensing, Llc Profiling application code to identify code portions for FPGA implementation
US9424019B2 (en) 2012-06-20 2016-08-23 Microsoft Technology Licensing, Llc Updating hardware libraries for use by applications on a computer system with an FPGA coprocessor
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
US20150304105A1 (en) * 2014-02-07 2015-10-22 Weidong Shi Methods and Apparatuses of Processing Sealed Data with Field Programmable Gate Array
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
US9483640B2 (en) * 2014-04-01 2016-11-01 Georgetown University System and method for deterring malicious network attacks
DE102014210863B4 (de) * 2014-06-06 2020-10-22 Rohde & Schwarz Sit Gmbh Verfahren und System zur gesicherten Übertragung von Daten
CN104035890B (zh) * 2014-06-11 2017-02-15 丽水博远科技有限公司 基于静态随机存储器的可编程门阵列芯片加密方法及系统
CN105721139B (zh) * 2014-12-05 2019-05-07 上海航天有线电厂有限公司 一种适用于有限io资源的fpga的aes加解密方法及电路
CN104732120B (zh) * 2015-04-08 2017-08-29 迈普通信技术股份有限公司 Fpga产权保护方法及系统
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US9703973B2 (en) * 2015-04-28 2017-07-11 International Business Machines Corporation Customer load of field programmable gate arrays
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US9847980B2 (en) 2015-06-17 2017-12-19 Microsoft Technology Licensing, Llc Protecting communications with hardware accelerators for increased workflow security
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9819542B2 (en) 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
TWI536197B (zh) * 2015-08-28 2016-06-01 匿名性身分識別方法與系統
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
US10027640B2 (en) 2015-09-22 2018-07-17 Qualcomm Incorporated Secure data re-encryption
CN105718339B (zh) * 2015-12-31 2019-02-05 山东大学 一种fpga/cpld 远程调试系统及方法
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10396991B2 (en) 2016-06-30 2019-08-27 Microsoft Technology Licensing, Llc Controlling verification of key-value stores
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10528765B2 (en) * 2016-09-16 2020-01-07 Intel Corporation Technologies for secure boot provisioning and management of field-programmable gate array images
US10223317B2 (en) * 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US10250572B2 (en) * 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10963001B1 (en) 2017-04-18 2021-03-30 Amazon Technologies, Inc. Client configurable hardware logic and corresponding hardware clock metadata
US10764129B2 (en) * 2017-04-18 2020-09-01 Amazon Technologies, Inc. Logic repository service supporting adaptable host logic
DE112017007643T5 (de) * 2017-06-16 2020-05-20 Intel Corporation Bitstromschlüssel-Authentifizierung umkonfigurierbarer Vorrichtungen
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10452547B2 (en) 2017-12-29 2019-10-22 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US11016746B2 (en) 2018-01-17 2021-05-25 Kymeta Corporation Method and apparatus for remotely updating satellite devices
WO2019217931A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Asset management systems and methods for programmable logic devices
CN111435394B (zh) * 2019-01-15 2021-05-14 创新先进技术有限公司 基于fpga硬件的安全计算方法和装置
CN110392889B (zh) * 2019-03-26 2020-09-01 阿里巴巴集团控股有限公司 用于区块链网络的基于现场可编程门阵列的可信执行环境
US11194933B2 (en) * 2019-06-04 2021-12-07 Intel Corporation Circuits supporting improved side channel and fault injection attack resistance
CN113285802B (zh) * 2019-09-25 2022-08-19 支付宝(杭州)信息技术有限公司 基于fpga的密钥协商方法及装置
US20210367794A1 (en) * 2020-05-21 2021-11-25 Cryptotronix, LLC Device provisioning system
CN112583783B (zh) * 2020-07-22 2022-11-08 厦门智多晶科技有限公司 一种集成于fpga的配置数据解密电路及fpga
US20210117246A1 (en) 2020-09-25 2021-04-22 Intel Corporation Disaggregated computing for distributed confidential computing environment
US11379125B1 (en) 2021-03-31 2022-07-05 International Business Machines Corporation Trusted field programmable gate array
CN114491481B (zh) * 2021-12-31 2022-12-16 医渡云(北京)技术有限公司 一种基于fpga的安全计算方法及装置
US20230254138A1 (en) * 2022-02-07 2023-08-10 R3 Ltd. SECURE CONFIGURABLE LOGIC DEVICE (sCLD)
KR102520958B1 (ko) * 2022-09-01 2023-04-12 주식회사 스마트엠투엠 Fpga 기반의 암호해독 시스템 데이터 처리 장치 및 방법
CN117348949B (zh) * 2023-12-05 2024-03-12 成都玖锦科技有限公司 一种基于矢量网络分析仪的多通道测量方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010015919A1 (en) * 1999-12-22 2001-08-23 Kean Thomas A. Method and apparatus for secure configuration of a field programmable gate array
JP2002050956A (ja) * 2000-07-13 2002-02-15 Sun Microsyst Inc フィールド・プログラマブル・ゲート・アレイ
JP2003507785A (ja) * 1999-08-13 2003-02-25 ヒューレット・パッカード・カンパニー コンピュータ・プラットフォームおよびその運用方法
WO2005099168A1 (ja) * 2004-03-30 2005-10-20 Matsushita Electric Industrial Co., Ltd. 暗号化方式のアップデートシステム
US20070074045A1 (en) * 2002-09-30 2007-03-29 Van Essen Brian C Method of securing programmable logic configuration data
JP2007329688A (ja) * 2006-06-07 2007-12-20 Canon Inc データ処理装置およびその方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105012A (en) * 1997-04-22 2000-08-15 Sun Microsystems, Inc. Security system and method for financial institution server and client web browser
US20070288765A1 (en) * 1999-12-22 2007-12-13 Kean Thomas A Method and Apparatus for Secure Configuration of a Field Programmable Gate Array
EP1124330A3 (en) 2000-02-09 2001-09-19 Algotronix Ltd. Method of using a mask programmed secret key to securely configure a field programmable gate array
US7162644B1 (en) 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
FR2856165B1 (fr) * 2003-06-16 2008-07-11 Kbs Dispositif d'acquisition et de surveillance de l'evolution d'une grandeur liee a un produit et systeme de surveillance de produit incorporant un tel dispositif
JP2005099168A (ja) 2003-09-22 2005-04-14 Masayuki Matsui 広告表示システム、及び記録媒体
WO2005081157A1 (en) * 2004-02-19 2005-09-01 Cypak Ab Secure data management device and method
US20060036857A1 (en) * 2004-08-06 2006-02-16 Jing-Jang Hwang User authentication by linking randomly-generated authentication secret with personalized secret
US7725738B1 (en) 2005-01-25 2010-05-25 Altera Corporation FPGA configuration bitstream protection using multiple keys
US7971072B1 (en) * 2005-03-10 2011-06-28 Xilinx, Inc. Secure exchange of IP cores
US7958362B2 (en) * 2005-10-11 2011-06-07 Chang Gung University User authentication based on asymmetric cryptography utilizing RSA with personalized secret
US7792302B2 (en) 2006-02-01 2010-09-07 Dolby Laboratories Licensing Corporation Securely coupling an FPGA to a security IC
US7827408B1 (en) * 2007-07-10 2010-11-02 The United States Of America As Represented By The Director Of The National Security Agency Device for and method of authenticated cryptography
WO2009029842A1 (en) 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
US8065517B2 (en) 2007-11-01 2011-11-22 Infineon Technologies Ag Method and system for transferring information to a device
US8666077B2 (en) 2008-05-07 2014-03-04 Alcatel Lucent Traffic encryption key generation in a wireless communication network
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003507785A (ja) * 1999-08-13 2003-02-25 ヒューレット・パッカード・カンパニー コンピュータ・プラットフォームおよびその運用方法
US20010015919A1 (en) * 1999-12-22 2001-08-23 Kean Thomas A. Method and apparatus for secure configuration of a field programmable gate array
JP2002050956A (ja) * 2000-07-13 2002-02-15 Sun Microsyst Inc フィールド・プログラマブル・ゲート・アレイ
US20070074045A1 (en) * 2002-09-30 2007-03-29 Van Essen Brian C Method of securing programmable logic configuration data
WO2005099168A1 (ja) * 2004-03-30 2005-10-20 Matsushita Electric Industrial Co., Ltd. 暗号化方式のアップデートシステム
JP2007329688A (ja) * 2006-06-07 2007-12-20 Canon Inc データ処理装置およびその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012527190A (ja) * 2009-05-13 2012-11-01 リビア テクノロジーズ,エルエルシー 対称暗号化システムにおいてデバイスを安全に識別し認証するためのシステムおよび方法

Also Published As

Publication number Publication date
JP5815294B2 (ja) 2015-11-17
US20180157867A1 (en) 2018-06-07
US9911010B2 (en) 2018-03-06
EP2423843A1 (en) 2012-02-29
US10482291B2 (en) 2019-11-19
US8516268B2 (en) 2013-08-20
US20130332745A1 (en) 2013-12-12
US20120047371A1 (en) 2012-02-23

Similar Documents

Publication Publication Date Title
US10482291B2 (en) Secure field-programmable gate array (FPGA) architecture
JP3999655B2 (ja) レベル化された機密保護があるアクセス制御のための方法及び装置
US7373509B2 (en) Multi-authentication for a computing device connecting to a network
JP6138333B2 (ja) 鍵回復攻撃を妨害する対抗手段としての送信機および受信機のペアリングのためのマスタ鍵暗号化関数
US7773754B2 (en) Key management system and method
CN101409619B (zh) 闪存卡及虚拟专用网密钥交换的实现方法
US20100037069A1 (en) Integrated Cryptographic Security Module for a Network Node
KR20050084877A (ko) 장치 특정 보안 데이터의 안전한 실시 및 이용
KR102364652B1 (ko) 화이트박스 암호화를 이용한 puf 기반 사물인터넷 디바이스 인증 장치 및 방법
KR101608815B1 (ko) 폐쇄형 네트워크에서 암복호화 서비스 제공 시스템 및 방법
US20190268145A1 (en) Systems and Methods for Authenticating Communications Using a Single Message Exchange and Symmetric Key
KR102644767B1 (ko) 데이터 보호 및 복구 시스템 및 방법
US20230361994A1 (en) System and Methods for Secure Communication Using Post-Quantum Cryptography
JP7397859B2 (ja) 低電力モードにおけるIoTデバイスのメモリに格納されるデータの保護
Keleman et al. Secure firmware update in embedded systems
KR102539418B1 (ko) Puf 기반 상호 인증 장치 및 방법
WO2021083349A1 (zh) 一种基于安全芯片的安全认证方法与系统、安全芯片及可读存储介质
KR20110113427A (ko) 이동장치 실시간 인증/관리 시스템 및 방법
de Boer Secure communication channels for the mTask system
JP6404958B2 (ja) 認証システム、方法及びプログラム並びにサーバ
CN111737256A (zh) 一种基于可信执行环境和区块链的数据库表操作方法和系统
CN117527302A (zh) 一种基于密钥同步更新算法的安全通信方法
JP2018117388A (ja) 認証システム、方法及びプログラム、移動機器並びにサーバ

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130621

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130624

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150825

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150924

R150 Certificate of patent or registration of utility model

Ref document number: 5815294

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250