Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Datasheet DS40002138A_JP - p 1 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
ATECC608A-TFLXTLS CryptoAuthenticationtradeデータシート
はじめに
ATECC608A-TFLXTLS はATECC608A のプロビジョニング済みバージョンですTrustFLEX セキュア エレメント
はMicrochip 社の汎用プロビジョニング済みセキュリティ強化デバイス ファミリに属します本デバイスはIoT市場における最も一般的なユースケース向けのセキュア エレメントとしてセキュリティ デバイスに習熟していな
いユーザでも容易に使えるように設計されています ATECC608A-TFLXTLS の設定は ATECC608A-TNGTLS とほとんど同じですしかし ATECC608A-TFLXTLS は証
明書および鍵スロットに書き込まれるデータとそれらのスロットのロック オプションに関してより高い柔軟性を
備えていますこれらのスロットのアクセスポリシーはATECC608A- TFLXTLS を注文する前にTrust Platform Design Suite ツールにより設定されますATECC608A-TFLXTLS では単線式インターフェイス(SWI)を備えたデバ
イスも選べます 本書はATECC608A-TFLXTLS に固有のスロットおよび鍵コンフィグレーション情報を提供しますこれらの情報
は各 Data ゾーンスロットのアクセスポリシーを明確に定義します本書にはATECC608A-TFLXTLS に関連する
コマンドおよび IO 動作情報のみ記載しています「応用のための情報」ではアプリケーションの開発に役立つ
Microchip 社のハードウェアおよびソフトウェア ツールを紹介すると共にそれらのツールに関連するリンクも提供
します
特長
bull 一部のオプションを選択可能な定義済み Configuration ゾーン bull IO オプション
ndash I2C インターフェイス - I2C アドレスは一度だけ変更可能 ndash 単線式インターフェイス(SWI)
bull 1x プライマリ P-256 楕円曲線暗号(ECC)秘密鍵 - 製造時に固定設定 bull 1x 内部署名秘密鍵 - 鍵証明用 bull 3x セカンダリ P-256 ECC 秘密鍵 - ユーザによる再生成が可能 bull 署名者証明書からの署名者公開鍵 bull 公開鍵の検証をサポート bull 1x カスタマイズ可能な対称秘密鍵スロット bull I2C 通信を保護する IO 保護鍵 bull 製造時にカスタマイズ可能なセキュアブート公開鍵によるセキュアブートが可能 bull AES 鍵およびコマンドと一緒に使用可能な ECDHKDF 鍵スロット bull X509 圧縮証明書ストレージ bull カスタマイズ可能な証明書ストレージ スロット bull 8 ピン UDFN および 8 ピン SOIC パッケージ(数量は 2000 個単位)で提供
応用例
bull セキュア IoT TLS 12 および 13 接続 bull セキュアブートセキュア ファームウェア更新 bull 消耗品アクセサリの認証 bull 知的財産およびデータ保護
Datasheet DS40002138A_JP - p 2 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
目次
はじめに 1
特長 1
応用例 1
1 ピンの構成と配置 6
2 EEPROM メモリおよびデータゾーン アクセスポリシー 7
21 ATECC608A-TFLXTLS の Configuration ゾーン 8 211 Configuration ゾーン内の変更可能なバイト 10
22 Data ゾーンとアクセスポリシー 11 221 Data ゾーンのデータタイプ 11
2211 秘密鍵 11 2212 公開鍵 12 2213 証明書の動的保存 12 2214 Secure Boot 13 2215 秘密鍵 13 2216 AES 鍵ストレージ 13 2217 IO 保護鍵 13 2218 一般的データストレージ 14
222 スロット設定の用語 14 223 ATECC608A-TFLXTLS のスロット設定のまとめ 15
23 ATECC608A-TFLXTLS の EEPROM OTP (One Time Programmable)ゾーン 25
3 スタティック RAM (SRAM)メモリ 26
31 TempKey 26 32 メッセージ ダイジェスト バッファ 27 33 代替鍵バッファ 27 34 SHA コンテクスト バッファ 27
4 一般コマンド情報 28
41 IO トランザクション 28 42 コマンドパケット 28 43 ステータスエラーコード 29 44 アドレスの指定 30
441 Configuration ゾーンのアドレス指定 30 442 OTP ゾーンのアドレス指定 30 443 Data ゾーンのアドレス指定 30
45 鍵署名証明書のフォーマット 32 451 ECC 鍵のフォーマット 32
4511 公開鍵のフォーマット 32 452 署名のフォーマット 33 453 証明書の保存 33
Datasheet DS40002138A_JP - p 3 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
5 デバイスコマンド 35
51 一般デバイスコマンド 35
511 Counter コマンド 35 512 Info コマンド 36
5121 Info - Revision 36 5122 Info - KeyValid 36 5123 Info - Device State 37 5124 Info - Write GPIO Output 37 5125 Info - Persistent Latch Read 38
513 Lock コマンド 38 5131 SlotLock 38
514 Nonce コマンド 39 5141 Nonce - Random 39 5142 Nonce - Fixed 40
515 Random コマンド 40 516 Read コマンド 40
5161 Clear Text Read 41 5162 Encrypted Read 41
517 SelfTest コマンド 42 518 SHA コマンド 42
5181 SHA - SHA256 Digest 43 5182 SHA - HMAC Digest 43 5183 SHA - Context Switching 44
519 UpdateExtra コマンド 45 5110 Write コマンド 45
51101 Data Zone - Clear Text Write 45 51102 Data Zone - Encrypted Write 46
52 非対称暗号コマンド 47 521 ECDH コマンド 47
5211 ECDH - Stored Key 47 5212 ECDH - TempKey Source 48
522 GenKey コマンド 49 5221 Private Key - Stored in Slot 49 5222 Private Key - Stored in TempKey 49 5223 Public Key Generation 50 5224 Public Key Digest Generation 50
523 SecureBoot コマンド 51 5231 SecureBoot - FullCopy 51 5232 SecureBoot - FullStore (Digest) 52
524 Sign コマンド 53 5241 Sign - Internal Message 53 5242 Sign - External Message 54
525 Verify コマンド 55 5251 Verify - External Public Key Mode 55 5252 Verify - Stored Public Key Mode 56 5253 Verify - Validate and Invalidate 57
Datasheet DS40002138A_JP - p 4 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
53 対称暗号コマンド 59 531 AES コマンド 59
5311 AES-ECB Encrypt 59
5312 AES-ECB Decrypt 59 5313 AES-GFM 60
532 CheckMac コマンド 60 533 GenDig コマンド 61
5331 GenDig - Config 61 5332 GenDig - OTP 62 5333 GenDig - Data 63 5334 GenDig - Shared Nonce 64 5335 GenDig - Counter 65 5336 GenDig - Key Config 65
534 KDF コマンド 66 5341 KDF - PRF 66 5342 KDF - AES 68 5343 KDF - HKDF 70 5344 KDF Output Encryption 71
535 MAC コマンド 71 5351 Non-Diversified MAC 72 5352 Diversified MAC 72
6 応用のための情報 74
61 ユースケース 74 62 開発ツール 75
621 Trust Platform Design Suite 75 622 ハードウェア ツール 75 623 CryptoAuthLib 76
63 TrustFLEX と TrustampGO の比較 76
7 I2C インターフェイス 77
71 IO 条件 77 711 スリープ中のデバイス 77 712 アクティブ中のデバイス 78
72 ATECC608A-TFLXTLS への I2C 送信 79 721 ワードアドレス値 79 722 I2C の同期 80
73 スリープ シーケンス 80 74 アイドル シーケンス 80 75 ATECC608A-TFLXTLS からの I2C 送信 81
8 単線式インターフェイス 82
81 IO トークン 82 82 IO フラグ 82 83 同期 83
831 IO タイムアウト 83
Datasheet DS40002138A_JP - p 5 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
832 同期手順 83 84 GPIO 84 85 単線式インターフェイスの接続 84
9 電気的特性 85
91 絶対最大定格 85 92 信頼性 85 93 AC パラメータ 全 IO インターフェイス 85
931 AC パラメータ I2C インターフェイス 86 932 AC パラメータ 単線式インターフェイス 87
94 DC パラメータ 全 IO インターフェイス 88 95 VIH VIL仕様 89
10 パッケージ図面 91
101 パッケージのマーキング情報 91 102 8 ピン UDFN 92 103 8 ピン SOIC 95
11 改訂履歴 98
Microchip 社のウェブサイト 99
顧客変更通知サービス 99
カスタマサポート 99
製品識別システム 100
Microchip 社のデバイスコード保護機能 101
法律上の注意点 101
商標 101
品質管理システム 102
各国の営業所とサービス 103
Datasheet DS40002138A_JP - p 6 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
ピンの構成と配置
1 ピンの構成と配置 表 1-1ピン配置
図 1-1 UDFN および SOIC パッケージのピン配置
Note UDFN の底面パッドは GND に接続する必要があります
ピン名 I2C デバイスの機能 SWI デバイスの機能
NC 未接続 未接続
GND グランド グランド
SDA I2C シリアルデータ 単線式 IO 信号
SCL I2C シリアルクロック入力 GPIO 信号
VCC 電源 電源
Datasheet DS40002138A_JP - p 7 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
2 EEPROM メモリの構成と Data ゾーンアクセスポリシー
EEPROM メモリは 1400 バイトの総容量を持ち以下のゾーンに分割されます
表 2-1 ATECC608A-TFLXTLS の EEPROM ゾーン
ゾーン 概要 命名法
Configuration 以下を格納する 128 バイト(1024 ビット)の EEPROM ゾーン
bull デバイス コンフィグレーション
bull スロット アクセスポリシー情報
bull カウンタ値
bull デバイスシリアル番号
bull ロック情報 LockConfig バイトは設定済みですConfiguration ゾーンに直接書き込む事は一
切できませんConfiguration ゾーンは常に読み出し可能です
Config[ab] = Configuration ゾーンの 1 フィールドに含まれるバ
イトのレンジ
Data 1208 バイト(97 K ビット)のゾーンが 16 個の読み出し専用または読み書き可能
汎用メモリスロットに分割されますスロットは以下の通りに分割されます bull スロット 0~7 36 バイトを格納
bull スロット 8 416 バイトを格納
bull スロット 9~15 72 バイトを格納 Configuration ゾーン内のバイトによって定義されるアクセスポリシー情報によ
り各スロットへのアクセス方法が決まりますATECC608A-TFLXTLS 内の各
DATA ゾーンスロットのアクセスポリシーは設定済みでありConfiguration ゾ
ーンによって定義されたスロット アクセスポリシーは完全な効力を有します
アクセスポリシーに応じてそのスロットに対する読み出しまたは書き込みが
可能かどうかが決まります
Slot[YY] = Data ゾーンのスロット
YY に保存された内容
OTP (One Time Programmable)
64 バイト(512 ビット)のゾーンが 2 つの 32 バイトブロックに分割されます
ATECC608A-TFLXTLS の OTP ゾーンには定義値が書き込み済みですOTP ゾ
ーンは変更できませんがいつでも読み出せます 詳細は 23 を参照してくだ
さい
OTP[bb] = OTP ゾーン内
の 1 バイト
OTP[aabb] = OTP ゾーン
内のバイトのレンジ
表 2-2 本書内の用語の意味 本書内で使う用語の意味を下表に示します
用語 意味
ブロック 1 ブロックは特定メモリゾーン内の 256 ビット(32 バイト)領域です業界標準の SHA-256 文書でも「ブロック」
という用語が使われますがこれはメッセージ入力の 512 ビット セクションを意味します本書では「ブロッ
ク」はハッシュ入力メッセージに言及する際にのみ使われます
KeyID KeyID は鍵値を保持するために割り当てられたスロットの番号です例えばKey 1 (Key[1]と表記する場合もあ
り)はSlot[1]に保存されます16 個ある全てのスロットは鍵を保持できますが平文読み出しを許可するよう設定
されたスロットが暗号コマンドによって公開鍵または秘密鍵として使われる事は一般的にありません
mode[b] Mode パラメータのビット b を示します
SRAM 入力および出力バッファと状態保存領域を格納しますユーザが直接このメモリにアクセスする事はできません 3 「スタティック RAM (SRAM)メモリ」を参照してください
ワード 1 ワードはブロックに対して読み書きする 4 バイトのデータですワードはデータアクセスの最小単位です
Datasheet DS40002138A_JP - p 8 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
21 ATECC608A-TFLXTLS の Configuration ゾーン
Configuration ゾーン内の 128 バイトは製造 ID データ一般的なデバイスおよびシステム コンフィグレーション情報
Data ゾーン内のスロットに対するアクセスポリシー設定を格納しますこのゾーンは 4 個の 32 バイトブロックとし
て構成されますConfiguration ゾーン内のバイトの値はいつでも Read コマンドを使って読み出せます
ATECC608A-TFLXTLS ではこれらの値の大部分は設定済みであり変更はできません柔軟性を高めるため一
部のコンフィグレーション バイトはMicrochip 社の Trust Platform Design Suite ツールを使って変更できます変更
可能なバイトを下表に示します変更後にロック可能なバイトについては211 「Configuration ゾーン内の変更可
能バイト」で説明します
Configuration ゾーンのバイトは下表の通りに設定済みです複数のオプションが示されている場合その中の 1 つの
設定だけが使えます
表 2-3 ATECC608A-TFLXTLS の Configuration ゾーン設定
バイト 名称 設定値 [LSB MSB]
概要
[03] SN[03] 01 23 xx xx シリアル番号の bit [03]
[47] RevNum 00 00 60 02 デバイス リビジョン番号
[812] SN[48] xx xx xx xx 01 シリアル番号の bit [812]
[13] AES_Enable 01 AES 動作は有効
[14](1) I2C_Enable xx b[71] Microchip 社が設定(デバイスごとに異なる)
b[0] 1 = I2C モードのデバイス 0 = SWI モードのデバイス
[15] 予約済み 00 Microchip 社が設定(常に 0x00)
[16](2) I2C_Address 6C I2C モードのデバイス 既定値の 7 ビット I2C アドレス = 0x36
[16](2) GPIO 制御 03 SWI モードのデバイス bull GPIO を出力として設定 bull 既定開始値は 0
[17] 予約済み 00 予約済み0 である事が必要
[18] CountMatch 00 カウンタ照合機能は無効
[19] ChipMode 01 b[73] 0x00 (クロック分周器モード = 高速)
b[2] 0 (ウォッチドッグ タイマを 13 s に設定)
b[1] 0 (IO は固定リファレンス モードを使用)
b[0] 1 (代替 I2C アドレスモードは有効)
[2051](3) SlotConfig 224 参照 各 Data ゾーンスロットに対するアクセス使用許可と制御用
に使用(2 バイト)
[5259] Counter[0] FF FF FF FF 00 00 00 00
どの鍵にもモノトニック カウンタ 0 の値を付加しない (この
カウンタは必要に応じてシステムカウンタとして使用可能)
[6067] Counter[1] FF FF FF FF 00 00 00 00
どの鍵にもモノトニック カウンタ 1 の値を付加しない (この
カウンタは必要に応じてシステムカウンタとして使用可能)
[68] UseLock 00 UseLock Key は無効
Datasheet DS40002138A_JP - p 9 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き バイト 名称 設定値
[LSB MSB] 概要
[69] VolatileKey Permission
00 揮発性鍵パーミッションは無効
[7071](4) SecureBoot 03 F7 b[1512] 0xF セキュアブート公開鍵をスロット 15 に保存する b[118] 0x7 セキュアブート ダイジェストをスロット 7に保存する b[74] 0x0 0 に設定する必要あり b[3] 0 ランダムノンスは必須ではないが使用する事を推奨
b[2] 0 セキュアブート持続性ラッチを無効にする
b[10] 0b11 セキュアブート FullDig モードを有効にする
[7071](4) SecureBoot 07 F7 全てのビット値はbit 2 を除いて上の行と同じ
b[2] 1 セキュアブート持続性ラッチを有効にする
[72] KdfIvLoc 00 効果なし(このコンフィグレーションでは ChipOptionsKDFPROT は
暗号化を強制しないため)
[7374] KdfIvStr 69 76 効果なし(このコンフィグレーションでは ChipOptionsKDFPROT は
暗号化を強制しないため)
[7583] 予約済み 全て 0 0 である事が必要
[84] UserExtra 00 Data ゾーンがロックされた後に UpdateExtra コマンドを使って変
更可能な 1 バイト値 (この値が 0 である場合にのみ UpdateExtraによる書き込みが可能)
[85] UserExtraAdd 00 このバイトの値が 0x00 ではない場合 本デバイスの I2C アドレス このバイトの値が 0x00 である場合 UpdateExtra コマンドを使っ
てこのバイトに値を書き込み可能
[86] LockValue 00 Data ゾーンはロック済みであるためこの値は 0x00 です
[87] LockConfig 00 Configration ゾーンはロック済みであるためこの値は 0x00 で
す
[8889] SlotLocked FF FF ATECC608A-TFLXTLS の場合以下の各スロットは個別にロック可
能(Lockable)にできます スロット 2~6810~121315 その他のスロットは全て書き込み禁止です
Datasheet DS40002138A_JP - p 10 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き バイト 名称 設定値
[LSB MSB] 概要
[9091] ChipOptions 0E 60 b[1512] 0x6 (IO 保護鍵をスロット 6 に設定)
b[1110] 0b00 (平文での KDF 関数の出力を許可するが暗 号化は可能)
b[98] 0b00 (平文での ECDH マスタ秘密鍵の出力を許可
するが暗号化は可能)
b[74] 0 である事が必要
b[3] 1 = ヘルステストに合格しなかったためにコマンド
実行が失敗した場合常に Health Test Failure ビッ
トがクリアされる
異常の症状が過渡的であった場合2 回目のコマン
ドで合格する可能性があります
b[2] 1 (KDF AES モードは有効)
b[1] 1 (IO 保護鍵は有効)
b[0] 0 (復帰時にパワーオン セルフテストは無効)
[9295] X509format 00 00 00 00 証明書のフォーマッティングは無効無視
[96127](3) KeyConfig 224 参照 各 Data ゾーンスロットに対する追加のアクセス使用許可と制
御用に使用(2 バイト)
Note ATECC608A-TFLXTLS の Configuration ゾーン オプション 以下のバイトはMicrochip 社の Trust Platform Design Suite ツールを使って設定できます
1 バイト 14 (I2C_Enable) はデバイスが I2C モードと SWI モードのどちらで動作するのか制御します 2 バイト 16 の機能はデバイスが I2C モードと SWI モードのどちらに設定されているかに応じて異なります 3 SlotConfig と KeyConfig は一部のスロット向けの恒久的ロックまたはロック機能に関する選択可能オプションを
格納します詳細は 224 「ATECC608A-TFLXTLSのスロット アクセスポリシーの詳細」を参照してください 4 バイト[7170] は有効なセキュアブートが発生するまでプライマリ秘密鍵の使用を無効にするかどうか指定し
ます詳細は 224 「セキュアブート オプション」と表 2-4 を参照してください
211 Configuration ゾーン内の変更可能なバイト
Configuration ゾーンはロック済みであるためこのゾーン内のバイトに直接書き込む事はできませんしかし一部
のバイトは別のコマンドを使って変更できます SlotLocked ビット ATECC608A-TFLXTLS の場合以下の各スロットは個別にロック可能(Lockable) にするかどうか設定できます
スロット 2~6810~12 1315 Trust Platform Design Suite ツールによりこれらの各スロットは製造時に固定またはロック済みに設定できますス
ロット 10~12 は常に同じ設定にする必要がありますロック可能(Lockable) に設定されたスロットはLock コマン
ドの SlotLock モードを使ってロックできますロック可能なスロットは個々に 1 度だけロックできます1 度ロッ
クしたスロットは変更もロックの解除もできなくなりますがそのスロットに対して定義されているアクセスポリ
シーに基づいて使う事ができます I2C アドレスの再定義 本デバイスはI2C アドレスが 1 度だけ変更できるように設定されていますUpdateExtra コマンドを使って
Configuration ゾーン内のバイト 85 に新しい I2C アドレスを書き込みますこのバイトを非 0 値に設定するとデバ
イス コンフィグレーションは既定値アドレスの代わりにバイト 85 の値を I2C アドレスとして使います新しいアド
レスを有効にするにはこのバイトを書き換えた後にデバイスの電源を 1 度遮断するかデバイスをスリープモード
に移行させる必要があります
Datasheet DS40002138A_JP - p 11 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
重要 I2C アドレスを変更する必要がない場合このバイト位置に既定値 I2C アドレスを書き込む必要が
あります
UserExtra バイト UserExtra バイトは任意の目的で使えますこのバイトはUpdateExtra コマンドを使って 1 度だけ更新できます
Counter[01] 本デバイスはカウンタを使いませんがカウンタは有効なままです必要に応じシステムはこれらのカウンタを使
う事ができますカウンタは 0 に初期化され最大 2097151 までカウントできますCounter コマンドにより
カウンタ値のインクリメントまたは読み出しが可能ですこれらのカウンタは本デバイスの他の機能とは無関係で
ありシステムによって自由に使う事ができます
22 Data ゾーンとアクセスポリシー
以下では各スロットに割り当てられているアクセスポリシー情報について説明します実際のアクセスポリシー情
報はEEPROM Configuration ゾーン内の SlotConfig および KeyConfig セクションに保存されます各 Data ゾーン
スロットには2 つの Slot Configuration バイトと 2 つの Key Configuration バイトが割り当てられていますこれら
の 4 バイトにより各スロットの「アクセスポリシー」が構成されますスロットに保存されるデータのタイプは
そのスロットのアクセスポリシーによって決まります
221 Data ゾーンのデータタイプ 以下ではATECC608A-TFLXTLS のデータスロットに保存できる各種データタイプについて説明します
2211 秘密鍵
ECC 秘密鍵はECC セキュリティの基本構成要素ですこれらの鍵は非公開かつ各デバイスに対して一意であり
読み取る事は決してできません通常ECC 秘密鍵はセキュア エレメントの TRNG によりランダムに生成され
ECC 秘密鍵として設定されたスロットでセキュアに保持されます
プライマリ秘密鍵 これはプライマリ認証鍵ですこの鍵は恒久的であり変更はできません各デバイスは独自の一意秘密鍵を保有し
ます
この鍵は以下の 2 つのプライマリ楕円曲線関数向けに使えます
bull 認証のための ECDSA 署名 bull 鍵合意のための ECDHECDH 出力を暗号化する必要がある場合IO 保護鍵を最初にセットアップする必要があ
ります セットアップの詳細は 2217 「IO 保護鍵」を参照してください
このプライマリ秘密鍵は対応する公開鍵と X509 証明書を生成するための基本の鍵です
セカンダリ秘密鍵 これらは将来のユースケース(追加のサービス認証等)のために使える追加の秘密鍵ですこれらの鍵は以下のプ
ライマリ楕円曲線関数向けに使えます bull 認証のための ECDSA 署名 bull 鍵合意のための ECDHECDH 出力を暗号化する必要がある場合IO 保護鍵を最初にセットアップする必要があ
りますセットアップの詳細は 2217 「IO 保護鍵」を参照してください bull GenKey
内部で生成した新しいランダム秘密鍵をスロットに上書きするために使います
プライマリ鍵および証明書は恒久的であり変更できませんがセカンダリ鍵は内部生成した新しい鍵(GenKey コマ
ンドモード = 0x04 を使用)で上書きする事により鍵の削除およびローテーションとリモート プロビジョニング
が可能です
Datasheet DS40002138A_JP - p 12 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
これらの鍵はスロットのロックも可能です(KeyConfigLockable ビット = 0 に設定)すなわちSlot Lock モードで
Lock コマンドを使う事により現在の鍵を恒久的に保存できます(GenKey コマンドによる変更から保護できます)鍵を変更した場合ATECC608A-TFLXTLS 内で新しい鍵を適切に保護するために鍵の証明(Key Attestation)が必要で
すその後に新しい鍵は信頼可能となります 鍵の証明(Key Attestation) スロット 1 内の秘密鍵は内部署名専用の鍵として設定されますすなわちこの鍵はGenKey または GenDig コ
マンドによって内部で生成されたメッセージに署名する事しかできません(この鍵を使って外部メッセージに署名する
事はできません)この機能は本デバイスを使う側にデバイスの署名者鍵(公開鍵)と鍵に関わるデバイスの設定情
報が信頼できる事を証明します
2212 公開鍵
公開鍵は ECC 秘密鍵と関連付けられます各 ECC 秘密鍵は独自の一意公開鍵を持ちます検証目的で公開鍵を保存
するために複数のスロットが別に設定されていますこれらはしばしば信頼の基点(Root of Trust)公開鍵のセキュ
ア ストレージとして使われますこれらの鍵のスロットは以下の 2 通りのモードで使えます bull 恒久的公開鍵 - このモードでは要求される公開鍵を「ペアレント公開鍵」スロット(スロット 13)に書き込み
そのスロットをロックする事で鍵を恒久的としますこのモードでは「有効な公開鍵」スロット(スロット 14)を使いません
bull セキュアに更新可能な公開鍵 - このモードでは「ペアレント公開鍵」スロットにペアレント公開鍵を書き込ん
でロックします次に検証する公開鍵を「有効な公開鍵」スロットに書き込みます最後にペアレント公開
鍵に対応する秘密鍵(デバイス外部に保存)を使って公開鍵を検証する事でその使用を有効にすると共に不正な
変更を防ぐ必要がありますこの処理に関する詳細は 2212 「有効な公開鍵」を参照してください ペアレント公開鍵 ペアレント公開鍵はデバイスの外部に保存された ECC 秘密鍵から生成されるプライマリ システム鍵です
有効な公開鍵 有効な公開鍵は使用前に有効にする必要があります有効な公開鍵を更新する場合鍵を無効にしてから更新する
必要があります有効化と無効化はVerify コマンドを Validate または Invalidate モードで使う事により行います
5253 「Verify - Validate と Invalidate」を参照してください
2213 証明書の動的保存 ATECC608A-TFLXTLS のストレージは鍵の保存用に構成されていますX509 証明書はATECC608A-TFLXTLSスロットのサイズより大きくなる傾向があるため圧縮フォーマットを使いますこの方法は動的な証明書情報を
デバイスに保存してある程度の制限を課するため部分的証明と呼ばれる手法よりも優れます動的な情報とはデ
バイスごとに異なると期待できる証明書内容です(例 公開鍵有効期限等)ファームウェアには静的情報(全ての
証明書で同じ内容のデータ)を格納した完全な X509 証明書のテンプレートによる証明書定義(CryptoAuthLib からの
atcacert_def_t)と圧縮された証明書内の動的情報から完全な証明書を再構成するための方法に関する命令を備えて
いる事が求められます
以下のアプリケーション ノートに圧縮された証明書のフォーマットが記載されています
ATECC Compressed Certificate Definition
CryptoAuthLib ライブラリにも圧縮された証明書向けの atcacert モジュールが含まれています
デバイス証明書 デバイス証明書は実際のエンドユニットに関する情報で構成されますATECC608A-TFLXTLS の場合デバイス
証明書はスロット 10 に保存されます
署名者証明書 署名者証明書はデバイス証明書に署名するために使われる証明者に関する情報で構成されますATECC608A-TFLXTLS の場合署名者証明書はスロット 12 に保存されます完全な署名者証明書を完成させるには署名者公開鍵
も必要です
署名者公開鍵 署名者公開鍵は署名者と圧縮された署名者証明書に関する情報を検証するために必要な公開鍵ですATECC608A-TFLXTLS の場合署名者公開鍵はスロット 11 に保存されます
Datasheet DS40002138A_JP - p 13 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
下表に証明書に関係する ATECC608A-TFLXTLS 内の全てのスロットを示します
Slot 概要
0 プライマリ秘密鍵 この公開鍵はGenKey コマンドを Mode = 0x00 で使う事によりいつでも生成でき
ます
10 デバイス証明書 この証明書は圧縮フォーマットでこのスロットに保存されます 453 「証明書ストレー
ジ」参照
11 署名者公開鍵 4511 「公開鍵のフォーマット」参照
12 署名者証明書 この証明書は圧縮フォーマットで保存されます 453 「証明書ストレージ」参照
ATECC608A-TFLXTLS の量産デバイスの場合これらのスロットは恒久的(Permanent)またはロック可能(Lockable)として設定できます初期開発を容易にするためプロトタイプ デバイスのスロット 10~12 はロック可能
(Lockable)に設定されています
2214 セキュアブート ATECC608A-TFLXTLS ではSecureBoot コマンドは有効となっていますこのためシステムは完全なブートを
実行する前にブートローダを介してファームウェアを暗号論的に検証できますこの機能を使うと新しいファー
ムウェア イメージをロードする前に検証する事もできます
セキュアブート機能を使う前にP-256 ファームウェア署名鍵を確立する必要があります秘密鍵はファームウェ
ア イメージの署名用にファームウェア開発者が保有します公開鍵を「セキュアブート公開鍵」スロットに書き込
みスロットをロックする事で鍵を恒久的とする必要があります
ATECC608A-TFLXTLS の場合使用を許可する前に有効なセキュアブートを要求するようプライマリ秘密鍵を設定
する事もできますこの機能を有効にする方法は224 「セキュアブート オプション」を参照してください完全
な説明は 523 「SecureBoot コマンド」を参照してください
セキュアブートを実装するには各種のデータスロットが必要です
セキュアブート ダイジェスト セキュアブート ダイジェストはファームウェア アプリケーション コードに対して計算される 32 バイトの SHA256ダイジェストですこのダイジェストはファームウェアを更新するたびに更新する必要がありますATECC608A-TFLXTLS の場合ダイジェストはスロット 7 に保存されます セキュアブート公開鍵 セキュアブート公開鍵はセキュアブート ダイジェストと署名を有効にするための検証機能を実行するために使われ
ますセキュアブート公開鍵はスロット 15 に保存されます
2215 秘密鍵 このスロットは32 バイトの秘密値または秘密鍵を保存するために使えますこの鍵はATECC608A-TFLXTLS の
対称鍵コマンド(GenDigMACCheckMacKDFSHAHMACAES)で使えます
この鍵を書き込むにはIO 保護鍵を書き込み鍵として使う暗号化書き込みが必要です従って秘密鍵を書き込む
前に 2217 「IO 保護鍵」を設定する必要があります
2216 AES 鍵ストレージ ECDH および KDF 等のコマンドは対称鍵を出力しますオプションによりこれらの鍵はスロットに安全に保存して
使用できますAES 鍵ストレージ スロットはこれらの鍵の保存先として設定済みです複数の鍵を 1 つのスロッ
トに保存する事ができます
2217 IO 保護鍵 VerifyECDHSecureBootKDF コマンドではオプションにより IO 保護機能を使って一部のパラメータを暗
号化し一部のレスポンスを検証できます(MAC コマンドによる)これは物理的 I2C バス上での中間者攻撃を防ぐ
ために役立ちますしかしこの機能を使う前にATECC608A-TFLXTLS は一意の IO 保護鍵を生成して保存する事
で原則的に互いにペアリングする必要がありますペアリング処理は最初のブート時に発生する必要があります
IO 保護鍵の生成
1 MCU は random コマンドを使ってランダムな 32 バイト IO 保護鍵を生成します 2 MCU は IO 保護鍵を MCU 内部のフラッシュに保存します
Datasheet DS40002138A_JP - p 14 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
3 MCU は IO 保護鍵を IO 保護鍵スロットに書き込みます 4 MCU はそのスロットをロックする事でIO 保護鍵を恒久的とします
ペアリングを確認するためMCU は MAC コマンドを使ってチャレンジを IO 保護鍵に対して発行しフラッシュに
保存されている IO 保護鍵と ATECC608A-TFLXTLS 内の IO 保護鍵が一致するか検証します
2218 一般的データストレージ 一部のスロットは一般的な公開データの保存をサポートするよう設定済みですこれらのスロットは制約なしに
アクセスできる任意のデータを保存するために使えますこれらのスロットは平文で常に読み書き可能です
222 スロット設定の用語 以下に設定オプションの説明に使う用語をアルファベット順に記載します
用語 意味
AES Key AES コマンドの鍵ソースと使えるスロットATECC608A-TFLXTLS ではAES 鍵は 128 ビット
幅を持つ
Always Write 書き込みコマンドを使っていつでも平文で書き込めるスロット
Clear Read パブリックである(秘密ではない)と見なされその内容を読み出しコマンドを使って平文で読み出
せるスロット
ECDH 楕円曲線ディフィー ヘルマン(Elliptic Curve Diffie Hellman) ECDH コマンドで使える秘密鍵
Encrypted Write スロットに書き込むには指定された書き込み鍵に基づく暗号化書き込みを使う必要がある Ext Sign 外部(任意の)メッセージを署名するために使える秘密鍵 Int Sign GenKey または GenDig コマンドによって生成された内部メッセージに署名するために使える秘
密鍵デバイス内部の鍵と設定を証明するために使用
Lockable 将来のある時点でロックできるスロット1 度ロックしたスロットの内容は変更できない(読み出
し使用のみ可能)
No Read 秘密であると見なされ読み出しコマンドを使って読み出す事ができないスロット秘密鍵と対
称秘密鍵は常に「No Read」として設定する必要がある
No Write 書き込みコマンドを使って変更できないスロット
Permanent 恒久的で変更不可能な秘密鍵この秘密鍵は工場でのプロビジョニング中に内部生成される
Updatable 後でランダムに内部生成された秘密鍵により上書き可能な秘密鍵初期値は工場でのプロビジョ
ニング中に内部生成される
Validated 公開鍵はペアレント公開鍵によって有効にされた後に Verify コマンドでのみ使える
223 ATECC608A-TFLXTLS のスロット設定のまとめ ATECC608A-TFLXTLS は各種の用途向けに設定可能な 16 個のスロットを備えています ATECC608A-TFLXTLSにおけるこれらのスロットの設定と推奨ユースケースを下表に示します
Slot ユースケース 概要 プライマリ コンフィグレーション
0 プライマリ秘密鍵 プライマリ認証鍵 PermanentExt SignECDH
1 内部署名秘密鍵 内部鍵とデバイスのステートを証明するためだけ
に使える秘密鍵任意メッセージの署名には使え
ない
恒久的Int Sign
2 セカンダリ秘密鍵 1 その他の用途向けのセカンダリ秘密鍵 変更可能Ext SignECDHLockable
Datasheet DS40002138A_JP - p 15 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き Slot ユースケース 概要 プライマリ コンフィグレーション
3 セカンダリ秘密鍵 2 その他の用途向けのセカンダリ秘密鍵 変更可能Ext SignECDHLockable
4 セカンダリ秘密鍵 3 その他の用途向けのセカンダリ秘密鍵 変更可能Ext SignECDHLockable
5 秘密鍵 秘密鍵のストレージ No ReadEncrypted write (6)LockableAES key
6 IO 保護鍵 特定コマンドの I2C バス通信(IO)を保護するため
に使う鍵 使用前に設定する必要がある No readClear writeLockable
7 セキュアブート ダイジェスト
セキュアブート ダイジェストのストレージこ
れは内部機能であり読み書きはできない No readNo write
8 一般データ 一般的な公開データのストレージ(416 バイト) Clear read Always write Lockable
9 AES 鍵 ECDH および KDF 出力向けの中間鍵ストレー
ジ No readAlways writeAES key
10 デバイス圧縮証明書 CryptoAuthenticationtrade圧縮フォーマットでの証
明書プライマリ秘密鍵 Clear readNo write または書き
込み可能(アクセスポリシーの設
定に基づく)
11 署名者公開鍵 デバイス証明書に署名する CA (署名者)向けの
公開鍵 Clear readNo write または書き
込み可能(アクセスポリシーの設
定に基づく)
12 署名者圧縮証明書 CryptoAuthenticationtrade圧縮フォーマットでのデ
バイス証明書の CA (署名者)証明書のための証
明書
Clear readNo write または書き
込み可能(アクセスポリシーの設
定に基づく)
13 ペアレント公開鍵 または 一般データ
「有効な公開鍵」を有効無効にするためのペ
アレント公開鍵このスロットは公開鍵として使
える他一般データ(72 バイト)の保存用に使う
事も可能
Clear read Always write Lockable
14 有効な公開鍵 「有効な公開鍵」はペアレント公開鍵による
認証を受けない限りVerify コマンドで使う
事も変更する事もできません
Clear read無効化後に書き込
み可能スロット 13 内の鍵を
使って有効化
15 セキュアブート公開鍵 セキュアブート公開鍵 Clear read Always write Lockable
224 ATECC608A-TFLXTLS スロット アクセスポリシーの詳細
ATECC608A-TFLXTLS のスロット アクセスポリシーはATECC608A-TNGTLS よりも柔軟に設定できます以下の
2 つの領域で柔軟な設定が可能です 1 スロットを恒久的にロックするかロック可能(Lockable)なままにするか 2 セキュアブートを鍵と持続性ラッチに結び付けるかどうか
スロットロック オプション スロットロック オプションは各スロットで以下のどちらかに設定できます
Slot Lockable このスロットロック オプションに設定されたスロットは初期製造後の任意時点でエンドユーザに
よるロックが可能ですこのオプションにより本デバイスが Microchip 社から出荷された後の製造
工程中に鍵を設定できますまたはエンドユーザによる鍵の設定が可能となりますこのオプショ
ンが設定されたスロットはLock コマンドを使ってロックできますスロットが 1 度ロックされる
とその中のデータは 2 度と変更できなくなります
Datasheet DS40002138A_JP - p 16 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
Permanent Lock
デバイスが Microchip 社の工場から出荷された後は恒久的にロックされたスロットを変更する事
は決してできませんこれらのデバイスのプロビジョニングに先立ち正しいデータと鍵を
Microchip 社に提供する必要があります
セキュアブート オプション セキュアブート アクセスポリシーはセキュアブートが成功する前のコマンドの実行を制限するためのオプションを
提供しますコマンドアクセスを一切制限しない事も可能ですスロット 0 内の秘密鍵はほとんどのコマンドでの
使用に対してこの鍵が認証される前にセキュアブートを要求するよう設定できますこの機能を使うには表 2-3 内
の SecureBoot (バイト[7071])と KeyConfig (バイト[96127])の値を変更する必要がありますこれらの設定変更は
セキュアブートが成功した時に持続性ラッチを設定しますスロット 0 のアクセスポリシーを変更すると鍵の使用
は設定される持続性ラッチに結び付けられます
持続性ラッチの動作 持続性ラッチはアイドルおよびスリープモード中も状態を維持しますこのため電源投入後にセキュアブート動
作を 1 回実行するだけで済みますデバイスの電源電圧が最低許容レベルを下回ると持続性ラッチはリセットされ
新たにセキュアブートを実行する必要があります
プロトタイプ デバイス プロトタイプ デバイスの特定の既定値設定は変更できません既定値設定により全てのスロットのオプションはロ
ック可能(Lockable) に設定されていますこのためアプリケーションによって鍵を再設定する事でソフトウェア
の開発時に最大限の自由度が得られます最終的な設定はこの方法で設定する必要はありませんプロトタイプ デバイスではセキュアブート オプションを利用できませんこのオプションは量産デバイス向けにのみ選択可能で
すプロトタイプ デバイスでは I2C インターフェイスのみが利用可能です
スロット設定の詳細 以下では各スロット鍵とスロット設定に関する情報および各スロットを使って実行可能なコマンドとコマンドモー
ドについて詳細に説明します表 2-4 にATECC608A-TFLXTLS で利用可能な全ての鍵およびスロット設定値をスロ
ットごとに示しますこれらのオプションはI2C および SWI オプションの両方で利用できます
表 2-4 スロット 0 の設定情報
Slot 設定値 有効機能
0 オプション 1 持続性ラッチがスロットに接続されない場合
Datasheet DS40002138A_JP - p 17 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き Slot 設定値 有効機能
鍵 0x0053 プライマリ秘密鍵
bull P256 NIST ECC 秘密鍵を格納します(KeyType = 0x4)(1)
bull 対応する公開鍵はいつでも生成できます bull ランダムノンスが必要です
スロット 0x0085 bull このスロットは秘密です bull 外部メッセージに署名できます bull ECDH コマンドで使えます
有効なコマンド bull GenKey - Public Key Generation bull Sign - External Messages bull ECDH - Create a Shared Secret
オプション 2 スロットが持続性ラッチに接続される場合
鍵 0x1053 bull オプション 1 と同じ bull 持続性ラッチ ディセーブル オプションは有効
スロット 0x0085 bull オプション 1 と同じ
有効なコマンド bull GenKey - Public Key Generation bull Sign - External Messages (セキュアブートに成功後) bull ECDH - Create a Shared Secret (セキュアブートに成功後)
表 2-5 スロット 1 の設定情報
Slot 設定値 有効機能
1 鍵 0x0053 内部署名秘密鍵
bull P256 NIST ECC 秘密鍵を格納します(KeyType = 0x4)(1)
bull 対応する公開鍵はいつでも生成できます bull ランダムノンスが必要です
スロット 0x0082 bull このスロットは秘密です bull GenDig または GenKey によって生成された内部メッセージに署名できま
す bull ECDH は無効です
有効なコマンド bull GenKey - Public Key Generation bull Sign - Internal Messages(GenDig または GenKey によって生成)
表 2-6 スロット 2~4 の設定情報
Slot 設定値 有効機能
234 オプション 1 Slot Lockable
Datasheet DS40002138A_JP - p 18 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き Slot 設定値 有効機能
鍵 0x0073 セカンダリ秘密鍵 1~3
bull P256 NIST ECC 秘密鍵を格納します(KeyType = 0x4)(1)
bull 対応する公開鍵はいつでも生成できます bull この鍵を使うにはランダムノンスが常に必要です bull 各スロットは個別にロックできます
スロット 0x2085 bull このスロットではロックする前に GenKey を使って新しい ECC 秘密鍵を
生成できます bull このスロットは秘密です bull 外部メッセージに署名できます bull ECDH コマンドで使えます
有効なコマンド bull GenKey - Private Key Regeneration bull GenKey - Public Key Generation bull Sign - External Messages bull ECDH - Create a Shared Secret bull Lock - SlotLock Mode
オプション 2 Permanent Key
鍵 0x0053 bull スロットが恒久的にロックされる事を除きオプション 1 と同じ
スロット 0x0085 bull GenKey が使えない事を除きオプション 1 と同じ
有効なコマンド bull GenKey - Public Key Generation bull Sign - External Messages bull ECDH - Create a Shared Secret
表 2-7 スロット 5 の設定情報
Slot 設定値 有効機能
5 オプション 1 Slot Lockable
Datasheet DS40002138A_JP - p 19 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き Slot 設定値 有効機能
鍵 0x0038 秘密鍵 bull このスロットは最大で 2 個の AES 128 ビット(16 バイト)対称鍵を格納できま
す(KeyType = 0x6)(1)
スロット 0x468F bull 新しい対称鍵は暗号化書き込みによってのみ書き込み可能 bull 書き込みを暗号化するためにスロット 6 内の鍵を使用 bull スロットの内容は秘密 bull このスロットは CheckMac Copy コマンド向けに使えません
有効なコマンド bull Write - Data Zone - Encrypted Write bull AES - Encrypt Decrypt bull MAC コマンド bull CheckMac コマンド bull Lock - SlotLock mode
オプション 2 Permanent Key
鍵 0x0018 bull スロットが恒久的にロックされる事を除きオプション 1 と同じ
スロット 0x868F bull 暗号化書き込みを実行できない事を除きオプション 1 と同じ
有効なコマンド bull AES - Encrypt Decrypt bull MAC コマンド bull CheckMac コマンド
表 2-8 スロット 6 の設定情報
Slot 設定値 有効機能
6 オプション 1 Slot Lockable
鍵 0x007C IO 保護鍵
bull SHA256 対称鍵またはその他のデータを格納できます (KeyType = 0x7)(1) IO 保護鍵を使わない場合このスロットは他のデータ用に使えます
bull この鍵を使うにはランダムノンスが必要です bull このスロットは個別にロックできます
スロット 0x0F8F bull 平文でデータを書き込めます bull このスロットの内容は秘密であり読み出しはできません bull このスロットは CheckMac Copy コマンド向けに使えません
有効なコマンド bull Clear Text Write (スロット 6 に対して) bull Write - Encrypted (この鍵が暗号鍵である場合) bull MAC コマンド bull Lock - SlotLock
オプション 2 Permanent Lock
鍵 0x005C bull スロットが恒久的にロックされる事を除きオプション 1 と同じ
スロット 0x8F8F bull スロットが書き込めない事を除きオプション 1 と同じ
有効なコマンド bull Write - Encrypted (この鍵が暗号鍵である場合) bull MAC コマンド
Datasheet DS40002138A_JP - p 20 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
一般的にスロット 6 に保存された IO 保護鍵は Slot Lockable オプションのままにしておきますほとん
どの場合IO 保護鍵は各デバイスで一意ですユースケースによっては全てのデバイスで同じ IO 保
護鍵を使いますその場合Permanent Lock オプションを選択できます
表 2-9 スロット 7 の設定情報
Slot 設定値 有効機能
7 鍵 0x001C セキュアブート ダイジェスト bull 他のデータを保存するために定義されたスロット(KeyType = 0x7)(1)
スロット 0x8F9F bull このスロットは直接読み書きできません bull このスロットは秘密でありMAC コマンドで使う事はできません bull このスロットは CheckMac Copy コマンド向けに使えません
有効なコマンド bull SecureBoot - FullCopy bull SecureBoot - FullStore(Digest)
表 2-10 スロット 8 の設定情報
Slot 設定値 有効機能
8 オプション 1 Slot Lockable
鍵 0x003C 一般データ bull このスロットは一般データ向けに割り当てられています (KeyType =
0x7)(1)
スロット 0x0F0F bull このスロットに対し平文の読み書きが可能です bull このスロットは CheckMac Copy コマンド向けに使えません
有効なコマンド bull Clear Text Write bull Read - Clear Text bull GenDig - Data Source bull MAC コマンド bull Lock - SlotLock
オプション 2 Permanent Lock
鍵 0x001C bull スロットが恒久的にロックされる事を除きオプション 1 と同じ
スロット 0x8F0F bull スロットが書き込めない事を除きオプション 1 と同じ
有効なコマンド bull Read - Clear Text bull GenDig - Data Source bull MAC コマンド
注意
Datasheet DS40002138A_JP - p 21 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
表 2-11 スロット 9 の設定情報
Slot 設定値 有効機能
9 鍵 0x001A AES 鍵 bull このスロットは最大で 4 個の AES 128 ビット対称鍵を格納できます
(KeyType = 0x6)(1)
スロット 0x0F8F bull このスロットに対して平文の書き込みが可能です bull このスロットは秘密です bull このスロットは CheckMac Copy コマンド向けに使えません
有効なコマンド bull Clear Text Write bull AES - Encrypt Decrypt (ソース鍵) bull MAC コマンド
表 2-12 スロット 10 の設定情報
Slot 設定値 有効機能
10 オプション 1 Permanent Lock
鍵 0x001C デバイス圧縮証明書 bull このスロットはその他のデータの保存用として定義されています
(KeyType = 0x7)(1)
スロット 0x8F0F bull データを上書きする事はできません bull 平文でデータを読み出せます
有効なコマンド bull Read - Clear Text bull GenDig - Data Source bull MAC コマンド
オプション 2 Slot Lockable Note これはプロトタイプ デバイス向けの設定です
鍵 0x003C bull オプション 1 の全ての機能 bull このスロットはロック可能です
スロット 0x0F0F bull スロットが書き込み可能である事を除きオプション 1 と同じ
有効なコマンド bull Clear Text Write bull Read - Clear Text bull GenDig - Data Source bull MAC コマンド
表 2-13 スロット 11 の設定情報
Slot 設定値 有効機能
11 オプション 1 Permanent Lock
Datasheet DS40002138A_JP - p 22 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き Slot 設定値 有効機能
鍵 0x0010 署名者公開鍵
bull このスロットは ECC 鍵向けに定義されています(KeyType - 0x4)(1)
bull ECC 鍵は公開鍵です スロット 0x8F0F bull データを上書きする事はできません
bull 平文でデータを読み出せます
有効なコマンド bull Read - Clear Text bull GenDig - Data Source bull Verify コマンド bull MAC コマンド bull GenKey - Public Digest
オプション 2 Slot Lockable Note これはプロトタイプ デバイス向けの設定です
鍵 0x0030 bull オプション 1 の全ての機能 bull このスロットはロック可能です
スロット 0x0F0F bull スロットが書き込み可能である事を除きオプション 1 と同じ
有効なコマンド bull Clear Text Write bull Read - Clear Text bull GenDig - Data Source bull Verify コマンド bull MAC コマンド bull GenKey - Public Digest
表 2-14 スロット 12 の設定情報
Slot 設定値 有効機能
12 オプション 1 Permanent Lock
Datasheet DS40002138A_JP - p 23 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
続き Slot 設定値 有効機能
鍵 0x001C 署名者圧縮証明書 bull このスロットはその他のデータの保存用として定義されています
(KeyType = 0x7)(1)
スロット 0x8F0F bull データを上書きする事はできません bull 平文でデータを読み出せます
有効なコマンド bull Read - Clear Text bull GenDig - Data Source bull MAC コマンド
オプション 2 Slot Lockable Note これはプロトタイプ デバイス向けの設定です
鍵 0x003C bull オプション 1 の全ての機能 bull このスロットはロック可能です
スロット 0x0F0F bull スロットが書き込み可能である事を除きオプション 1 と同じ
有効なコマンド bull Clear Text Write bull Read - Clear Text bull GenDig - Data Source bull MAC コマンド
表 2-15 スロット 13 の設定情報
Slot 設定値 有効機能
13 オプション 1 Slot Lockable
鍵 0x0030 ペアレント公開鍵または一般データ
bull このスロットは ECC 鍵向けに定義されています(KeyType - 0x4)(1)
bull このスロットはロック可能です
スロット 0x0F0F bull スロットには平文で書き込み可能(ロックされていない場合) bull スロットは常に読み出し可能
有効なコマンド bull Clear Text Write bull Read - Clear Text bull Lock - SlotLock bull Verify コマンド bull MAC コマンド bull GenDig - Data Source
オプション 2 Permanent Lock
鍵 0x0010 bull スロットが恒久的にロックされる事を除きオプション 1 と同じ
スロット 0x8F0F bull スロットが書き込めない事を除きオプション 1 と同じ
有効なコマンド bull Read - Clear Text bull Lock - SlotLock bull Verify コマンド bull MAC コマンド bull GenDig - Data Source
Datasheet DS40002138A_JP - p 24 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
重要 スロット 13 をペアレント公開鍵として設定する場合オプション 2 Permanent Lock に設定して
更新不可能にする事が必要です一般的データに対してはどちらのオプションでも使えます
表 2-16 スロット 14 の設定情報
Slot 設定値 有効機能
14 鍵 0x0012 有効な公開鍵
bull このスロットは ECC 鍵向けに定義されています(KeyType - 0x4)(1)
bull 公開鍵は有効化済み(validated)であれば Verify コマンドによって使う事が
できます スロット 0x1F0D bull 書き込みモードは PubInvalid に設定
bull 鍵が最初に無効化(invalidated)されればスロットへ書き込み可能 bull スロットは常に平文で読み出し可能
有効なコマンド bull Write - Clear Text (スロットは最初に無効である事が必要) bull Read - Clear Text bull Verify - ValidateInvalidate bull Verify - Stored
表 2-17 スロット 15 の設定情報
Slot 設定値 有効機能
15 オプション 1 Slot Lockable
鍵 0x0030 セキュアブート公開鍵
bull このスロットは ECC 鍵向けに定義されています(KeyType - 0x4)(1)
bull このスロットはロック可能です スロット 0x0F0F bull ロックされていなければいつでも書き込み可能
bull スロットは常に読み出し可能
有効なコマンド bull Clear Text Write bull Read - Clear Text bull Lock - SlotLock bull MAC コマンド bull GenDig - Data Source
オプション 2 Permanent Lock
鍵 0x0010 bull スロットが恒久的にロックされる事を除きオプション 1 と同じ
スロット 0x8F0F bull スロットが書き込めない事を除きオプション 1 と同じ
有効なコマンド bull Read - Clear Text bull Lock - SlotLock bull MAC コマンド bull GenDig - Data Source
Note 1 により各スロットに対して指定されます
Datasheet DS40002138A_JP - p 25 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS EEPROM メモリおよびデータゾーン アクセスポリシー
23 ATECC608A-TFLXTLS の EEPROM OTP (One Time Programmable)ゾーン
OTP ゾーンは EEPROM アレイ内の 64 バイト(512 ビット)領域であり読み出し専用ストレージとして使えますこ
のゾーンは2 個のブロック(各 32 バイト)として構成されますATECC608A-TFLXTLS ではOTP ゾーンはロック
済みで出荷され以下の情報を格納します
I2C デバイス バージョン
77 64 4E 78 41 6A 61 65 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SWI デバイス バージョン
OTP ゾーンに書き込まれたデータバイト値は4 バイトまたは 32 バイト読み出しを使っていつでも読み出せますが
変更はできません
Datasheet DS40002138A_JP - p 26 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS スタティック RAM (SRAM)メモリ
3 スタティック RAM (SRAM)メモリ
本デバイスは SRAM アレイも内蔵しそこに入力コマンドまたは出力結果ノンス中間計算値使い捨て鍵SHAコンテクスト等を保存できますデバイスがスリープモードに移行するか電源が遮断された時このメモリの全ての
内容は無効となります
31 TempKey TempKey は SRAM アレイ内のプライマリ ストレージ レジスタであり各種の中間値を保存するために使えますこ
のレジスタの内容をデバイスから読み出す事はできません(デバイス自体は内部でこの内容を読み出して使用できま
す)
TempKey は 64 バイト長ですKDF および Nonce コマンドを使うとこのレジスタの上位 32 バイトと下位 32 バイ
トの両方に書き込む事ができますその他のコマンドは TempKey の最初の(下位の)32 バイトしか変更できません
最初の 32 バイトまたは 64 バイト全体を有効にできます本デバイスでは下位 32 バイトが無効である場合に上位
32 バイトを有効にする事はできません
TempKey レジスタのデータ部分と併せてデータのソースとその有効性に関する情報を示す一連のフラグが提供され
ますInfo コマンドを使うとこのレジスタに関連する一部のステータスフラグビットの値が下表に通りに返さ
れます
表 3-1 TempKey フラグ
名称 長さ 概要
KeyID 4 ビット GenDig または GenKey によって TempKey が生成された場合これらのビットはその計算に使われた
鍵を示しますこの 4 ビットはData ゾーンのスロットの 1 つを表します
SourceFlag 1 ビット TempKey における乱数化のソース 0 = 内部生成した乱数(Rand)
1 = 入力(固定)データのみ(内部で乱数を生成しない) (Input)
Generator 4 ビット 0 = TempKey は GenDig によって生成されなかった 1 = TempKey の内容は Data ゾーン内の 1 つのスロットを使って GenDig により生成された
(TempKeyKeyID は有意)
GenKeyData 1 ビット 0 = TempKeyKeyID は GenKey によって生成されなかった 1 = TempKey の内容は Data ゾーン内の 1 つのスロットを使って GenKey により生成された
(TempKeyKeyID は有意)
NoMacFlag 1 ビット 1 = TempKey の内容は SlotConfigNoMac = 1 に設定されたスロット内の値を使って生成された(MACコマンドはこの内容を使えない)
TempKey の計算に複数のスロットが使われる場合その中のいずれかのスロットに対して
SlotConfigNoMac がセットされているとこの NoMacFlag ビットはセットされます
Valid 1 ビット 0 = TempKey 内の情報は無効 1 = TempKey 内の情報は有効
本書では通常これらのフラグを TempKeySourceFlagTempKeyGenDigData 等と表記しますTempKeyValid が
「0」である場合他のフラグビットの状態に関係なくTempKey レジスタの内容を使おうとするとエラーが発生し
ます
TempKey レジスタと対応する全てのフラグは電源投入スリープブラウンアウトウォッチドッグ期間の終了改
ざん検出時にクリアされますデバイスがアイドルモードに移行しても TempKey の内容とフラグの状態は保持され
ます
一般的にコマンド実行中に TempKey の内容が何らかの目的で使われる(読み出される)とTempKeyValid を含む全
てのフラグは「0」にクリアされますTempKey を使うコマンドがエラーに遭遇した場合TempKey がクリアされ
るかどうかは状況によって異なります特定のコマンドまたはコマンド モードコンフィグレーションが TempKey を
使わない場合TempKey はクリアされませんTempKey は KDF または AES コマンドによってクリアされません
Datasheet DS40002138A_JP - p 27 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS スタティック RAM (SRAM)メモリ
実行結果を TempKey に保存するコマンドを実行するとValid フラグと実行動作に対応するその他のフラグがセッ
トされます
32 メッセージ ダイジェスト バッファ メッセージ ダイジェスト バッファは 64 バイトのレジスタでありTempKey レジスタが異なる情報を保持する必要
がある場合に入力メッセージ ダイジェストを Verify および Sign コマンドに渡すために使いますSHA コマンドを
使うとダイジェストをこのレジスタに直接書き込む事ができるため外部ホストのプログラミングを簡素化できます
Verify コマンドの出力による MAC の検証が必要である場合その MAC の計算に使うノンスを渡すためにこのレ
ジスタが常に使われますメッセージ ダイジェスト バッファ内のノンスの位置は署名メッセージ ダイジェストが
TempKey またはメッセージ ダイジェスト バッファのどちらを介して入力されるかによって異なります
Nonce コマンドは32 または 64 バイトの固定入力データをメッセージ ダイジェスト バッファに書き込む事ができ
ます
メッセージ ダイジェスト バッファは電源投入スリープブラウンアウトウォッチドッグ期間の終了改ざん検
出時にクリアされます一般的にメッセージ ダイジェスト バッファはNonce および SHA コマンドを除く大部分
のコマンドの実行後にクリアされますメッセージ ダイジェスト バッファは使用(読み出し)時に常にクリアされるた
め1 つのコマンドでリロードせずに使用する(読み出す)事しかできません
33 代替鍵バッファ 代替鍵バッファは 32 バイトのレジスタですTempKey レジスタで異なる情報を保持する必要がある場合KDF コマ
ンドを使ってこのレジスタに鍵を保存できますNonce コマンドを使うとこのレジスタに固定入力値を書き込む事が
できKDF コマンドを使うとこのレジスタに秘密値を書き込む事ができます
代替鍵バッファは電源投入スリープブラウンアウトウォッチドッグ期間の終了改ざん検出時にクリアされま
す
代替鍵バッファは1 つのルート鍵から 2 つの異なる SRAM ベース鍵を生成するために使いますそのための 1 つの
方法としてKDF コマンド(入力を AltKeyBuf に設定し出力を TempKey(Lo)に設定)を使います次に出力を
TempKey(Hi)に設定して KDF コマンドを再度実行しますこれにより2 つの異なる鍵を 1 つの場所(この場合は
TempKey)に保存できますTLS 13 に対しても同様の手順が必要です
34 SHA コンテクスト バッファ SHA コマンドは以下の 3 つの標準フェイズを使います
InitializeUpdateFinalize 多くの場合Update フェイズは複数回実行されますフェイズとフェイズの間の中間状態(SHA コンテクストとも呼
ぶ)を保存するために内部 SRAM メモリを使います
SHA 以外の ATECC608A-TFLXTLS コマンドはこの SHA コンテクスト バッファを読み出す事も書き込む事もでき
ません従ってそれらのコマンド実行が成功しようと失敗しようとSHA コンテクス バッファの内容は破壊され
ません本デバイス内の全ての SRAM メモリと同様にSHA コンテクスト バッファは電源投入スリープブラウ
ンアウトウォッチドッグ期間の終了改ざん検出時に 0 にクリアされます
Datasheet DS40002138A_JP - p 28 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
4 一般コマンド情報
ATECC608A-TFLXTLS における IO トランザクションコマンド構造エラーコードメモリアドレス指定鍵と署
名のフォーマットに関する一般情報を以下に記載します
41 IO トランザクション ATECC608A-TFLXTLS は I2C プロトコルを使ってホスト マイクロコントローラと通信しますセキュリティ コマン
ドが本デバイスへ送信されるとそのトランザクション内で本デバイスから以下の構造を持つレスポンスが返されま
す
表 4-1 IO トランザクションのフォーマット
バイト 名称 意味
0 Count そのグループ内でデバイスが送受信するバイトの数です(Count バイトパケットバイトチェックサム バイトを含む)従ってCount バイトの値は常に N+1 です(N = パケット内のバイトと 2 個のチェックサ
ム バイトを含むバイト数)
1 個の Count バイトを持つグループの場合パケットバイトの数が 50 であれば(+ 2x チェックサム バイ
ト)Count バイトの値は 53 に設定されますグループの最大サイズ (カウントの値)は 155 バイト最小
サイズは 4 バイトですこのレンジから外れた場合デバイスは IO エラーを返します
1~(N-2) Packet コマンドパラメータデータレスポンスのいずれかです 一般的なコマンドパケット情報について
は 42 「コマンドパケット」を参照してください各コマンドに固有のパラメータについては 5 「デ
バイスコマンド」を参照してください
N-1N Checksum カウントおよびパケットバイトの CRC-16 値です(CRC 多項式は 0x8005)CRC 計算の開始前にCRCレジスタは 0 に初期化されますカウントおよびパケットバイトの最終ビットが送信された後に内部
CRC レジスタ内の値はそのブロック内のチェックサム バイトの値と一致する必要があります最初に送
信される CRC バイト(グループ内の N-1 番目のバイト)は CRC 値の下位バイトでありグループ内の最
後のバイトは CRC 値の上位バイトです
ATECC608A-TFLXTLS は入力グループ内の Count 値がコマンド パラメータで指定されたサイズ要件を満たしてい
る事を要求しますCount 値がパケット内のコマンド オペコードまたはパラメータに対して矛盾している場合
ATECC608A-TFLXTLS はコマンドに応じて異なる方法で応答します応答にエラー通知が含まれる場合もあれば
一部の入力バイトが黙って無視される場合もあります
42 コマンドパケット コマンドパケットは表 4-2 の通りに構成されます
表 4-2 コマンドパケット
バイト 名称 意味
0 オペコード コマンドコードです 5 「デバイスコマンド」参照
1 Param1 第 1 パラメータ(必須)
2 ndash 3 Param2 第 2 パラメータ(必須)
0-155 Data 残りの入力データ(任意)
ATECC608A-TFLXTLS はグループ内の全てのバイトを受信した後にビジー状態に移行しコマンドの実行を開始し
ますデバイスがビジー中の場合ステータスも結果もデバイスから読み出す事はできませんビジー中の場合デ
バイスの IO インターフェイスは I2C 上の SDA 入力信号の全ての遷移を無視します
Datasheet DS40002138A_JP - p 29 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
43 ステータスエラーコード
本デバイスは専用のステータス レジスタを備えていませんステータスエラーコマンド結果は全て出力 FIFO に
格納されますデバイスからの全ての出力は入力グループと同じフォーマット(以下を含む)を持つ完全なグループ
としてシステムへ返されます
bull Count bull Packet bull 2 バイトの CRC
デバイスが入力コマンドグループの最初のバイトを受信した後はシステムから残りの全てのバイトがデバイスへ送
信されるまでシステムはデバイスから何も読み出せません
デバイスが復帰してコマンドを実行した後はデバイスの出力レジスタにエラーステータス結果バイトのいずれ
かが格納されシステムからその内容を読み出す事ができますグループの長さが 4 バイトである場合に返されるコ
ードの詳細を表 4-3 に示します一部のコマンドでは実行に成功した場合に 4 バイトより長いコードが返されます
デバイスから返されるパケットの説明は5 「デバイスコマンド」に記載しています
CRC エラーは常に他のどのタイプのエラーよりも前に返されますそれらはIO エラーが発生した事およびコマン
ドをデバイスへ再送信可能である事を示します複数のエラーが発生した場合CRC エラー以外のエラーの間に特別
な優先順位はありません
表 4-3 4 バイトグループ内のステータエラーコード
状態 エラー ステータス
概要
Successful Command Execution
0x00 コマンドは正常に実行された
Checkmac or Verify Miscompare
0x01 CheckMac または Verify コマンドは正しくデバイスへ送信されたが入力レスポ
ンスが期待した値に一致しなかった
Parse error 0x03 コマンドは正しく受信されたがATECC608A-TFLXTLS の状態(揮発性メモリおよ
びまたは EEPROM 内の設定)に関係なく長さコマンド オペコードパラメータ
のいずれかが無効であった
コマンドが再試行される前にコマンドビットの値を変更する必要があります
ECC Fault 0x05 ECC 処理中に計算エラーが発生したため結果は無効であった
コマンドを再実行すると成功する場合があります
Self Test error 0x07 セルフテスト エラーが発生したためデバイスはフォルトモード中(フォルトがク
リアされるまで待機中)
Health Test error 0x08 乱数生成器のヘルステスト エラーが発生したためエラーがクリアされるまでデバ
イスは乱数を必要とする後続のコマンドを実行できない
Execution error 0x0F コマンドは正しく受信されたがデバイスの現在の状態では実行できなかった
コマンドが再試行される前にデバイスの状態またはコマンドビットの値を変更す
る必要があります
After Wake Prior to First command
0x11 ATECC608A-TFLXTLS は正しい Wake トークンを受信した
Watchdog About to Expire 0xEE ウォッチドッグ タイマがタイムアウトする前に指定されたコマンドを完了できな
い
システムはアイドルまたはスリープモードへの移行によってウォッチドッグ タイ
マをリセットする必要があります
CRC or Other Communications error
0xFF コマンドは ATECC608A-TFLXTLS によって正しく受信されなかったためシステ
ム内の IO ドライバによってコマンドを再送信する必要があるコマンドの構文解
析または実行は試みられなかった
Datasheet DS40002138A_JP - p 30 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
44 アドレスの指定
以下ではATECC608A-TFLXTLS の各種メモリゾーンをアドレス指定するための詳細な方法を説明します
441 Configuration ゾーンのアドレス指定
Configuration ゾーンには4 バイトまたは 32 バイト単位でアクセスできます1 バイト単位でのアクセスはできませ
んConfiguration ゾーンのアドレスは 2 バイト(16 ビット)ですアドレスワードの最下位 5 ビットのみが
Configuration ゾーンのアドレス指定用に使われますATECC608A-TFLXTLS の場合これらのアドレスは読み出し
コマンドでのみ使えます
表 4-4 アドレスのフォーマット
バイト 1 Addr[158] バイト 0 Addr[70]
未使用 未使用 ブロック オフセット
Addr[158] Addr[75] Addr[43] Addr[20]
表 4-5 Configuration ゾーンのアドレス
ブロック No (Addr[43])
オフセット値(Addr[20])
000 001 010 011 100 101 110 111
00 [03] [47] [811] [1215] [1619] [2023] [2427] [2831]
01 [3235] [3639] [4043] [4447] [4851] [5255] [5659] [6063]
10 [6467] [6871] [7275] [7679] [8083] [8487] [8891] [9295]
11 [9699] [100103] [104107] [108111] [112115] [116119] [120123] [124127]
442 OTP ゾーンのアドレス指定
OTP (One Time Programmable)ゾーンには4 バイトまたは 32 バイト単位でアクセスできますこのゾーンは全部
で 64 バイトです1 バイト単位でのアクセスはできませんOTP ゾーンのアドレスは 2 バイト(16 ビット値)です
最下位 4 ビットのみがアドレス指定用に使われます
ATECC608A-TFLXTLS の場合これらのアドレスは読み出しコマンドでのみ使えます
表 4-6 アドレスのフォーマット
バイト 1 Addr[158] バイト 0 Addr[70]
未使用 未使用 ブロック オフセット
Addr[158] Addr[74] Addr[3] Addr[20]
表 4-7 OTP ゾーンのバイトアドレス
ブロック No (Addr[3])
ブロック オフセット値(Addr[20])
000 001 010 011 100 101 110 111
0 [03] [47] [811] [1215] [1619] [2023] [2427] [2831]
1 [3235] [3639] [4043] [4447] [4851] [5255] [5659] [6063]
443 Data ゾーンのアドレス指定
Data ゾーンへの読み書きアクセスはConfiguration および OTP ゾーンに比べると非常に複雑です全部で 16 個の
スロットが存在しサイズはスロットごとに異なります各スロットのアクセスポリシー(そのスロットに対する読み
出し書き込みアクセスを許可するかどうか) はスロットごとに制御します
Datasheet DS40002138A_JP - p 31 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
ATECC608A-TFLXTLS の場合
bull データスロット 8~91315 は平文として書き込み可能です bull データスロット 5~6 は暗号文で書き込み可能です bull データスロット 810~15 は平文として読み出し可能です bull 未指定のスロットは読み出しも書き込みもできません
表 4-8 データスロットのアドレス フォーマット
Data ゾーン バイト 1 Addr[158] バイト 0 Addr[70]
未使用 ブロック 未使用 スロット オフセット
データスロット[70] Addr[159] Addr[8] Addr[7] Addr[63] Addr[20]
データスロット[8] Addr[1512] Addr[118] Addr[7] Addr[63] Addr[20]
データスロット[159] Addr[1510] Addr[98] Addr[7] Addr[63] Addr[20]
データスロット[70] これらのスロットの 1 つに完全にアクセスするには2 回の 32 バイトアクセスまたは 9 回の 4 バイトアクセスが必要
です
表 4-9 Data ゾーンアドレス - スロット 0~7
スロット No (Addr[63])
ブロック No (Addr[8])
ブロック オフセット値(Addr[20])
000 001 010 011 100 101 110 111
0x0~ 0x7 00 [03] [47] [811] [1215] [1619] [2023] [2427] [2831]
01 [3235] 無効 無効 無効 無効 無効 無効 無効
データスロット[8] このスロットに完全にアクセスするには13 回の 32 バイトアクセスまたは 104 回の 4 バイトアクセス(またはそれら
のアクセスの組み合わせ)が必要です
表 4-10 Data ゾーンアドレス - スロット 8
スロット No (Addr[63])
ブロック No (Addr[8])
ブロック オフセット値(Addr[20])
000 001 010 011 100 101 110 111
0x8 0x0 [03] [47] [811] [1215] [1619] [2023] [2427] [2831]
0x1 [3235] [3639] [4043] [4447] [4851] [5255] [5659] [6063]
0xC [384387] [388391] [392395] [396399] [400403] [404407] [408411] [412415]
データスロット[159] これらのスロットに完全にアクセスするには3 回の 32 バイトアクセスまたは 80 回の 4 バイトアクセス(またはそれ
らのアクセスの組み合わせ)が必要です
Datasheet DS40002138A_JP - p 32 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
表 4-11 Data ゾーンアドレス - スロット 9~15
スロット No (Addr[63])
ブロック No (Addr[8])
ブロック オフセット値(Addr[20])
000 001 010 011 100 101 110 111
0x9~ 0xF 00 [03] [47] [811] [1215] [1619] [2023] [2427] [2831]
01 [3235] [3639] [4043] [4447] [4851] [5255] [5659] [6063]
10 [6467] [6871] 無効 無効 無効 無効 無効 無効 45 鍵署名証明書のフォーマット
以下ではECC 鍵署名圧縮した証明書のフォーマットについて詳細に説明します
451 ECC 鍵のフォーマット 公開鍵と秘密鍵のフォーマットはコマンドと鍵の長さによって決まります一般的に最上位バイト(MSB)はバス
上に最初に現れメモリ内の最低アドレスに格納されます以下ではページの左側に記載するバイトが MSB です
一貫性を保つためMicrochip 社は全てのパディング バイトを 0 に設定する事を推奨します
bull ECC 秘密鍵はPrivWrite コマンドに対する入力パラメータとしてのみユーザに提供されますこのパラメー
タの長さは常に 36 バイトであり最初の 4 バイト(32 ビット)は全てパディング ビットです ECC 公開鍵は各種コマンドに対する入力または出力パラメータとして提供されEEPROM に保存する事もでき
ますこれらの鍵は X 値と Y 値で構成されX 値が最初にバスまたはメモリ上に現れますこれらのフォーマッ
トは状況に応じて異なります bull 公開鍵が GenKey コマンドの出力または Verify コマンドへの入力である場合
32 バイトの X の後に 32 バイトの Y (36 バイト) パディングバイトなし bull 書き込みコマンド
公開鍵は書き込みコマンドを使っていつでも EEPROM に直接書き込む事ができます 72 バイトが次の通りにフォーマットされます 4x パディング バイトX (32 バイト)4x パディング バイトY (32 バイト)
bull GenKey コマンド SHA メッセージ公開鍵はGenKey コマンドによりハッシュ化して TempKey に格納できますSHA メッセー
ジは鍵のサイズとは無関係な各種のバイトを格納しますこれらのバイトの後に 25x パディング バイトX (32 バイト)Y (32 バイト)が続きます
bull Verify コマンド SHA メッセージ 保存された公開鍵の検証に Verify コマンドを使う場合メモリに保存されている鍵の SHA-256 ダイジェストに対して生成された署名の入力が必要ですそのような内部の SHA 計算は常に 72 バイト フォーマットに対して実行されます(公開鍵は EEPROM 内で 4x パディングバイトX (32 バイト)4x パディング バイトY (32 バイト)として保存されるため)
公開鍵が Verify コマンドによって検証されるよう設定されている場合デバイスは検証ステートを保存するために
メモリ内の最初のバイトの最上位 4 ビットを内部で使用します検証ステートは書き込みコマンドによって常に無
効ステート(0xA)に設定されその後に Verify コマンドによって有効ステート(0x5)に設定する事ができます
IO プロトコルの最下層について以下で説明しますIO プロトコルより上層ではコマンドを実装するために完全
に同じバイトがデバイスに対して双方向に転送されます以下ではエラーコードについて説明します
4511 公開鍵のフォーマット
ATECC608A-TFLXTLS は2 通りのフォーマットで P-256 楕円曲線公開鍵を使います以下の例により2 つのフォ
ーマットを詳細に示します
これらの例では下記のサンプル公開鍵(X および Y を固定幅のビッグエンディアン符号なし整数として表現)を使いま
す
X b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8 Y a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Datasheet DS40002138A_JP - p 33 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
コマンドに関わる公開鍵のフォーマット 公開鍵(GenKey)を返すコマンドまたは公開鍵をパラメータとして受け付けるコマンド(VerifyECDH) はX および
Y ビッグエンディアン符号なし整数を連結した 64 バイトとして公開鍵をフォーマットします
例 b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8 a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
保存された公開鍵のフォーマット Verify または SecureBoot コマンドで使うために公開鍵をスロットに保存する場合整数 X および Y をそれぞれ
36 バイトとなるようパディングしてからそれらを連結した 72 バイトとして公開鍵をフォーマットします
例 00000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8 00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Note スロット 8~15 のみが公開鍵を保存可能なサイズを有します
保存された有効な公開鍵のフォーマット 有効または無効な公開鍵のフォーマットはLSB の最上位 4 ビットを除けば保存された公開鍵のフォーマットと同
じです鍵が有効である場合の最下位ニブルは 0x5 であり無効である場合の最下位ニブルは 0xA ですこれらの値
は有効または無効モードで Verify コマンドを実行する事によって変更できます書き込み後の鍵の初期状態は無
効です
有効な公開鍵の例 50000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8 00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
無効な公開鍵の例 A0000000b2be345ad7899383a9aab4fb968b1c7835cb2cd42c7e97c26f85df8e201f3be8 00000000a82983f0a11d6ff31d66ce9932466f0f2cca21ef96bec9ce235b3d87b0f8fa9e
Note スロット 8~15 のみが公開鍵を保存可能なサイズを有します
452 署名のフォーマット
Sign コマンドによって生成および出力される ECDSA 署名および Verify または SecureBoot コマンドへ入力され
る ECDSA 署名は常に 64 バイトです署名は R 部分と S 部分に分割されますどちらも 32 バイトの長さを持ち常
に R が S の前にバス上に現れます署名の各部分は MSB 先頭でバス上に現れます(すなわち署名の MSB は最低メ
モリ位置に格納されます)
RS 署名の例 署名を返すコマンド(Sign)または署名をパラメータとして受け付けるコマンド(Verify SecureBoot)は署名を
R および S ビッグエンディアン符号なし整数を連結した 64 バイトとしてフォーマットします
例 R 7337887F8C39DF79FD8BF88DDFBFB9DB15D7B1AD68196AE3FB0CE5BFA2842DF3 S 72868A43A42831E950E1DA9F73B29F5C0ED8A96B2889E3CBBE8E61EA6C67F673
453 証明書の保存
完全な X509 証明書をデバイス内に保存すると複数の EEPROM メモリスロットを急速に使い果たしてしまう可能
性があります証明書の保存用にこれらのスロットを使った方が良い場合もあればそうではない場合もあります
これらのメモリ制限のためMicrochip 社は最小限の情報から完全な X509 証明書を再構成可能なエンコードを定義
しています
実際の X509 証明書の再構成はホストシステムによって行われますがその方法はエンコード済み証明書内に保存さ
れているデータによって決まりますシステム内の全デバイスに共通するデータはホストシステム内に保存できま
すその他のデータはデバイス内に保存されたデータから計算または抽出できます表 4-12 にX509 証明書内に
保存されるデータのタイプと1 つの 72 バイトスロットに証明書を収める事ができるエンコード方法を示します
Datasheet DS40002138A_JP - p 34 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 一般コマンド情報
表 4-12 証明書の保存
X509 証明書 エンコード済み証明書
X509 エレメント サイズ (バイト)
エンコード済み証明書のエレメント デバイス証明書 (ビット)
署名者証明書 (ビット)
シリアル番号 8-20 シリアル番号のソース 4 4
発行日付 13 圧縮フォーマット 19 19
有効期限 13 有効期限の年数 5 5
署名者 ID(2) 4 証明書の署名に使う特定署名者の ID (デバイ
ス証明書の場合)または署名者自身の ID (署名者証明書の場合)
16 16
AuthorityKeyIdentifier 20 Authority 公開鍵の SHA1 HASH 0 0
SubjectKeyIdentifier 20 Subject 公開鍵の SHA1 HASH 0 0
署名の R 32 デバイス内に保存 256 256
署名の S 32 デバイス内に保存 256 256
公開鍵の X(1) 32 秘密鍵から計算または デバイス内に保存(1)
0 256
公開鍵の Y(1) 32 秘密鍵から計算または デバイス内に保存(1)
0 256
na 0 証明書フォーマット 4 4
na 0 テンプレート ID 4 4
na 0 チェーン ID 4 4
na 0 予約済みユーザ定義 8 8
合計 (206~218 バイト)
576 ビット (72 バイト)
1088 ビット (136 バイト)
Note 1 デバイス証明書の場合デバイス公開鍵は秘密鍵から再生できます署名者証明書の場合通常公開鍵は別
のスロットに保存されます 2 デバイス証明書の場合証明書の署名に使う署名者の ID が保存されます署名者証明書の場合署名者の実際
の ID はデバイスがそれを識別できるように保存されます
スロット 8 は全部で 416 バイトを格納します証明書に保存されているシリアル番号のサイズによっては2 つの完
全な証明書を保存できない場合があります多くの場合信頼の輪(Chain of Trust)が構築済みのデバイスではデバイ
ス証明書署名者証明書署名者公開鍵をデバイス内に保存する必要があります
詳細はアプリケーション ノート『Compressed Certificate Definition』を参照してください
Datasheet DS40002138A_JP - p 35 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5 デバイスコマンド
以下ではATECC608A-TFLXTLS で使用可能な全てのコマンドと各コマンドのコマンドモードについて詳細に説
明しますこれらのコマンドは以下の 3 つのカテゴリに分類されます 1 一般デバイスコマンド
これらのコマンドはさらに 2 つのカテゴリに分類されます bull 一般デバイス アクセスコマンド デバイスとのデータ送受信用に使います通常これらのコマンドは暗
号機能を実行しません bull 一般暗号コマンド デバイスまたはシステムはこれらのコマンドを使えます通常これらのコマンドは
特定データスロットを対象として実行されません 2 非対称暗号コマンド
これらのコマンドはECC 公開鍵または秘密鍵を使う非対称暗号演算(鍵の生成メッセージの署名メッセ
ージの検証)を実行します これらのコマンドはECC Data ゾーンスロットに対してのみ使用できます
3 対称暗号コマンド これらのコマンドは対称暗号関数(ダイジェストまたは MAC の生成鍵導出AES 暗号化復号等)を実行しま
す
全てのコマンドの入力パラメータ 特に明記しない場合複数バイトから成る入力パラメータは入力パラメータ表にビッグエンディアン(MSB 先頭)として記載されますATECC608A-TFLXTLS はデータがリトルエンディアン(LSB 先頭)で送信される事を期待する事
に注意が必要です 51 一般デバイスコマンド
表 5-1 に一般デバイスコマンドの一覧を示します 表 5-1 一般デバイスコマンド
コマンド名 オペコード 概要
Counter 0x24 モノトニック カウンタのインクリメントと読み出しを行います
Info 0x30 デバイスからリビジョンおよびステータス情報を読み出すために使います
Lock 0x17 デバイス内のロック可能スロットを個々にロックするために使います
Nonce 0x16 ノンス(1 度だけ使われる数)を生成するかデバイスに渡すために使います
Random 0x1B システムによって使われる 32 バイト乱数を生成するために使います
Read 0x02 デバイスの各種ゾーンを読み出すために使います
SelfTest 0x77 内部の各種暗号計算エレメントをテストするために使います
SHA 0x47 システムによって汎用的に使われる SHA-256 または HMAC ダイジェストを計算
します
UpdateExtra 0x20 Configuration ゾーンがロックされた後にConfiguration ゾーン内のバイト 84 ま
たは 85 を更新するために使います
Write 0x12 デバイスに 4 また 32 バイトを書き込むために使います(認証および暗号化ありなし)
511 Counter コマンド
Counter コマンドはデバイスの Configuration ゾーン内に配置された 2 つのモノトニック カウンタの 1 つから 2 進
数カウント値を読み出しますカウンタのカウント可能最大値は 2097151 ですこの値を超えてカウントしようと
するとエラーコードが生成されますこれらのカウンタはカウント動作中に給電が中断してもカウント値が失わ
れないように設計されています電源喪失条件によってはカウント値が 2 つ以上インクリメントする場合がありま
す
Datasheet DS40002138A_JP - p 36 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
ATECC608A-TFLXTLS の場合カウンタはどの鍵にも割り当てられていませんがシステムによってカウンタを使
う事ができます各カウント値は既定値に設定され最大値までカウント可能です
表 5-2 入力パラメータ Counter
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
概要
0x24 0x00 0x00 00 Counter[0]の値を読み出す
0x00 01 Counter[1]の値を読み出す
0x01 0x00 00 Counter[0]の値をインクリメントする
0x00 01 Counter[1]の値をインクリメントする
表 5-3 出力レスポンス Counter
名称 サイズ 概要
Count 4 バイト コマンドの実行に成功した場合は 2 進数のカウント値
Response 1 バイト コマンドの実行に失敗した場合はエラーコード
512 Info コマンド
Info コマンドはデバイスのステータスと状態を読み出すために使いますこの情報はエラーの特定と各種コマ
ンドの実行に役立ちます
5121 Info - Revision
Info コマンドの Revision モードはATECC608A-TFLXTLS のシリコン リビジョンを読み取りますこの情報はデ
バイスにハードコードされていますこの情報はConfiguration ゾーン内の RevNum バイトの内容と同じ場合もあ
れば異なる場合もあります
表 5-4 入力パラメータ I nfo - Revision
Opcode (1 バイト)
Mode (1 バイト)
Param (2 バイト)
Data (0 バイト)
概要
0x30 0x00 0x00 00 mdash シリコン リビジョンを返す
表 5-5 出力レスポンス Info - Revision
名称 レスポンス 概要
Response 00 00 60 vv リビジョン情報 0x60 は ATECC608A-TFLXTLS である事を示しvv は最新シリコン リビジョンを示します
5122 Info - KeyValid
KeyValid モードは保存されている ECC 秘密鍵または公開鍵が有効な ECC 鍵かどうかを判別するために役立ちます
公開鍵を出力できない場合このコマンドが返す情報は役に立ちません鍵タイプが ECC ではない場合もこのコ
マンドの出力は役に立ちません
ATECC608A-TFLXTLS の場合スロット 0~41113~15 に保存される鍵は ECC 鍵でありInfo コマンドの
KeyValid モードを使って確認できます
表 5-6 入力パラメータ Info - KeyValid
Opcode (1バイト)
Mode (1 バイト)
Param (2 バイト)
Data (0 バイト)
概要
0x30 0x01 0x00 0[Slot] mdash スロットが有効な ECC 秘密鍵または公開鍵を格納しているかど
うかを返します
Datasheet DS40002138A_JP - p 37 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-7 出力レスポンス Info - KeyValid
名称 サイズ (4 バイト)
概要
Response 0x00 00 00 00 ECC 鍵は無効
0x00 00 00 01 ECC 鍵は有効
5123 Info - Device State
Info コマンドのこのモードはデバイスの現在のステータスを返します各種ステータスフラグはデバイスの現在
の状態指定したコマンドが失敗した理由コマンドが実行可能かどうかを判別するために役立ちます
表 5-8 入力パラメータ Info - Device State
Opcode (1 バイト)
Mode (1 バイト)
Param (2 バイト)
Data (0 バイト)
概要
0x30 0x02 0x00 00 mdash デバイスの状態を返します
表 5-9 出力レスポンス Info - Device State
名称 レスポンス 概要
Response 0x00 00 Byte[1] Byte[0]
表 5-10 ステータスフラグ
バイト ビット 名称 概要
0 7 TempKeyNoMacFlag 0 NoMacFlag は無効 1 NoMacFlag は有効
6 TempKeyGenKeyData 0 GenKeyData は無効 1 GenKeyData は有効
5 TempKeyGenDigData 0 GenDigData は無効 1 GenDigData は有効
4 TempKeySourceFlag 0 TempKey は固定ソース 1 TempKey は乱数ソースから生成された
30 TempKeyKeyID TempKey の鍵スロット ID
1 7 TempKeyValid 0 TempKey は無効 1 TempKey は有効
63 AuthCompleteKeyID Authorization 鍵のスロット ID
2 AuthCompleteValid 0 Authorization は無効 1 Authrorization は有効
10 未使用 2rsquob00
5124 Info - GPIO Output Write
ATECC608A-TFLXTLS の SWI デバイス バージョンは出力バッファとして設定された 1 本の GPIO ピンを備えてい
ます電源投入時のこのピンの既定値出力は Low ですこの出力の値はInfo コマンドの GPIO Output Write モー
ドを使って変更できます
Note このコマンドは SWI デバイスでのみ利用できI2C デバイスでは使えません
Datasheet DS40002138A_JP - p 38 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
コマンドの実行が正常に完了すると 4 バイトのレスポンスが返されその LSB は出力に書き込まれた値を示します
コマンドの実行に失敗すると1 つのエラーコード バイトが返されます
表 5-11 入力パラメータ Info - GPIO Output Write
Opcode (1 バイト)
Mode (1 バイト)
Param (2 バイト)
Data (0 バイト)
概要
0x30 0x03 0x00 02 mdash GPIO 出力に値「0」を書き込む
0x03 0x00 03 mdash GPIO 出力に値「1」を書き込む
表 5-12 出力レスポンス Info - GPIO Output Write
名称 レスポンス 概要
Response 0x00 00 00 00 GPIO に「0」が正常に書き込まれた場合の戻り値
0x00 00 00 01 GPIO に「1」が正常に書き込まれた場合の戻り値
0xXX 障害が発生した場合に返される 1 バイトのエラーコード
5125 Info - Persistent Latch Read
INFO コマンドの Persistent Latch Read モードを使うと持続性ラッチの状態を読み出せますこれは鍵認証が持
続性ラッチに接続されている場合にそのラッチの状態を確認するために役立ちます
ATECC608A-TFLXTLS の場合このコマンドはセキュアブート オプションが有効である場合にのみ有効ですこの
オプションが有効である場合セキュアブート動作が正常に完了するとコマンドは「1」を返しそうではない場合
に「0」を返しますこのステータスはECC プライマリ鍵(スロット 0)が認証済みかどうかも示します
表 5-13 入力パラメータ Info Persistent Latch Read
Opcode (1 バイト)
Mode (1 バイト)
Param (2 バイト)
Data (0 バイト)
概要
0x30 0x04 0x00 00 mdash 持続性ラッチの値を返します
表 5-14 出力レスポンス Info Persistent Latch Read
名称 応答 概要
Response 0x00 00 00 00 持続性ラッチの無効化または持続性ラッチへの値の書き込みが正常に完了した場合
の戻り値
0x00 00 00 01 持続性ラッチの有効化が正常に完了した場合の戻り値
0xXX 障害が発生した場合に返される 1 バイトのエラーコード
513 Lock コマンド
ATECC608A-TFLXTLS の場合Configuration ゾーンはロック済みでありData ゾーンのアクセスポリシーは設定済
みですしかし一部のスロットは他のコマンドを使って更新可能です必要に応じその中の一部のスロットは
Lock コマンドの SlotLock モードを使って恒久的にロックできますロックするとそのスロットは永久に変更でき
なくなります
5131 SlotLock
Lock コマンドの SlotLock モードは個々のスロットをロックするために使いますロックされていなかったスロッ
トの Lockable ビットをセットする事でそのスロットをその後の更新から保護できます この操作を元に戻す事は
できません スロットを 1 度ロックすると永久にロックを解除する事はできませんこの動作モードではSummary CRC およ
び Data フィールドは無視されます
ATECC608A-TFLXTLS の場合スロット 2~6810~121315 は個別に Lockable にするかどうか設定できま
すATECC608A-TFLXTLS のプロトタイプ デバイスの場合スロット 10~12 もロックできます
Datasheet DS40002138A_JP - p 39 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-15 入力パラメータ SlotLock
Opcode (1 バイト)
Mode (1 バイト)
Summary CRC (2 バイト)
Data (0 バイト)
概要
0x17 8rsquob00[bb_bb]10 0x00 00 mdash 個々のスロットのロック
表 5-16 出力レスポンス SlotLock
名称 サイズ 概要
Response 1 バイト コマンドがスロットのロックに成功した場合は 0x00 が返されコマンドの実行に失敗した
場合はエラーコードが返されます
514 Nonce コマンド
Nonce コマンドは乱数(内部または外部で生成可能)とシステムからの入力値を組み合わせる事により後続のコマ
ンド向けにノンス(Nonce Number used Once)を生成します生成されたノンスは内部で以下の 3 つのバッファの
いずれかに保存されます
TempKey バッファメッセージ ダイジェスト バッファ代替鍵バッファ
ノンスを生成する代わりに固定値をデバイスに渡す事もできます
5141 Nonce - Random
Random モードで Nonce コマンドを実行すると下表の通りに入力値に基づいて新しいノンスが生成されます
Param2 = 0x00 00 の場合新しい乱数が内部 RNG に基づいて生成されますParam2 = 0x80 00 の場合乱数の代
わりに TempKey に保存されている値を使って新しいノンスを生成します(乱数ジェネレータは動作しません)この場
合Nonce コマンドを実行する前に TempKey が有効である事が必要です完了時にTempKeySourceFlag は
「Rand」に設定されます
リプレイ攻撃を防ぐためデバイスへ送信する 20 バイトのデータは乱数ソースから生成する事を推奨します
表 5-17 入力パラメータ Nonce - Random
Opcode Mode Param2 Data 概要
0x16 0x00 または 0x01
0x00 00 20 バイト bull 32 バイトが TempKey に書き込まれる bull 出力は RNG から生成される bull SHA256 ダイジェストは乱数を含む
0x00 または 0x01
0x80 00 20 バイト bull 32 バイトが TempKey に書き込まれる bull 出力は SHA256 ハッシュ値から生成される bull SHA256 ダイジェストは TempKey を含む
表 5-18 出力レスポンス Nonce - Random
名称 入力 Param2 サイズ 概要
Response 0x00 00 32 バイト 乱数
0x80 00 32 バイト 新しい TempKey 値
Note 1 成功時に TempKeySourceFlag は「0」に設定されます 2 成功時に TempKeyValid は「1」に設定されます
表 5-19 ノンスの SHA256 HASH 計算
バイト数 入力データ Param2 = 0x00 00 入力データ Param2 = 0x80 00
32 乱数ジェネレータからの RandOut 直前のコマンドからの TempKey 値
20 入力ストリームからの NumIn 入力ストリームからの NumIn
Datasheet DS40002138A_JP - p 40 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
続き バイト数 入力データ Param2 = 0x00 00 入力データ Param2 = 0x80 00
1 Opcode (常に 0x16) Opcode (常に 0x16)
1 Mode (0x00 または 0x01) Mode (0x00 または 0x01)
1 Param2 の LSB (常に 0x00) Param2 の LSB (常に 0x00)
5142 Nonce - Fixed
固定ノンスがデバイスに渡され内部バッファの 1 つに保存されます32 バイトまたは 64 バイトのノンスが使えま
すこのコマンドの実行後にTempKeySourceFlag は常に「1」(固定値入力)に設定されますこのモードの NonceコマンドはSHA256 計算も乱数生成も行いません
表 5-20 入力パラメータ Nonce - Fixed
Opcode Mode Param2 Data 概要
0x16 0x03 0x43 0x83
0x00 32 バイト bull 32 バイトが TempKey に書き込まれる bull 32 バイトがメッセージ ダイジェスト バッファに書き込ま
れる bull 32 バイトが代替鍵バッファに書き込まれる
0x23 0x63
0x00 64 バイト bull 64 バイトが TempKey に書き込まれる bull 64 バイトがメッセージ ダイジェスト バッファに書き込ま
れる
表 5-21 出力レスポンス Nonce - Fixed
名称 サイズ 概要
Response 1 バイト コマンドが正常に完了した場合は 0x00が返されその他の場合はエラーコードが返されます
Note 1 TempKeySource は「1」に設定されノンス値が入力された事が示されます 2 TempKeyValid は「1」に設定され値が他の用途に使える事が示されます
515 Random コマンド
Random コマンドはシステムによって使われる乱数を生成します乱数は内部の NIST 800-90 ABC 乱数生成器に
より生成されますこのコマンドは常にバスへ 32 バイト値を出力しますこの値をデータスロットまたは SRAM内に保存する事はできません
表 5-22 入力パラメータ Random
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2 バイト)
Data (0 バイト)
概要
0x1B 0x00 0x00 00 mdash Randomコマンド
表 5-23 出力レスポンス Random
名称 サイズ 概要
RandOut 32 バイト RNG の出力
516 Read コマンド
Read コマンドを使うとATECC608A-TFLXTLS の全ての EEPROM ゾーンにアクセスできますData ゾーンへのア
クセスはスロットごとに設定されたアクセスポリシーにより制限されます暗号読み出しは特定のアクセスポリ
シーが設定された Data ゾーンスロットに対してのみ可能です
Datasheet DS40002138A_JP - p 41 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5161 Clear Text Read
ATECC608A-TFLXTLS の Configuration および OTP ゾーンからの平文読み出しはいつでも可能ですData ゾーン内
の特定のスロットはアクセスポリシーに基づいて平文として読み出せますこれらのゾーンの全てに対して 4 バイ
トまたは 32 バイト読み出しが可能です
ATECC608A-TFLXTLS の場合スロット 8 および 10~15 は平文として読み出し可能なデータを格納します
表 5-24 入力パラメータ C lear Text Read
Opcode (1 バイト)
Mode (1 バイト)
Address (2 バイト) 概要
0x02 0x00 44 「アドレスの指定」参照 4 バイトの Configuration ゾーン読み出し
0x80 44 「アドレスの指定」参照 32 バイトの Configuration ゾーン読み出し
0x01 44 「アドレスの指定」参照 4 バイトの OTP ゾーン読み出し
0x81 44 「アドレスの指定」参照 32 バイトの OTP ゾーン読み出し
0x02 44 「アドレスの指定」参照 4 バイトの Data ゾーン読み出し
0x82 44 「アドレスの指定」参照 32 バイトの Data ゾーン読み出し
表 5-25 出力レスポンス Clear Text Read
名称 サイズ 概要
Data Contents 4 バイト 読み出された 4 バイト[03]
32 バイト 読み出された 32 バイト[031]
5162 Encrypted Read
暗号化読み出しはアクセスポリシーが暗号化読み出し向けに設定された Data ゾーンスロットに対してのみ可能で
すConfiguration ゾーンと OTP ゾーン内のデータは暗号化できません全ての暗号化読み出しは 32 バイト長です
暗号化読み出しを実行する前に暗号化鍵を生成する必要がありますこの鍵は指定されたスロットに対して暗号
化読み出しが実行されるたびに一意にできます1 つのスロットの全ての内容を読み出すには複数回の読み出しが
必要である事に注意が必要です暗号化読み出しのたびに一意のセッション鍵を生成する必要があります
ATECC608A-TFLXTLS の場合暗号化読み出しが必要なスロットはありません
暗号化読み出しの手順 各暗号化読み出しの手順は以下の通りです
1 Nonce コマンドを実行しますRandom モード32 バイトで実行する事を推奨します値を TempKey へ出力
します 2 GenDig コマンドを実行します暗号化鍵のスロット番号とTempKey に保存した Nonce コマンドの出力を
GenDig の入力パラメータに含める必要があります Note これらの 2 つのコマンドの出力は暗号化鍵でありTempKey に保存されます
3 Read コマンドを発行します ndash Data ゾーンスロットの内容はデータと TempKey に保存された生成値の間で XOR を取る事により暗号
化されますTempKey 内のこの値は以前に生成されたセッション鍵です ndash コマンドの出力は暗号化されたデータです
表 5-26 入力パラメータ Encrypted Read
Opcode (1 バイト)
Mode (1 バイト)
Address (2 バイト)
概要
0x02 0x82 44 「アドレスの指定」参照 32 バイトの Data ゾーン読み出し
Datasheet DS40002138A_JP - p 42 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-27 出力レスポンス Encrypted Read
名称 サイズ 概要
Data Contents 32 バイト 暗号化データの 32 バイト[031]
ホストシステムも Nonce コマンドの出力と GenDig コマンドで使われる SHA256 計算に基づいて暗号化復号鍵を計
算する必要がありますこれによりホストシステムは送信されるデータを復号できます
517 SelfTest コマンド
SelfTest コマンドはATECC608A-TFLXTLS 内の 1 つまたは複数の暗号エンジンのテストを実行します入力モ
ードパラメータに応じて全てまたは一部のアルゴリズムがテストされます
ATECC608A-TFLXTLS の場合電源投入または復帰イベント後の自動的な SelfTest コマンド実行は無効にされて
いますしかしシステムは必要に応じてこのコマンドを実行できますこのテストの実行に関する要件はありませ
ん
電源投入または復帰時に自動的に実行された場合でもこのコマンドによって実行された場合でもセルフテストに
失敗するとデバイスは Failure ステートに移行しデバイスの動作は制限されます保存された Failure ステートは
復帰時または電源再投入時にクリアされますセルフテストの失敗(エラーコード0x07)とヘルステストの失敗(エラー
コード0x08)は異なります
Failure ステート中は以下の動作が可能です
bull Configuration ゾーンの読み出し bull SelfTest コマンドの実行
1 度失敗したテストが再実行されて成功した場合Failure レジスタ内の対応するビットはクリアされます全て
のビットがクリアされるとATECC608A-TFLXTLS は通常のコマンド動作を再開します bull Mode パラメータ = 0 でこの SelfTest コマンドを呼び出す事によりFailure レジスタの現在の状態を読み出
せます bull その他のコマンドまたはその他のゾーンの読み出しは全てエラーコード 0x07 を返します障害の原因を特定
するにはSelfTest(0)を使います
表 5-28 入力パラメータ SelfTest
Opcode (1 バイト)
Mode (1 バイト)1 Param2 (2 バイト) b[76] b[5] b[4] b[3] b[2] b[1] b[0]
2rsquob00 SHA AES ECDH ECDSA (SignVerify) 0 RNGDRBG 0x00 00
Note 1 複数のテストを任意に組み合わせて同時に実行できますMode ビットを「1」に設定すると対応するテスト
は実行されますこのビットが「0」である場合対応するテストは実行されません
表 5-29 出力レスポンス SelfTest
名称 サイズ 概要
Success 1 バイト 0x00 全てのテストに合格した Failure マップ - 各テストに 1 ビットが割り当てられ失敗したテストに対応するビットがセ
ットされますビットの並び順は Mode バイトと同じです
518 SHA コマンド
SHA コマンドはシステムによって汎用的に使われる SHA-256 または HMACSHA ダイジェストを計算しますSHA計算はATECC608A-TFLXTLS の内部メモリの特別なセクション (コンテクスト バッファ) 内で実行されます他の
コマンドを使ってこのセクションを読み書きする事はできませんSHA コマンドの各種フェイズとフェイズの間に任
意のコマンドを挿入できますその際の SHA コンテクストは電源投入および復帰時に無効になりますSHA コマ
ンドの実行中にエラーが発生しても多くの場合はコンテクストが変更される事なく保持されます
Datasheet DS40002138A_JP - p 43 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5181 SHA - SHA256 Digest
SHA コマンドは SHA256 ハッシュ アルゴリズムを使ってメッセージのハッシュを計算しますこのコマンドへの第 1の入力は実際のメッセージですメッセージは1~64 バイトのブロックでデバイスへ送信されますコンテクス
ト スイッチングが要求されない場合以下の手順が使えます 1 Start モードで SHA コマンドを発行します(メッセージは含まず) 2 Update モードで SHA コマンドを発行します(1~64 バイトのメッセージを含む) 3 メッセージの全てのバイトが送信されるまでステップ 2 を繰り返します 4 Finalize モードで SHA コマンドを発行して SHA256 計算を終了します
表 5-30 入力パラメータ SHA - SHA256 Digest
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2 バイト)
Data (Mode に
応じて異なる) 概要
0x47 0x00 0x00 00 0 バイト Start モード
0x01 0x00 [ByteCount] 1~64 バイト Update モード
0x02 0x00 [ByteCount] 0~64 バイト Finalize モード ダイジェストを出力バッファと
TempKey に格納する
0x42 0x00 [ByteCount] Finalize モードダイジェストを出力バッファとメッセー
ジ ダイジェスト バッファに格納する
0xC2 0x00 [ByteCount] Finalize モードダイジェストを出力バッファのみに格納
する
表 5-31 出力レスポンス SHA - SHA256 Digest
名称 Mode サイズ 概要
Response 0x000x01 1 バイト 実行に成功した場合は 0x00 が返されその他の場合はエラーコ
ードが返されます 0x020x420xC2 1 バイト
32 バイト エラーコードの場合 SHA256 ダイジェストの場合
5182 SHA - HMAC Digest
SHA コマンドを使ってSHA256 ダイジェストの代わりに HMAC ダイジェストを計算する事ができます手順は基本
的に同じですが内部鍵を使用する事とSTART の代わりに HMAC_START を使う事が必要です
コンテクスト スイッチングが要求されない場合以下の手順が使えます 1 鍵の位置を指定して HMAC_Start モードで SHA コマンドを発行します(メッセージは含まず) 2 Update モードで SHA コマンドを発行します(1~64 バイトのメッセージを含む) 3 メッセージの全てのバイトが送信されるまでステップ 3 を繰り返します 4 Finalize モードで SHA コマンドを発行して HMAC ダイジェスト計算を終了します
Datasheet DS40002138A_JP - p 44 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-32 入力パラメータ SHA - HMAC Digest
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2 バイト)
Data (Mode に
応じて異なる) 概要
0x47 0x04 0x00 0[slot] 0 バイト HMAC_Start モードデータスロットからの鍵を含める
0x04 0xFF FF 0 バイト HMAC_Start モードTempKey からの鍵を含める
0x01 0x00 [ByteCount] 1~64 バイト Update モード
0x02 0x00 [ByteCount] 0~64 バイト Finalize モードダイジェストを出力バッファと
TempKey に格納する
0x42 0x00 [ByteCount] Finalize モードダイジェストを出力バッファとメッセー
ジ ダイジェスト バッファに格納する
0xC2 0x00 [ByteCount] Finalize モードダイジェストを出力バッファのみに格納
する
表 5-33 出力レスポンス SHA - SHA256 Digest
名称 Mode サイズ 概要
Response 0x040x01 1 バイト 実行に成功した場合は 0x00 が返されその他の場合はエラーコ
ードが返されます 0x020x420xC2 1 バイト
32 バイト エラーコードの場合 SHA256 ダイジェスト(実行に成功した場合)
5183 SHA - Context Switching
コンテクスト スイッチングによりダイジェストの生成中に割り込んで他の機能を実行するか他のダイジェストを生
成する事ができますコンテクスト スイッチングはSHA256 ダイジェストモード中にのみ使えます従ってコン
テクスト スイッチングは SHA Start コマンドが発行されてから SHA Finalize コマンドが発行されるまでの間でのみ発
生できますコンテクスト スイッチングはダイジェスト生成中に複数回発生できます
コンテクスト スイッチングには以下の 2 つのフェイズがあります 1 Read_Context ATECC608A-TFLXTLS から可変長コンテクストを読み出します読み出し後もデバイス内の
コンテクストは有効なままです出力データ パラメータの総長は常に 40~99 バイトですこの長さは出力
パケット内の Length フィールドによって指定されるか40 + [出力の最初のバイトの最下位 6 ビット]として計
算されます 2 Write_Context ホストから ATECC608A-TFLXTLS へ SHA256 コンテクストを書き込む事で後続の更新動作
の実行を可能にしますこのコンテクストは以前に Read_Context モードでデバイスから読み出した物であ
る事が必要ですATECC608A-TFLXTLS はデータ パラメータの最初の 4 バイトからコンテクストのサイズ
を特定します
コンテクストが読み出された後はデバイスは要求された他の動作を実行できます他の動作が完了した後にコン
テクストを ATECC608A-TFLXTLS に書き戻す事でSHA256 ダイジェストの生成処理を再開して完了させる事がで
きます
表 5-34 入力パラメータ SHA - Context Switching
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2 バイト)
Data (Mode に応
じて異なる) 概要
0x47 0x06 0x00 00 0 バイト 現在のコンテクストを読み出す
0x07 0x00 [ByteCount] 40~99 バイト 前のセッションから現在のコンテクストを復元する
Datasheet DS40002138A_JP - p 45 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-35 出力レスポンス SHA - Context Switching
名称 Mode サイズ 概要
Response 0x06 1 バイト 40~99 バイト
エラーコード コンテクスト値
0x07 1 バイト 実行に成功した場合は 0x00 が返されその他の場合はエラーコードが
返されます
519 UpdateExtra コマンド
UpdateExtra コマンドはUpdateExtra バイトと UpdateExtraAdd バイト(Configuration ゾーン内のバイト 84 とバ
イト 85)を更新するために使いますこれらのバイトはこのコマンドによってのみ更新できますこれらのバイト
は現在の値が 0x00 である場合にのみ 1 度だけ更新が可能です現在の値が 0x00 ではない場合更新を試みるとエ
ラーが発生します
ATECC608A-TFLXTLS の場合UpdateExtraAdd バイト (バイト 85) は代替 I2C アドレスに設定済みです
表 5-36 入力パラメータ UpdateExtra
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2バイト)
Data (0 バイト)
概要
0x20 0x00 0x00 [Value] mdash UpdateExtra バイト (バイト 84) に Param2 の LSB 内の値を書き
込む
mdash 0x01 0x00 [Value] mdash UpdateExtraAdd バイト (バイト 85) に Param2 の LSB 内の値を
書き込む
表 5-37 出力レスポンス UpdateExtra
名称 サイズ 概要
Success 1 バイト 書き込みが正常に完了した場合は 0x00 が返され書き込みに失敗した場合はエラーコードが
返されます
5110 Write コマンド
ATECC608A-TFLXTLS の場合Configuration ゾーンと OTP ゾーンはロック済みでありこれらのゾーンの更新はで
きませんData ゾーンに対する書き込みは各スロットのアクセスポリシーに基づいて制限されます書き込み可能
なスロットについてはこのコマンドの各モードの説明を参照してください
51101 Data Zone - Clear Text Write
標準的な平文書き込み Data ゾーンスロットに対する平文書き込みはSlotLocked ビットによってロックされていないスロットに対してのみ
可能です各スロットにはそのスロットのサイズに応じて複数ブロックのデータが書き込めますスロット内の
全てのブロックに対して 4 または 32 バイト書き込みが可能です全てのスロットの最後のブロックは 32 バイトでは
ありません それらのスロットに対しても 32 バイト書き込みは可能ですが余分のバイトは 0 で埋める必要があります
ATECC608A-TFLXTLS の場合スロット 68~91315 は平文として書き込み可能です
無効にされた公開鍵書き込み ECC 公開鍵は秘密値ではないためWrite コマンドにより平文として直接書き込めます鍵が使用前に有効化
(Validation)を必要とする場合その鍵を上書きするには最初にその鍵を無効(Invalidate)にする必要がありますす
なわちWrite コマンドを使って公開鍵を書き込む前にVerify コマンドの Invalidate モードを使ってその鍵を無
効にする必要があります
ATECC608A-TFLXTLS ではスロット 14 が有効な公開鍵を格納します
公開鍵が無効にされた後は標準的な平文書き込みと無効にされた公開鍵書き込みの入力パラメータは同じです
Datasheet DS40002138A_JP - p 46 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-38 入力パラメータ Clear Text Write
Opcode (1 バイト)
Mode (1 バイト)
アドレス (2 バイト)
Data (4 または 32 バイト)
概要
0x12 0x02 44 「アドレスの指定」参照 4 バイト 4 バイト書き込み 0x82 44 「アドレスの指定」参照 32 バイト 32 バイト書き込み
表 5-39 出力レスポンス Clear Text Write
名称 サイズ 概要
Response 1 バイト 実行に成功すると値 0x00 が返され失敗するとエラーコードが返されます
51102 Data ゾーン - Encrypted Write
スロットの設定に応じてData ゾーンへの書き込みは暗号化できますData ゾーンに書き込まれるデータのみ暗号
化が可能ですATECC608A-TFLXTLS の場合スロット 5 は暗号文として書き込み可能です
全ての暗号化書き込みは32 バイトブロックとして実行する必要がありますゾーンの最後の 32 バイト未満のブロ
ックが暗号化された 32 バイトの入力である事が必要な場合データはそれでも送信される必要がありMAC 計算の
一部として使われます書き込みのアドレスは実際のメモリ位置のアドレスでありデータスロットの番号ではあ
りません
表 5-40 入力パラメータ Encrypted Write
Opcode (1 バイト)
Mode (1 バイト)
アドレス (2 バイト)
入力データ (32 バイト)
MAC (32 バイト)
概要
0x12 0x82 44 「アドレスの
指定」参照 32 バイトの暗号化入力デ
ータ 32 バイトのMAC
32 バイト暗号化書き
込み
表 5-41 出力レスポンス Encrypted Write
名称 サイズ 概要
Response 1 バイト 実行に成功すると値 0x00 が返され失敗するとエラーコードが返されます
データの暗号化 データをスロットに書き込む前にホストシステムはデータを暗号化する必要があります暗号化アルゴリズムは
平文データと TempKey に保存された値の間で単純に XOR を取りますTempKey の値はGenDig コマンドの結果
である事が必要ですホストシステムはATECC608A-TFLXTLS が計算した値と同時に使われるこの値を計算する
必要がありますGenDig コマンドはXOR 値を計算する際に 1 回または複数回使えます最終値は暗号化に使わ
れる実際の XOR 値ですデータが暗号化されて書き込まれるとATECC608A- TFLXTLS は TempKey に保存されて
いる値を使ってその値を復号します暗号化書き込みはTempKey に影響を与える他のどのコマンドよりも前にま
たはタイムアウトが発生する前に発生する必要があります暗号化書き込みを検証するため32 バイト MAC 値も
コマンドと一緒に送信する必要があります
入力 MAC の生成 必要な入力 MAC は96 バイトに対する SHA256 ハッシュにより生成されますこれはホストシステムにより計算さ
れ暗号化書き込みコマンドの一部として送信されます
Datasheet DS40002138A_JP - p 47 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
52 非対称暗号コマンド
非対称暗号コマンドセットはECC 鍵を生成または使用するための特別なコマンドで構成されます鍵は通常 Dataゾーンに保存されますが一部のコマンドでは SRAM アレイに保存されます
表 5-42 非対称暗号コマンド
コマンド名 Opcode 概要
ECDH 0x43 保存されている秘密鍵と入力された公開鍵を使って ECDH プリマスタ秘密鍵を生成
します
GenKey 0x40 保存されている秘密鍵から ECC 秘密鍵またはオプションにより ECC 公開鍵を生成
します
SecureBoot 0x80 電源投入時にコード署名またはコード ダイジェストを検証します
Sign 0x41 ECC 秘密鍵を使って ECDSA 署名計算により内部または外部のメッセージ ダイジ
ェストに署名します
Verify 0x45 ECC 秘密鍵を使って ECDSA 検証計算により内部または外部のメッセージ ダイジ
ェストを検証します
521 ECDH コマンド
ECDH コマンドは2 つのデバイスの間で共有する秘密鍵を生成します2 つのデバイスはそれぞれ他方のデバイス
から ECC 公開鍵を受け取りスロットに保存されている ECC 秘密鍵または TempKey に保存されている使い捨て鍵
と組み合わせますこれにより両方のデバイスで同じ共有マスタ秘密鍵を生成しますさらにこの鍵を双方で共
有する他のデータと組み合わせる事により共有セッション鍵を生成する事ができます共有秘密をさらに DiversifyするためKDF コマンドが TLS セッションでしばしば使われます
5211 ECDH - Stored Key
ECDH コマンドは内部データスロットを ECC 秘密鍵ソースとして使う事ができますそのスロットのアクセスポリ
シーはECC 秘密鍵として設定されECDH コマンドを許容するよう設定されている必要がありますアクセスポリ
シーは出力を保存するかどうか出力を暗号化するかどうか出力の保存暗号化をコマンドによって指定可能にす
るかどうかも指定できます暗号化が必要な場合IO 保護鍵を使います暗号化はデータが出力バッファへ出力
される場合にのみ発生可能です
ATECC608A-TFLXTLS の場合ECDH コマンドはスロット 0 および 2~4 に保存されている ECC 鍵を使って実行で
きます
表 5-43 入力パラメータ ECDH - Stored Key
Opcode (1 バイト)
Mode (1 バイト)
KeyId (2 バイト)
Data 概要
Data 1 (32 バイト)
Data 2 (32 バイト)
0x43 0x0C 0x00 0[Slot] 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を出力バッファへ転送する bull 平文で出力する(1)
0x0E 0x00 0[Slot] 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を出力バッファへ転送する bull 出力を暗号化する
0x08 0x00 0[Slot] 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を TempKey へ転送する bull 出力は他の動作向けに使えます
が直接アクセスする事はできま
せん
Datasheet DS40002138A_JP - p 48 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
Note 1 ChipOptionsECDHPROT の値が 1 である場合ECDH コマンドの出力はこのモードで暗号化されます
ATECC608A-TFLXTLS の場合ECDHPROT フィールドは 0 に設定され暗号化は ECDH コマンドのモードに
よって決まります
表 5-44 出力レスポンス ECDH - Stored Key
名称 Mode サイズ 概要
Response 0x0C または 0x0E 1 バイト コマンドの実行に失敗した場合はエラーコード
Response 0x0C 32 バイト 共有マスタ秘密鍵(平文として出力)
Response OutNonce
0x0E 32 バイト 32 バイト
共有マスタ秘密鍵(暗号文として出力) 暗号化に使うノンス
Response 0x08 1 バイト 実行に成功した場合は 0x00 が返されその他の場合はエラーコ
ードが返されます
5212 ECDH - TempKey
ECDH コマンドはTempKey 内の値を開始値として使えますTempKey 内の ECC 秘密鍵はGenKey コマンドによ
って生成する必要がありますTempKey が ECDH コマンドによって使われるとTempKeyValid フラグはリセットさ
れます出力が TempKey 位置に書き戻されるとこのフラグは再びセットされます
表 5-45 入力パラメータ ECDH - TempKey
Opcode (1 バイト)
Mode (1 バイト)
KeyId (2 バイト)
Data 概要
Data 1 (32 バイト)
Data 2 (32 バイト)
0x43 0x0D 0x00 00 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を出力バッファへ転送する bull 平文で出力する(1)
0x0F 0x00 00 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を出力バッファへ転送する bull 出力を暗号化する
0x09 0x00 00 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を TempKey へ転送する bull 出力は他の動作向けに使えます
が直接アクセスする事はでき
ません
0x05 0x00 0[Slot] 公開鍵の X コンポーネント
公開鍵の Y コンポーネント
bull 結果を指定されたスロットへ転
送する
Note 1 ChipOptionsECDHPROT の値が 1 である場合ECDH コマンドの出力はこのモードで暗号化されます
ATECC608A-TFLXTLS の場合ECDHPROT フィールドは 0 に設定され暗号化は ECDH コマンドのモードに
よって決まります
表 5-46 出力レスポンス ECDH - TempKey
名称 Mode サイズ 概要
Response 0x0D または 0x0F 1 バイト コマンドの実行に失敗した場合はエラーコード
Response 0x0D 32 バイト 共有マスタ秘密鍵(平文として出力)
Response OutNonce
0x0F 32 バイト 32 バイト
共有マスタ秘密鍵(暗号文として出力) 暗号化に使うノンス
Datasheet DS40002138A_JP - p 49 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
続き 名称 Mode サイズ 概要
Response 0x03 または 0x09 1 バイト 実行に成功した場合は 0x00 が返されその他の場合はエラーコー
ドが返されます
522 GenKey コマンド
GenKey コマンドによりECC 秘密鍵の生成秘密鍵からの ECC 公開鍵の生成公開鍵ダイジェストの生成が可能
ですこのコマンドはECC 秘密鍵または公開鍵向けに設定されたスロットに対してのみ使えます非 ECC スロッ
トに対してこのコマンドを実行するとエラーが発生します
5221 Private Key - Stored in Slot
GenKey コマンドによりECC P256 秘密鍵を生成しECC 秘密鍵を保持するよう設定されたデータスロットに保存
する事ができますこのコマンドを実行すると対応する ECC 公開鍵も生成されますスロットがロックされてい
た場合このコマンドはエラーを返します稀なケースとして無効な ECC 秘密鍵が生成されたためにエラーが生
じる場合があります
ATECC608A-TFLXTLS の場合GenKey コマンドはスロット 2 および 4~4 内の秘密鍵を生成するためだけに使え
ますこれらの鍵を更新する前に認証は不要です
表 5-47 入力パラメータ Private Key - Stored in Slot
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
OtherData (0 バイト)
概要
0x40 0x04 0x00 0[Slot] mdash bull 秘密鍵を[Slot]に保存する bull 公開鍵を生成してバスへ出力する
0x40 0x0C 0x00 0[Slot] mdash bull 秘密鍵を[Slot]に保存する bull 公開鍵を生成してバスへ出力する bull 公開鍵ダイジェストを生成して TempKey に保存する
表 5-48 出力レスポンス Private Key - Stored in Slot
名称 サイズ 応答
Response 1 バイト bull コマンド実行に失敗した場合は ECC フォルトコード
64 バイト bull コマンド実行に成功した場合は公開鍵の X および Y 座標
5222 Private Key - Stored in TempKey
GenKey コマンドを使うと使い捨て ECC 秘密鍵を生成し書き込みが制限されない SRAM 内のメモリ位置に格納
できますこの鍵を読み出す事はできませんが ECDH コマンドによって使う事ができます
表 5-49 入力パラメータ Private Key - Stored in TempKey
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
OtherData (3 バイト)
注釈
0x40 0x04 0xFF FF 0x00 00 00 bull TempKey に秘密鍵を保存する bull 公開鍵を生成してバスへ出力する
表 5-50 出力レスポンス Private Key - Stored in TempKey
名称 サイズ 応答
Response 1 バイト コマンドエラーにより ECC フォルトコードが生成された場合
64 バイト コマンド実行に成功した場合は公開鍵の X および Y 座標
Datasheet DS40002138A_JP - p 50 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5223 Public Key Generation
スロットが適切に設定されている場合保存されている ECC 秘密鍵から ECC 公開鍵を再生成してバスに出力できま
す必要に応じ同時に公開鍵ダイジェストを生成して TempKey に保存する事もできます
ATECC608A-TFLXTLS の場合公開鍵はスロット 0~5 に保存されている秘密鍵から生成できますオプションによ
るダイジェストの生成も可能です
表 5-51 入力パラメータ Public Key Generation
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
OtherData (0 バイト)
概要
0x40 0x00 0x00 0[Slot] mdash 公開鍵を生成してバスへ出力する
0x40 0x08 0x00 0[Slot] mdash bull 公開鍵を生成してバスへ出力する bull 公開鍵ダイジェストを生成して TempKey に保存する
表 5-52 出力レスポンス Public Key Generation
名称 サイズ 応答
Response 1 バイト コマンド実行に失敗した場合は ECC フォルトコード
64 バイト コマンド実行に成功した場合は公開鍵の X および Y 座標
公開鍵ダイジェストの生成 SHA256 ハッシュを 128 バイトに対して実行する事で公開鍵からダイジェストを生成します
5224 Public Key Digest Generation
公開鍵のダイジェストは保存されている ECC 公開鍵から生成して TempKey に保存できます公開鍵が保存されて
いるスロットの番号を指定する必要があります従ってこのコマンドは 8 以上の番号を持つスロットに対してのみ
実行できますこのコマンドを実行する前にTempKey が有効な値である事が必要です公開鍵はバスに出力されま
せんがRead コマンドを使って読み出せます このモードではOtherData 内の 3 バイトを使ってダイジェストが生成されMode および KeyID バイトは無視され
ます
ATECC608A-TFLXTLS の場合ダイジェストはスロット 111415 またはスロット 13 (公開鍵を格納している場
合)から生成できます
表 5-53 入力パラメータ Public Key Digest Generation
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
OtherData (3 バイト)
注釈
0x40 0x10 0x00 0[Slot] 0x[any value] 公開鍵ダイジェストを生成して TempKey に保存する
Datasheet DS40002138A_JP - p 51 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-54 出力レスポンス Public Key Digest Generation
名称 サイズ 応答
Response 1 バイト bull コマンドが正常に完了した場合は 0x00 が返されます bull コマンド実行に失敗した場合は ECC フォルトコードが返されます
公開鍵ダイジェストの生成 SHA256 ハッシュを 128 バイトに対して実行する事で公開鍵からダイジェストを生成します
523 SecureBoot コマンド
SecureBoot コマンドは外部 MCU または MPU のセキュアブート向けのサポートを提供します一般的にシス
テム内のブートコードはブート後に実行されるアプリケーション コードの検証を支援するために ATECC608A-TFLXTLS を使いますATECC608A-TFLXTLS はStored Digest モードの SecureBoot コマンドを使って動作する
よう設定済みですダイジェストはスロット 7 に保存されSecureBoot の検証に必要な公開鍵はスロット 15 に保存
されますオプションにより持続性ラッチを使うよう設定できます選択されたオプションに基づきSecureBootを電源投入に結び付けるかどうかが決まります224 「セキュアブート オプション」を参照してください
ホストと ATECC608A-TFLXTLS の間のケーブルでの改ざんを防ぐためコマンドのモードに応じて戻りコードの
代わりに MAC を各種データ(TempKey に書き込まれたノンスIO 保護秘密鍵等)から生成できます
5231 SecureBoot - FullCopy
SecureBoot コマンドの FullCopy モードは署名または検証済みダイジェストをターゲット スロットに複製します
ターゲットスロットはSecureBoot 向けアクセスポリシーの一部として定義されます(コマンドの一部として定義さ
れるのではない)SecureBoot コマンドのこのモードはこのコマンドを FullStore Digest または Signature モード
で実行する前に実行する必要があります ホストと ATECC608A-TFLXTLS の間のケーブルでの改ざんを防ぐためIO 保護秘密鍵を使ってホストからのノンス
により MAC を生成する事ができます
ATECC608A-TFLXTLS の場合このコマンドの実行に成功するとダイジェストはスロット 7 に複製されます
表 5-55 入力パラメータ SecureBoot - FullCopy
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2 バイト)
Data (96 バイト)
概要
0x80 0x07 0x00 00 bull コード全体の 32 バイト ダイ
ジェスト bull 64 バイト署名
bull コード ダイジェストを暗号化しない bull コード ダイジェストと署名を公開鍵によ
って検証する
0x87 0x00 00 bull コード全体の 32 バイト暗号
化ダイジェスト bull 64 バイト署名
bull コード ダイジェストを暗号化する bull コード ダイジェストと署名を公開鍵によ
って検証する bull 出力 MAC を生成する
Datasheet DS40002138A_JP - p 52 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-56 出力レスポンス SecureBoot - FullCopy
名称 Mode サイズ 応答
Success 0x07 1 バイト bull 0x00 - 成功した bull 0x01 - 計算は完了したが結果に不整合がある bull その他の値 - エラーコード
MAC 0x87 32 バイト 成功した場合
1 バイト bull 0x01 - 計算は完了したが結果に不整合がある bull その他の値 - エラーコード
SecureBoot - FullCopy の MAC 計算 このモードで MAC を生成する前にNonce コマンドを実行して TempKey に有効な値を確実に保存する必要があり
ますその後にMAC を以下の 2 ステップで計算します
ステップ 1 IO 保護鍵とノンスに対して SHA256 ダイジェストを生成します 32 バイト IO 保護鍵の内容 32 バイト TempKey に保存されているノンスの最初の 32 バイト
ステップ 2 以下の SHA256 ダイジェストを生成します 32 バイト ステップ 1 で生成したダイジェスト 32 バイト 平文メッセージ ステップ 1 の出力と入力暗号化コードダイジェスト(入力バッファの最初 の 32 バイト) の間 で XOR を取ります 64 バイト 入力から渡された署名 4 バイト 入力パラメータ (OpcodeModeParam2) (0x800x860x00 00)
5232 SecureBoot - FullStore (Digest)
SecureBoot コマンドの FullStore Digest モードでは検証されたダイジェストがスロットに保存されますこのモ
ードはこのコマンドに関連する IO 転送および総計算時間を短縮しますこのモードを使うには最初に FullCopyモードで SecureBoot コマンドを実行する必要がありますデバイスはダイジェストと署名の両方を受信しダイ
ジェストを SecureBoot アクセスポリシー内で指定されたスロットに保存しますホストと ATECC608A-TFLXTLS の
間のケーブルでの改ざんを防ぐためIO 保護秘密鍵を使ってホストからのノンスにより MAC を生成する事ができま
す
表 5-57 入力パラメータ SecureBoot - FullStore
Opcode (1 バイト)
Mode (1 バイト)
Param2 (2 バイト)
Data (32 バイト)
概要
0x80 0x06 0x00 00 bull コード全体の 32 バイト ダイ
ジェスト bull コード ダイジェストと署名を公開鍵によっ
て検証する
0x86 0x00 00 bull コード全体の 32 バイト暗号
化ダイジェスト bull コード ダイジェストを暗号化する bull コード ダイジェストと署名を公開鍵によっ
て検証する bull 出力 MAC を生成する
Datasheet DS40002138A_JP - p 53 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-58 出力レスポンス SecureBoot - FullStore
名称 Mode サイズ 応答
Success 0x06 1 バイト 0x00 - 成功した 0x01 - 計算は完了したが結果に不整合があるその他の値 - エラーコード
MAC 0x86 32 バイト 成功した場合
1 バイト 0x01 - 計算は完了したが結果に不整合がある その他の値 - エラーコード
SecureBoot - FullStore (Digest) の MAC 計算 このモードで MAC を生成する前にNonce コマンドを実行して TempKey に有効な値を確実に保存する必要があり
ますその後にMAC を以下の 2 ステップで計算します
ステップ 1 IO 保護鍵とノンスに対して SHA256 ダイジェストを生成します 32 バイト IO 保護鍵の内容 32 バイト TempKey に保存されているノンスの最初の 32 バイト
ステップ 2 ステップ 1 の出力の SHA256 ダイジェストと以下に示す追加情報 32 バイト ステップ 1 で生成したダイジェスト 32 バイト 平文メッセージ
ステップ 1 の出力と入力暗号化コードダイジェスト(入力バッファの最初の 32 バイト) の間
で XOR を取ります 4 バイト 入力パラメータ (OpcodeModeParam2) (0x800x860x00 00)
524 Sign コマンド
Sign コマンドはECDSA アルゴリズムを使って署名を生成しますこれにはKeyID によって指定されたスロット
内の ECC 秘密鍵が使われます何を署名有効化無効化するかに応じて異なるモードが利用できます
5241 Sign - Internal Message
内部メッセージモードの Sign コマンドは内部で生成されたメッセージに署名する場合に使いますコマンドは内
部メッセージ ダイジェストを計算しKeyID で指定された秘密 ECC 鍵を使ってECDSA 署名アルゴリズムによりダ
イジェストに署名します内部生成したメッセージは常に TempKey に格納される必要がありますTempKey 内の値
はGenDig または GenKey コマンドを使って生成する必要がありますTempKey が無効な場合エラーが発生し
ます標準的な用途には以下が含まれます bull 内部生成したランダム鍵に署名する(通常鍵は GenKey コマンドにより生成される) bull GenKey または GenDig コマンドの出力に署名する(出力は TempKey に格納する)
ATECC608A-TFLXTLS デバイスの場合内部生成メッセージの署名にはスロット 1 のみが使えます
表 5-59 入力パラメータ Sign - Internal Message
Opcode (1 バイト)
Mode (1 バイト)
KeyId (2 バイト)
概要
0x41 0x00 または 0x20 0x00 0[Slot] シリアル番号をメッセージ ダイジェスト計算に含めない
0x40 または 0x60 0x00 0[Slot] シリアル番号をメッセージ ダイジェスト計算に含める
Datasheet DS40002138A_JP - p 54 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-60 出力レスポンス Sign - Internal Message
名称 サイズ 概要
Response 1 バイト コマンドの実行に失敗した場合はエラーコード
64 バイト R 値と S 値で構成された署名
内部メッセージの生成 内部メッセージは以下の通りに 55 バイト フィールドに基づいて生成されます
バイトカウント シリアル番号を含まず シリアル番号を含む
32 バイト 1 バイト 1 バイト 2 バイト 2 バイト 2 バイト 1 バイト 2 バイト 1 バイト 4 バイト 2 バイト 2 バイト 1 バイト 1 バイト
TempKey(1) Opcode Mode KeyID SlotConfig (of TempKeyFlagsKeyID) KeyConfig (of TempKeyFlagsKeyID) TempKeyFlags(2)
全て 0 SN[8] = 0x01 全て 0 SN[01] = 0x01 0x23 全 て 0 SlotLockedTempKeyFlagsKeyID 0x00 0x00
TempKey(1) Opcode Mode KeyID SlotConfig (of TempKeyFlagsKeyID) KeyConfig (of TempKeyFlagsKeyID) TempKeyFlags(2)
全て 0 SN[8] = 0x01 SN[47] SN[01] = 0x01 0x23 SN[23] SlotLockedTempKeyFlagsKeyID 0x00 0x00
Note 1 この計算の前にGenKey または GenDig コマンドによって TempKey を生成する必要があります 2 TempKeyFlags は以下の通りに構成されます
b[7]NoMacFlagb[6]GenKeyDatab[5]GenDigDatab[4]SourceFlagb[30] TempKeyFlags
5242 Sign - External Message
Sign コマンドを使ってECC 公開鍵により外部メッセージのダイジェストに署名する事ができますホストシステ
ムはメッセージをコンパイルしメッセージのダイジェストを生成する必要がありますメッセージはNonce コマ
ンドを Fixed モードで実行する事によって TempKey またはメッセージ ダイジェスト バッファに格納できますメッ
セージの長さは常に 32 バイトですメッセージは常にこれらの位置の下位 32 バイトに格納されます
ATECC608A-TFLXTLS の場合外部メッセージの署名にはスロット 0 および 2~4 が使えます
表 5-61 入力パラメータ Sign - External Message
Opcode (1 バイト)
Mode (1 バイト)
KeyId (2 バイト)
概要
0x41 0x80 または 0xC0 0x00 0[Slot] 外部メッセージ ダイジェストを TempKey に保存する
0xA0 または 0xD0 0x00 0[Slot] 外部メッセージ ダイジェストをメッセージ ダイジェスト バッファ
に保存する
表 5-62 出力レスポンス Sign - External Message
名称 サイズ 概要
Response 1 バイト コマンドの実行に失敗した場合はエラーコード
64 バイト R 値と S 値で構成された署名
Datasheet DS40002138A_JP - p 55 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
525 Verify コマンド
Verify コマンドは入力されたメッセージ ダイジェストと公開鍵に基づきECDSA [RS]署名が正しく生成された
かどうかを検証しますいかなる場合も署名がこのコマンドへの入力です
中間者攻撃を防ぐためVerify コマンドからオプションの MAC を返す事ができます署名が入力ダイジェストか
ら正しく生成された事が検証計算により示された場合TempKey に保存されている入力ノンスとATECC608A-TFLXTLS とホスト MCU の両方に保存されている IO 保護秘密鍵に基づいてMAC が計算されますMAC 出力は
External および Stored モードでのみ生成可能ですMAC を計算するにはIO 保護機能を有効にする必要があります
5251 Verify - External Public Key
Verify コマンドによりATECC608A-TFLXTLS の外部で生成されたメッセージを検証できますこれにはコマンド
へ渡された公開鍵を使いますコマンドは成功失敗エラーを示すコードまたは 32 バイト MAC を出力しますこ
のコマンドを実行する前にNonce コマンドを Fixed モードで使ってメッセージを TempKey またはメッセージ ダイジェスト バッファに書き込んでおく必要がありますこのモードではデバイスは単に公開鍵の計算を高速化し
真偽値(成功失敗)結果を返します
外部公開鍵を使ってメッセージを検証するための手順 1 Nonce コマンドを Fixed モードで使ってメッセージの 32 バイト ダイジェストを TempKey またはメッセー
ジ ダイジェスト バッファに書き込みます 2 オプション システムノンス - システムによって生成されたノンス
21 外部メッセージ ダイジェストが TempKey に保存される場合システムによって生成されたノンスを
メッセージ ダイジェスト バッファの下位 32 バイトに保存する必要があります 22 外部メッセージを MessageDigestBuffer[310]に保存する場合システムノンスを MessageDigest
Buffer[6332]に保存する必要がありますこれを行うには外部メッセージとノンス値を 1 つの 64 バ
イト値として書き込む必要があります 3 Verify コマンドを発行しますModeKeyID (P256 ECC 曲線を指定)64 バイト署名64 バイト外部公開
鍵を含めます 4 出力は以下を返します
41 MAC を要求しない場合 1 バイトの成功失敗エラーコード 42 MAC を要求する場合 32 バイト MAC
表 5-63 入力パラメータ Verify - External Public Key
Opcode (1 バイト)
Mode (1 バイト)
Key ID (2 バイト)
Data フィールド(128 バイト) 注釈
署名 (64 バイト)
公開鍵 (64 バイト)
0x45 0x02 0x00 04 R 値 S 値
X 値 Y 値
メッセージを TempKey に保存する
0x22 0x00 04 R 値 S 値
X 値 Y 値
メッセージをメッセージ ダイジェスト バッファ
に保存する
0xA2 0x00 04 R 値 S 値
X 値 Y 値
bull メッセージを TempKey に保存する bull システムノンスを MDB[310]に保存する bull 検証 MAC を返す
0x82 0x00 04 R 値 S 値
X 値 Y 値
bull メッセージをメッセージ ダイジェスト バッファに保存する
bull システムノンスを MDB[6332]に保存する bull 検証 MAC を返す
Datasheet DS40002138A_JP - p 56 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-64 出力レスポンス Verify - External Public Key
名称 Mode サイズ 応答
Response 0x02 または 0x22
1 バイト bull 0x00 - 署名が正しいと証明された場合 bull 0x01 - 署名が一致しない場合 bull エラーコード - その他の理由による障害が発生した場合
0x82 または 0xA2
1 バイト または 32 バイト
bull 検証 MAC - 署名が正しいと証明された場合 bull 0x01 - 署名が一致しない場合 bull エラーコード - その他の理由による障害が発生した場合
表 5-65 Validation MAC - Verify External サ イ ズ (バイト)
TempKey 内のメッセージ メッセージ ダイジェスト バッファ内のメッセージ
32 IO 保護鍵の内容 IO 保護鍵の内容
32 メッセージを TempKey に保存する メッセージをメッセージ ダイジェスト バッファの最初
の 32 バイトに保存する
32 システムノンスをメッセージ ダイジェスト バッファの最初の 32 バイトに保存する
システムノンスをメッセージ ダイジェスト バッファの
第 2 の 32 バイトに保存する
32 渡された署名の R データ 渡された署名の R データ
32 渡された署名の S データ 渡された署名の S データ
1 Opcode Opcode
1 Mode Mode
2 Param2 [LSBMSB] Param2 [LSBMSB]
5252 Verify - Stored Public Key
Verify コマンドを Stored モードで使う場合使用する公開鍵はデータスロットに保存されるためコマンドに渡す
必要はありませんこのコマンドを実行する前にNonce コマンドを使ってメッセージを TempKey またはメッセー
ジ ダイジェスト バッファに保存する必要があります
保存鍵を使ってメッセージを検証するための手順 1 必要に応じVerify コマンドを使う前に公開鍵を検証します 2 必要に応じ公開鍵を使用前に認証します 3 Nonce コマンドを Fixed モードで使ってメッセージの 32 バイト ダイジェストを TempKey またはメッセー
ジ ダイジェスト バッファに書き込みます 4 システムノンスをメッセージ ダイジェスト バッファの下位または上位 32 バイトに書き込みます
41 TempKey にメッセージ ダイジェストを格納する場合システムノンスはメッセージ ダイジェスト バッファの下位 32 バイトに保存します
42 メッセージをメッセージ ダイジェスト バッファの下位 32 ワードに保存する場合システムノンスは
メッセージ ダイジェスト バッファの上位 32 バイトに保存しますユーザはNonce コマンドを使
ってメッセージ ダイジェストとシステムノンスの両方を 1 度に書き込む必要があります 5 Verify コマンドを発行しますModeKeyID (公開鍵スロットを指定)64 バイト署名内部公開鍵のスロッ
ト番号を含めます 6 出力は以下を返します
61 MAC を要求しない場合 1 バイトの成功失敗エラーコード 62 Mode を要求する場合 32 バイト MAC (コマンド実行に失敗した場合はエラーコード)
Datasheet DS40002138A_JP - p 57 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-66 入力パラメータ Verify - Stored Public Key
Opcode (1 バイト)
Mode (1 バイト)
公開鍵 (2 バイト)
Data フィールド (64 バイト)
注釈
署名(64 バイト) 0x45 0x00 lt0x000[Slot] R 値
S 値 - メッセージを TempKey に保存する
0x20 lt0x000[Slot] R 値 S 値
- メッセージをメッセージ ダイジェスト バッファに
保存する
0x80 lt0x000[Slot] R 値 S 値
- メッセージを TempKey に保存し検証 MAC を返
す
0xA0 lt0x000[Slot] R 値 S 値
- メッセージをメッセージ ダイジェスト バッファに
保存し検証 MAC を返す
表 5-67 出力レスポンス Verify - Stored Public Key
名称 Mode サイズ 応答
Response 0x00 または 0x20
1 バイト bull 0x00 - 署名が正しいと証明された場合 bull 0x01 - 署名が一致しない場合 bull エラーコード - その他の理由による障害が発生した場合
0x80 または 0xA0
32 バイト 1 バイト
bull 検証 MAC - 署名が正しいと証明された場合 bull 0x01 - 署名が一致しない場合 bull エラーコード - その他の理由による障害が発生した場合
表 5-68 Validation MAC - Verify Stored 検証 MAC 入力の保存位置はメッセージの保存位置に応じて異なります
サ イ ズ (バイト)
TempKey 内のメッセージ メッセージ ダイジェスト バッファ内のメッセージ
32 IO 保護鍵の内容 IO 保護鍵の内容
32 TempKey からのメッセージ ダイジェスト バッファからの最初の 32 バイト メッセ
ージ 32 システムノンスをメッセージ ダイジェスト
バッファの最初の 32 バイトに保存する シ ス テ ム ノ ン ス を メ ッ セ ー ジ ダ イ ジ ェ ス ト バッファの 2 番目の 32 バイトに保存する
32 渡された署名の R データ 渡された署名の R データ
32 渡された署名の S データ 渡された署名の S データ
1 オペコード Opcode
1 Mode Mode
2 Param2 [LSBMSB] Param2 [LSBMSB]
5253 Verify - ValidateInvalidate
Verify コマンドを使って公開鍵を有効または無効にできますアクセスポリシーが有効化を要求する公開鍵のみ
このプロセスに従う必要があります公開鍵を使って署名を検証する前にその公開鍵を有効にする必要があります
有効な公開鍵を更新する場合書き込む前にその公開鍵を無効にする必要があります内部に保存される公開鍵だけ
が有効または無効にできます公開鍵のステータスは公開鍵スロットのバイト 0 の最上位ニブルに保存されます
ATECC608A-TFLXTLS ではスロット 14 が有効な公開鍵を格納します
Datasheet DS40002138A_JP - p 58 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
公開鍵を有効または無効にするための手順 1 GenKey を使って有効または無効にする公開鍵のダイジェストを生成して TempKey に保存します 2 OtherData[180]バイトは元の署名を計算する際に使われたバイトと同じである事が必要です
ndash OtherData[17][0] = 0 鍵を有効にする場合 ndash OtherData[17][0] = 1 鍵を無効にする場合 ndash このビットはVerify - Validate または Verify - Invalidate コマンドの Mode[2]の値と一致す
る必要があります一致しない場合エラーが発生します
Note メッセージはSign コマンドの Internal モードと同様の方法で生成されますがOtherData[180]バイ
トを使います 3 Verify - Validate または Verify - Invalidate コマンドを署名の R および S 値と OtherData バイ
トを含めて発行します 4 有効化(Validate)または無効化(Invalidate)に成功するとコード 0x00 が返されスロットの LSB の bit[74]が設定
されます
表 5-69 入力パラメータ - Verify ValidateInvalidate
Opcode (1 バイト)
Mode (1 バイト)
Key ID (2 バイト)
Data フィールド(83 バイト) 注釈
署名 (64 バイト)
OtherData(1)
(19 バイト)
0x45 0x03 0x00 0[Slot] R 値 S 値
OtherData[17][0] = 0 公開鍵を有効にする
0x07 0x00 0[Slot] R 値 S 値
OtherData[17][0] = 1 公開鍵を無効にする
Note 1 OtherData バイトの値は元のメッセージの生成に使われたデータと一致する必要があります
表 5-70 出力レスポンス Verify ValidateInvalidate
名称 サイズ 概要
Response 1 バイト bull 0x00 - 署名が正しいと証明された場合 bull 0x01 - 署名が一致しない場合 bull エラーコード - その他の理由による障害が発生した場合
ValidateNibble of Public Key 4 ビット Slot[n][0] [74]は公開鍵の更新値 bull 0x5 - 公開鍵が有効にされた場合 bull 0xA - 公開鍵が無効にされた場合
表 5-71 生成されるメッセージ
Note 1 これらのバイトは署名を生成した元のメッセージ内で使われたバイトと一致する必要があります元のメッ
セージの計算は 5241 「内部メッセージの生成」を参照してください上記の通りバイト 17 の bit 0 のみ一
致しなくても構いません
Datasheet DS40002138A_JP - p 59 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
53 対称暗号コマンド
531 AES コマンド
AES コマンドはAES 鍵を使ってデータの 16 バイトブロックを暗号化または復号するために使えます鍵は指定
されたスロット内の 16 バイト(128 ビット)位置または TempKey の最初の 16 バイトに保存されます指定されたスロ
ットには複数の鍵を保存してアクセスできますこれらの鍵は連続する 16 バイト境界(バイト 0-15 からスロットの
サイズまで)に格納できますが1 つのスロットに 5 個以上の鍵を保存する事はできませんATECC608A-TFLXTLSの場合AES 鍵はスロット 5 または 9 に保存できますスロット 5 は最大で 2 個の AES 鍵を格納できスロット 9は最大で 4 個の AES 鍵を格納できます
AES 暗号化復号の他にAES コマンドを使って GFM (Galois Field Multiply)を生成する事もできますこれは
ATECC608A-TFLXTLS が直接サポートしない暗号演算をサポートするために使います
5311 AES - ECB Encrypt
AES-ECB Encrypt モードでは入力ストリーム内で 16 バイトの平文が期待されデバイスは 16 バイトの暗号文を出
力します
表 5-72 入力パラメータ AES-ECB Encrypt
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
Data (16 バイト)
注釈
0x51 0x00 0x00 0[Slot] 16 バイトの平文データ 暗号化鍵を Position 0 に保存 0x40 暗号化鍵を Position 1 に保存 0x80 暗号化鍵を Position 2 に保存 0xC0 暗号化鍵を Position 3 に保存
0x00 0xFF FF 16 バイトの平文データ 暗号化鍵を TempKey に保存
表 5-73 出力レスポンス AES-ECB Encrypt
名称 サイズ (バイト) 注釈
Response 1 動作に失敗した場合1 バイトのエラーコードが出力されます
16 動作に成功した場合デバイスは 16 バイトの暗号文を出力します
5312 AES-ECB Decrypt
AES コマンドの AES-ECB Decrypt モードは暗号文を平文へ復号するために使います
表 5-74 入力パラメータ AES-ECB Decrypt
Opcode (1バイト)
Mode (1 バイト)
KeyID (2 バイト)
Data (16 バイト)
注釈
0x51 0x01 0x00 0[Slot] 16 バイトの AES 暗号化データ 復号鍵を Position 0 に保存 0x41 復号鍵を Position 1 に保存 0x81 復号鍵を Position 2 に保存 0xC1 暗号化鍵を Position 3 に保存
0x01 0xFF FF 16 バイトの平文データ 復号鍵を TempKey に保存
表 5-75 出力レスポンス AES-ECB Decrypt
名称 サイズ (バイト) 注釈
Response 1 動作に失敗した場合1 バイトのエラーコードが出力されます
16 動作に成功した場合デバイスは 16 バイトの平文を出力します
Datasheet DS40002138A_JP - p 60 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5313 AES-GFM
各種の AES 暗号演算の一部として GFM 演算がよく使われますこの関数はATECC608A-TFLXTLS が直接サポー
トしない演算をサポートするために提供されますこの演算の出力はAES-GCM AEAD 機能の中で使えますこの
モードはデバイスに保存されている秘密鍵やその他の内容に一切関与しません このモードが選択された場合その他のモードビットは無視されます
表 5-76 入力パラメータ AES-GFM
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
Data (32 バイト)
概要
0x51 0x03 0x00 00 bull 最初の 16 バイト - H-Field bull 2 番目の 16 バイト - 入力データ
表 5-77 出力レスポンス AES-GFM
名称 サイズ (バイト) 注釈
Response 1 動作に失敗した場合1 バイトのエラーコードが出力されます
16 動作に成功した場合デバイスは 16 バイトの GFM 計算結果を出力します
532 CheckMac コマンド
CheckMac コマンドは本デバイスとは異なる CryptoAuthentication デバイス (ATECC608AATECC508A
ATSHA204A)上で生成された MAC レスポンスを計算しその結果を入力値と比較しますこのコマンドは比較の
結果を示す真偽値を返します
TempKey 内の値を CheckMac への入力として使う場合CheckMac コマンドの前に Nonce およびまたは GenDigコマンドを実行する必要があります
表 5-78 入力パラメータ CheckMac
Opcode (1 バイト)
Mode (1 バイト)(2)
KeyID (2 バイト)
Data (77 バイト)(1)
概要
0x28 0x00 0x00 0[Slot] bull 32 バイト クライアント チャレンジ bull クライアントによって生成される 32
バイト レスポンス bull 13 バイトの OtherData
0x01 0x00 0[Slot] bull 32 バイトは無視されるが存在する
必要がある bull 32 バイト クライアント レスポンス bull 13 バイトの OtherData
TempKeySource が Random で
あった場合に使用
0x05 0x00 0[Slot] TempKeySource が Fixed であ
った場合に使用
0x02 0x00 00 bull 32 バイト クライアント チャレンジ bull 32 バイト クライアント レスポンス bull 13 バイトの OtherData
TempKeySource が Random で
あった場合に使用
0x06 0x00 00 TempKeySource が Fixed であ
った場合に使用
Note 1 OtherData[012]の値は元の MAC コマンドで使われた値と一致する必要があります 2 0x00 以外のモードではMode[2] は TempKeySource フラグと一致する必要があります
Datasheet DS40002138A_JP - p 61 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-79 出力レスポンス CheckMac
名称 サイズ 概要
Response 1 バイト bull 0x00 - 成功した場合 bull 0x01 - 不一致がある場合 bull エラーコード - 障害がある場合
表 5-80 SHA256 CheckMac Hash
バイト数 Mode 0x00 Mode 0x01 または 0x05 Mode 0x02 または 0x06
32 Key[KeyID] Key[KeyID] TempKey
32 入力クライアント チャレンジ TempKey 入力クライアント チャレンジ
4 OtherData[03] OtherData[03] OtherData[03]
8 全て 0 全て 0 全て 0
3 OtherData[46] OtherData[46] OtherData[46]
1 SN[8] = 0x01 SN[8] = 0x01 SN[8] = 0x01
4 OtherData[710] OtherData[710] OtherData[710]
2 SN[01] = 0x01 0x23 SN[01] = 0x01 0x23 SN[01] = 0x01 0x23
2 OtherData[1112] OtherData[1112] OtherData[1112]
533 GenDig コマンド
GenDig コマンドはSHA-256 ハッシュを使って保存されている値または入力値と TempKey の内容を組み合わせ
ますこのコマンドを実行する前にTempKey の内容を検証する必要があります保存値はデータスロットの 1 つ
Configuration ゾーンいずれかの OTP ページモノトニック カウンタから取り込めますデバイスのモードに応じ
てGenDig 計算にどのデータを含めるかが決まります
場合によっては何らかのコマンドを実行する前に GenDig を実行する必要があります与えられたコマンドを実行
する前にGenDig コマンドを複数回実行する事によりダイジェストに追加のデータを含める事ができますその
結果得られたダイジェストは TempKye で保持され以下の 4 通りの方法で使えます
1 MACSignCheckMac コマンドによって使われるメッセージの一部としてダイジェストを含める事ができま
すMAC レスポンス出力は GenDig 計算で使われたデータと MAC コマンドからの秘密鍵の両方を含むため
ダイジェストは Data およびまたは OTP ゾーンに保存されているデータの認証用に使えます 2 後続の Read または Write コマンドはダイジェストを使ってデータに認証およびまたは機密性を提供でき
ますこの場合ダイジェストはデータ保護ダイジェストと呼びます 3 このコマンドはトランスポート鍵配列からの値を使う事によりセキュア パーソナライズ用に使えます結
果として得られたデータ保護ダイジェストはWrite コマンドによって使われます 4 入力値(通常はリモートデバイスからのノンス)と現在の TempKey 値が組み合わされて共有ノンスが生成され
その中で両方のデバイスは RNG が含まれている事を証明できます
5331 GenDig - Config
Configuration ゾーンからのデータを GenDig 計算に含める事ができますデータは常に 32 バイトブロックに含めら
れ1 ブロックのみ指定された GenDig 計算に含める事ができます最初の GenDig コマンドを実行する前に
Nonce コマンドを実行して TempKey に値を書き込む必要があります後続の GenDig コマンドは直前の GenDig演算から TempKey に保存された値を使います
Datasheet DS40002138A_JP - p 62 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-81 入力パラメータ GenDig - Config
Opcode (1 バイト)
Mode (1 バイト)
KeyID(1)
(2 バイト) Data (0 バイト)
概要
0x15 0x00 0x00 00 mdash Configuration ブロック 0 を使う
0x00 01 mdash Configuration ブロック 1 を使う
0x00 02 mdash Configuration ブロック 2 を使う
0x00 03 mdash Configuration ブロック 3 を使う
Note 1 KeyId はTempKey 計算で使う Configuration ゾーンのブロックを指定します
表 5-82 出力レスポンス GenDig - Config
名称 サイズ 概要
Response 1 バイト コマンドの実行に成功した場合は 0x00コマンドの実行に失敗した場合はエラーコ
ード
Note フラグビット 1 TempKeyValid フラグは実行に成功した場合に「1」に設定されそれ以外の場合に「0」に設定されます 2 TempKeyGenDigData は「0」に設定されます
表 5-83 TempKey 計算 GenDig ndash Config
5332 GenDig - OTP
OTP ゾーンからのデータを GenDig 計算に含める事ができますデータは常に 32 バイトブロックに含められ1 ブロ
ックのみ指定された GenDig 計算に含める事ができます最初の GenDig コマンドを実行する前にNonce コマンド
を実行して TempKey に値を書き込む必要があります後続の GenDig コマンドは直前の GenDig 演算からの値を
使います 表 5-84 入力パラメータ GenDig - OTP
Opcode (1 バイト)
Mode (1 バイト)
KeyID(1)
(2 バイト) Data (0 バイト)
概要
0x15 0x01 0x00 00 mdash OTP ブロック 0 を KeyID として使う
0x00 01 mdash OTP ブロック 1 を KeyID として使う
Note 1 KeyId はTempKey 計算で使う OTP ゾーン ブロックを指定します
表 5-85 出力レスポンス GenDig - OTP
名称 サイズ 概要
Response 1 バイト コマンドの実行に成功した場合は 0x00コマンドの実行に失敗した場合はエラーコ
ード
Datasheet DS40002138A_JP - p 63 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
Note フラグビット 1 TempKeyValid フラグは実行に成功した場合に「1」に設定されそれ以外の場合に「0」に設定されます 2 TempKeyGenDigData は「0」に設定されます
表 5-86 TempKey 計算 GenDig ndash OTP
5333 GenDig - Data
DATA ゾーンからのデータを GenDig 計算に含める事ができますデータは常に 32 バイトブロックに含められスロ
ットの最下位ブロックのみ GenDig 計算に含められます最初の GenDig コマンドを実行する前にNonce コマンド
を実行して TempKey に値を書き込む必要がありますスロットがランダムノンスを要求する場合データはデバイ
スに渡す代わりに Nonce コマンドによって生成する必要があります後続の GenDig コマンドは直前の GenDig演算からの値を使います
スロットが NoMAC に設定されている場合この GenDig の出力を MAC コマンドで使う事はできませんGenDig を
複数回実行する場合いずれかのスロットで NoMAC が設定されているとTempKey 内の出力を MAC コマンドで使
う事はできません
表 5-87 入力パラメータ GenDig - Data
Opcode (1 バイト)
Mode (1 バイト)
KeyID(1)
(2 バイト) Data (0 また
は 4 バイト) 概要
0x15 0x02 0x00 0[Slot] mdash このスロット番号からのデータを計算に使う
0x00 0[Slot] 4 バイト このスロット番号からのデータを計算に使う(NoMAC 鍵スロ
ットを使う場合は OtherData を使う)
Note 1 KeyId はTempKey 計算で使う Data ゾーンスロットを指定します最下位の 32 バイトだけが使われます
表 5-88 出力レスポンス GenDig - Data
名称 サイズ 概要
Response 1 バイト コマンドの実行に成功した場合は 0x00コマンドの実行に失敗した場合はエラーコ
ード
Noteフラグビット 1 TempKeyValid フラグは実行に成功した場合に「1」に設定されそれ以外の場合に「0」に設定されます 2 TempKeyGenDigData は「1」に設定されData ゾーンスロットが計算で使われた事が示されます 3 TempKeyKeyID はコマンド内で指定されたスロットに設定されます 4 TempKeyNoMacFlag はMAC コマンドが許容される場合は「0」に設定され許容されない場合は「1」に
設定されます
表 5-89 TempKey 計算 GenDig - Data
サイズ パラメータ - MAC パラメータ - NoMAC
32 バイト DATAslot[KeyID] DATAslot[KeyID]
4 バイト Opcode Mode KeyID = 0x15 0x02 0x0[Slot] 0x00 OtherData[03]
1 バイト SN[8] = 0x01 SN[8] = 0x01
Datasheet DS40002138A_JP - p 64 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
続き サイズ パラメータ - MAC パラメータ - NoMAC
2 バイト SN[01] = 0x01 0x23 SN[01] = 0x01 0x23
25 バイト 全て「0」 全て「0」
32 バイト TempKeyValue TempKeyValue
5334 GenDig - Shared Nonce
Shared Nonce モードでは32 バイトのデータがこのコマンドに入力されますこのモードは2 つのデバイスでノ
ンスを共有する必要がある場合に使います最初の GenDig コマンドを実行する前にNonce コマンドを実行して
TempKey に値を書き込む必要があります後続の GenDig コマンドは直前の GenDig 演算からの値を使います
表 5-90 入力パラメータ GenDig - Shared Nonce
Opcode (1 バイト)
Mode (1 バイト)
KeyID(1)
(2 バイト) Data (32 バイト)
概要
0x15 0x03 0x00 0[Slot] 入力データ 0x80 0[Slot] 入力データ
Note 1 KeyId はTempKey 計算で使う Data ゾーンスロットを指定します最下位の 32 バイトだけが使われます
表 5-91 出力レスポンス GenDig - Shared Nonce
名称 サイズ 概要
Response 1 バイト コマンドの実行に成功した場合は 0x00コマンドの実行に失敗した場合はエラーコ
ード
Note フラグビット 1 TempKeyValid フラグは実行に成功した場合に「1」に設定されそれ以外の場合に「0」に設定されます 2 TempKeyGenDigData は「1」に設定されData ゾーンスロットが計算で使われた事が示されます 3 TempKeyKeyID はコマンド内で指定されたスロットに設定されます
表 5-92 TempKey 計算 GenDig - Shared Nonce
サイズ パラメータ - KeyID MSB 0x00 パラメータ - KeyID MSB 0x80
32 バイト 入力データ TempKeyvalue
1 バイト Opcode = 0x15 Opcode = 0x15
1 バイト Mode = 0x03 Mode = 0x03
1 バイト KeyID の LSB = 0x0[Slot] KeyID の LSB = 0x0[Slot]
1 バイト 0x00 0x00
1 バイト SN[8] = 0x01 SN[8] = 0x01
2 バイト SN[01] = 0x01 0x23 SN[01] = 0x01 0x23
25 バイト 全て「0」 全て「0」
32 バイト TempKeyValue 入力データ
Datasheet DS40002138A_JP - p 65 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5335 GenDig - Counter
GenDig コマンドの Counter モードではカウンタの 2 進値が TempKey 計算に含められます最初の GenDig コマ
ンドを実行する前にNonce コマンドを実行して TempKey に値を書き込む必要があります後続の GenDig コマン
ドは直前の GenDig 演算からの値を使います
表 5-93 入力パラメータ GenDig - Counter
Opcode (1 バイト)
Mode (1 バイト)
KeyID (2 バイト)
Data (0 バイト)
概要
0x15 0x04 0x00 00 mdash Counter[0] 値を含める
0x00 01 mdash Counter[1] 値を含める
Note 1 KeyId はTempKey 計算で使うモノトニック カウンタを指定します
表 5-94 出力レスポンス GenDig Counter
名称 サイズ 概要
Response 1 バイト コマンドの実行に成功した場合は 0x00コマンドの実行に失敗した場合はエラーコ
ード
Note フラグビット 1 TempKeyValid フラグは実行に成功した場合に「1」に設定されそれ以外の場合に「0」に設定されます 2 TempKeyGenDigData は「0」に設定されます
表 5-95 TempKey 計算 GenDig ndash Counter
5336 GenDig - Key Config
GenDig コマンドの Key Config モードではスロット コンフィグレーションと KeyID によって指定された鍵の鍵コ
ンフィグレーションが GenDig TempKey 計算に含められます最初の GenDig コマンドを実行する前にNonce コ
マンドを実行して TempKey に値を書き込む必要があります後続の GenDig コマンドは直前の GenDig 演算から
の値を使います
表 5-96 入力パラメータ GenDig - Key Config
Opcode (1 バイト)
Mode (1 バイト)
KeyID(1)
(2 バイト) Data (0 または 4バイト)
概要
0x15 0x05 0x00 0[Slot] mdash スロット コンフィグレーション情報を含める
Note 1 KeyId はTempKey 計算に含めるコンフィグレーション情報を持つスロットの番号を指定します実際のスロ
ット値は計算に含まれません
Datasheet DS40002138A_JP - p 66 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-97 出力レスポンス GenDig - Key Config
名称 サイズ 概要
Response 1 バイト コマンドの実行に成功した場合は 0x00コマンドの実行に失敗した場合はエラーコ
ード
Noteフラグビット 1 TempKeyValid フラグは実行に成功した場合に「1」に設定されそれ以外の場合に「0」に設定されます 2 TempKeyGenDigData は「0」に設定されます
表 5-98 TempKey 計算 GenDig - Key Config
534 KDF コマンド
KDF コマンドは各種の KDF (Key Derivation Function)を実装します一般的にこの関数はソース鍵に入力文字列
を組み合わせる事で対称鍵ダイジェストアレイを生成します入力鍵は TempKey代替鍵バッファEERPROMスロットのいずれかに格納できその長さは 32 または 64 バイトです
KDF の出力結果(32 または 64 バイト)は出力バッファを介してシステムに返すかTempKey または代替鍵バッファ
に書き込むかEEPROM スロットに保存する事ができます32 バイトの KDF 結果はTempKey の下位 32 バイト領
域が既に有効である場合にのみTempKey の上位 32 バイト領域に書き込めます
5341 KDF - PRF
PRF はTLS 12 以前のバージョンで規定されている KDF (Key Derivation Function)でありセッション確立のため
に使われます本デバイスはマスタ秘密鍵生成セッション検証(終了メッセージ)鍵マテリアル生成(AEAD スイ
ートを含む)向けに使われる手法を含む各種バリエーションをサポートします
Datasheet DS40002138A_JP - p 67 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-99 入力パラメータ KDF - PRF
Opcode (1バイト)
Mode (1バイト)
KeyId(1) (2 バイト)
Details (4 バイト)
Data (0~127 バイト)
概要
入力ソース 出力結果
0x56 0x00 0x00 00 表 5-100 参照 表 5-100 内の DataLen に
より指定 TempKey (32 また
は 64 バイト) TempKey
0x04 0x00 00 TempKey - 上位ブロック 0x08 0x0[SO] 00 EEPROM スロット 0x0C 0x00 00 代替鍵バッファ 0x10 0x00 00 OutBuf - 平文 0x14 0x00 00 OutBuf - 暗号文
0x01 0x00 00 表 5-100 参照 表 5-100 内の DataLen によ
り指定 TempKey 上位ブロ
ック - 32 バイト TempKey
0x05 0x00 00 TempKey - 上位ブロック 0x09 0x0[SO] 00 EEPROM スロット 0x0D 0x00 00 代替鍵バッファ 0x11 0x00 00 OutBuf - 平文 0x15 0x00 00 OutBuf - 暗号文
0x02 0x00 0[SI] 表 5-100 参照 表 5-100 内の DataLen によ
り指定 EEPROM スロット TempKey
0x06 0x00 0[SI] TempKey - 上位ブロック 0x0A 0x0[SO]
0[SI] EEPROM スロット
0x0E 0x00 0[SI] 代替鍵バッファ 0x12 0x00 0[SI] Outtuf - 平文 0x16 0x00 0[SI] OutBuf - 暗号文
0x03 0x00 00 表 5-100 参照 表 5-100 内の DataLen によ
り指定 代替鍵バッファ TempKey
0x07 0x00 00 TempKey - 上位ブロック 0x0B 0x0[SO] 00 EEPROM スロット 0x0F 0x00 00 代替鍵バッファ 0x13 0x00 00 OutBuf - 平文 0x17 0x00 00 OutBuf - 暗号文
Note 1 [SO] = 出力スロット番号[SI] = 入力スロット番号
表 5-100 PRF 向け Details パラメータの説明
Bit 名称 概要
31-24 DataLen 入力パラメータのバイト長(Label | Seed in TLS lingo)
23-11 Zero 全てのビットは「0」である事が必要です
10-9 Aead 00 = 特別な AEAD 処理はしない 01 = 64 バイトを生成するために TargetLen は 1 である事が必要
bull 最初の 32 バイトは出力バッファ以外のターゲットへ出力される
bull 次の 32 バイトは出力バッファへ出力され暗号化されない 10 と 11 は使用禁止です指定すると構文エラーが返されます
8 TargetLen ターゲット位置に格納する 32 バイトブロックの数
0 = 1 ブロック(32 バイト)
1 = 2 ブロック(64 バイト)
7-2 Zero 全てのビットは「0」である事が必要です
Datasheet DS40002138A_JP - p 68 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
続き
Bit 名称 概要
1-0 KeyLen ソース鍵の長さ(16 バイトブロックの数)
0 = 1 ブロック(16 バイト) 1 = 2 ブロック(32 バイト) 2 = 3 ブロック(48 バイト) 3 = 4 ブロック(64 バイト)
表 5-101 出力レスポンス KDF - PRF
名称 Mode サイズ 概要
OutData 0x00~ 0x0F 1 成功失敗コード 出力が内部位置へ転送されるモードの場合
0x10~ 0x17 32 または 64 出力データ 出力が出力バッファに格納されるモードの場合
OutNonce 0x00~ 0x13 0 出力を暗号化しない場合
0x14~ 0x17 32 出力を暗号化する場合(ランダムノンスを生成して出力する)
5342 KDF - AES
KDF コマンドの AES モードは1 ブロックの入力データで AES-ECB を計算します結果は常に 32 バイトです(出力
の上位 16 バイトは 0 で埋められます)
Datasheet DS40002138A_JP - p 69 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-102 入力パラメータ KDF - AES
Opcode (1バイト)
Mode (1バイト)
KeyId(1) (2 バイト)
Details (4 バイト)
Data (16 バイト)
概要
入力鍵ソース(16 バイト) 出力結果
0x56 0x20 0x00 00 表 5-103 参照 暗号化するデータ TempKey (32 または 64バイト)
TempKey 0x24 0x00 00 TempKey - 上位ブロック 0x28 0x0[SO] 00 EEPROM スロット 0x2C 0x00 00 代替鍵バッファ 0x30 0x00 00 OutBuf - 平文 0x34 0x00 00 OutBuf - 暗号文
0x21 0x00 00 表 5-103 参照 暗号化するデータ TempKey 上位ブロック- TempKey 0x25 0x00 00 32 バイト TempKey - 上位ブロック 0x29 0x0[SO] 00 EEPROM スロット 0x2D 0x00 00 代替鍵バッファ 0x31 0x00 00 OutBuf - 平文 0x35 0x00 00 OutBuf - 暗号文
0x22 0x00 0[SI] 表 5-103 参照 暗号化するデータ EEPROM スロット TempKey 0x26 0x00 0[SI] TempKey - 上位ブロック 0x2A 0x0[SO]
0[SI] EEPROM スロット
0x2E 0x00 0[SI] 代替鍵バッファ 0x32 0x00 0[SI] Outtuf - 平文 0x36 0x00 0[SI] OutBuf - 暗号文
0x23 0x00 00 表 5-103 参照 暗号化するデータ 代替鍵バッファ TempKey 0x27 0x00 00 TempKey - 上位ブロック 0x2B 0x0[SO] 00 EEPROM スロット 0x2F 0x00 00 代替鍵バッファ 0x33 0x00 00 OutBuf - 平文 0x37 0x00 00 OutBuf - 暗号文
Note 1 [SO] = 出力スロット番号[SI] = 入力スロット番号
表 5-103 AES 向け Details パラメータの説明
Bit 名称 概要
31-2 Zero 全てのビットは「0」である事が必要です
1-0 KeyLoc AES 鍵はソース鍵マテリアル内の Src[KeyLoc16]に格納されます
bull 64 バイト位置の場合鍵は 4 つのブロックの内の 1 つに格納できます
bull 32 バイト位置の場合鍵はブロック 0 またはブロック 1 に格納できます
表 5-104 出力レスポンス KDF - AES
名称 Mode サイズ 概要
OutData 0x20~ 0x2F 1 成功失敗コード 出力が内部位置へ転送されるモードの場合
0x30~ 0x37 32 出力データ 出力が出力バッファに格納されるモードの場合
OutNonce 0x20~ 0x33 0 出力を暗号化しない場合
0x34~ 0x37 32 出力を暗号化する場合(ランダムノンスを生成して出力する)
Datasheet DS40002138A_JP - p 70 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
5343 KDF - HKDF
KDF コマンド内の HKDF 機能はTLS 13 およびその他のプロトコルで規定されている鍵導出演算をサポートする事を
目的としていますこれは常に Mode および Details パラメータで指定された鍵およびメッセージを使って 1 回の
HMACSHA256 計算を実行しますこのコマンドを複数回実行する事で HKDF 抽出を実装しHKDF 仕様に従って機能
を拡張できます64 バイト結果はTempKey レジスタの上位と下位に別々に書き込む事により生成できます
ATECC608A-TFLXTLS の場合特殊な IV 機能は Configuration ゾーン内で無効にされており使う事はできません
表 5-105 入力パラメータ KDF - HKDF
Opcode (1バイト)
Mode (1バイト)
KeyId(2)
(2 バイト) Details (4 バイト)
Data (0~127 バイト)
概要
入力ソース 出力結果
0x56 0x00(1) 0x00 00 表 5-106 参照 表 5-106 内の DataLen に
より指定 TempKey (32 また
は 64 バイト) TempKey
0x44 0x00 00 TempKey - 上位ブロック 0x48 0x0[SO] 00 EEPROM スロット 0x4C 0x00 00 代替鍵バッファ 0x50 0x00 00 OutBuf - 平文 0x54 0x00 00 OutBuf - 暗号文
0x41 0x00 00 表 5-106 参照 表 5-106 内の DataLen に
より指定 TempKey 上位ブロ
ック - 32 バイト TempKey
0x45 0x00 00 TempKey - 上位ブロック 0x49 0x0[SO] 00 EEPROM スロット 0x4D 0x00 00 代替鍵バッファ 0x51 0x00 00 OutBuf - 平文 0x55 0x00 00 OutBuf - 暗号文
0x42 0x00 0[SI] 表 5-106 参照 表 5-106 内の DataLen に
より指定 EEPROM スロット TempKey
0x46 0x00 0[SI] TempKey - 上位ブロック 0x4A 0x0[SO]
0[SI] EEPROM スロット
0x4E 0x00 0[SI] 代替鍵バッファ 0x52 0x00 0[SI] Outtuf - 平文 0x56 0x00 0[SI] OutBuf - 暗号文
0x43 0x00 00 表 5-106 参照 表 5-106 内の DataLen に
より指定 代替鍵バッファ TempKey
0x47 0x00 00 TempKey - 上位ブロック 0x4B 0x0[SO] 00 EEPROM スロット 0x4F 0x00 00 代替鍵バッファ 0x53 0x00 00 OutBuf - 平文 0x57 0x00 00 OutBuf - 暗号文
1 出力と入力が TempKey の下位 32 バイトへ割り当てられている場合Details パラメータの
MsgLoc を TempKey に設定(MsgLoc = 01)してはいけませんこれが発生した場合結果は予測不
可能ですこの組み合わせは使用禁止です 2 [SO] = 出力スロット番号[SI] = 入力スロット番号
表 5-106 HKDF 向け Details パラメータの説明
Bit 名称 概要
31-25 DataLen HKDF メッセージの長さ(バイト数)この値が 0 である場合メッセージは 32 バイトの 0x00 です
24-12 Zero 全てのビットは「0」である事が必要です
注意
Datasheet DS40002138A_JP - p 71 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
続き
Bit 名称 概要
11-8 msgKey EEPROM 内の場合メッセージの鍵スロット
7-3 Zero 全てのビットは「0」である事が必要です
2 ZeroKey 1 である場合鍵は 32 バイトの 0x00 です
1-0 MsgLoc メッセージの位置 00 = EEPROM スロット
01 = TempKey
10 = 入力パラメータ
11 = ATECC608A-TFLXTLS では無効
表 5-107 出力レスポンス KDF - HKDF
名称 Mode サイズ 概要
OutData 0x40~ 0x4F 1 成功失敗コード 出力が内部位置へ転送されるモードの場合
0x50~ 0x57 32 または 64 出力データ 出力が出力バッファに格納されるモードの場合
OutNonce 0x40~ 0x53 0 出力を暗号化しない場合
0x54~ 0x57 32 出力を暗号化する場合(ランダムノンスを生成して出力する)
5344 KDF 出力の暗号化
全ての KDF アルゴリズムにはECDH コマンドと同様の方法で出力バッファの暗号化が実装されています暗号化は
必須ではありませんがシステム セキュリティを向上させるために使えますATECC608A-TFLXTLS の場合出力
バッファの暗号化は有効化済みです暗号化に使う IO 保護鍵はスロット 6 に保存済みです暗号化を必要とするモ
ードについては各動作モードの説明を参照してください
暗号化出力は以下の手順により生成されます
1 IO 保護鍵スロットの最初の 32 バイト(ConfigChipOptions[1512]) は SHA256 バッファに複製されます 2 内部 RNG は 32 バイトの乱数を生成しそのノンスの最初の 16 バイトを SHA256 バッファに付加します 3 SHA256 バッファはハッシュ化されダイジェストと平文 KDF 結果の最初の 32 バイトの間で XOR が取られ
ます結果内に 16 バイトしか存在しない場合出力バッファはそれらの 16 バイトだけを格納しSHA ダイジ
ェストの 2 番目の 16 バイトは無視されます 4 出力内のバイト数が 32 を超える場合新しいダイジェストが IO 保護鍵(32 バイト)の SHA256 ハッシュによ
り生成されその後にステップ 2 からのランダムノンスの 2 番目の 16 バイトが続きます生成されたダイジ
ェストと結果の次の 32 バイトの間で XOR が取られます 5 出力バッファは暗号化された KDF 結果と 32 バイトノンスを格納します最初の 16 バイトだけが使われた
場合でもノンスの 32 バイト全てが出力されます
535 MAC コマンド
MAC (Message Authentication Code)コマンドはメッセージの SHA256 ダイジェストを生成するために使われます
このダイジェストはデバイス内に保存された鍵チャレンジデバイスに関するその他の情報を含みますこのコ
マンドの出力はこのメッセージのダイジェストです
このコマンドを使うための通常のコマンドフローは以下の通りです
1 Nonce コマンドを実行して入力チャレンジをロードしますオプションによりこのチャレンジと生成された
乱数を組み合わせる事ができますこの演算の結果はノンスとしてデバイス内部に保存されます
Datasheet DS40002138A_JP - p 72 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
2 必要に応じGenDig コマンドを 1 回または複数回実行する事でデバイス内の EEPROM 位置に保存されて
いる値をノンスと組み合わせる事ができますその結果はデバイス内部に保存されますこの機能により複
数の鍵をレスポンス生成の一部として使う事ができます 3 この MAC コマンドを実行して上記ステップ 1 (および必要に応じてステップ 2) の出力と EEPROM 鍵を組み合
わせる事で出力レスポンス(すなわちダイジェスト)を生成します
あるいは同じ GenDig メカニズムを通して秘密である事が要求されない任意のスロット内のデータをレスポンス
に蓄積する事ができますこれはその位置に保存されている値を認証する効果を有します
5351 Non-Diversified MAC
MAC は常に 88 バイト全てに対して計算され常に 32 バイトの SHA256 ダイジェストを生成しますNon-Diversified MAC はデバイスのシリアル番号を含みませんこのため入力パラメータが同じであればNon-Diversified MAC は全てのデバイスで同じです
表 5-108 入力パラメータ Non-Diversified MAC
Opcode (1バイト)
Mode (1 バイト)
KeyID (2 バイト)
Data(2)
(0~32 バイト) Mode 概要
0x08 0x00 0x00 0[Slot] 32 バイト bull 最初の 32 バイトはデータスロットからロードする bull 2 番目の 32 バイトは入力チャレンジから取る
0x01 または 0x05(1)
0x00 0[Slot] 0 バイト bull 最初の 32 バイトはデータスロットからロードする bull 2 番目の 32 バイトは TempKey から取る
0x02 または 0x06(1)
0x00 00 32 バイト bull 最初の 32 バイトは TempKey からロードする bull 2 番目の 32 バイトは入力チャレンジから取る
Note
(1) Mode[2] は TempKeySourceFlag と一致する必要があります (2) 存在する場合Data パラメータは入力チャレンジに対応します
表 5-109 出力レスポンス Non-Diversified MAC
名称 サイズ 概要
Response 1 バイト コマンド実行が失敗した場合
32 バイト SHA-256 ダイジェスト
表 5-110 Non-Diversified MAC の計算
バイト数 Mode 0x00 Mode 0x01 または 0x05 Mode 0x02 または 0x06
32 データスロット データスロット TempKey 32 入力チャレンジ TempKey 入力チャレンジ 1 Opcode (0x08) Opcode (0x08) Opcode (0x08) 1 Mode Mode Mode 2 KeyID KeyID KeyID 11 全て 0 全て 0 全て 0 1 SN[8] 0x01 SN[8] 0x01 SN[8] 0x01 4 全て 0 全て 0 全て 0 2 SN[01] 0x01 0x23 SN[01] 0x01 0x23 SN[01] 0x01 0x23 2 全て 0 全て 0 全て 0
5352 Diversified MAC
Diversified MAC はデバイスのシリアル番号を含みますシリアル番号はデバイスごとに異なるため必ず一意の
SHA256 ダイジェストが生成されますMAC は常に 88 バイト全てに対して計算され常に 32 バイトの SHA256 ダ
イジェストを生成します
Datasheet DS40002138A_JP - p 73 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS デバイスコマンド
表 5-111 入力パラメータ Diversified MAC
Opcode (1バイト)
Mode (1バイト)
KeyID (2 バイト)
Data(2) (0 ~
32 バイト) Mode 概要
0x08 0x40 0x00 0[Slot] 32 バイト bull 最初の 32 バイトはデータスロットからロードする bull 2 番目の 32 バイトは入力チャレンジから取る
0x41 ま た は 0x45(1)
0x00 0[Slot] 0 バイト bull 最初の 32 バイトはデータスロットからロードする bull 2 番目の 32 バイトは TempKey から取る
0x42 ま た は 0x46(1)
0x00 00 32 バイト bull 最初の 32 バイトは TempKey からロードする bull 2 番目の 32 バイトは入力チャレンジから取る
Note
(1) Mode[2] は TempKeySourceFlag と一致する必要があります (2) 存在する場合Data パラメータは入力チャレンジに対応します
表 5-112 出力レスポンス Diversified MAC
名称 サイズ 概要
Response 1 バイト コマンド実行が失敗した場合
32 バイト SHA-256 ダイジェスト
表 5-113 Diversified MAC の計算
バイト数 Mode 0x40 Mode 0x41 または 0x45 Mode 0x42 または 0x46
32 データスロット データスロット TempKey 32 入力チャレンジ TempKey 入力チャレンジ 1 Opcode (0x08) Opcode (0x08) Opcode (0x08) 1 Mode Mode Mode 2 KeyID KeyID KeyID 11 全て 0 全て 0 全て 0 1 SN[8]0x01 SN[8] 0x01 SN[8] 0x01 4 SN[47] SN[47] SN[47] 2 SN[01] 0x01 0x23 SN[01] 0x01 0x23 SN[01] 0x01 0x23 2 SN[23] SN[23] SN[23]
Datasheet DS40002138A_JP - p 74 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 応用のための情報
6 応用のための情報
ATECC608A-TFLXTLS はMicrochip 社の TrustampGO CryptoAuthenticationtradeファミリに属しますTrustFLEX ファミ
リの製品は使いやすくて簡単に実装できセキュアなプロビジョニングのために Microchip 社の技術とインフラスト
ラクチャを活用できますまたたとえ小量生産であってもエンドシステムにセキュリティ機能を実装する事ができ
ます
ATECC608A-TFLXTLS はIoT 対応製品にセキュリティ機能を追加する際の煩雑な手間を取り除く事を目的に開発さ
れました本製品はTLS 接続を介して IoT クラウドに容易に接続できるようまたその他のセキュリティ ユース
ケース (セキュアブート消耗品アクセサリ認証データおよび IP 保護等)へのサポートも提供できるよう設定済み
です
Microchip 社はセキュリティ デバイスに加えて各種ツールも開発していますこれらのツールにより弊社のハー
ドウェア デバイスをシームレスに統合しセキュリティ ソリューション全体を容易に開発できますMicrochip 社の
ソフトウェア セキュリティ ツールを使う事でインフラストラクチャのセットアップが容易にでき初期プロトタ
イプから製造まで開発を迅速に進める事ができます
61 ユースケース
ATECC608A-TFLXTLS はIoT 市場向けに定義済みです本デバイスはGoogle IoT Cloudtradeを直接サポートするよ
う設定済みですAmazon AWSregまたはその他の TLS サーバにはスロット 8 に証明書を追加する事により対応可能
です本デバイスはその他のユースケースにも使えます本デバイスの主なユースケースについて以下で簡単に説
明しますこれらのユースケースは単独で実装する事も互いに組み合わせて実装する事もできますこれらのユ
ースケースの試作および実装をサポートするためMicrochip 社はハードウェアおよびソフトウェア ツールを提供し
ています
セキュア TLS 接続 ATECC608A-TFLXTLS は各種のプロトコルを使ったセキュア TLS 接続をサポートします本デバイスは Google CloudAWS を含む各種のクラウド プロバイダへのセキュア接続を確立できますKDF (Key Derivation Function)の各種モードによりTLS12TLS13 セキュア接続インターネット プロトコル(およびそれ以前のバージョン)をサポー
トする適切な鍵を生成できます
セキュアブート マイクロコントローラまたはマイクロプロセッサのブートイメージの保護は多くのベンダーにとっての懸念事項で
す実行中のコードが信頼できる事(改ざんされていない事)を検証するための機能によりシステム全体の保全性が
維持されますATECC608A-TFLXTLS はシステムのコード ダイジェストをデバイスのデータスロットに保存する
事によりセキュアブートを可能にするよう設定済みです コードの初期実行時にシステムはシステム ファームウェアに対するダイジェストを再構成しそれを
ATECC608A-TFLXTLS に保存されているダイジェストと比較する事でファームウェアが改ざんされていない事を
確認できます
消耗品アクセサリの認証 多くの場合OEM はシステムのアクセサリと消耗品が適正品である事を確認するための機能を必要としますそのよ
うな機能はOEM の品質に関する評判市場におけるイメージ総合的な収益が低価格の模造品によって損なわれて
しまう事を防ぐために不可欠ですATECC608A-TFLXTLS はデバイスからルート CA (Root Certificate Authority)への信頼の輪(Chain of Trust)を提供する事によりその種の製品を認証するための機能を提供します
知的財産およびデータ保護 知的財産(IP)の保護はOEM の競争力を維持するために不可欠ですIP を保護する事でOEM が開発したファーム
ウェアまたはハードウェアが複製される事を防ぎますファームウェア IP 保護は単なるソフトウェア ベースのア
プローチで実現可能ですがファームウェア内部の鍵情報は攻撃に対して極めて脆弱です
製品を確実に正しいファームウェアで動作させるためATECC608A-TFLXTLS はハードウェア ベースのセキュアな
鍵ストレージを提供します本デバイスは対称認証と非対称認証の両方を実行できますこれらは鍵をセキュア エレメント内で安全に保存する事によりハッカーによって鍵が抽出および改変される可能性を低減します
Datasheet DS40002138A_JP - p 75 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 応用のための情報
一般データストレージ システムに小量の追加情報を保存したい場合がありますATECC608A-TFLXTLS ではデータの読み書きが可能な
データスロットを使う事によりEEPROM メモリデバイスを追加しなくてもそれらの情報を保存できます
62 開発ツール
ATECC608A-TFLXTLS は各種のハードウェアおよびソフトウェア ツールとアプリケーション開発を迅速に進める
ためのバックエンド サービスによりサポートされます初期開発は使いやすい Trust Platform Design Suite ツール
ファミリを使って始める事ができますこれらのツールはユースケースを実装するためのグラフィカルな手段を提
供し最終的にアプリケーションの実装に必要な C コードを生成します
定義済みの Trust Platform Design Suite ツールがお客様のアプリケーションに対応していない場合CryptoAuthLib ま
たは CryptoAuthLib の Pythonregバージョンと CryptoAuthTool を使ってアプリケーションを開発できます
CryptoAuthLib はTrust Platform Design Suite ツールから出力されるコードのバックボーンでもあります
ハードウェア ツールと ATECC608A- TFLXTLS のサンプルデバイスによりアプリケーションの完全な検証が可能で
す本デバイスのアクセスポリシーは設定済みであるためお客様はシステムレベルのコード開発に集中できます
アプリケーションが完成したらMicrochip 社から ATECC608A-TFLXTLS デバイスを注文できます
621 Trust Platform Design Suite
実装手順を簡素化するためMicrochip 社はウェブベースの Trust Platform Design Suite ツールを開発しましたこれ
らのツールはコンセプト段階から量産段階までお客様の開発を支援しますこれらのツールを使うと
ATECC608A-TFLXTLS のコンフィグレーションと定義済みアクセスポリシーによる制約内で特定のアプリケーシ
ョンを実装するために必要なトランザクション ダイアグラムとコードを開発できます
これらのツールの詳細はMicrochip 社ウェブサイトの「Security ICs」セクションから「CryptoAuthentication」製品
ページにアクセスしてご覧になれます
622 ハードウェア ツール
ATECC608A-TFLXTLS を使ったアプリケーションの開発には各種のハードウェア ツールが役立ちます本書に記
載していないツールについてはMicrochip 社ウェブサイトをご覧ください各ツールの説明にはユースケースの例
も記載しています
DM320118 - CryptoAuthentication Trust プラットフォーム DM320118 は ATSAMD21 マイクロコントローラATECC608A-TNGTLSATECC608A-TFLXTLSATECC608-TCSTM Trust デバイス(各 1 個ずつ)USB ハブmikroBUS コネクタオンボード デバッガを備えたコンパクトな開
発システムです Trust Platform Design Suite ツールを使って ATECC608A-TFLXTLS 向けの各種ユースケースを実装できますこのキ
ットを MPLABX または Atmel Studio Design 環境で使う事によりその他のアプリケーションも開発できます
DM320109 - CryptoAuthentication スタータキット DM320109 は ATSAMD21-XPRO 開発ボードにより構成されCryptoAuthentication デバイスで動作するファームウ
ェアがプログラミング済みですこのキットには AT88CKSCKTSOIC-XPRO ソケットボードが同梱されますがサ
ンプルデバイスは UDFN パッケージでのみ提供されるためUDFN バージョンのボードが別途必要です
ATECC608A-TFLXTLS のサンプルデバイスを別途入手する必要があります
AT88CKSCKTUDFN(SOIC)-XPRO AT88CKSCKTUDFN-XPRO と AT88CKSCKTSOIC-XPRO はXPRO インターフェイスを備えた任意のマイクロコン
トローラ開発ボードと一緒に使える汎用的な CryptoAuthentication ソケットキットですATECC608A-TFLXTLS のサ
ンプルデバイスを別途入手する必要があります
Datasheet DS40002138A_JP - p 76 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 応用のための情報
623 CryptoAuthLib
CryptoAuthLib はMicrochip 社の CryptoAuthentication デバイスファミリをサポートするソフトウェア ライブラリで
すATECC608A-TFLXTLS を使ったアプリケーションの開発にはこのライブラリを使用する事を推奨しますこ
のライブラリは本書に記載したコマンドを実行するために必要な API 関数の呼び出しを実装します
このライブラリは多くの Microchip 社製マイクロコントローラで簡単に動作させる事ができますがHAL (Hardware Abstraction Layer)を介して他のマイクロコントローラ(他社製品を含む)向けに容易に拡張できます
これらのツールの詳細は以下でご覧ください bull CryptoAuthLib - Web Link bull CryptoAuthLib - GitHub
API 関数の呼び出し 本書に記載した各コマンドには1 つまたは複数の API 呼び出しが割り当てられています通常全ての入力パラメ
ータを指定可能なベース AP 呼び出しが存在しますコマンドおよびサブセクションに示されるパラメータはこの
コマンドで使えます各 API 呼び出しには複数のモードがあります下表にコマンドとベース API 呼び出しの例を示
します詳細な API 情報はGitHub 情報を参照してください
表 6-1 CryptoAuthLib API 関数の呼び出しに対するコマンド例
デバイスコマンド API 呼び出し 注釈
Info atcab_info() Write atcab_write() Read atcab_read() SHA atcab_sha() Sign atcab_sign() Random atcab_random() Verify atcab_verify()
63 TrustFLEX と TrustampGO の比較
TrustampGO 製品は既成のセキュア ソリューションが使える小量生産ユーザ向けに定義されていますMicrochip 社の
セキュア製造ソリューションおよびインフラストラクチャを活用する事でこれらの製品は容易に実装できますユ
ーザが独自のセキュア製造環境を作成する必要はありません
TrustampGO 製品のシンプルさを保ったままセキュリティ環境をより自由に制御したいユーザのためにTrustFLEX 製
品が開発されましたTrustFLEX 製品はTrustampGO 製品のユースケースを実装可能である上に一部のセキュリテ
ィ鍵および証明書向けにより高い柔軟性を提供します bull TrustampGO と同じロック済みコンフィグレーション bull TrustampGO と同じデータスロット定義 bull セキュアブートを実装するためにユーザの公開鍵をデバイスへプロビジョニング可能 bull 対称鍵認証が可能必要な対称鍵をセキュア プロビジョニング プロセスの一部としてセキュアに提供可能 bull 証明書エレメントをカスタマイズし証明書チェーンをユーザの希望する PKI へリンク可能 bull I2C または SWI インターフェイス デバイス向けのオプション
TrustFLEX 製品の詳細とその他のプロビジョニング オプションについてはMicrochip 社のウェブページ
(CryptoAuthentication)を参照してください
Datasheet DS40002138A_JP - p 77 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS I2C インターフェイス
7 I2C インターフェイス I2C インターフェイスはSDA ピンと SCL ピンを使って各種の IO 状態を ATECC608A-TFLXTLS に対して示します
このインターフェイスは1 MHz で動作する Microchip 社製 AT24C16 シリアル EEPROM とプロトコルレベルで互換と
なるよう設計されています
Note 2 つのデバイスは多くの点で異なります(例 ATECC608A-TNGTLS と AT24C16 では既定値 I2C アドレスが異な
ります)従って各デバイスのデータシートを注意深く読む必要があります
ATECC608A-TFLXTLS の出力ピンはオープンドレイン ドライバしか備えないためSDA ピンは外付けプルアップ抵抗
を使って High に駆動する必要がありますバスマスタはオープンドレインまたはトーテムポールが使えます後者を
使う場合ATECC608A-TFLXTLS がバス上でデータを駆動している時にバスマスタはトライステートになる必要があり
ますSCL ピンは入力であり常に外部デバイスまたは外付け抵抗によって High および Low に駆動される必要があり
ます
71 IO 条件 本デバイスは以下の IO 条件に応答します
711 スリープ中のデバイス
スリープ中のデバイスは Wake 条件を除く全ての条件を無視します
bull Wake - SDA が tWLO以上の間 Low を保持した後に SDA の立ち上がりエッジが発生するとデバイスは低消費電力モ
ードを終了します遅延時間 tWHIの後にデバイスは I2C コマンドを受信可能となります bull アイドルまたはスリープ中のデバイスはtWLO が過ぎるまで SCL ピン上の全てのレベルまたは状態遷移を無視し
ますtWHI中のある時点で SCL ピンが有効になりデバイスは 712 「アクティブ中のデバイス」に記載した条件
に応答します
Wake 条件が成立するにはSDA ピンがシステム プロセッサによって tWLOの間 Low に駆動されるか0x00 のデータバ
イトが十分に遅い(すなわち SDA の Low 期間が tWLO より長い)クロックレートで転送される必要がありますデバイス
が復帰した時点で通常のプロセッサ I2C ハードウェアおよびまたはソフトウェアはデバイス通信用に使用可能となり
ますデバイス通信にはデバイスを低消費電力(スリープ) モードへ戻すために必要な IO シーケンスも含まれます
ヒント Wake パルスは0x00 のバイトを 100 kHz で送信する事により簡単に生成できます後続のコ
マンドはこれより高い周波数で実行できます
I2C モードでは既に復帰済みのデバイスは Wake シーケンスを無視します
バス上に複数デバイスが存在する場合 バス上に複数のデバイスが存在する場合I2C インターフェイスが約 300 kHz1 以下で動作すると特定データパターン
の送信によってバス上の ATECC608A-TFLXTLS が復帰します周波数が低いほどデバイスはより確実に復帰します
バスで送信される後続のデバイスアドレスは宛先のデバイスとのみ一致するため ATECC608A-TFLXTLS は応答しませ
んが復帰はします低周波数で他のデバイスと通信した後にスリープまたはアイドル シーケンスを発行して
ATECC608A-TFLXTLS を既知のステートに戻す事を推奨します
重要 tWLOはATECC608A- TFLXTLS が全ての製造および環境条件で確実に復帰できるようにするため
にシステムが提供する必要のある最小時間です実際にはこれよりも短いパルス幅でもデバイスは復帰
します
1 実際の周波数はデバイスごとの製造ばらつきと環境要因によって変化しますこの値は全ての条件でデバイス
が確実に復帰できると見なせる周波数です
Datasheet DS40002138A_JP - p 78 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS I2C インターフェイス
712 アクティブ中のデバイス アクティブ中のデバイスは以下の条件に応答します
bull DATA = 0 SCL が LowrarrHighrarrLow と遷移する間 SDA が Low を保持した場合「0」のビットがバス上で転送
されますSDA は SCL が Low の時に遷移できます bull DATA = 1 SCL が LowrarrHighrarrLow と遷移する間 SDA が High を保持した場合「1」のビットがバス上で転送
されますSDA は SCL が Low の時に遷移できます 図 7-1 I2C インターフェイスにおけるデータビットの転送
bull スタート条件 SCL が High の時に SDA が High から Low へ遷移するとスタート条件が発生します全てのコマ
ンドの前にスタート条件が必要です bull ストップ条件 SCL が High の時に SDA が Low から High へ遷移するとストップ条件が発生しますデバイスは
ストップ条件を受信した後に現在の IO トランザクションを終了しますデバイスはコマンドの実行に必要な全
てのバイトを入力で受信するとビジー状態に移行してコマンドの実行を開始しますストップ条件はデバイ
スへ送信される全てのパケットの最後で送信される必要があります 図 7-2 I2C インターフェイスのスタート条件とストップ条件
bull 肯定応答(ACK) 各アドレスバイトまたはデータバイトが転送された後の 9 番目のクロックサイクルでレシー
バは SDA ピンを Low にする事によってそのバイトを正常に受信した事を知らせます bull 否定応答(NACK) 各アドレスバイトまたはデータバイトが転送された後の 9 番目のクロックサイクルでレシ
ーバは SDA ピンを High のままにする事によってそのバイトの受信に問題があった事またはそのバイトでその
グループの転送が完了する事を知らせます 図 7-3 I2C インターフェイスの NACK および ACK 条件
Datasheet DS40002138A_JP - p 79 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS I2C インターフェイス
Configuration ゾーン内で設定されている I2C_Address が互いに異なる複数の ATECC608A-TFLXTLS は同じ I2C イ
ンターフェイス信号を容易に共有できますデバイスアドレスの 7 ビットは全て設定可能であるためATECC608A-TFLXTLS はシリアル EEPROM を含む任意の I2C デバイスとの間で I2C インターフェイスを共有する事もできます
72 ATECC608A-TFLXTLS への I2C 送信
システムから ATECC608A-TFLXTLS へのデータ送信の概要を図 7-4 に示します送信の順序は以下の通りです
bull スタート条件 bull デバイスアドレス バイト bull ワードアドレス バイト bull データバイト(1~N) (必要に応じて) bull ストップ条件
図 7-4 ATECC608A-TFLXTLS への通常の I2C 送信
ACK 期間中に SDA は ATECC608A-TFLXTLS によって Low に駆動されます
表 7-1 にIO トランザクションの各バイトを示します「I2C 名」列はAT24C16 のデータシートに記載されてい
るバイト名です
表 7-1 ATECC608A-TFLXTLS への I2C 送信
名称 I2C 名 概要
Device Address
Device Address
このバイトはI2C インターフェイス上で特定デバイスを選択しますこのバイトの bit 1~7が Configuration ゾーン内の I2C_Address バイトの bit 1~7 に一致するとその ATECC608A-TFLXTLS が選択されますこのバイトの bit 0 は標準 I2C の RW ビットであり書き込み動作
(デバイスアドレス バイトに続くバイトをマスタからスレーブへ転送する) を示す「0」である
事が必要です
Word Address Word Address
通常動作ではこのバイトの値は 0x03 である事が必要です 詳細は 721 「ワードアドレス
値」を参照してください
Command Data1N カウントコマンドパケット2 バイト CRC で構成されるコマンドグループですCRC は
サイズおよびパケットバイトに対して計算されます 41 「IO トランザクション」を参照し
てください
本デバイスはコマンド入力バッファを FIFO として扱うため入力グループは 1 つまたは複数の I2C コマンドグルー
プに格納してデバイスへ送信できますデバイスへ最初に送信されるバイトはカウント(この後にデバイスが受信する
バイトの数)ですデバイスは実行が終了するまでこの数を超える後続の受信バイトを無視します
システムは最後のコマンドバイトの後にストップ条件を送信する必要がありますこれによりATECC608A-TFLXTLS はコマンドの処理を開始しますストップ条件の送信に失敗した場合同期が失われる可能性があります
(同期の回復手順は 722 「I2C の同期」参照)
721 ワードアドレス値 I2C パケット書き込み中はATECC608A-TFLXTLS は 2 番目のバイトをワードアドレスとして解釈しますワードア
ドレス値は表 7-2 の通りにパケットの機能を示します
Datasheet DS40002138A_JP - p 80 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS I2C インターフェイス
表 7-2 ワードアドレス値
名称 値 概要
Reset 0x00 アドレスカウンタをリセットします次の読み出しまたは書き込みトランザクションはIO バ
ッファの先頭位置で始まります
Sleep (Low-power)
0x01 ATECC608A-TFLXTLS は低消費電力スリープモードに移行し次の Wake フラグまで後続の IOトランザクションを全て無視しますデバイスの揮発性ステートは全てリセットされます
Idle 0x02 ATECC608A-TFLXTLS はアイドルモードに移行し次の Wake フラグまで後続の IO トランザク
ションを全て無視しますTempKeyメッセージ ダイジェスト バッファ代替鍵レジスタの内
容は保持されます
Command 0x03 後続のバイトを入力コマンドバッファ(前回の書き込み位置の次のアドレス)に書き込みますこ
れは標準の動作です
予約済み 0x04 ndash 0xFF これらアドレス値をデバイスへ送信してはいけません
722 I2C の同期 システムリセットや IO ノイズ等によってシステムと ATECC608A-TFLXTLS 上の IO ポートの間の同期が失われる可
能性がありますこのような場合ATECC608A-TFLXTLS は期待通りに応答できなくなります(スリープ状態になるか
システムがデータを送信しようとしているタイミングでデータを送信してしまう等)再同期するには以下の手順が
必要です
1 IO チャンネルを確実にリセットするためシステムは以下の通りに標準 I2C ソフトウェア リセット シーケン
スを送信する必要があります bull スタートビット条件 bull システムのプルアップ抵抗によって SDA を High に保持した状態で 9 サイクルの SCL bull 次のスタートビット条件 bull ストップビット条件
以上の手順によって同期が正しく確立されると読み出しシーケンスの送信が可能になりATECC608A-TFLXTLS はデバイスアドレスに対して ACK を返しますデータ期間中にデバイスはデータを返すかバスを
フロート状態(システムによって値が 0xFF のデータとして解釈される)にします
デバイスがデバイスアドレスに対して ACK を返した場合システムは内部アドレスカウンタをリセットする必
要がありますこれによりATECC608A-TFLXTLS はそれまでに送信された不完全な入力コマンドを無視しま
すアドレスカウンタはワードアドレス 0x00 (リセット) への書き込みシーケンスを送信した後にストップ条
件を生成する事によりリセットできます 2 デバイスがデバイスアドレスに対して ACK で応答しない場合デバイスはスリープ中である可能性があります
この場合システムは完全な Wake トークンを送信し立ち上がりエッジ後に tWHI が過ぎるまで待機する必要
がありますその後システムは読み出しシーケンスを再度送信できます同期が確立されていればデバイ
スはデバイスアドレスに対して ACK を返します 3 それでもデバイスがデバイスアドレスに対して ACK で応答しない場合デバイスはビジー状態(コマンドの実行
中)である可能性がありますシステムは最長の tEXEC(max)が過ぎるまで待機してから読み出しシーケンスを送
信する事でデバイスから ACK が返されます 73 スリープ シーケンス
システムはATECC608A-TFLXTLS の使用を終了した時点でスリープ シーケンスを発行してデバイスを低消費電力モ
ードに移行させる必要がありますこのシーケンスはデバイスアドレス値 0x01 (ワードアドレス)ストップ条件で
構成されます低消費電力状態に移行するとデバイスの内部コマンドエンジンと入出力バッファは完全にリセット
されますこのシーケンスはデバイスがアクティブかつ非ビジーの時にいつでもデバイスへ送信できます 74 アイドル シーケンス
コマンドの総シーケンス時間が tWATCHDOG を超えた場合デバイスは自動的にスリープに移行し揮発性レジスタ内
の情報は全て失われますこれを防ぐにはウォッチドッグ期間が終了する前にデバイスをアイドルモードに移行さ
せる必要がありますデバイスはWake トークンを受信した時にウォッチドック タイマを再始動し実行を継続で
きます
Datasheet DS40002138A_JP - p 81 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS I2C インターフェイス
このアイドル シーケンスはデバイスアドレス値 0x02 (ワードアドレス)ストップ条件で構成されますこのシーケン
スはデバイスがアクティブかつ非ビジーの時にいつでもデバイスへ送信できます 75 ATECC608A-TFLXTLS からの I2C 送信
ATECC608A-TFLXTLS がアクティブでありかつビジー状態ではない場合バスマスタは I2C 読み出しを使ってデバイ
スから現在の出力バッファの内容を読み出せます有効なコマンド結果が得られた場合返されるグループのサイズは
実行されたコマンドによって決まります結果が無効である場合グループ(および返される最初のバイト)のサイズは常
に 4 (カウントバイト + ステータスエラー バイト + 2 バイトの CRC)ですバスタイミングは図 9-2 を参照してください
表 7-3 ATECC608A-TFLXTLS からの I2C 送信
名称 I2C 名 方向 概要
Device Address
Device Address
To slave このバイトは I2C インターフェイス上の特定デバイスを選択しますこのバイトの bit 1~7 が Configuration ゾーン内の I2C_Address バイトの bit 1~7 に一致するとその
ATECC608A-TFLXTLS が選択されますこのバイトの bit 0 は標準 I2C の RW ビットであ
り読み出し動作(デバイスアドレス バイトに続くバイトをスレーブからマスタへ転送す
る)を示す「1」である事が必要です
Data Data1N To master 出力グループはカウントバイト + ステータスエラーバイトまたは出力パケット + 2 バイト
の CRC で構成されます 41 「IO トランザクション」を参照してください
マスタはステータスエラーコマンド出力を繰り返し読み出せますI2C インターフェイスを介して ATECC608A-TFLXTLS へ読み出しコマンドが送信されるたびにデバイスは出力バッファ内の次のバイトを送信します本デバイス
によるアドレスカウンタの扱い方はこの後で説明します
ATECC608A-TFLXTLS がビジーアイドルスリープ状態のいずれかである場合デバイスは読み出しシーケンス中の
デバイスアドレスに対して NACK を返します部分的なコマンドがデバイスへ送信された後に読み出しシーケンス[Start + DeviceAddress(RW == R)] がデバイスへ送信された場合ATECC608A-TFLXTLS はデバイスアドレスに対して NACKを返す事で読み出し可能なデータが存在しない事を示します
Datasheet DS40002138A_JP - p 82 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 単線式インターフェイス
8 単線式インターフェイス
このモードではSDA ライン(1 本の非同期ライン)を介して ATECC608A-TFLXTLS と双方向に通信しますSCL ピ
ンは通信チャンネルとして使われないためGPIO ピンとして使う事ができます
全体の通信構造は以下の通りに階層化されます
トークン IO トークンはバス上で送信される 1 個のデータビットまたは復帰イベントを実装します
フラグ フラグは 8 個のトークン (ビット)で構成され次に送信されるビットのグループの方向と意味を示します
グループ コマンドと送信フラグに続くデータのグループですこれらのグループは正しくデータを転送するため
にバイト数情報とチェックサムの両方を含みます
パケット グループのコアを形成するバイトのパケットです (バイト数と CRC を含まず )パケットは
CryptoAuthentication コマンドの入出力パラメータまたは ATECC608A- TFLXTLS からのステータス
情報のどちらかです
任意のマイクロコントローラを使ってこれらのエレメントを本デバイスへ送信するための信号生成方法は関連する
アプリケーション ノートを参照してくださいそれらのアプリケーション ノート(C ソースコード ライブラリを含む)は弊社ウェブサイトからダウンロードできます単線式インターフェイス モードで本デバイスを接続する方法は
85 「単線式インターフェイスの接続設定」を参照してください
81 IO トークン 単線式インターフェイスを介して以下の IO トークンを伝送できます
bull 入力(システムから ATECC608A-TFLXTLS への入力) ndash Wake 本デバイスをスリープまたはアイドルモードから復帰させるかIO インターフェイスをリセットし
ます ndash Zero システムから本デバイスへ値が「0」の 1 個のビットを送信します ndash One システムから本デバイスへ値が「1」の 1 個のビットを送信します
bull 出力(ATECC608A-TFLXTLS からシステムへの出力) ndash ZeroOut 本デバイスからシステムへ値が「0」の 1 個のビットを送信します ndash OneOut 本デバイスからシステムへ値が「1」の 1 個のビットを送信します
波形はどちらの伝送方向でも基本的に同じですしかしホスト側のクロックは高精度で安定しているのに対し
ATECC608A-TFLXTLS の内部クロック ジェネレータには製品ごとのばらつき(製造ばらつきと環境の影響による変動)があるためタイミングに多少の違いが生じます
ビットタイミングは2304 k baud レートの標準 UART 動作でトークンを効率的に送受信できるよう設定されていま
すUART により送受信される各バイトはデバイスによって送受信される単一ビットに対応します
Wake トークンには SDA ピン上で特別に長い Low パルスが必要ですこれによりデータトークン(ZeroOneZeroOutOneOut) 中に発生する短い Low パルスから区別されますアイドルまたはスリープモード中のデバイスは
正しい Wake トークンを受信するまで全てのデータトークンを無視しますプロセッサが ATECC608A と同期してい
ない場合プロセッサは追加の Wake トークンを本デバイスへ送信する事により本デバイス上の IO チャンネル ハードウェアをリセットできます
Note リセットによりコマンド出力バッファに保存されているデータは失われます
82 IO フラグ システムが常にバスマスタとなります従って全ての IO トランザクションを開始する前にシステムから本デバイ
スへ 8 ビットフラグを送信する事でこの後に IO 動作が続く事をデバイスに知らせる必要があります
Datasheet DS40002138A_JP - p 83 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 単線式インターフェイス
表 8-1 IO フラグ
値 名称 意味
0x77 Command このフラグの後にシステムは本デバイスへのコマンドグループの送信を開始しますこのフラグの最
後のビットの直後にコマンドグループの最初のビットを送信できます
0x88 Transmit このフラグはバス ターンアラウンド時間を待機した後に直前に送信されたコマンドグループに対
する応答の送信を開始するようデバイスに伝えます
0xBB Idle 本デバイスはこのフラグを受信するとアイドルモードに移行し次の Wake トークンを受信するまで
アイドルモードを維持します
0xCC Sleep 本デバイスはこのフラグを受信すると低消費電力スリープモードに移行し次の Wake トークンを受
信するまでスリープモードを維持します
Note これ以外の値は全て予約済みです(使用できません)
bull Transmit フラグ Transmit フラグはATECC608A-TFLXTLS がデータをシステムへ返送できるようバスの伝送方向を変更しま
すデバイスからシステムへ返されるバイトはデバイスの現在のステートに応じてステータスエラーコー
ドコマンド結果のいずれかを含みます
デバイスはコマンドの実行中(ビジー状態の時)に SDA ピンとシステムから送信される全てのフラグを無視し
ます各コマンドの実行遅延については「コマンドのまとめ」を参照してくださいシステムはコマンドを
本デバイスへ送信した後にこれらの遅延を順守する必要があります bull Idle フラグ
Idle フラグはATECC608A-TFLXTLS をアイドルモードに移行させるために使いますこれにより入力出力バ
ッファはクリアされますがTempKeyメッセージ ダイジェスト バッファ代替鍵レジスタの内容は無効にな
りませんこのフラグは本デバイスがフラグを受け入れる限りいつでも送信できます本デバイスがアイド
ルモード中の時にウォッチドッグ タイマは無効です bull Sleep フラグ
Sleep フラグは ATECC608A-TFLXTLS を低消費電力スリープモードに移行させますこれにより本デバイス
は完全にリセットされSRAM と全ての揮発性レジスタの内容は無効になりますこのフラグは本デバイス
がフラグを受け入れる限りいつでも送信できます
83 同期 この通信プロトコルは半二重であるためシステムと ATECC608A- TFLXTLS の間の同期が失われる可能性がありま
す速やかに同期を回復するため本デバイスは特定の状況でスリープへの移行を強制するタイムアウトを実装して
います
831 IO タイムアウト データトークンの受信によって最初の遷移(リーディング エッジ)が発生した後ATECC608A-TFLXTLS は tTIMEOUT以内にそのトークンの完了と次のトークンの開始(現在のトークンがグループの最後のトークンではない場合)を正し
く受信する事を期待します十分な数のビットが送信されなかった場合または無効なトークンが送信された(Lowパルスが tZLOを超えた)場合tTIMEOUT後にデバイスはスリープモードに移行します
コマンドグループの送信中にも同じタイムアウトが適用されます正しいコマンドフラグが送信された後IO タイ
ムアウト回路は期待する最後のデータビットを受信するまで有効になります
Note タイムアウト カウンタは正しいトークンが受信されるたびにリセットされます従ってコマンド送信の
総時間は tTIMEOUTを超えても構いませんがビットとビットの間の時間は tTIMEOUTを超えない事が必要です
IO タイムアウト回路はデバイスがコマンドの実行中(ビジー中)である時に無効になります
832 同期手順 システムが送信フラグを送信した時にデバイスがビジーではなかった場合デバイスは tTURNAROUND 以内に応答する
必要がありますtEXECが過ぎるまではデバイスはビジーである可能性がありシステムは最大 tEXECが過ぎるまで
ポーリングまたは待機する必要があります
Datasheet DS40002138A_JP - p 84 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 単線式インターフェイス
2 回目の送信フラグに対してもデバイスが tTURNAROUND 以内に応答しない場合同期が失われている可能性がありま
すこの場合システムは以下の手順により通信を再確立できます
1 tTIMEOUTを待機する 2 送信フラグを送信する 3 デバイスが tTURNAROUND以内に応答した場合システムは後続のコマンドを送信できる 4 Wake トークンを送信する 5 tWHIが過ぎるまで待機する 6 Transmit フラグを送信する 7 デバイスが tTURNAROUND以内にステータス 0x11 で応答した場合システムは後続のコマンドを送信できる
84 GPIO SWI モードの ATECC608A-TFLXTLS ではSCL ピンを汎用出力ピンとして設定できますデバイスへの電源投入時
の出力信号は Low ですこの出力の状態はGPIO Output モードの INFO コマンドを使って変更できます
GPIO はシステム内の他のデバイスに対するイネーブルまたはモード信号として使える他LED の駆動用に使えま
すI2C モードのデバイスではGPIO 信号は使えません
85 単線式インターフェイスの接続 単線式インターフェイスを使うと1 本のピン(SDA)だけで ATECC608A-TFLXTLS とホストの間の双方向データ転送
ができますこのインターフェイスは SCL ピンを使わないためSCL ピンは GPIO 出力として設定できます
内部ダイオードが順方向にバイアスされて電源プレーンからシステムに電流が引き込まれる事を防ぐためSDA ピン
のプルアップ抵抗を VCCピンに接続している同じ電源またはそれより電圧が低いレールに接続する必要があります
ATECC608A-TFLXTLS は固定された IO レベル向けに設定されているためSDA の信号レベルは VCC 電圧レベルと
異なる場合がありますこのような状況はATECC608A-TFLXTLS とバスマスタ デバイスの間の物理的距離が大き
い場合またはバスマスタの電源電圧が ATECC608A-TFLXTLS の電源電圧と異なる場合に生じる可能性があります
図 8-1 単線式インターフェイスの接続(3 線接続)
Datasheet DS40002138A_JP - p 85 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 電気的特性
9 電気的特性
91 絶対最大定格
動作温度
-40~+85
保管温度 -65~+150 最大動作電圧 60 V
DC 出力電流 50 mA
全ピンの電圧 -05 V~ (VCC + 05 V) ESD 耐圧 HBM gt 4 kV
CDM gt 1kV
Note ここに記載した「絶対最大定格」を超える条件はデバイスに恒久的な損傷を生じさせる可能性があります
これはストレス定格です本書の動作表に示す条件外でのデバイスの運用は想定していません絶対最大定格条件を
超えて長期間曝露させるとデバイスの信頼性に影響が及ぶ可能性があります
92 信頼性 ATECC608A-TFLXTLS は Microchip 社の高信頼性 CMOS EEPROM 製造技術を採用しています
表 9-1 EEPROM の信頼性
パラメータ Min Typ Max 単位
書き込み耐性 +85 (各バイト) 400000 mdash mdash 書き込みサイクル
データ保持寿命 +55 10 mdash mdash 年
データ保持寿命 +35degC 30 50 mdash 年
読み出し耐性 制限なし 読み出しサイクル
93 AC パラメータ 全 IO インターフェイス 図 9-1 AC タイミング図 全インターフェイス
Datasheet DS40002138A_JP - p 86 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 電気的特性
表 9-2 AC パラメータ 全 IO インターフェイス
パラメータ シンボル 方向 Min Typ Max
単位 条件
電源投入遅延(2) tPU To Crypto Authentication
100 mdash mdash micros VCC gt VCCmin から tWLOの開始までの最小
時間
復帰 LOW 期間 tWLO To Crypto Authentication
60 mdash mdash micros
データ通信開始前
の復帰 HIGH 遅延 tWHI To Crypto
Authentication 1500 mdash mdash micros ポーリングが未実装の場合この期間中
に SDA が安定して High を保持する必要
があります電源投入時にセルフテスト
機能は無効です
セルフテスト機能
が有効な場合の 復帰 HIGH 遅延
tWHIST To Crypto Authentication
20 mdash mdash ms ポーリングが未実装の場合この期間中
に SDA が安定して High を保持する必要
があります
アクティブ時 High レベル グリッチフィルタ
tHIGNORE_A To Crypto Authentication
45(1) mdash mdash ns アクティブ時にデバイスはそのステー
トに関係なくこの時間より短いパルス
を無視します
アクティブ時 Low レベル グリッチフィルタ
tLIGNORE_A To Crypto Authentication
45(1) mdash mdash ns アクティブ時にデバイスはそのステー
トに関係なくこの時間より短いパルス
を無視します
スリープ時 Low レベル グリッチフィルタ
tLIGNORE_S To Crypto Authentication
15(1) mdash mdash micros スリープモード時にデバイスはこの時
間より短いパルスを無視します
ウォッチドッグ タイムアウト
tWATCHDOG To Crypto Authentication
07 13 17 s ConfigChipMode[2] = 0 の場合復帰し
てからデバイスをスリープモードへ移行
させるまでの時間です
Note 1 これらのパラメータは特性データであり製造時の検査は実施していません 2 Configuration ゾーン内で電源投入時セルフテスト機能が有効にされている場合電源投入遅延時間は大幅に増
加します
931 AC パラメータ I2C インターフェイス 図 9-2 I2C 同期データ タイミング
Datasheet DS40002138A_JP - p 87 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 電気的特性
表 9-3 I2C インターフェイスの AC 特性 特に明記しない限りTA = -40~+ +85degCVCC = +20~+55 VCL = 1 TTL ゲート+100 pF の推奨動作レンジに適用
パラメータ シンボル Min Max 単位
SCL クロック周波数 fSCL 0 1 MHz
SCL High 時間 tHIGH 400 mdash ns
SCL Low 時間 tLOW 400 mdash ns
スタート条件セットアップ時間 tSUSTA 250 mdash ns
スタート条件ホールド時間 tHDSTA 250 mdash ns
ストップ条件セットアップ時間 tSUSTO 250 mdash ns
データ入力セットアップ時間 tSUDAT 100 mdash ns
データ入力ホールド時間 tHDDAT 0 mdash ns
入力立ち上がり時間(1)
tR mdash 300 ns
入力立ち下がり時間(1)
tF mdash 100 ns
クロック LOW からデータ出力確定までの時間 tAA 50 550 ns
データ出力ホールド時間 tDH 50 mdash ns
SMBus タイムアウト遅延 tTIMEOUT 25 75 ms
次の伝送が開始可能になるまでに必要なバスフリー時間(1)
tBUF 500 mdash ns
Note 1 これらのパラメータは特性データであり製造時の検査は実施していません 2 AC 計測条件
ndash RL (SDA と VCCの間を接続) 12 kΩ (VCC = +20~+50 V) ndash 入力パルス電圧 03VCC ~07VCC
ndash 入力立ち上がり立ち下がり時間 le 50 ns ndash 入出力タイミング参照電圧 05VCC
932 AC パラメータ 単線式インターフェイス
図 9-3 AC タイミング図 単線式インターフェイス
Datasheet DS40002138A_JP - p 88 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 電気的特性
表 9-4AC パラメータ 単線式インターフェイス
特に明記しない限りTA = -40~+85 VCC = +20~+55 VCL =100 pF に適用
パラメータ シンボル 方向 Min Typ Max 単位 条件
開始パルス期間 tSTART To Crypto Authentication
410 434 456 micros
From Crypto Authentication
460 6 860 micros
0 送信 HIGH パルス
tZHI To Crypto Authentication
410 434 456 micros
From Crypto Authentication
460 6 860 micros
0 送信 LOW パルス
tZLO To Crypto Authentication
410 434 456 micros
From Crypto Authentication
460 6 860 micros
ビット時間(note) tBIT To Crypto Authentication
37 39 mdash micros ビット時間が tTIMEOUTを超えると
ATECC608A-TFLXTLS はスリープモ
ードへ移行できます
From Crypto Authentication
41 54 78 micros
ターンアラウンド
遅延 tTURNAROUND From Crypto
Authentication 64 96 131 micros 送信フラグの最終ビットの開始パルス
の最初の立ち下がりエッジからこの時
間が経過するとATECC608A-TFLXTLS は最初の LOW への遷移を開
始します
To Crypto Authentication
93 mdash mdash micros ATECC608A-TFLXTLS が一連のビッ
トの最後のビットを送信した後 シス
テムはフラグの最初のビットを送信す
る前にこの時間が過ぎるまで待機す
る必要がありますこの時間は
ATECC608A-TFLXTLS が送信した最
後のビットの開始パルスの立ち下がり
エッジから計測されます IO タイムアウト tTIMEOUT To Crypto
Authentication 45 65 85 ms バスの非アクティブ状態がこの時間よ
りも長く続くとATECC608A-TFLXTLS はスリープモードへ移行でき
ます
Note tSTARTtZLOtZHItBITは送信と受信の両方で標準 UART (2304 kBaud で動作)と互換性を持つよう設定されて
いますUART は 7x データビットパリティなし1x ストップビットに設定する必要があります
94 DC パラメータ 全 IO インターフェイス 表 9-5 全 IO インターフェイスの DC パラメータ
パラメータ シンボル Min Typ Max 単位 条件
動作時周囲温度 TA -40 mdash +85
電源電圧 VCC 20 mdash 55 V
アクティブ時消費電流 ICC mdash 2 3 mA IO 転送中の IO 待機時または非 ECC コマンドの実行時(クロック分周値とは無関係)
Datasheet DS40002138A_JP - p 89 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 電気的特性
続き
パラメータ シンボル Min Typ Max 単位 条件
mdash mdash 14 mA ECC コマンドの実行時(クロック分周比 = 0x0)
アイドル時消費電流 IIDLE mdash 800 mdash microA デバイスがアイドルモード中の時 VSDAおよび VSCL lt 04 V または gt VCC - 04 V
スリープ電流 ISLEEP mdash 30 150 nA デバイスがスリープモード中の時VCC le 36 V VSDAおよび VSCL lt 04 V または gt VCC ndash 04 VTA le +55degC
mdash mdash 2 microA デバイスがスリープモード中の時 VCCおよび温度の全レンジに適用
出力 Low 電圧 VOL mdash mdash 04 V デバイスがアクティブモード中の時VCC = 25~55 V
出力 Low 電流 IOL mdash mdash 4 mA デバイスがアクティブモード中の時VCC = 25~55 V VOL = 04 V
接合部-大気間熱抵抗 ƟJA mdash 166 mdash W SOIC (SSH)
mdash 173 mdash W UDFN (MAH)
mdash 146 mdash W RBH
95 VIH VIL 仕様 デバイスの入力レベルはデバイスのモードと電圧に応じて変化しますスリープまたはアイドルモード中の入力電圧し
きい値は図 9-4 に示す通りVCC レベルに応じて変化しますスリープまたはアイドルモード中はTTLenable ビット
は効力を有しません
ATECC608A-TFLXTLS のアクティブ入力レベルは固定されておりVCC レベルと一緒に変化しませんデバイスへ送信さ
れる入力レベルは下表に従う必要があります
表 9-6 全 IO インターフェイスでの VILと VIH (TTLenable = 0)
パラメータ シンボル Min Typ Max 単位 条件
入力 Low 電圧 VIL -05 mdash 05 V デバイスがアクティブかつコンフィグレーション メモリ
内の TTLenable ビットが「0」の場合(これ以外の場合は
上記参照)
入力 High 電圧 VIH 15 mdash VCC + 05 V デバイスがアクティブかつコンフィグレーション メモリ
内の TTLenable ビットが「0」の場合(これ以外の場合は
上記参照)
Datasheet DS40002138A_JP - p 90 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 電気的特性
図 9-4 スリープおよびアイドルモード中の VIH と VIL
Datasheet DS40002138A_JP - p 91 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
10 パッケージ図面
101 パッケージのマーキング情報
Microchip 社の全体的なセキュリティ対応の一貫として全ての暗号デバイスの製品マーキングは意図的に曖昧にされ
ていますパッケージ上面のマークはデバイスのタイプやデバイスの製造者に関する情報を一切提供しませんパ
ッケージ上の英数字コードは製造情報を提供しアセンブリロットに応じて異なりますパッケージのマークはお
客様の受領検査の項目に含めないでください
Datasheet DS40002138A_JP - p 92 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
102 8 ピン UDFN
Datasheet DS40002138A_JP - p 93 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
Datasheet DS40002138A_JP - p 94 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
Datasheet DS40002138A_JP - p 95 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
103 8 ピン SOIC
Datasheet DS40002138A_JP - p 96 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
Datasheet DS40002138A_JP - p 97 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS パッケージ図面
Datasheet DS40002138A_JP - p 98 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS 改訂履歴
11 改訂履歴
リビジョン A (2019 年 9 月) 本書は初版です
Datasheet DS40002138A_JP - p 99 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
Microchip 社のウェブサイト
Microchip 社はウェブサイト(wwwmicrochipcom)を通してオンライン サポートを提供しています当ウェブサイトで
はお客様に役立つ情報やファイルを簡単に見つけ出せます以下を含む各種の情報がご覧になれます
bull 製品サポート - データシートとエラッタアプリケーション ノートとサンプル プログラム設計リソースユ
ーザガイドとハードウェア サポート文書最新のソフトウェアと過去のソフトウェア bull 技術サポート ndash よく寄せられる質問(FAQ)技術サポートのご依頼オンライン ディスカッション グループ
Microchip 社のコンサルタント プログラムおよびメンバーリスト bull ご注文とお問い合わせ - 製品セレクタと注文ガイド最新プレスリリースセミナーイベントの一覧お問い合
わせ先(営業所販売代理店)の一覧 顧客変更通知サービス
Microchip 社のお客様向け変更通知サービスはお客様に Microchip 社製品の最新情報をお届けする配信サービスです
ご興味のある製品ファミリまたは開発ツールに関する変更更新リビジョンエラッタ情報をいち早くメールにて
お知らせします
httpwwwmicrochipcompcn にアクセスし登録手続きをしてください カスタマサポート
Microchip 社製品をお使いのお客様は以下のチャンネルからサポートをご利用になれます
bull 正規代理店 bull 弊社営業所 bull 組み込みソリューション エンジニア(ESE) bull 技術サポート
サポートは販売代理店にお問い合わせください各地の営業所もご利用になれます本書の最後のページに各国の営
業所の一覧を記載しています
技術サポートは以下のウェブページからもご利用になれます
httpwwwmicrochipcomsupport
Datasheet DS40002138A_JP - p 100 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
製品識別システム
ご注文や製品の価格納期につきましては弊社または販売代理店にお問い合わせください
製品番号 X -X
デバイス パッケージタイプ テープampリール
デバイス ATECC608A-TFLXTLS セキュアなハードウェア ベース鍵ストレージを備えた設定
済み暗号コプロセッサ
パッケージ オプション U 8 ピン 2 x 3 x 06 mm ボディ熱的に強化された Plastic Ultra Thin Dual Flat (UDFN) 鉛フリー パッケージ
S 8 ピン(0150幅ボディ)Plastic Gull Wing Small Outline (JEDEC SOIC)
テープampリール オプション 2K 個入りリール
PROTO 10 ユニットバルク - プロトタイプ ユニット
例 bull ATECC608A-TFLXTLSU Trust Flex TLSプロビジョニング済み8-UDFN2K 個入りリール MOQSWI また
は I2C インターフェイス bull ATECC608A-TFLXTLSU-PROTO Trust Flex TLSプロビジョニング済みプロトタイプ8-UDFN10 個入り
バルクSWI または I2C インターフェイス bull ATECC608A-TFLXTLSS Trust Flex TLSプロビジョニング済み8-SOIC2K 個入りリール MOQSWI また
は I2C インターフェイス bull ATECC608A-TFLXTLSS-PROTO Trust Flex TLSプロビジョニング済みプロトタイプ8-SOIC10 個入りバ
ルクSWI または I2C インターフェイス
Datasheet DS40002138A_JP - p 101 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
Note
1 テープampリールの識別情報はカタログの製品番号説明にのみ記載していますこれは製品の注文時に使う識別
情報でありデバイスのパッケージには印刷していませんテープリールが選択できるパッケージの在庫供給状況は弊社にお問い合わせください
Microchip 社のデバイスコード保護機能
Microchip 社製デバイスのコード保護機能について以下の点にご注意ください
bull Microchip 社製品は該当する Microchip 社データシートに記載の仕様を満たしています bull Microchip 社では通常の条件ならびに仕様に従って使用した場合Microchip 社製品のセキュリティ レベルは
現在市場に流通している同種製品の中でも最も高度であると考えています bull しかしコード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です弊社の理解では
こうした手法は全て Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事に
なりますこのような行為は知的所有権の侵害に該当する可能性が非常に高いと言えます bull Microchip 社はコードの保全性に懸念を抱いているお客様と連携して対応策に取り組んでいきます bull Microchip 社を含む全ての半導体メーカーで自社のコードのセキュリティを完全に保証できる企業はありませ
んコード保護機能とはMicrochip 社が製品を「解読不能」として保証するものではありません
コード保護機能は常に進歩していますMicrochip 社では常に製品のコード保護機能の改善に取り組んでいます
Microchip 社のコード保護機能の侵害はデジタル ミレニアム著作権法に違反しますそのような行為によってソフ
トウェアまたはその他の著作物に不正なアクセスを受けた場合はデジタル ミレニアム著作権法の定めるところによ
り損害賠償訴訟を起こす権利があります 法律上の注意点
本書に記載されているデバイス アプリケーション等の情報はユーザの便宜のためにのみ提供されるものであり更
新によって変更となる事がありますお客様のアプリケーションが仕様を満たす事を保証する責任はお客様にあり
ますMicrochip 社は明示的暗黙的書面口頭法定のいずれであるかを問わず本書に記載されている情報に
関して状態品質性能商品性特定目的への適合性をはじめとするいかなる類の表明も 保証も行いませんMicrochip 社は本書の情報およびその使用に起因する一切の責任を否認しますMicrochip 社の
明示的な書面による承認なしに生命維持装置あるいは生命安全用途に Microchip 社の製品を使用する事は全て購入
者のリスクとしまた購入者はこれによって発生したあらゆる損害クレーム訴訟費用に関してMicrochip 社は
擁護され免責され損害をうけない事に同意するものとします特に明記しない場合暗黙的あるいは明示的を問
わずMicrochip 社が知的財産権を保有しているライセンスは一切譲渡されません 商標
Microchip 社の名称とロゴMicrochip ロゴAdaptecAnyRateAVRAVR ロゴAVR FreaksBesTimeBitCloudchipKITchipKIT ロゴCryptoMemoryCryptoRFdsPICFlashFlexflexPWRHELDOIGLOO
JukeBloxKeeLoqKleerLANCheckLinkMDmaXStylusmaXTouchMediaLBmegaAVRMicrosemiMicrosemi ロゴMOSTMOST ロゴMPLABOptoLyzerPackeTimePICpicoPowerPICSTARTPIC32 ロ
ゴPolarFireProchip DesignerQTouchSAM-BASenGenuitySpyNICSSTSST ロゴSuperFlashSymmetricomSyncServerTachyonTempTrackrTimeSourcetinyAVRUNIOVectronXMEGA は米国お
よびその他の国における Microchip Technology Incorporated の登録商標です
APTClockWorksThe Embedded Control Solutions CompanyEtherSynchFlashTecHyper Speed ControlHyperLight LoadIntelliMOSLiberomotorBenchmTouchPowermite 3Precision EdgeProASICProASIC PlusProASIC Plus ロゴQuiet-WireSmartFusionSyncWorldTemuxTimeCesiumTimeHubTimePictraTimeProviderViteWinPathZL は米国における Microchip Technology Incorporated の登録商標です
Adjacent Key SuppressionAKSAnalog-for-the-Digital AgeAny CapacitorAnyInAnyOutBlueSkyBodyCom
CodeGuard CryptoAuthentication CryptoAutomotive CryptoCompanion CryptoController dsPICDEM
dsPICDEMnetDynamic Average MatchingDAMECANEtherGREENIn-Circuit Serial ProgrammingICSPINICnetInter-Chip ConnectivityJitterBlockerKleerNetKleerNet ロゴmemBrainMindiMiWiMPASM
MPF
Datasheet DS40002138A_JP - p 102 copy 2020 Microchip Technology Inc
ATECC608A-TFLXTLS
MPLAB Certified ロゴMPLIBMPLINKMultiTRAKNetDetachOmniscient Code GenerationPICDEM
PICDEMnetPICkitPICtailPowerSmartPureSiliconQMatrixREAL ICERipple BlockerSAM-ICESerial Quad IOSMART-ISSQISuperSwitcherSuperSwitcher IITotal EnduranceTSHARCUSBCheckVariSenseViewSpanWiperLockWireless DNAZENA は米国およびその他の国における Microchip Technology Incorporated の商標です
SQTP は米国における Microchip Technology Incorporated のサービスマークです
Adaptec ロゴFrequency on DemandSilicon Storage TechnologySymmcom はその他の国における Microchip Technology Incorporated の登録商標です
GestIC はその他の国における Microchip Technology Germany II GmbH amp Co KG (Microchip Technology Incの子会
社)の登録商標です
その他の商標は各社に帰属します copy 2019 Microchip Technology Incorporated Printed in the USA All Rights Reserved
ISBN 978-1-5224-5254-6
品質管理システム
Microchip 社の品質管理システムについてはhttpwwwmicrochipcomquality をご覧ください
Datasheet DS40002138A_JP - p 103 copy 2020 Microchip Technology Inc
各国の営業所とサービス
北米 アジア太平洋 アジア太平洋 ヨーロッパ
本社 オーストラリア - シドニー インド - バンガロール オーストリア - ヴェルス 2355 West Chandler Blvd Tel61-2-9868-6733 Tel91-80-3090-4444 Tel43-7242-2244-39 Chandler AZ 85224-6199 中国 - 北京 インド - ニューデリー Fax43-7242-2244-393 Tel480-792-7200 Tel86-10-8569-7000 Tel91-11-4160-8631 デンマーク - コペンハーゲン Fax480-792-7277 中国 - 成都 インド - プネ Tel45-4450-2828 技術サポート Tel86-28-8665-5511 Tel91-20-4121-0141 Fax45-4485-2829 httpwwwmicrochipcomsupport 中国 - 重慶 日本 - 大阪 フィンランド - エスポー URL Tel86-23-8980-9588 Tel81-6-6152-7160 Tel358-9-4520-820 httpwwwmicrochipcom 中国 - 東莞 日本 - 東京 フランス - パリ アトランタ Tel86-769-8702-9880 Tel81-3-6880- 3770 Tel33-1-69-53-63-20 Duluth GA 中国 - 広州 韓国 - 大邱 Fax33-1-69-30-90-79 Tel678-957-9614 Tel86-20-8755-8029 Tel82-53-744-4301 ドイツ - ガーヒング Fax678-957-1455 中国 - 杭州 韓国 - ソウル Tel49-8931-9700 オースティンTX Tel86-571-8792-8115 Tel82-2-554-7200 ドイツ - ハーン Tel512-257-3370 中国 - 香港 SAR マレーシア - クアラルンプール Tel49-2129-3766400 ボストン Tel852-2943-5100 Tel60-3-7651-7906 ドイツ - ハイルブロン Westborough MA 中国 - 南京 マレーシア - ペナン Tel49-7131-72400 Tel774-760-0087 Tel86-25-8473-2460 Tel60-4-227-8870 ドイツ - カールスルーエ Fax774-760-0088 中国 - 青島 フィリピン - マニラ Tel49-721-625370 シカゴ Tel86-532-8502-7355 Tel63-2-634-9065 ドイツ - ミュンヘン Itasca IL 中国 - 上海 シンガポール Tel49-89-627-144-0 Tel630-285-0071 Tel86-21-3326-8000 Tel65-6334-8870 Fax49-89-627-144-44 Fax630-285-0075 中国 - 瀋陽 台湾 - 新竹 ドイツ - ローゼンハイム ダラス Tel86-24-2334-2829 Tel886-3-577-8366 Tel49-8031-354-560 Addison TX 中国 - 深圳 台湾 - 高雄 イスラエル - ラーナナ Tel972-818-7423 Tel86-755-8864-2200 Tel886-7-213-7830 Tel972-9-744-7705 Fax972-818-2924 中国 - 蘇州 台湾 - 台北 イタリア - ミラノ デトロイト Tel86-186-6233-1526 Tel886-2-2508-8600 Tel39-0331-742611 Novi MI 中国 - 武漢 タイ - バンコク Fax39-0331-466781 Tel248-848-4000 Tel86-27-5980-5300 Tel66-2-694-1351 イタリア - パドヴァ ヒューストンTX 中国 - 西安 ベトナム - ホーチミン Tel39-049-7625286 Tel281-894-5983 Tel86-29-8833-7252 Tel84-28-5448-2100 オランダ - ドリューネン インディアナポリス 中国 - 厦門 Tel31-416-690399 Noblesville IN Tel86-592-2388138 Fax31-416-690340 Tel317-773-8323 中国 - 珠海 ノルウェー - トロンハイム Fax317-773-5453 Tel86-756-3210040 Tel47-72884388 Tel317-536-2380 ポーランド - ワルシャワ ロサンゼルス Tel48-22-3325737 Mission Viejo CA ルーマニア - ブカレスト Tel949-462-9523 Tel40-21-407-87-50 Fax949-462-9608 スペイン - マドリッド Tel951-273-7800 Tel34-91-708-08-90 ローリーNC Fax34-91-708-08-91 Tel919-844-7510 スウェーデン - ヨーテボリ ニューヨークNY Tel46-31-704-60-40 Tel631-435-6000 スウェーデン - ストックホルム サンノゼCA Tel46-8-5090-4654 Tel408-735-9110 イギリス - ウォーキンガム Tel408-436-4270 Tel44-118-921-5800 カナダ - トロント Fax44-118-921-5820 Tel905-695-1980 Fax905-695-2078