セクション 49. 暗号化エンジンと乱数生成器...

48
© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-1 暗号化エンジンと 乱数生成器 (RNG) 49 セクション 49. 暗号化エンジンと乱数生成器 (RNG) ハイライト 本書には以下の主要項目を記載しています。 49.1 はじめに ..................................................................................................................... 49-2 49.2 制御レジスタ ............................................................................................................. 49-4 49.3 暗号化エンジンのバッファ ディスクリプタ ............................................................ 49-23 49.4 暗号化エンジンのセキュリティ アソシエーション構造 .......................................... 49-28 49.5 暗号化エンジンの動作 ............................................................................................. 49-35 49.6 暗号化エンジンの割り込み ...................................................................................... 49-40 49.7 乱数生成器の動作 .................................................................................................... 49-42 49.8 乱数生成器の割り込み ............................................................................................. 49-43 49.9 各種リセットの影響 ................................................................................................. 49-43 49.10 省電力モード中の動作 ............................................................................................. 49-43 49.11 関連アプリケーション ノート ................................................................................. 49-44 49.12 改訂履歴 ................................................................................................................... 49-45 注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。

Transcript of セクション 49. 暗号化エンジンと乱数生成器...

Page 1: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

セクション 49. 暗号化エンジンと乱数生成器 (RNG)

暗号化エンジンと

乱数生成器

(RN

G)

49

ハイライト

本書には以下の主要項目を記載しています。

49.1 はじめに ..................................................................................................................... 49-2

49.2 制御レジスタ ............................................................................................................. 49-4

49.3 暗号化エンジンのバッファ ディスクリプタ ............................................................ 49-23

49.4 暗号化エンジンのセキュリティ アソシエーション構造 .......................................... 49-28

49.5 暗号化エンジンの動作 ............................................................................................. 49-35

49.6 暗号化エンジンの割り込み ...................................................................................... 49-40

49.7 乱数生成器の動作 .................................................................................................... 49-42

49.8 乱数生成器の割り込み ............................................................................................. 49-43

49.9 各種リセットの影響 ................................................................................................. 49-43

49.10 省電力モード中の動作 ............................................................................................. 49-43

49.11 関連アプリケーション ノート ................................................................................. 49-44

49.12 改訂履歴 ................................................................................................................... 49-45

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-1

Page 2: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.1 はじめに

49.1.1 暗号化エンジンの特長

暗号化エンジンは、暗号化機能を必要とするアプリケーションの実行を高速化する事を目的とします。ハードウェア モジュールを使ってこれらの機能を実行する事で、ソフトウェアのオーバーヘッドが減少し、暗号化、解読、認証等の実行を大幅に高速化できます。

暗号化エンジンは、データの暗号化とパケット ポインタ (Scatter/Gather データフェッチが可能 ) を効率的にプログラミングするために、ディスクリプタ方式の DMA を使います。インテリジェントなステートマシンは、プロトコルの選択とバケット境界に基づいて暗号化エンジンをスケジューリングします。ハードウェア エンジンは、暗号化と認証を順次または並列に実行できます。

暗号化エンジンの主な特長は以下の通りです。

• バルク暗号化およびハッシュ エンジン

• 処理負荷を軽減する内蔵 DMA- バッファ ディスクリプタ方式

- バッファ ディスクリプタごとのセキュリティ アソシエーション

• 一部の機能は並列実行可能

暗号化エンジンが処理できるバルク暗号は以下の通りです。

• AES:

- 128/192/256 ビットのキーサイズ

- CBC、ECB、CTR、CFB、OFB モード

• DES/TDES:

- CBC、ECB、CFB、OFB モード

暗号化エンジンで使える認証エンジンは以下の通りです。

• SHA-1• SHA-256• MD-5• AES-GCM

• HMAC 演算 ( 全ての認証エンジン向け )

図 49-1: 暗号化エンジンのブロック図

Note: ファミリ リファレンス マニュアルの本セクションは、デバイス データシートの補足を目的としています。本書の内容は PIC32 ファミリの一部のデバイスには対応していません。

本書の内容がお客様のご使用になるデバイスに対応しているかどうかは、最新デバイスデータシート内の「暗号化エンジンと乱数生成器 (RNG)」の冒頭に記載している注意書きでご確認ください。

