Заводская конфигурация и назначение слотов чипа ATECC608A в контроллерах Wiren Board

Добрый день, у меня достаточно короткий вопрос, как на заводе настраивается чип ATECC608A ?

И ряд уточнений:

  • Как выглядит настройка которая сейчас заблокирована ? Я сделал дамп atecc -b 2 -c 'dump-config /tmp/config.bin' и он мне показал только два слота 14 и 15.
usionDisable bit: 0
X509id: 0
=========================  Slot: 14   ================== 
Decoding SlotConfig value = 0x7A81
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 10
Write config: 0x7 (hex) = 0111 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Create without MAC
  GenKey cmd: may be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x003C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 15   ================== 
Decoding SlotConfig value = 0x4AD9
Read key (except ECC private keys): 9
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 1
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 1
IsSecret bit: 1
Write key: 10
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x003C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
  • В каком слоте, какие ключи, и с какими сроками жизни записаны ?
  • Как задумывается использование остальных слотов ?
  • В какие слоты я могу класть публичные ключи ?
  • Какие слоты с приватными ключами я могу использовать для подписи сообщений исходящих из контроллера в свой облачный сервис, чтобы приватный ключ неожиданно не закончил срок действия ?

Предистория.

Я начал работать с ATECC608A, и atecc -b 2 -c ‘config-is-locked’ возвращает Config zone is locked, и в нулевом слоте уже есть приватный ключ atecc -b 2 -c 'ecc-gen-pub 0 ./public-key-form-zero-slot.bin', который позволяет подписать файл atecc -b 2 -c 'ecc-sign 0 ./test.bin ./test-signature.bin', а потом проверить его подпись atecc -b 2 -c 'ecc-verify 0 ./test.bin ./test-signature.bin ./public-key-form-zero-slot.bin' и получить Verification OK.

Я прочитал документацию CryptodevATECCx08 Auth — Wiren Board и статью Аутентификация устройств на Linux по аппаратному ключу в системах верхнего уровня / Хабр и понял, что в каком то слоте есть приватный ключ на 200 лет, в каком-то на год и его можно обновлять, и все они произошли от вашего корневого сертификата, а так же понял, что я могу взять публичную часть корневого сертификата и проверять ей подписи которые делает любой из приватный ключей в ATECC608A.

Но для меня это пока сложновато.

Я реализовал регистрацию контроллера, через TOTP + fingerprint + отправку публичного ключа в облако (хотя видимо можно это заменить на публичную часть root ключа) + подпись atecc -b 2 -c 'ecc-sign 0, и обратную проверку на контроллере ответа с сохранением публичного ключа облака, из пары которая специально сделана под регистрацию каждого контроллера, и пока для MVP я оставлю так.

Самое главное, я хочу понять, из какого слота мне использовать приватный ключ, или в какой слот я могу сложить создать свой вариант приватного ключа, и пользоваться им для своих целей ?

Большое спасибо, за огромную работу, проделанную, чтобы в ваших устройствах появился чип ATECC608A, и библиотека GitHub - wirenboard/atecc-util: Linux command-line tool for ATECC608A and ATECC508A · GitHub.

Добрый день.
Посмотрел, документация к самому чипу по прежнему не публичная, к сожалению.
Спрошу у коллег - сам не обладаю компетенциями в работе с чипом.

Спасибо, на сколько я понял, там документация на чип не поможет, так как у вас на производстве его настроили и заблокировали, это делается только один раз за его жизнь, если бы ваши коллеги опубликовали то как они его настроили, и написали какие слоты они и для чего занимают, а какими можно пользоваться сторонним разработчикам, было бы замечательно.

@BrainRoot Добрый день, стоит ждать информации, или ее уже не найти ?

Добрый день. Разработчики обещали написать, напомню.

Еще интересует вопрос, возможно ли вложить в чип публичный сертификат, и без раскрытия публичного сертификата проверять подписи полученные выполненные приватным ключом облака ?

По аналогии с подписью приватным ключом на устройстве, без раскрытия приватного ключа.

Как я понял, такая защита, сведет к нулю возможность взлома способом “Человек по середине”, и оставит только один вариант, заменить в коде проверку на ответ от облачного сервиса, а это сложнее чем заменить публичный ключ облака, на публичный ключ прокси.

Это все вытекает из-задачи защиты кода от не санкционированного использования.

Добрый день.
Обещали завтра написать.

Попробуйте atecc -b 2 -c 'dump-config - /tmp/config.bin', так должен показать настройки всех слотов. Или atecc -b 2 -c 'dump-config -'.

atecc -hdump-config
dump-config: dump ATECC config in human-readable format
Usage: dump-config output.txt|- [config.bin]
If optional third argument is set, dumps config from binary file.

Используемые слоты:
0: Device private key (locked, ~200 years)
2: Device HMAC write guard (locked)
3: Device HMAC
4: Device private key (open authentification)
5: Factory HMAC

Дополню дампом.

root@wirenboard-AWVJRXHQ:~# atecc -b 4 -c “dump-config /tmp/config.txt”
root@wirenboard-AWVJRXHQ:~# cat /tmp/config.txt

============= Config zone dump: ============= 

000: 01         001: 23         002: E0         003: F5
004: 00         005: 00         006: 60         007: 02
008: 2B         009: 53         010: 82         011: 72
012: EE         013: C1         014: 55         015: 00
016: C0         017: 00         018: 00         019: 00
020: 9F         021: 80         022: 81         023: 42
024: 91         025: 80         026: 81         027: 42
028: 97         029: 20         030: 81         031: 42
032: 9F         033: 6A         034: C9         035: 4A
036: 01         037: 4A         038: 91         039: 00
040: 91         041: 00         042: 01         043: 4A
044: 97         045: 6A         046: 0B         047: 1A
048: 81         049: 7A         050: D9         051: 4A
052: FF         053: FF         054: FF         055: FF
056: 00         057: 00         058: 00         059: 00
060: FF         061: FF         062: FF         063: FF
064: 00         065: 00         066: 00         067: 00
068: 00         069: 00         070: 00         071: 00
072: 00         073: 00         074: 00         075: 00
076: 00         077: 00         078: 00         079: 00
080: 00         081: 00         082: 00         083: 00
084: 00         085: 00         086: 00         087: 00
088: FA         089: FF         090: 00         091: 00
092: 00         093: 00         094: 00         095: 00
096: 73         097: 00         098: 1C         099: 00
100: 7C         101: 00         102: 1C         103: 00
104: 53         105: 00         106: 1C         107: 00
108: 33         109: 00         110: 3C         111: 00
112: 3C         113: 00         114: 7C         115: 00
116: 7C         117: 00         118: 30         119: 00
120: 33         121: 00         122: 12         123: 00
124: 3C         125: 00         126: 3C         127: 00
===== Individual locks configuration ==
 Slot 00: LOCKED
 Slot 01: unlocked
 Slot 02: LOCKED
 Slot 03: unlocked
 Slot 04: unlocked
 Slot 05: unlocked
 Slot 06: unlocked
 Slot 07: unlocked
 Slot 08: unlocked
 Slot 09: unlocked
 Slot 10: unlocked
 Slot 11: unlocked
 Slot 12: unlocked
 Slot 13: unlocked
 Slot 14: unlocked
 Slot 15: unlocked

===== Slot configurations============
=========================  Slot: 0   ================== 
Decoding SlotConfig value = 0x809F
Read key (except ECC private keys): 15
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 1
  ECDH operation is permitted for this key: 1
   ECDH master secret output mode: 1
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 0
Write config: 0x8 (hex) = 1000 (bin)
  Write cmd: Never
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Forbidden 
-------------
Decoding KeyConfig value = 0x0073
Private bit: 1
PubInfo bit: 1
KeyType: 4 [P256]
Lockable bit: 1
ReqRandom bit: 1
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 1   ================== 
Decoding SlotConfig value = 0x4281
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 2
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x001C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 0
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 2   ================== 
Decoding SlotConfig value = 0x8091
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 0
Write config: 0x8 (hex) = 1000 (bin)
  Write cmd: Never
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Forbidden 
-------------
Decoding KeyConfig value = 0x007C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 1
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 3   ================== 
Decoding SlotConfig value = 0x4281
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 2
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x001C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 0
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 4   ================== 
Decoding SlotConfig value = 0x2097
Read key (except ECC private keys): 7
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 1
  ECDH operation is permitted for this key: 1
   ECDH master secret output mode: 0
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 0
Write config: 0x2 (hex) = 0010 (bin)
  Write cmd: Never
  DeriveKey cmd: Roll without MAC
  GenKey cmd: may be used 
  PrivWrite cmd: Forbidden 