デバイス データシートとファミリ リファレンス マニュアルの各セクションは、Microchip社のウェブサイト (http://www.microchip.com) からダウンロードできます。

DMAController

System

INBFIFO

OUTBFIFO

CryptoFSM

PacketRD

PacketWR

AES

TDES

SHA-1/256

MD5

Loca

l Bus

SFRSystem

Bus

Bus

DS60001246A_JP - p. 49-2 © 2014 Microchip Technology Inc.

Page 3: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.1.2 乱数生成器 (RNG) の特長

乱数生成器 (RNG) コアは、熱雑音を用いる真性乱数生成器 (TRNG) と、暗号用として安全な擬似乱数生成器 (PRNG) を実装しています。

TRNG は、複数のリングオシレータと、集積回路で発生する熱雑音を使って、真性乱数を生成します。この乱数は PRNG の初期化用に使えます。

PRNG は最大長 64 ビットの柔軟な LSFR です。

乱数生成器の主な特長は以下の通りです。

• TRNG:

- 最大 25 Mbps のランダムビット

- マルチ リングオシレータ構造

- バイアス補正器を内蔵

• PRNG:

- LSFR 方式

- 最大 64 ビットの多項式長

- 多項式はプログラマブル

- TRNG が生成した乱数をシード値として使用可能

図 49-2: 乱数生成器のブロック図

System Bus Target

PRNGSFR

Edge Comparator

RingRing

BIAS Corrector

TRNG

Oscillator Oscillator

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-3

Page 4: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.2 制御レジスタ

PIC32 の暗号化エンジンは以下の特殊機能レジスタを備えます。

• CEVER: 暗号化エンジン リビジョン / バージョン /ID レジスタ

この読み出し専用レジスタは、暗号化エンジンコアのバージョン情報を格納します。

• CECON: 暗号化エンジン制御レジスタ

このレジスタは暗号化エンジンを制御し、DMA とバッファ ディスクリプタ プロセッサを有効 / 無効にします。

• CEBDADDR: 暗号化エンジン バッファ ディスクリプタ レジスタ

この読み出し専用レジスタは、バッファ ディスクリプタ プロセッサが現在処理中のバッファ ディスクリプタのアドレスを格納します。

• CEBDPADDR: 暗号化エンジン バッファ ディスクリプタ プロセッサ レジスタ

このレジスタは、DMA がバッファ ディスクリプタのフェッチを開始するアドレスを制御します。

• CESTAT: 暗号化エンジン ステータス レジスタ

この読み出し専用レジスタは、暗号化エンジンの現在のステータスを格納します。

• CEINTSRC: 暗号化エンジン割り込み要因レジスタ

このレジスタは、暗号化エンジンコアが引き起こした割り込みの要因を示します。この要因には DMA、送信バッファ ディスクリプタ エンプティ、DMA パケット完了が含まれます。

• CEINTEN: 暗号化エンジン割り込みイネーブル レジスタ

このレジスタは、暗号化エンジンコアの各割り込み要因を有効 / 無効にします。

• CEPOLLCON: 暗号化エンジン ポーリング制御レジスタ

このレジスタは、直前にフェッチされたディスクリプタが無効になった場合に、ディスクリプタ制御ワードを再フェッチする前にバッファ ディスクリプタ プロセッサが待機するサイクル数を定義します。

• CEHDLEN: 暗号化エンジン ヘッダ長レジスタ

このレジスタは、パケットのヘッダの長さを制御します。ヘッダ内のデータは変更されず、データの書き込みはヘッダの後ろから始まります。

• CETRLLEN: 暗号化エンジン トレーラ長レジスタ

このレジスタはパケットのトレーラの長さを制御します。パケットの最後にあるトレーラ内のデータは変更されません。

• CEDTXSTAT: 暗号化エンジン DTX デバッグ ステータス レジスタ

この読み出し専用レジスタは、暗号化エンジン内の送信 FIFO のステータスを示します。

• CEDRXSTAT: 暗号化エンジン DRX デバッグ ステータス レジスタ

この読み出し専用レジスタは、暗号化エンジン内の受信 FIFO のステータスを示します。

• RNGVER: 乱数生成器 ID/ バージョン / リビジョン レジスタ

この読み出し専用レジスタは、乱数生成器 (RNG) コアのバージョン情報を格納します。

• RNGCON: 乱数生成器制御レジスタ

このレジスタは乱数生成器を制御します (TRNG と PRNG の有効化 / 無効化、TRNG からPRNG へのシード値の転送、擬似乱数の連続的な生成の有効化等 )。

• RNGPOLY1: 乱数生成器多項式レジスタ 1

このレジスタは、擬似乱数ビットの生成に使う多項式の下位バイト(32ビット)を制御します。

• RNGPOLY2: 乱数生成器多項式レジスタ 2

このレジスタは、擬似乱数ビットの生成に使う多項式の上位バイト(32ビット)を制御します。

DS60001246A_JP - p. 49-4 © 2014 Microchip Technology Inc.

Page 5: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

• RNGNUMGEN1: 擬似乱数生成器レジスタ 1

このレジスタは、PRNG の現在の乱数の下位バイト (32 ビット ) を格納します。このレジスタには、PRNG の初期シード値を書き込む事ができます。

• RNGNUMGEN2: 擬似乱数生成器レジスタ 2

このレジスタは、PRNG の現在の乱数の上位バイト (32 ビット ) を格納します。このレジスタには、PRNG の初期シード値を書き込む事ができます。

• RNGSEED1: 真性乱数生成器シード値レジスタ 1

この読み出し専用レジスタは、TRNG の乱数の下位バイト (32 ビット ) を格納します。

• RNGSEED2: 真性乱数生成器シード値レジスタ 2

この読み出し専用レジスタは、TRNG の乱数の上位バイト (32 ビット ) を格納します。

• RNGRCNT: 真性乱数生成器カウントレジスタ

この読み出し専用レジスタは、TRNG の RNGSEEDx レジスタ内の有効ビット数を示します。乱数度を確保するには、このレジスタの値が目標ビット数に達するまで、RNGSEEDxレジスタ内の値を使わない事が必要です。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-5

Page 6: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC

32フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

60001246A

_JP - p. 49-6

© 2014 M

icrochip Technolo

gy Inc.

。その後で各レジスタの各ビットについて詳

/5 Bit 20/4 Bit 19/3 Bit 118/2 Bit 17/1 Bit 16/0

VERSION<7:0>

— — — — —

N — — BDPCHST BDPPLEN DMAEN

BDSTATE<3:0> START ACTIVE

— — — — —

— AREIF PKTIF CBDIF PENDIF

— — — — —

— AREIE PKTIE CBDIE PENDIE

— — — — —

— — — — —

HDRLEN<7:0>

— — — — —

TRLRLEN<7:0>

— DTXBLEN<15:12>

DTXSTATE<3:0>

— DRXBLEN<15:12>

DRXSTATE<3:0>

表 49-1 と表 49-2 に、暗号化エンジンと乱数生成器に関連するレジスタの一覧を示します細に説明します。

表 49-1: 暗号化エンジン関連 SFR の一覧

レジスタ名 Bit 31/15 Bit 30/14 Bit 29/13 Bit 28/12 Bit 27/11 Bit 26/10 Bit 25/9 Bit 24/8 Bit 23/7 Bit 22/6 Bit 21

CEVER31:16 REVISION<7:0>

15:0 ID<15:0>

CECON 31:16 — — — — — — — — — — —

15:0 — — — — — — — — — SWRST SWAPE

CEBDADDR31:16 BDPADDR<31:16>

15:0 BDPADDR<15:0>

CEBDPADDR31:16 BASEADDR<31:16>

15:0 BASEADDR<15:0>

CESTAT31:16 ERRMODE<2:0> ERROP<2:0> ERRPHASE<1:0> — —

15:0 BDCTRL<15:0>

CEINTSRC31:16 — — — — — — — — — — —

15:0 — — — — — — — — — — —

CEINTEN31:16 — — — — — — — — — — —

15:0 — — — — — — — — — — —

CEPOLLCON31:16 — — — — — — — — — — —

15:0 BDPPLCON<15:0>

CEHDLEN31:16 — — — — — — — — — — —

15:0 — — — — — — — —

CETRLLEN31:16 — — — — — — — — — — —

15:0 — — — — — — — —

CEDTXSTAT31:16 — — — — — — — — — — —

15:0 DTXBLEN<11:0>

CEDRXSTAT31:16 — — — — — — — — — — —

15:0 DTXBLEN<11:0>

凡例 : — = 未実装、「0」として読み出し

Page 7: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

© 2014

Microchip T

echnology Inc.D

S60001246A

_JP - p. 49-7

セクション

49. 暗号化エンジンと乱数生成器

(RN

G)

レ it 20/4 Bit 19/3 Bit 118/2 Bit 17/1 Bit 16/0

REVISION<7:0>

— — — — —

PLEN<6:0>

R

R

R

R

R— — — — —

RCNT<6:0>

暗号化エンジンと乱数生成器(RNG) 49

49-2: 乱数生成器関連 SFR の一覧

ジスタ名 Bit 31/15 Bit 30/14 Bit 29/13 Bit 28/12 Bit 27/11 Bit 26/10 Bit 25/9 Bit 24/8 Bit 23/7 Bit 22/6 Bit 21/5 B

RNGVER31:16 ID<15:8>

15:0 VERSION<7:0>

RNGCON31:16 — — — — — — — — — — —

15:0 — — — LOAD — CONT PRNGEN TRNGEN —

NGPOLY131:16 POLY1<31:16>

15:0 POLY1<15:0>

NGPOLY231:16 POLY2<31:16>

15:0 POLY2<15:0>

RNG131:16 RNG1<31:16>

15:0 RNG1<15:0>

RNG231:16 RNG2<31:16>

15:0 RNG2<15:0>

NGSEED131:16 RDATA1<31:16>

15:0 RDATA1<15:0>

NGSEED231:16 RDATA2<31:16>

15:0 RDATA2<15:0>

NGRCNT31:24 — — — — — — — — — — —

7:0 — — — — — — — — —

例 : — = 未実装、「0」として読み出し

Page 8: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-1: CEVER: 暗号化エンジン リビジョン / バージョン /ID レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

REVISION<7:0>

23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

VERSION<7:0>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

ID<15:8>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

ID<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-24 REVISION<7:0>: 暗号化エンジン リビジョンビット

bit 23-16 VERSION<7:0>: 暗号化エンジン バージョンビット

bit 15-0 ID: 暗号化エンジン ID ビット

DS60001246A_JP - p. 49-8 © 2014 Microchip Technology Inc.

Page 9: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-2: CECON: 暗号化エンジン制御レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

7:0U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0

— SWRST SWAPEN — — BDPCHST BDPPLEN DMAEN

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットをクリア x = ビットは未知

bit 31-7 未実装 :「0」として読み出し

bit 6 SWRST: ソフトウェア リセットビット

1 = 暗号化エンジンのソフトウェア リセットを開始する0 = 通常動作

bit 5 SWAPEN: I/O スワップ イネーブルビット

1 = 専用 DMA による読み出し時に入力データをバイトスワップする0 = 専用 DMA による読み出し時に入力データをバイトスワップしない

bit 4-3 未実装 :「0」として読み出し

bit 2 BDPCHST: バッファ ディスクリプタ プロセッサ フェッチ イネーブルビット

このビットは、全ての DMA ディスクリプタのプログラミングを完了した後で有効にする必要があります。

1 = バッファ ディスクリプタ プロセッサによるディスクリプタのフェッチを有効にする0 = バッファ ディスクリプタ プロセッサによるディスクリプタのフェッチを無効にする

bit 1 BDPPLEN: バッファ ディスクリプタ プロセッサ ポーリング イネーブルビット

このビットは、全ての DMA ディスクリプタのプログラミングを完了した後で有効にする必要があります。

1 = 有効ビットがセットされるまでディスクリプタをポーリングする0 = ポーリングしない

bit 0 DMAEN: DMA イネーブルビット

1 = 暗号化エンジン DNA を有効にする0 = 暗号化エンジン DNA を無効にする

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-9

Page 10: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-3: CEBDADDR: 暗号化エンジン バッファ ディスクリプタ レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

BDPADDR<31:24>

23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

BDPADDR<23:16>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

BDPADDR<15:8>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

BDPADDR<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 BDPADDR<31:0>: 処理中バッファ ディスクリプタ アドレス ステータスビット

これらのビットは、バッファ ディスクリプタ プロセッサによって現在処理されているディスクリプタのアドレスを格納します。

レジスタ 49-4: CEBDPADDR: 暗号化エンジン バッファ ディスクリプタ プロセッサ レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BASEADDR<31:24>

23:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BASEADDR<23:16>

15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BASEADDR<15:8>

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BASEADDR<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 BASEADDR<31:0>: DMA ベースアドレス ステータスビット

これらのビットは、DMA コントローラのベースアドレスを格納します。リセット後にフェッチはこのアドレスから始まります。

DS60001246A_JP - p. 49-10 © 2014 Microchip Technology Inc.

Page 11: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-5: CESTAT: 暗号化エンジン ステータス レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

ERRMODE<2:0> ERROP<2:0> ERRPHASE<1:0>

23:16U-0 U-0 R-0 R-0 R-0 R-0 R-0 R-0

— — BDSTATE<3:0> START ACTIVE

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

BDCTRL<15:8>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

BDCTRL<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-29 ERRMOD<2:0>: 内部エラーモード ステータスビット

111 = 予約済み•••

001 = 予約済み000 = 通常動作

bit 28-26 ERROP<2:0>: 内部エラー動作ステータスビット

111 = 予約済み110 = 予約済み101 = 予約済み100 = 認証011 = 予約済み010 = 復号001 = 暗号化000 = 予約済み

bit 25-24 ERRPHASE<1:0>: DMA 内部エラーフェイズ ステータスビット

11 = デスティネーション データ10 = ソースデータ01 = セキュリティ アソシエーション アクセス00 = バッファ ディスクリプタ アクセス

bit 23-22 未実装 :「0」として読み出し

bit 21-18 BDSTATE<3:0>: バッファ ディスクリプタ プロセッサ状態ビット

これらのビットは、バッファ ディスクリプタ プロセッサの現在の状態を示す値を格納します。1111 = 予約済み•••

0111 = 予約済み 0110 = セキュリティ アソシエーション フェッチ0101 = フェッチ バッファ ディスクリプタは無効0100 = ディスクリプタは完了した0011 = データフェイズ0010 = バッファ ディスクリプタ プロセッサはロード中0001 = ディスクリプタ フェッチ要求は保留中

0000 = バッファ ディスクリプタ プロセッサはアイドル中

bit 17 START: DMA 開始ステータスビット

1 = DMA は開始された0 = DMA は開始されていない

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-11

Page 12: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

bit 16 ACTIVE: バッファ ディスクリプタ プロセッサ ステータスビット

1 = バッファ ディスクリプタ プロセッサはアクティブ0 = バッファ ディスクリプタ プロセッサはアイドル中

bit 15-0 BDCTRL<15:0>: ディスクリプタ制御ワード ステータスビット

これらのビットは、処理中ディスクリプタの制御ワードを格納します。

レジスタ 49-5: CESTAT: 暗号化エンジン ステータス レジスタ ( 続き )

DS60001246A_JP - p. 49-12 © 2014 Microchip Technology Inc.

Page 13: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-6: CEINTSRC: 暗号化エンジン割り込み要因レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

7:0U-0 U-0 U-0 U-0 R-0, HS R-0, HS R-0, HS R-0, HS

— — — — AREIF(1) PKTIF(1) CBDIF(1) PENDIF(1)

凡例 : HS = ハードウェアでセット

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-4 未実装 :「0」として読み出し

bit 3 AREIF: アクセス応答エラー割り込みビット (1)

1 = 暗号化エンジンは無効なメモリアドレスへのアクセスを試みた0 = エラーは発生していない

bit 2 PKTIF: DMA パケット完了割り込みステータスビット (1)

1 = DMA パケットは完了した0 = DMA パケットは完了していない

bit 1 BDPIF: バッファ ディスクリプタ送信ステータスビット (1)

1 = 直近のバッファ ディスクリプタ送信は処理された0 = 直近のバッファ ディスクリプタ送信はまだ処理されていない

bit 0 PENDIF: 未処理暗号化エンジン割り込みステータスビット (1)

1 = 未処理の暗号化エンジン割り込みが存在する ( このビットの値は、暗号化エンジンの全ての割り込みステータスビットの論理和です )

0 = 未処理の暗号化エンジン割り込みは存在しない

Note 1: 割り込みをクリアするには、このビットに「1」を書き込む必要があります。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-13

Page 14: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-7: CEINTEN: 暗号化エンジン割り込みイネーブル レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

7:0U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — — AREIE PKTIE BDPIE PENDIE(1)

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-4 未実装 :「0」として読み出し

bit 3 AREIE: アクセス応答エラー割り込みイネーブルビット

1 = アクセス応答エラー割り込みを有効にする0 = アクセス応答エラー割り込みを無効にする

bit 2 PKTIE: DMA パケット完了割り込みイネーブルビット

1 = DMA パケット完了割り込みを有効にする0 = DMA パケット完了割り込みを無効にする

bit 1 BDPIE: DMA バッファ ディスクリプタ プロセッサ割り込みイネーブルビット

1 = バッファ ディスクリプタ プロセッサ割り込みを有効にする0 = バッファ ディスクリプタ プロセッサ割り込みを無効にする

bit 0 PENDIE: マスタ割り込みイネーブルビット (1)

1 = 暗号化エンジン割り込みを有効にする0 = 暗号化エンジン割り込みを無効にする

Note 1: PENDIE ビットはグローバル イネーブルビットであり、必要な他の割り込みと一緒に有効にする必要があります。

DS60001246A_JP - p. 49-14 © 2014 Microchip Technology Inc.

Page 15: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-8: CEPOLLCON: 暗号化エンジン ポーリング制御レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BDPPLCON<15:8>

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BDPPLCON<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-16 未実装 :「0」として読み出し

bit 15 BDPPLCON<15:0>: バッファ ディスクリプタ プロセッサ ポーリング制御ビット

これらのビットは、直前にディスクリプタ フェッチが無効になった場合に、ディスクリプタ制御ワードを再フェッチする前に DMA 送信バッファ ディスクリプタ プロセッサが待機するサイクル数を定義します。

レジスタ 49-9: CEHDLEN: 暗号化エンジン ヘッダ長レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

HDRLEN<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-8 未実装 :「0」として読み出し

bit 7-0 HDRLEN<7:0>: DMA ヘッダ長ビット

各パケットでは、このビットで指定した長さのヘッダ内のデータを変更せず、その直後からデータの書き込みを始めます。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-15

Page 16: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-10: CETRLLEN: 暗号化エンジン トレーラ長レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

TRLRLEN<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-8 未実装 :「0」として読み出し

bit 7-0 TRLRLEN<7:0>: DMA トレーラ長ビット

各パケットでは、このビットで指定した長さのトレーラ内のデータを変更せず、その後に次のパケットが開始します。

レジスタ 49-11: CEDTXSTAT: 暗号化エンジン DTX デバッグ ステータス レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0

— — — — DTXBLEN<15:12>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

DTXBLEN<11:4>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

DTXBLEN<3:0> DTXSTATE<3:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-16 未実装 :「0」として読み出し

bit 15-4 DTXBLEN<15:0>: 実行中 DMA 送信バッファ長デバッグ ステータスビット

bit 3-0 DTXSTATE<3:0>: 実行中 DMA 送信ステート デバッグ ステータスビット

1111 = 予約済み•••

0110 = 予約済み

0101 = 暗号化エンジン内部メモリへの送信中

0100 = 予約済み

0011 = 待機

0010 = 予約済み

0001 = 予約済み

0000 = アイドル

DS60001246A_JP - p. 49-16 © 2014 Microchip Technology Inc.

Page 17: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-12: CEDRXSTAT: 暗号化エンジン DRX デバッグ ステータス レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0

— — — — DRXBLEN<15:12>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

DTXBLEN<11:4>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

DRXBLEN<3:0> DRXSTATE<3:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-16 未実装 :「0」として読み出し

bit 15-4 DTXBLEN<15:0>: 実行中 DMA 受信バッファ長デバッグ ステータスビット

bit 3-0 DTXSTATE<3:0>: 実行中 DMA 受信ステート デバッグ ステータスビット

0000 = アイドル

これ以外の全ての値は、トランザクションが実行中である事を意味します。

レジスタ 49-13: RNGVER: 乱数生成器 ID/ バージョン / リビジョン レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

ID<15:8>

23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

ID<15:8>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

VERSION<7:0>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

REVISION<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-16 ID<15:8>: ブロック ID ビット

bit 15-8 VERSION<7:0>: ブロック バージョンビット

bit 7-0 REVISION<7:0>: ブロック リビジョンビット

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-17

Page 18: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-14: RNGCON: 乱数生成器制御レジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 R/W-0, HC U-0 R/W-0 R/W-0 R/W-0

— — — LOAD — CONT PRNGEN TRNGEN

7:0U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— PLEN<6:0>

凡例 : HC = ハードウェアでクリア

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-13 未実装 :「0」として読み出し

bit 12 LOAD: TRNG からの読み込み制御ビット

このビットを「1」にセットすると、PRNG へのシード値を TRNG から読み込みます。このビットはハードウェアによって自動的にクリアされます。

bit 11 未実装 :「0」として読み出し

bit 10 CONT: 周期的 PRNG 乱数生成イネーブルビット

1 = PRNG 乱数を周期的に生成する0 = 直前の乱数が読み出された時に次の PRNG 乱数を生成する

bit 9 PRNGEN: PRNG 動作イネーブルビット

1 = PRNG の動作を有効にする0 = PRNG の動作を無効にする

bit 8 TRNGEN: TRNG 動作イネーブルビット

1 = TRNG の動作を有効にする0 = TRNG の動作を無効にする

bit 7 未実装 :「0」として読み出し ( 常に「0」として書き込む必要があります )

bit 6-0 PLEN<6:0>: PRNG 多項式長ビット

これらのビットは、PRNG で使う多項式の長さを格納します。

DS60001246A_JP - p. 49-18 © 2014 Microchip Technology Inc.

Page 19: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-15: RNGPOLY1: 乱数生成器多項式レジスタ 1

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY1<31:24>

23:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY1<23:16>

15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY1<15:8>

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY1<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 POLY1<31:0>: PRNG LFSR 多項式上位バイトビット

これらのビットは LSFR とは逆順です。従って、これらのビットは LSFR の bit 32-63 を表します。

レジスタ 49-16: RNGPOLY2: 乱数生成器多項式レジスタ 2

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY2<31:24>

23:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY2<23:16>

15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY2<15:8>

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

POLY2<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 POLY2<31:0>: PRNG LFSR 多項式下位バイトビット

これらのビットは LSFR とは逆順です。従って、これらのビットは LSFR の bit 0-31 を表します。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-19

Page 20: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-17: RNGNUMGEN1: 擬似乱数生成器レジスタ 1

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG1<31:24>

23:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG1<23:16>

15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG1<15:8>

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG1<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 RNG1<31:0>: PRNG 現在値下位バイト値ビット

レジスタ 49-18: RNGNUMGEN2: 擬似乱数生成器レジスタ 2

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG2<31:24>

23:16R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG2<23:16>

15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG2<15:8>

7:0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RNG2<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 RNG2<31:0>: PRNG 現在値上位バイト値ビット

DS60001246A_JP - p. 49-20 © 2014 Microchip Technology Inc.

Page 21: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

レジスタ 49-19: RNGSEED1: 真性乱数生成器シード値レジスタ 1

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA1<31:24>

23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA1<23:16>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA1<15:8>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA1<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 RDATA1<31:0>: TRNG 下位 32 ビット値

レジスタ 49-20: RNGSEED2: 真性乱数生成器シード値レジスタ 2

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA2<31:24>

23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA2<23:16>

15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA2<15:8>

7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

RDATA2<7:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-0 RDATA2<31:0>: TRNG 上位 32 ビット値

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-21

Page 22: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

レジスタ 49-21: RNGRCNT: 真性乱数生成器カウントレジスタ

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

7:0U-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

— RCNT<6:0>

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 1 = ビットはセット 0 = ビットはクリア x = ビットは未知

bit 31-7 未実装 :「0」として読み出し

bit 6-0 RCNT<6:0>: RNGSEEDx 内有効ビット数

DS60001246A_JP - p. 49-22 © 2014 Microchip Technology Inc.

Page 23: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.3 暗号化エンジンのバッファ ディスクリプタ

ホスト ソフトウェアはバッファ ディスクリプタのリンクリストを作成し、それらはハードウェアによって更新されます。表 49-3 に暗号化エンジンバッファ ディスクリプタの一覧を示し、図 49-3 ~図 49-10 に各ディスクリプタのフォーマットを示します。

表 49-3: 暗号化エンジン バッファ ディスクリプタ

名称Bit

31/23/15/7Bit

30/22/14/6Bit

29/21/13/5Bit

28/20/12/4Bit

27/19/11/3Bit

26/18/10/2Bit

25/17/9/1Bit

24/16/8/0

BD_CTRL 31:24 DESC_EN SEC_CODE<7:1>

23:16 SEC_CODE<0> SA_FETCH_EN UPD_RES CRDMA_EN LAST_BD LIFM PKT_INT_EN CBD_INT_EN

15:8 BD_BUFLEN<15:8>

7:0 BD_BUFLEN<7:0>

BD_SA_ADDR 31:24 BD_SAADDR<31:24>

23:16 BD_SAADDR<23:16>

15:8 BD_SAADDR<15:8>

7:0 BD_SAADR<7:0>

BD_SRCADDR31:24 BD_SRCADDR<31:24>

23:16 BD_SRCADDR<23:16>

15:8 BD_SRCADDR<15:8>

7:0 BD_SRCADDR<7:0>

BD_DSTADDR31:24 BD_DSTADDR<31:24>

23:16 BD_DSTADDR<23:16>

15:8 BD_DSTADDR<15:8>

7:0 BD_DSTADDR<7:0>

BD_NXTPTR31:24 BD_NXTADDR<31:24>

23:16 BD_NXTADDR<23:16>

15:8 BD_NXTADDR<15:8>

7:0 BD_NXTADDR<7:0>

BD_UPDPTR31:24 BD_UPDADDR<31:24>

23:16 BD_UPDADDR<23:16>

15:8 BD_UPDADDR<15:8>

7:0 BD_UPDADDR<7:0>

BD_MSG_LEN31:24 MSG_LENGTH<31:24>

23:16 MSG_LENGTH<23:16>

15:8 MSG_LENGTH<15:8>

7:0 MSG_LENGTH<7:0>

BD_ENC_OFF 31:24 ENCR_OFFSET<31:24>

23:16 ENCR_OFFSET<23:16>

15:8 ENCR_OFFSET<15:8>

7:0 ENCR_OFFSET<7:0>

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-23

Page 24: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

図 49-3: BD_CTRL のフォーマット

図 49-4: BD_SADDR のフォーマット

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 DESC_EN — CRY_MODE<2:0> — — —

23-16 —SA_

FETCH_ENUPD_RES — LAST_BD LIFM

PKT_INT_EN

CBD_INT_EN

15-8 BD_BUFLEN<15:8>

7-0 BD_BUFLEN<7:0>

bit 31 DESC_EN: ディスクリプタ イネーブル

1 = ハードウェアがディスクリプタを所有する (BD の処理後、ハードウェアはこのビットを「0」にリセットします )

0 = ソフトウェアがディスクリプタを所有する

bit 30 未実装 : 常に「0」として書き込み

bit 29-27 CRY_MODE<2:0>: 暗号化モード

111 = 予約済み110 = 予約済み101 = 予約済み100 = 予約済み011 = CEK 動作010 = KEK 動作001 = プリブート認証000 = 通常動作

bit 22 SA_FETCH_EN: 外部メモリからのセキュリティ アソシエーションのフェッチ

1 = SA ポインタから SA をフェッチする ( このビットは、新しいパケットごとに「1」にセットする必要があります )

0 = SA がフェッチされた、または内部 SAbit 21-20 未実装 : 常に「0」として書き込み

bit 19 LAST_BD: 直近バッファ ディスクリプタ

直近の BD の後、BD_PTR は CSR 内のベースアドレスへ移動します。

bit 18 LIFM: フレーム内最終

受信パケット ( ハードウェア → ホスト ) の場合、このフィールドはハードウェアによって書き込まれ、パケットが複数のバッファ ディスクリプタにまたがるかどうかを示します。送信パケット ( ホスト → ハードウェア ) の場合、このフィールドはこの BD がフレーム内の最後の BD かどうかを示します。

bit 17 PKT_INT_EN: パケット割り込みイネーブルパケットの最後のバッファ ディスクリプタの処理が完了した後に割り込みを生成します。

bit 16 CBD_INT_EN: CBD 割り込みイネーブル現在のバッファ ディスクリプタの処理が完了した後に割り込みを生成します。

bit 15-0 BD_BUFLEN<15:0>: バッファ ディスクリプタ長このフィールドはバッファの長さを格納し、レシーバによって実際に書き込まれた長さに更新されます。

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 BD_SAADDR<31:24>

23-16 BD_SAADDR<23:16>

15-8 BD_SAADDR<15:8>

7-0 BD_SAADDR<7:0>

bit 31-0 BD_SAADDR: セキュリティ アソシエーション IP セッション アドレス

セッションのセキュリティ アソシエーション ポインタは、キーおよび IV 値を持ちます。

DS60001246A_JP - p. 49-24 © 2014 Microchip Technology Inc.

Page 25: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

図 49-5: BD_SRCADDR のフォーマット

図 49-6: BD_DSTADDR のフォーマット

図 49-7: BD_NXTADDR のフォーマット

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 BD_SCRADDR<31:24>

23-16 BD_SCRADDR<23:16>

15-8 BD_SCRADDR<15:8>

7-0 BD_SCRADDR<7:0>

bit 31-0 BD_SCRADDR: バッファ ソースアドレス

暗号化または認証向けに PE-CRDMA を介して引き渡す必要のあるバッファのソースアドレス

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 BD_DSTADDR<31:24>

23-16 BD_DSTADDR<23:16>

15-8 BD_DSTADDR<15:8>

7-0 BD_DSTADDR<7:0>

bit 31-0 BD_DSTADDR: バッファ デスティネーション アドレス

暗号化または認証向けに PE-CRDMA を介して引き渡す必要のあるバッファのデスティネーションアドレス

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 BD_NXTADDR<31:24>

23-16 BD_NXTADDR<23:16>

15-8 BD_NXTADDR<15:8>

7-0 BD_NXTADDR<7:0>

bit 31-0 BD_NXTADDR: 次のバッファ ディスクリプタ ポインタアドレス次のバッファ ディスクリプタのアドレスを格納します。

次のバッファは、直前のバッファの次のセグメントまたは新しいパケットです。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-25

Page 26: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

図 49-8: BD_UPDPTR のフォーマット

図 49-9: BD_MSG_LEN のフォーマット

図 49-10: BD_ENC_OFF のフォーマット

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 BD_UPDADDR<31:24>

23-16 BD_UPDADDR<23:16>

15-8 BD_UPDADDR<15:8>

7-0 BD_UPDADDR<7:0>

bit 31-0 BD_UPDADDR: 更新アドレス

更新アドレスは CRDMA 結果が書き込まれるアドレスです。更新結果は必要に応じて ICV 値、キー出力値です。

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 MSG_LENGTH<31:24>

23-16 MSG_LENGTH<23:16>

15-8 MSG_LENGTH<15:8>

7-0 MSG_LENGTH<7:0>

bit 31-0 MSG_LENGTH: 総メッセージ長

ハッシュおよび HMAC アルゴリズムの場合、総メッセージ長 ( バイト数 )GCM アルゴリズム (LEN-C) の場合、暗号バイトの総数

Bit Range

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 ENCR_OFFSET<31:24>

23-16 ENCR_OFFSET<23:16>

15-8 ENCR_OFFSET<15:8>

7-0 ENCR_OFFSET<7:0>

bit 31-0 ENCR_OFFSET: 暗号化オフセット

マルチタスク テストの場合、暗号化オフセット ( 暗号化および認証向け )GMC アルゴリズム (LEN-A) の場合、AAD バイトの数

DS60001246A_JP - p. 49-26 © 2014 Microchip Technology Inc.

Page 27: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

例 49-1: バッファ ディスクリプタの C 構造体 typedef struct bdCtrl { unsigned int BUFLEN :16; unsigned int CBD_INT_EN :1; unsigned int PKT_INT_EN :1; unsigned int LIFM :1; unsigned int LAST_BD:1; unsigned int :2; unsigned int SA_FETCH_EN :1; unsigned int :4; unsigned int CRY_MODE:3; unsigned int :1; unsigned int DESC_EN :1; } bdCtrl;

typedef struct bufferDescriptor { bdCtrl BD_CTRL; unsigned int SA_ADDR; unsigned int SRCADDR; unsigned int DSTADDR; unsigned int NXTPTR; unsigned int UPDPTR; unsigned int MSGLEN; unsigned int ENCOFF; } bufferDescriptor;

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-27

Page 28: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.4 暗号化エンジンのセキュリティ アソシエーション構造

表 49-4 に、セキュリティ アソシエーション構造を示します。

暗号化エンジンは、セキュリティ アソシエーションを使って、バッファ ディスクリプタ プロセッサの処理設定を定義します。セキュリティ アソシエーションは以下を定義します。

• 使用するアルゴリズム

• 認証エンジンと暗号化 / 復号エンジンを並列で使うかどうか

• キーのサイズ

• 認証キー

• 暗号化 / 復号キー

• 認証初期化ベクタ (IV)

• 暗号化 IV

表 49-4: 暗号化エンジンのセキュリティ アソシエーション構造

名称Bit

31/23/15/7Bit

30/22/14/6Bit

29/21/13/5Bit

28/20/12/4Bit

27/19/11/3Bit

26/18/10/2Bit

25/17/9/1Bit

24/16/8/0

SA_CTRL 31:24 — — VERIFY — NO_RX OR_EN ICVONLY IRFLAG

23:16 LNC LOADIV FB FLAGS — — — ALGO<6>

15:8 ALGO<5:0> ENCTYPE KEYSIZE<1>7:0 KEYSIZE<0> MULTITASK<2:0> CRYPTOALGO<3:0>

SA_AUTHKEY1 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY2 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY3 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY4 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY5 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY6 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY7 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_AUTHKEY8 31:24 AUTHKEY<31:24>

23:16 AUTHKEY<23:16>

15:8 AUTHKEY<15:8>

7:0 AUTHKEY<7:0>

SA_ENCKEY1 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_ENCKEY2 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

DS60001246A_JP - p. 49-28 © 2014 Microchip Technology Inc.

Page 29: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

SA_ENCKEY3 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_ENCKEY4 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_ENCKEY5 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_ENCKEY6 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_ENCKEY7 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_ENCKEY8 31:24 ENCKEY<31:24>

23:16 ENCKEY<23:16>

15:8 ENCKEY<15:8>

7:0 ENCKEY<7:0>

SA_AUTHIV1 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV2 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV3 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV4 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV5 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV6 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV7 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

SA_AUTHIV8 31:24 AUTHIV<31:24>

23:16 AUTHIV<23:16>

15:8 AUTHIV<15:8>

7:0 AUTHIV<7:0>

表 49-4: 暗号化エンジンのセキュリティ アソシエーション構造 ( 続き )

名称Bit

31/23/15/7Bit

30/22/14/6Bit

29/21/13/5Bit

28/20/12/4Bit

27/19/11/3Bit

26/18/10/2Bit

25/17/9/1Bit

24/16/8/0

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-29

Page 30: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

SA_ENCIV1 31:24 ENCIV<31:24>

23:16 ENCIV<23:16>

15:8 ENCIV<15:8>

7:0 ENCIV<7:0>

SA_ENCIV2 31:24 ENCIV<31:24>

23:16 ENCIV<23:16>

15:8 ENCIV<15:8>

7:0 ENCIV<7:0>

SA_ENCIV3 31:24 ENCIV<31:24>

23:16 ENCIV<23:16>

15:8 ENCIV<15:8>

7:0 ENCIV<7:0>

SA_ENCIV4 31:24 ENCIV<31:24>

23:16 ENCIV<23:16>

15:8 ENCIV<15:8>

7:0 ENCIV<7:0>

表 49-4: 暗号化エンジンのセキュリティ アソシエーション構造 ( 続き )

名称Bit

31/23/15/7Bit

30/22/14/6Bit

29/21/13/5Bit

28/20/12/4Bit

27/19/11/3Bit

26/18/10/2Bit

25/17/9/1Bit

24/16/8/0

DS60001246A_JP - p. 49-30 © 2014 Microchip Technology Inc.

Page 31: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

図 49-11: SA_CTRL のフォーマット

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 — — VERIFY — NO_RX OR_EN ICVONLY IRFLAG

23-16 LNC LOADIV FB FLAGS — — — ALGO<6>

15-8 ALGO<5:0> ENCKEY

SIZE<1>

7-0KEY

SIZE<0>MULTITASK<2:0> CRYPTOALGO<3:0>

bit 31-30 予約済み : 使用不可

bit 29 VERIFY: NIST プロセス検証設定

1 = NIST プロセスを使う0 = NIST プロセスを使わない

bit 28 予約済み : 使用不可

bit 27 NO_RX: 受信 DMA 制御設定

1 = 認証校正用に ICV の計算だけ行う0 = 通常処理

bit 26 OR_EN: レジスタビット論理和イネーブル設定

1 = CSR レジスタ内の各ビットの論理和を取る0 = 通常処理

bit 25 ICVONLY: 未完了チェック値限定フラグ

これは SHA-1 アルゴリズムにのみ影響します。AES アルゴリズムには影響しません。1 = HMAC 結果の 3 ワードのみ利用可能0 = HMAC 結果の全てが利用可能

bit 24 IRFLAG: ハッシュの即時結果設定

このビットは、ハッシュの即時結果が必要な場合にセットします。1 = ハッシュの即時結果を保存する0 = 即時結果を保存しない

bit 23 LNC: 新キー ロード設定

1 = 暗号化と認証向けに新しいキーのセットをロードする0 = 新しいキーをロードしない

bit 22 LOADIV: IV ロード設定

1 = このセキュリティ アソシエーションから IV をロードする0 = 次の IV を使う

bit 21 FB: 先頭ブロック設定

このビットは、このブロックがIV値を適用するためのデータの最初のブロックである事を示します。1 = これはデータの先頭ブロックである0 = これはデータの先頭ブロックではない

bit 20 FLAGS: 受信 / 送信フロー設定

1 = セキュリティ アソシエーションは送信フローに関連する0 = セキュリティ アソシエーションは受信フローに関連する

bit 19-17 予約済み : 使用不可

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-31

Page 32: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

Figure 49-11:SA_CTRL のフォーマット ( 続き )

bit 16-10 ALGO<6:0>: 使用するアルゴリズムのタイプ1xxxxxx = HMAC 1x1xxxxx = SHA-256xx1xxxx = SHA1xxx1xxx = MD5xxxx1xx = AESxxxxx1x = TDESxxxxxx1 = DES

bit 9 ENC: 暗号化タイプ設定1 = 暗号化0 = 復号

bit 8-7 KEYSIZE<1:0>: SA_AUTHKEYx または SA_ENCKEYx 内のキーのサイズ11 = 予約済み ( 使用禁止 )10 = 256 ビット01 = 192 ビット00 = 128 ビット (1)

bit 6-4 MULTITASK<2:0>: 暗号化エンジン内の並列動作の組み合わせ方法111 = 受信データの暗号化と認証を平行して行う ( 並列パス )101 = 受信データを暗号化し、その後で認証を行う ( パイプパス )011 = 予約済み010 = 予約済み001 = 予約済み

000 = 暗号化または認証または復号のどれか ( パスなし )

bit 3-0 CRYPTOALGO<3:0>: 暗号化アルゴリズムの動作モード1111 = 予約済み1110 = AES_GCM (AES 処理向け )1101 = RCTR (AES 処理向け )1100 = RCBC_MAC (AES 処理向け )1011 = ROFB (AES 処理向け )1010 = RCFB (AES 処理向け )1001 = RCBC (AES 処理向け )1000 = REBC (AES 処理向け )0111 = TOFB ( トリプル DES 処理向け )0110 = TCFB ( トリプル DES 処理向け )0101 = TCBC ( トリプル DES 処理向け )0100 = TECB ( トリプル DES 処理向け )0011 = OFB (DES 処理向け )0010 = CFB (DES 処理向け )0001 = CBC (DES 処理向け )0000 = ECB (DES 処理向け )

Note 1: この設定は、セキュリティ アソシエーション内の SA_AUTHKEYx または SA_ENCKEYx のサイズを変更せず、使用する SA_AUTHKEYx および SA_ENCKEYx のビット数のみを変更します。

DS60001246A_JP - p. 49-32 © 2014 Microchip Technology Inc.

Page 33: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

図 49-12: SA_AUTHKEYx のフォーマット (x = 1 ~ 8)

図 49-13: SA_ENCKEYx のフォーマット (x = 1 ~ 8)

図 49-14: SA_AUTHIVx のフォーマット (x = 1 ~ 8)

図 49-15: SA_ENCIVx のフォーマット (x = 1 ~ 4)

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 AUTHKEY<31:24>

23-16 AUTHKEY<23:16>

15-8 AUTHKEY<15:8>

7-0 AUTHKEY<7:0>

bit 31-0 AUTHKEY<31:0>: 認証エンジン処理で使用するキー

認証エンジンを使わない場合、これらのエントリは「0」にクリアする必要があります。

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 ENCKEY<31:24>

23-16 ENCKEY<23:16>

15-8 ENCKEY<15:8>

7-0 ENCKEY<7:0>

bit 31-0 ENCKEY<31:0>: 暗号化エンジン処理で使用するキー

暗号化エンジンを使わない場合、これらのエントリは「0」にクリアする必要があります。

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 AUTHIV<31:24>

23-16 AUTHIV<23:16>

15-8 AUTHIV<15:8>

7-0 AUTHIV<7:0>

bit 31-0 AUTHIV<31:0>: 認証エンジン処理で使用する IV認証エンジンを使わない場合、これらのエントリは「0」にクリアする必要があります。

ビットレンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

31-24 ENCIV<31:24>

23-16 ENCIV<23:16>

15-8 ENCIV<15:8>

7-0 ENCIV<7:0>

bit 31-0 ENCIV<31:0>: 暗号化エンジン処理で使用する IV暗号化エンジンを使わない場合、これらのエントリは「0」にクリアする必要があります。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-33

Page 34: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

例 49-2: セキュリティ アソシエーションの C 構造体 typedef struct saCtrl { unsigned int CRYPTOALGO :4; unsigned int MULTITASK :3; unsigned int KEYSIZE :2; unsigned int ENCTYPE :1; unsigned int ALGO :7; unsigned int :3; unsigned int FLAGS :1; unsigned int FB :1; unsigned int LOADIV :1; unsigned int LNC :1; unsigned int IRFLAG :1; unsigned int ICVONLY :1; unsigned int OR_EN :1; unsigned int NO_RX :1; unsigned int :1; unsigned int VERIFY :1; unsigned int :2; } saCtrl;

typedef struct securityAssociation { saCtrl SA_CTRL; unsigned int SA_AUTHKEY[8]; unsigned int SA_ENCKEY[8]; unsigned int SA_AUTHIV[8]; unsigned int SA_ENCIV[4]; } securityAssociation;

DS60001246A_JP - p. 49-34 © 2014 Microchip Technology Inc.

Page 35: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.5 暗号化エンジンの動作

49.5.1 暗号化セキュリティ エンジン

PIC32 ファミリの処理要求を低減するため、暗号化エンジンは 4 つの暗号化セキュリティ エンジンを備えています。これらのセキュリティ エンジンは、各種のセキュリティ アプリケーションで最も一般に用いられるタイプの暗号化、復号、数値計算を実行します。これらは公開鍵 /非公開鍵ペアのネゴシエーション、メッセージ ハッシュ認証、バルクデータの暗号化 / 復号演算を高速化します。これらのエンジンを並列またはデイジーチェーン化して使う事で、セキュリティを高める事ができます。

以下の 4 種類のエンジンを実装しています。

• トリプル DES (TDES)

• 共通鍵暗号化規格 (AES)

• セキュア ハッシュ アルゴリズム (SHA-1、SHA-256)• Message Digest 5 (MD5)

49.5.1.1 トリプル DES (TDES)

データ暗号化標準 (DES) は、1970 年代初頭に開発された暗号化アルゴリズムです。これはブロック暗号の一種であり、データを 64 ビットブロックで暗号化します。エンジンを通して送信された各 64 ビットブロックに対して 1 つの 64 ビットブロックが返されます。

DESは56ビット長のキーを使います。キーは通常64ビット値として表現されますが、DESの定義により、8 ビットごとにキーのパリティチェック用に使われて破棄されます。つまり、64 ビットキーの 8/16/24/32/40/48/56 番めのビットは破棄されるため、56 ビットだけがキーとして使われます。

処理する受信データのサイズを 8 の倍数バイトに揃えるために、ビットのパディングが必要です。このパディングには処理から除外されるヘッダ / トレーラ データを含めず、追加するビットの値は「0」である事が必要です。

トリプル DES (TDES)では、このアルゴリズムを同一データブロックに対して 3回実行し (DESでは 1 回だけ )、56/112/168 ビット長のキーを使えます。DES と同様に、TDES は対称アルゴリズムです ( つまり、暗号化と復号に同じアルゴリズムとキーを使います )。

49.5.1.2 共通鍵暗号化規格 (AES)

AES エンジンは、NIST( 米国立標準技術研究所 ) の定義に従う共通鍵暗号化規格 ( 元の名称はRijndael) を実装します。DES と同様に、AES もブロック暗号の一種であり、暗号化と復号に同じキーを使います。AES は、キーのサイズに関係なく、128 ビットブロックで動作します。

AES では、128/192/256 ビット長のキーを使う事ができ、キーの長さに応じて、入力から出力への変換に使う変換ラウンドの数が決まります。アルゴリズム実行の実効ビットレートもキーの長さによって決まります。

処理する受信データのサイズを 16 の倍数バイト (128 の倍数ビット ) に揃えるために、ビットのパディングが必要です。このパディングには、処理から除外されるヘッダ / トレーラ データを含めず、追加するビットの値は「0」である事が必要です。

49.5.1.3 セキュア ハッシュ アルゴリズム (SHA-1、SHA-256)

セキュアハッシュ アルゴリズム (SHA) は、米国家安全保障局 (NSA) が設計した暗号学的ハッシュ関数です。これは一方向のメッセージ ダイジェスト関数であり、任意の長さを持つ入力データから 160 ビット (SHA-1 の場合 ) または 256 ビット (SHA-256 の場合 ) のダイジェストを生成します。

どちらのバージョンも 512 ビットブロックで動作します。入力データの長さを 64 の倍数バイトに揃えるために、パディングが必要です。パディングの最上位ビットは必ず「1」とし、その後に「0」ビットを追加する事で、512 ビット (64 バイト ) に 64 ビット足りない長さまでパディングします。これに続く最後の 64 ビットには、パディング前のメッセージの長さ ( バイナリ表現 ) を格納します。これにより、異なるメッセージがパディング後に同じになってしまう事を防ぎます。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-35

Page 36: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.5.1.4 メッセージ ダイジェスト 5 (MD5)

メッセージ ダイジェスト 5 (MD5) は、SHA と同様に、暗号学的ハッシュ関数です。MD5 は、1991 年に、以前の MD4 に置き換わるハッシュ関数として Ron Rivest によって設計されました。MD5 は、任意長 ( 制限なし ) の入力データから 128 ビットのハッシュ値を生成します。

MD5 は 512 ビットブロックで動作します。入力データの長さを 64 の倍数バイトに揃えるために、パディングが必要です。パディングの最上位ビットは必ず「1」とし、その後に「0」ビットを追加する事で、512 ビット (64 バイト ) に 64 ビット足りない長さまでパディングします。これに続く最後の 64 ビットには、パディング前のメッセージの長さ ( バイナリ表現 ) を格納します。これにより、異なるメッセージがパディング後に同じになってしまう事を防ぎます。

49.5.1.5 動作モード

TDES および AES ブロック暗号化エンジンは、最大で 6 種類の動作モードを備え、単一キーで暗号を繰り返し安全に使う事ができます。6 つのモードは以下の通りです。

• CBC (Cipher-Block Chaining)• ECB (Electronic Code Book)• CTR (Counter) - AES only• CFB (Cipher Feedback)• OFB (Output Feedback)

• GCM (Galois/Counter) - AES 専用

使用中のモードは、データ処理時にセキュリティ アソシエーションによって指定されます。

49.5.2 暗号化エンジンの実行

暗号化エンジンは一連のバッファ ディスクリプタによって設定されます。これらのディスクリプタは、データの各ブロックの処理方法と使用するセキュリティ アソシエーションをエンジンに指示します。1 つのセキュリティ アソシエーションを複数のバッファ ディスクリプタに割り当てる事ができ、そうする事でメモリを節約できます。

図 49-16 に、1 つのセキュリティ アソシエーションに対する複数のバッファ ディスクリプタとデータの関係を示します。

図 49-16: セキュリティ アソシエーションに対するバッファ ディスクリプタとデータの関係

Header

Data 1

Trailer

Header

Data 2

Trailer

Header

Data 3

Trailer

Header

Data n

Trailer

SA_CTRL

0x80001000

0x80001100

0x80001188

0x80001F00

BD_CTRLBuffer Descriptor 1

0x80001300BD_SA_ADDRBD_SRCADDRBD_DSTADDRBD_NXTPTRBD_UPDPTR

BD_MSG_LENBD_ENC_OFF

0x80001500Buffer

0x80001340

Buffer

0x80001380

Buffer

0x80001400

SA_AUTHKEY

SA_ENCKEY

SA_AUTHIV

SA_ENCIV

Security Association

0x80001504

0x80001524

0x80001544

0x80001564

Descriptor 2

Descriptor 3

Descriptor n

Header

Data 1

Trailer

Header

Data 2

Trailer

Header

Data 3

Trailer

Header

Data n

Trailer

0x80002000

0x80002100

0x80002188

0x80002F00

DS60001246A_JP - p. 49-36 © 2014 Microchip Technology Inc.

Page 37: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.5.2.1 データブロックのヘッダとトレーラ

アプリケーションによっては、各データブロックがヘッダまたはトレーラ情報 ( もしくはその両方 ) を格納している場合があり、暗号化エンジンはそれらを変更せずに通過させる必要があります。CEHDLEN および CETRLLEN レジスタは、それぞれヘッダとトレーラの長さを指定します。各レジスタを設定する事で、それぞれ最大で 255 バイトを予約できます。

49.5.2.2 セキュリティ アソシエーションの作成

セキュリティ アソシエーションは、暗号化エンジンに対して、そのブロックに対するエンジンの動作方法と、使用すべきセキュリティ キーおよび初期化ベクタ (IV) を指定します。セキュリティ アソシエーションは、少なくとも以下の情報を提供する必要があります。

• 使用するアルゴリズム (HMAC、SHA256、SHA1、MD5、AES、TDES、DES)

• 初期化ベクタ (IV) をロードするかどうか

• 動作の方向 ( 受信または送信 )

• 暗号化するのか復号するのか

• キーサイズ

• マルチタスク オプション

• 動作モード ( 一部のアルゴリズムにのみ適用 )

セキュリティ アソシエーションを作成して設定するためのサンプルコードを例 49-3 に示します。

例 49-3: セキュリティ アソシエーションの設定 securityAssociation enc_sa __attribute__((aligned (8))); securityAssociation dec_sa __attribute__((aligned (8)));

memset((void *)&enc_sa, 0, sizeof(enc_sa)); memset((void *)&dec_sa, 0, sizeof(dec_sa));

/* Set up the Security Association */ enc_sa.SA_CTRL.ALGO = 0b0000010; /* TDES */ enc_sa.SA_CTRL.LNC = 1; enc_sa.SA_CTRL.LOADIV = 1; enc_sa.SA_CTRL.FB = 1; enc_sa.SA_CTRL.ENCTYPE = 1; /* Encryption */ enc_sa.SA_CTRL.CRYPTOALGO = 0b0101; /* TCBC */

dec_sa.SA_CTRL.ALGO = 0b0000010; /* TDES */ dec_sa.SA_CTRL.LNC = 1; dec_sa.SA_CTRL.LOADIV = 1; dec_sa.SA_CTRL.FB = 1; dec_sa.SA_CTRL.ENCTYPE = 0; /* Decryption */ dec_sa.SA_CTRL.CRYPTOALGO = 0b0101; /* TCBC */

/* Load the encryption keys */enc_sa.SA_ENCKEY[2] = 0x01234567;enc_sa.SA_ENCKEY[3] = 0x89abcdef;enc_sa.SA_ENCKEY[4] = 0xfedeba98;enc_sa.SA_ENCKEY[5] = 0x76543210;enc_sa.SA_ENCKEY[6] = 0x89abcdef;enc_sa.SA_ENCKEY[7] = 0x01234567;

dec_sa.SA_ENCKEY[2] = 0x01234567;dec_sa.SA_ENCKEY[3] = 0x89abcdef;dec_sa.SA_ENCKEY[4] = 0xfedeba98;dec_sa.SA_ENCKEY[5] = 0x76543210;dec_sa.SA_ENCKEY[6] = 0x89abcdef;dec_sa.SA_ENCKEY[7] = 0x01234567;

/* Load the initialization vector (IV) */enc_sa.SA_ENCIV[2] = 0x12345678;enc_sa.SA_ENCIV[3] = 0x90abcdef;

dec_sa.SA_ENCIV[2] = 0x12345678;dec_sa.SA_ENCIV[3] = 0x90abcdef;

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-37

Page 38: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.5.2.3 バッファ ディスクリプタの作成

バッファ ディスクリプタは、暗号化エンジンに対して、処理する必要のある各データブロックのデータ処理方法を指定します。バッファ ディスクリプタは、少なくとも以下の情報を提供する必要があります。

• セキュリティ アソシエーションのアドレス (BD_SA_ADDR)

• 処理するソースデータのアドレス (BD_SRCADDR)

• 処理後のデスティネーション データのアドレス (BD_DSTADDR)

• 次のバッファ ディスクリプタのアドレス (BD_NXTPTR)

• ハッシュ アルゴリズムの更新を保存するアドレス (BD_UPDADDR)

• 総メッセージ長 ( バイト数 ) (MSG_LENGTH)

バッファ ディスクリプタを作成して設定するためのサンプルコードを例 49-4 に示します。

例 49-4: バッファ ディスクリプタの設定

49.5.2.4 バッファ ディスクリプタ プロセッサの起動

セキュリティ アソシエーションとバッファ ディスクリプタを設定した後、以下のようにバッファ ディスクリプタ プロセッサ (BDP) を起動します。

1. 最初のバッファ ディスクリプタのアドレスをエンジンに対して指示する。

2. 有効にする割り込みを選択する。

3. 暗号化 DMA エンジンを有効にする。

例 49-5 に、処理を開始するためのサンプルコードを示します。

例 49-5: バッファ ディスクリプタを処理するための暗号化エンジンの設定

/* vector is the source data for the encryption phase. cipher is the destination for the encryption phase,

and the source data for the decryption phase. plain is the destination for the decryption phase.

/* Set up the Buffer Descriptor */ enc_bd.BD_CTRL.BUFLEN = sizeof(vector); enc_bd.BD_CTRL.LIFM = 1; enc_bd.BD_CTRL.SA_FETCH_EN = 1; enc_bd.BD_CTRL.LAST_BD = 1; enc_bd.BD_CTRL.DESC_EN = 1;

dec_bd.BD_CTRL.BUFLEN = sizeof(cipher); dec_bd.BD_CTRL.LIFM = 1; dec_bd.BD_CTRL.SA_FETCH_EN = 1; dec_bd.BD_CTRL.LAST_BD = 1; dec_bd.BD_CTRL.DESC_EN = 1;

enc_bd.SA_ADDR = KVA_TO_PA(&enc_sa); enc_bd.SRCADDR = KVA_TO_PA(vector); enc_bd.DSTADDR = KVA_TO_PA(cipher);

enc_bd.NXTPTR = KVA_TO_PA(&dec_bd); enc_bd.MSGLEN = sizeof(vector);

dec_bd.SA_ADDR = KVA_TO_PA(&dec_sa); dec_bd.SRCADDR = KVA_TO_PA(cipher); dec_bd.DSTADDR = KVA_TO_PA(plain); dec_bd.MSGLEN = sizeof(cipher);

CEBDPADDR = KVA_TO_PA(&enc_bd); CEINTEN = 0x07; CECON = 0x07;

DS60001246A_JP - p. 49-38 © 2014 Microchip Technology Inc.

Page 39: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.5.3 暗号化エンジン動作のガイドライン

暗号化エンジンを正しく設定して動作させるためのガイドラインを以下に記載します。

• データの配置

- セキュリティ アソシエーション構造は 8 ビット境界に配置する必要があります。これは、aligned 変数属性を使う事で可能です ( 例 49-3 参照 )。

- バッファ ディスクリプタ構造は 8 ビット境界に配置する必要があります。これも、aligned変数属性を使う事で可能です ( 例 49-4 参照 )。

- バッファ ディスクリプタで使うソースおよびデスティネーション アドレスは、32 ビット境界に配置する必要があります。

• データ長

- 各バッファ ディスクリプタのバッファ長フィールドの値は、使用する暗号化アルゴリズムのワードサイズの倍数である事が必要です。データブロックは、破損を防ぐため、「0」ビットをパディングする事で必要なサイズに揃える必要があります。各アルゴリズムのワードサイズを表 49-5 に示します。

表 49-5: 暗号化アルゴリズムのワードサイズ

- 複数のバッファ ディスクリプタにまたがるデータの総長は、使用する暗号化アルゴリズムのワードサイズの倍数である事が必要です。各アルゴリズムのワードサイズは表 49-5に記載しています。

- ハッシュ アルゴリズム (MD5、SHA1、SHA256) の最小パケット長は 64 バイトです。

- 入力データ長が上記のガイドラインに適合しない場合、「0」ビットをパディングする事で長さを揃える事が必要です。

• アルゴリズム、初期化ベクタ (IV)

- AES GCM の IV のサイズは 96 ビットに制限されます。

- AES GCM の暗号化 IV の第 4 ワード (LSB 32 ビット ) は「1」である事が必要です。

- 認証エンジンと暗号化エンジンを並列で使う場合、HMAC を使う必要があります。

- HMAC は、認証エンジン (MD5/SHA1/SHA256) のいずれか 1 つと組み合わせて使う必要があります。

Note: L1 キャッシュを備えるデバイス上のキャッシュ コヒーレンシ問題を防ぐため、全てのバッファ ディスクリプタとセキュリティ アソシエーションには、KSEG1 または KSEG3( キャッシュなし ) セグメントからアクセスする必要があります。

アルゴリズム ワードサイズ

AES 16 バイト

TDES 24 バイト

DES 8 バイト

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-39

Page 40: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.6 暗号化エンジンの割り込みPIC32 は、暗号化エンジンの動作中に発生したイベントを反映して割り込みを生成できます。暗号化エンジンの各割り込みイベントに対応する割り込みイネーブルビットは、CEINTEN レジスタに格納されています。割り込みを生成するには、対応するイネーブルビットをセットする必要があります。しかし、全ての割り込みイベントのステータスは、CEINTEN レジスタの値に関係なく、CEINTSRC レジスタから直接読み出せます。従ってソフトウェアは、CEINTSRCレジスタをポーリングする事で、割り込みをモジュール外に伝搬させる事なく、割り込みイベントを監視できます。

割り込みをクリアするには、CEINTSRC レジスタ内の対応するステータスビットと PENDIFビットの両方に、ソフトウェアで「1」を書き込む必要があります。

暗号化エンジンは以下の割り込みイベントを生成します。

• アクセス応答エラー割り込み : ステータスはAREIFビット (CEINTSRC<3>)で示され、AREIEビット (CEINTEN<3>) で有効にします。このイベントは、暗号化エンジン DMA がメモリアクセス中にアドレスエラーに起因するバスエラーに遭遇した時点で発生します。例えば、暗号化エンジンが予約済みメモリまたは暗号化エンジンによるアクセスから保護されているメモリへのアクセスを試みた場合、この割り込みが生成されます。このエラーから回復するには、SWRST ビット (CECON<6>) を使って暗号化エンジンをソフトリセットする必要があります。

• DMA パケット完了割り込み : ステータスは PKTIF (CEINTSRC<2>) ビットで示され、PKTIEビット (CEINTEN<2>) で有効にします。このイベントは、暗号化エンジンがメモリの転送を完了した時点で発生します。

• バッファ ディスクリプタ処理割り込み : ステータスは CBDIF ビット (CEINTSRC<1>) で示され、CBDIE ビット (CEINTEN<1>) で有効にします。このイベントは、暗号化エンジンがバッファ ディスクリプタの処理を完了した時点で発生します。

• マスタ割り込み : ステータスは PENDIF ビット (CEINTSRC<0>) で示され、PENDIE ビット(CEINTEN<0>) で有効にします。これは、上記の各割り込み要因のステータス値の論理和によって生成されるグローバル割り込みです。暗号化エンジンから割り込みを生成するには、個々の割り込み要因に加えて、このグローバル割り込みも有効にする必要があります。

暗号化エンジンに属する全ての割り込みは、暗号化エンジン割り込みベクタに割り当てられます。

これに対応する暗号化エンジン割り込みフラグは CRPTIF (IFS3<11>) です。この割り込みフラグは、割り込みを引き起こした原因を処理した後に、ソフトウェアでクリアする必要があります。

暗号化エンジンは、対応する暗号化エンジン割り込みイネーブルビット CRPTIE (IEC3<11>) をセットする事で、割り込み要因として有効になります。

以下の割り込み優先度ビットと割り込み副優先度ビットも設定する必要があります。

• CRPTIP<2:0> (IPC26<28:26>)

• CRPTIS<1:0> (IPC26<25:24>)

暗号化エンジン割り込み発生時に使う割り込みサービスルーチンは、VOFF107<17:1>(OFF107<17:1>) ビットで設定します。

49.6.1 割り込みの設定

暗号化エンジンは、内部割り込みフラグ (AREIF、PKTIF、CBDIF、PENDIF) と、それらに対応する割り込みイネーブル制御ビット (AREIE、PKTIE、CBDIE、PENDIE) を備えます。しかし、割り込みコントローラ内には、暗号化エンジン専用の割り込みフラグビットは 1 つしかありません。このフラグビットは CRPTIF (IFS3<11>) であり、対応する割り込みイネーブル / マスクビットは CRPTIE (IEC3<11>) です。

暗号化エンジンは、他の周辺モジュールから独立した固有の優先度と副優先度を持ちます。CRPTIF ビットは、対応するイネーブルビット (CRPTIE) の状態に関係なくセットされます。必要に応じて、ソフトウェアで CRPTIF ビットをポーリングできます。

Note: IFSx、IECx、IPCx、OFFx レジスタの割り込みビットの詳細については、『PIC32ファミリ リファレンス マニュアル、セクション 08. 割り込み』(DS60001108) を参照してください。

Note: 暗号化エンジンの全ての割り込み条件は 1 つの割り込みベクタを共有します。

DS60001246A_JP - p. 49-40 © 2014 Microchip Technology Inc.

Page 41: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

CRPTIE ビットは、対応する CRPTIF ビットがセットされた時の割り込みコントローラの挙動を定義します。CRPTIE ビットをクリアした場合、割り込みコントローラは、対応するイベントが発生しても CPU 割り込みを生成しません。CRPTIE ビットをセットした場合、割り込みコントローラは、対応する CRPTIF ビットがセットされた時点で、後述の優先度と副優先度に基づいて CPU 割り込みを生成します。

割り込みを処理するユーザ ソフトウェアは、サービスルーチンを完了する前に、対応する割り込みフラグビットをクリアする必要があります。

暗号化エンジン割り込みの優先度は、割り込みコントローラの IPC26 レジスタで設定できます。この優先度は、割り込み要因をどの優先度グループに割り当てるのかを定義します。各優先度グループは 7 ( 最優先 ) から 0 ( 割り込みを生成しない ) の優先度を持ちます。ある割り込みをサービスしている時に、これよりも高優先度のグループに属する割り込みが発生した場合、サービス中の割り込みは保留されます。

副優先度ビットを使うと、同一優先度グループに属する割り込み要因に異なる優先度を設定できます。副優先度の値は、3 ( 最優先 ) から 0 ( 最低優先度 ) の範囲で設定できます。ある割り込みのサービス中に、優先度グループが同じで副優先度がより高い割り込みが発生しても、サービス中の割り込みは保留されません。ただし、同一優先度グループに属する 2 つの割り込みが保留中である場合、副優先度が高い方の割り込みが先に処理されます。

優先度グループと副優先度ビットを使うと、複数の割り込み要因に同一の優先度と副優先度を割り当てる事ができます。そのように設定した複数の割り込みが同時に発生した場合、それらの各割り込み要因が持つ自然順序優先度によって、生成される割り込みが決まります。

自然順序優先度は割り込み要因のベクタ番号に基づきます。ベクタ番号が小さいほど、割り込みの自然順序優先度が高くなります。自然順序優先度に従って保留された割り込み要因は、サービス中の割り込みの割り込みフラグがクリアされた後に、優先度、副優先度、自然順序優先度に基づいて順番に割り込みを生成します。

有効な割り込みが発生すると、CPU はその割り込みに割り当てられているベクタへジャンプします。割り込みのベクタ番号がそのまま自然優先順位となります。CPU は、ジャンプ先のベクタアドレスからコードの実行を始めます。このベクタアドレスから始まるユーザコードは、任意のアプリケーション動作を実行し、CRPTIF 割り込みフラグをクリア ( および、ソフトウェアでクリア可能な割り込みであれば、CEINTSRC レジスタ内の対応するイベントもクリア ) した後に、終了する必要があります。

詳細については、『PIC32 ファミリ リファレンス マニュアル、セクション 08. 割り込み』(DS60001108) を参照してください。

例 49-6: 割り込みを有効にする暗号化エンジン初期化コード/* Start the engine */CEBDPADDR = KVA_TO_PA(&enc_bd);CEINTEN = 0x07;CECON = 0x07;

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-41

Page 42: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.7 乱数生成器の動作

乱数生成器 (RNG) コアは、熱雑音を用いる真性乱数生成器 (TRNG) と、暗号的に安全な擬似乱数生成器 (PRNG) を実装しています。

TRNG は、複数のリングオシレータと、集積回路で生じる熱雑音を使って真性乱数を生成します。この乱数は PRNG の初期化用に使えます。

PRNG は柔軟なリニアシフト フィードバック レジスタ (LSFR) であり、最大で 64 ビット長のLFSR を表現できます。

49.7.1 TRNG の使用

TRNG の動作は、TRNGEN ビット (RNGCON<8>) を使って有効にします。このビットをセットすると、TRNG は乱数の生成を始めます。

乱数は RNGSEED1 および RNGSEED2 レジスタから読み出せます。これにより、最大で 64 ビット幅の乱数が得られます。これらのレジスタ内の有効ビット数は、RNGCNT レジスタで示されます。RNGSEED1 および RNGSEED2 レジスタから乱数を読み出す前に、RNGCNT レジスタの値が必要なビット数以上になるまで待つ事を推奨します。

49.7.2 PRNG の使用

PRNG の動作を開始する前に、初期シード値、多項式の長さ、多項式自体を設定する必要があります。

初期シード値は、RNGNUMGEN1 および RNGNUMGEN2 レジスタに書き込みます (PRNG が生成した乱数を読み出す場合も、これらのレジスタを使います )。

LOAD ビット (RNGCON<12>) に「1」を書き込むと、TRNG から初期シード値をロードする事もできます。この動作は、RNGSEEDx レジスタ内の現在の値を対応する RNGNUMGENx レジスタに転送します。

LSFR の多項式の長さ ( ビット数 ) は、PLEN<7:0> ビット (RNGCON<7:0>) で設定します。多項式の最大長は 64 ビットであるため、このレジスタの最大値は 64 です。しかし、実際に必要な長さは、アプリケーション要件と擬似乱数に要求する乱数度によって決まります。

多項式自体は RNGPOLYx レジスタで設定します。これらのレジスタ内のビットをセットすると、乱数生成用の対応するタップが有効になります。

PRNGEN ビット (RNGCON<9>) に「1」を書き込むと、PRNG の動作が有効になります。

例 49-7 のサンプルコードは、PRNG を [ 多項式の最大長 = 42 ビット、多項式 = x42 + x41 + x20

+ x19 + 1、設定値で乱数を初期化 ] に設定した後に、RPNG を有効にします。

例 49-7: PRNG の設定

PRNG を有効にした後、PLEN サイクルが経過してから RNGNUMGENx レジスタを読み出す必要があります。RNGNUMGENx レジスタを読み出すと、次の乱数の生成が始まり、これが完了するまでに PLEN クロックサイクルを要します。別の方法として、CONT ビット(RNGCON<10>) をセットする事で、PLEN クロックサイクル周期で新しい乱数を生成する事もできます。

RNGPOLY1 = 0x00C00003;RNGPOLY2 = 0x00000000;RNGNUMGEN1 = 0x090a0b0c;RNGNUMGEN2 = 0x0d0e0f10;RNGCON.PLEN = 42;RNGCON.CONT = 1;

DS60001246A_JP - p. 49-42 © 2014 Microchip Technology Inc.

Page 43: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.8 乱数生成器の割り込み

PIC32 の乱数生成器は割り込みを生成しません。

49.9 各種リセットの影響

49.9.1 デバイスリセット

全ての暗号化エンジンおよび乱数生成器レジスタは、デバイスリセット時にそれぞれのリセット状態に戻ります。暗号化エンジンで処理中であったデータ転送は、全て中止されます。TPRNGと PRNG は乱数生成動作を停止します。

49.9.2 パワーオン リセット

全ての暗号化エンジンおよび乱数生成器レジスタは、パワーオン リセット時にそれぞれのリセット状態に戻ります。

49.9.3 ノンマスカブル割り込み (NMI) リセット

NMI カウントダウンが終了してフルリセットが発生すると、全ての暗号化エンジンおよび乱数生成器レジスタは、それぞれのリセット状態に戻ります。

49.10 省電力モード中の動作

49.10.1 スリープ中の暗号化エンジンの動作

PIC32 がスリープに移行するとシステムクロックは停止します。スリープ中は、暗号化エンジンによる転送は一切発生しません。全てのクロックが停止するため、暗号化エンジンは動作を継続できません。スリープへ移行する前に、暗号化エンジンで処理中であった動作が完了するまで待機するかどうかは、ソフトウェアで決定する必要があります。

49.10.2 アイドル中の暗号化エンジンの動作

デバイスがアイドルに移行しても、システムおよび周辺モジュールバス クロック源は機能し続けます。暗号化エンジンはアイドル中も動作を継続でき、割り込みを生成して CPU を復帰させる事ができます。

49.10.3 スリープ中の乱数生成器の動作

PIC32 がスリープに移行するとシステムクロックは停止します。

PRNG は、CONT ビットがセットされていても、乱数の生成を停止します。RNG レジスタの状態は保持されるため、スリープ前の状態から乱数の生成を再開できます。

TRNG は、システムクロックに依存しないリングオシレータを使って動作するため、スリープ中も乱数の生成を続行できます。しかし、乱数をクロックに同期して RNGSEEDx レジスタに書き込む事はできません。

49.10.4 アイドル中の乱数生成器の動作

デバイスがアイドルに移行しても、システムおよび周辺モジュールバス クロック源は機能し続けます。

PRNG は、CONT ビットがセットされていれば、乱数の生成を継続します。

TRNG は乱数の生成を継続します。

乱数生成器は割り込みを生成できないため、CPU を復帰させる事はできません。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-43

Page 44: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

49.11 関連アプリケーション ノート

本セクションに関連するアプリケーション ノートの一覧を下に記載します。一部のアプリケーション ノートは PIC32 デバイスファミリ向けではありません。ただし概念は共通しており、変更が必要であったり制限事項が存在するものの利用が可能です。暗号化エンジンと乱数生成器(RNG) モジュールに関連する最新のアプリケーション ノートは下記の通りです。

タイトル アプリケーション ノート番号

現在、関連するアプリケーション ノートはありません。 N/A

Note: PIC32ファミリ関連のアプリケーション ノートとサンプルコードはMicrochip社のウェブサイト (www.microchip.com) でご覧頂けます。

DS60001246A_JP - p. 49-44 © 2014 Microchip Technology Inc.

Page 45: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

セクション 49. 暗号化エンジンと乱数生成器 (RNG)暗号化エンジンと

乱数生成器

(RN

G)

49

49.12 改訂履歴

リビジョン A (2013 年 11 月 )

本書は初版です。

© 2014 Microchip Technology Inc. DS60001246A_JP - p. 49-45

Page 46: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

PIC32 ファミリ リファレンス マニュアル

NOTE:

DS60001246A_JP - p. 49-46 © 2014 Microchip Technology Inc.

Page 47: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

2014 Microchip Technology Inc. DS60001246A_JP - p. 49-47

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。Microchip 社は、明示的、暗黙的、書面、口頭、法

定のいずれであるかを問わず、本書に記載されている情報に

関して、状態、品質、性能、商品性、特定目的への適合性を

はじめとする、いかなる類の表明も保証も行いません。

Microchip 社は、本書の情報およびその使用に起因する一切の

責任を否認します。Microchip 社の明示的な書面による承認な

しに、生命維持装置あるいは生命安全用途に Microchip 社の製

品を使用する事は全て購入者のリスクとし、また購入者はこ

れによって発生したあらゆる損害、クレーム、訴訟、費用に

関して、Microchip 社は擁護され、免責され、損害をうけない

事に同意するものとします。暗黙的あるいは明示的を問わず、

Microchip社が知的財産権を保有しているライセンスは一切譲

渡されません。

商標

Microchip 社の名称と Microchip ロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、

米国およびその他の国における Microchip TechnologyIncorporated の登録商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、

米国における Microchip Technology Incorporated の登録商標

です。

Silicon Storage Technologyは、その他の国におけるMicrochipTechnology Incorporated の登録商標です。

Analog-for-the-Digital Age、Application Maestro、BodyCom、

chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB 認証ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、PICC-18、PICDEM、

PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQI、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA、Z-Scale は、米国およびその他の国におけ

る Microchip Technology Incorporatedの登録商標です。

SQTP は、米国における Microchip Technology Incorporatedのサービスマークです。

GestICとULPPは、その他の国におけるMicrochip TechnologyGermany II GmbH & Co. & KG (Microchip TechnologyIncorporated の子会社 ) の登録商標です。

その他、本書に記載されている商標は各社に帰属します。

©2013, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.

ISBN: 978-1-63276-113-2

Microchip 社製デバイスのコード保護機能に関して次の点にご注意ください。

• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。

• Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流

通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所

有権の侵害に該当する可能性が非常に高いと言えます。

• Microchip 社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

• Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護

機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社

のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著

Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

Page 48: セクション 49. 暗号化エンジンと乱数生成器 (RNG)ww1.microchip.com/downloads/jp/DeviceDoc/60001246A_JP.pdf49.10 省電力モード中の動作 .....49-43 49.11 関連アプリケーション

DS60001246A_JP - p. 49-48 2014 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455

オースティン (TX)Tel:512-257-3370

ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088

シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075

クリーブランドIndependence, OH Tel:216-447-0464

Fax:216-447-0643

ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924

デトロイトNovi, MI Tel:248-848-4000

ヒューストン (TX) Tel:281-894-5983

インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453

ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608

ニューヨーク (NY) Tel:631-435-6000

サンノゼ (CA) Tel:408-735-9110

カナダ - トロントTel:905-673-0699 Fax:905-673-6509

アジア / 太平洋

アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2943-5100Fax:852-2401-3431

オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755

中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104

中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889

中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500

中国 - 杭州Tel:86-571-8792-8115 Fax:86-571-8792-8116

中国 - 香港 SARTel:852-2943-5100 Fax:852-2401-3431

中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470

中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205

中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066

中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393

中国 - 深圳Tel:86-755-8864-2200 Fax:86-755-8203-1760

中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118

中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256

中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130

中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049

アジア / 太平洋

インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123

インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632

インド - プネTel:91-20-3019-1500

日本 - 大阪Tel:81-6-6152-7160 Fax:81-6-6152-9310

日本 - 東京Tel:81-3-6880- 3770 Fax:81-3-6880-3771

韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302

韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934

マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859

マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068

フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069

シンガポールTel:65-6334-8870Fax:65-6334-8850

台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955

台湾 - 高雄Tel:886-7-213-7830

台湾 - 台北Tel:886-2-2508-8600 Fax:886-2-2508-0102

タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350

ヨーロッパ

オーストリア - ヴェルスTel:43-7242-2244-39

Fax:43-7242-2244-393

デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829

フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79

ドイツ - デュッセルドルフTel:49-2129-3766400

ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44

ドイツ - プフォルツハイムTel:49-7231-424750

イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781

イタリア - ベニスTel:39-049-7625286

オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340

ポーランド - ワルシャワTel:48-22-3325737

スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91

スウェーデン - ストックホルムTel:46-8-5090-4654

イギリス - ウォーキンガムTel:44-118-921-5800Fax:44-118-921-5820

各国の営業所とサービス

03/25/14