-------------
Decoding KeyConfig value = 0x0053
Private bit: 1
PubInfo bit: 1
KeyType: 4 [P256]
Lockable bit: 0
ReqRandom bit: 1
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 5   ================== 
Decoding SlotConfig value = 0x4281
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 2
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x001C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 0
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 6   ================== 
Decoding SlotConfig value = 0x6A9F
Read key (except ECC private keys): 15
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 1
  ECDH operation is permitted for this key: 1
   ECDH master secret output mode: 1
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 10
Write config: 0x6 (hex) = 0110 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Roll without MAC
  GenKey cmd: may be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x0033
Private bit: 1
PubInfo bit: 1
KeyType: 4 [P256]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 7   ================== 
Decoding SlotConfig value = 0x4AC9
Read key (except ECC private keys): 9
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 1
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 1
IsSecret bit: 1
Write key: 10
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x003C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 8   ================== 
Decoding SlotConfig value = 0x4A01
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 0
Write key: 10
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x003C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 9   ================== 
Decoding SlotConfig value = 0x0091
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 0
Write config: 0x0 (hex) = 0000 (bin)
  Write cmd: Always
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Forbidden 
-------------
Decoding KeyConfig value = 0x007C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 1
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 10   ================== 
Decoding SlotConfig value = 0x0091
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 0
Write config: 0x0 (hex) = 0000 (bin)
  Write cmd: Always
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Forbidden 
-------------
Decoding KeyConfig value = 0x007C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 1
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 11   ================== 
Decoding SlotConfig value = 0x4A01
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 0
Write key: 10
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x0030
Private bit: 0
PubInfo bit: 0
KeyType: 4 [P256]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 12   ================== 
Decoding SlotConfig value = 0x6A97
Read key (except ECC private keys): 7
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 1
  ECDH operation is permitted for this key: 1
   ECDH master secret output mode: 0
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 10
Write config: 0x6 (hex) = 0110 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Roll without MAC
  GenKey cmd: may be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x0033
Private bit: 1
PubInfo bit: 1
KeyType: 4 [P256]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 13   ================== 
Decoding SlotConfig value = 0x1A0B
Read key (except ECC private keys): 11
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 1
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 1
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 0
Write key: 10
Write config: 0x1 (hex) = 0001 (bin)
  Write cmd: PubInvalid
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Forbidden 
-------------
Decoding KeyConfig value = 0x0012
Private bit: 0
PubInfo bit: 1
KeyType: 4 [P256]
Lockable bit: 0
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 14   ================== 
Decoding SlotConfig value = 0x7A81
Read key (except ECC private keys): 1
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 0
NoMac bit: 0
LimitedUse bit: 0
EncryptRead bit: 0
IsSecret bit: 1
Write key: 10
Write config: 0x7 (hex) = 0111 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Create without MAC
  GenKey cmd: may be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x003C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0
=========================  Slot: 15   ================== 
Decoding SlotConfig value = 0x4AD9
Read key (except ECC private keys): 9
 If slot contains ECC private keys:
  External signatures of arbitrary messages are enabled: 1
  Internal signatures are enabled: 0
  ECDH operation is permitted for this key: 0
   ECDH master secret output mode: 1
NoMac bit: 1
LimitedUse bit: 0
EncryptRead bit: 1
IsSecret bit: 1
Write key: 10
Write config: 0x4 (hex) = 0100 (bin)
  Write cmd: Encrypt
  DeriveKey cmd: Can't be used
  GenKey cmd: may NOT be used 
  PrivWrite cmd: Encrypt 
-------------
Decoding KeyConfig value = 0x003C
Private bit: 0
PubInfo bit: 0
KeyType: 7 [SHA or other]
Lockable bit: 1
ReqRandom bit: 0
ReqAuth bit: 0
AuthKey: 0
IntrusionDisable bit: 0
X509id: 0

:magnifying_glass_tilted_left: Ключевые параметры конфигурации

Для понимания таблицы поясню значения некоторых полей:

  • KeyType: Указывает тип хранимых данных. Нас интересуют два:
    • P256 (4): Слот хранит ключ для эллиптической кривой P-256 (ECDSA/ECDH).
    • SHA or other (7): Слот используется для хранения данных (секретов, публичных ключей и т.д.), а не приватных ключей.
  • Private bit: Если 1, слот содержит приватный ключ, который никогда не покидает чип в открытом виде.
  • Write cmd: Политика записи в слот:
    • Never: Слот заблокирован для записи навсегда. Ключ, сгенерированный на заводе, изменить нельзя.
    • Always: В слот можно свободно записывать данные.
    • Encrypt: Для записи требует специальную команду с шифрованием.
  • GenKey cmd: Политика генерации новых ключей:
    • may NOT be used: Генерация нового ключа запрещена. Ключ либо записан на заводе, либо должен быть записан извне.
    • may be used: Чип может сам сгенерировать новый приватный ключ в этом слоте.
  • External signatures of arbitrary messages: Если 1, то приватный ключ из этого слота можно использовать для подписи любых внешних данных (например, ваших файлов или сообщений).
  • PubInfo bit: Если 1, то публичный ключ этого слота доступен для чтения без ограничений.

:bar_chart: Анализ слотов

Слот KeyType Private Write cmd GenKey Внешняя подпись PubInfo Назначение
0 P256 Да (1) Never Запрещено Да (1) Да (1) Первичный ключ устройства. Сгенерирован на заводе и навсегда привязан к этому чипу. Идеально подходит для идентификации и подписи данных, которые не должны вызывать сомнений в подлинности устройства.
1 SHA/Other Нет (0) Encrypt Запрещено Да (1) Нет (0) Хранилище зашифрованных секретов. Доступен для внешней подписи.
2 SHA/Other Нет (0) Never Запрещено Да (1) Нет (0) Заблокированное хранилище данных. Может содержать важные предустановленные секреты.
3 SHA/Other Нет (0) Encrypt Запрещено Да (1) Нет (0) Аналог слота 1. Хранилище для зашифрованных секретов.
4 P256 Да (1) Never Разрешено Да (1) Да (1) Слот для дополнительных ключей, которые можно генерировать прямо на чипе. Позволяет обновлять ключи без компрометации.
5 SHA/Other Нет (0) Encrypt Запрещено Да (1) Нет (0) Хранилище зашифрованных секретов (аналог слотов 1, 3).
6 P256 Да (1) Encrypt Разрешено Да (1) Да (1) Основной слот для ваших задач. Позволяет генерировать и обновлять ключи для подписи.
7 SHA/Other Нет (0) Encrypt Запрещено Да (1) Нет (0) Хранилище зашифрованных секретов с дополнительными ограничениями.
8 SHA/Other Нет (0) Encrypt Запрещено Да (1) Нет (0) Хранилище зашифрованных секретов с дополнительными ограничениями.
9 SHA/Other Нет (0) Always Запрещено Да (1) Нет (0) Единственный слот, открытый для свободной записи. Идеален для хранения публичных ключей или любых публичных данных.
10 SHA/Other Нет (0) Always Запрещено Да (1) Нет (0) Аналог слота 9. Открыт для свободной записи публичных данных.
11 P256 Нет (0) Encrypt Запрещено Да (1) Нет (0) Предназначен для хранения публичного ключа (Private=0). Может использоваться для проверки подписей.
12 P256 Да (1) Encrypt Разрешено Да (1) Да (1) Аналог слота 6. Можно генерировать и обновлять ключи для подписи.
13 P256 Нет (0) PubInvalid Запрещено Да (1) Да (1) Особый слот для публичного ключа, который может быть “аннулирован”. Вероятно, для механизмов отзыва.
14 SHA/Other Нет (0) Encrypt Разрешено Да (1) Нет (0) Слот для данных с возможностью генерации новых ключей (не P256).
15 SHA/Other Нет (0) Encrypt Запрещено Да (1) Нет (0) Хранилище зашифрованных секретов с особым режимом ECDH.