CryptodevATECCx08 Auth: различия между версиями

Нет описания правки
Строка 4: Строка 4:
В контроллеры '''WirenBoard''' встроен чип '''ATECCx08''', назначением которого является генерация ключевых пар, хранение приватных ключей а также операции асимметричного шифрования с использованием эллиптических кривых.
В контроллеры '''WirenBoard''' встроен чип '''ATECCx08''', назначением которого является генерация ключевых пар, хранение приватных ключей а также операции асимметричного шифрования с использованием эллиптических кривых.
Приватный ключ после начальной инициализации хранится в микросхеме и не покидает ее, тем самым исключается его компрометация.
Приватный ключ после начальной инициализации хранится в микросхеме и не покидает ее, тем самым исключается его компрометация.
Используя данную микросхему можно организовать авторизацию контроллера и защиту соединения по SSL на внешних сервисах и быть уверенным, что запрос выполнен с использованием именно этого экземпляра микросхемы.
Используя данную микросхему можно организовать авторизацию контроллера и защиту соединения по SSL на внешних сервисах и быть уверенным, что запрос выполнен с использованием именно этого экземпляра микросхемы.
В данной статье пойдет речь о трех вариантах применения: nginx, openssl, mosquitto.
В данной статье пойдет речь о трех вариантах применения: nginx, openssl, mosquitto.


Для доступа к криптоустройству нужна библиотека libateccssl1.1, установим ее
Для доступа к криптоустройству нужна библиотека libateccssl1.1, установим ее командой:
 
'''apt install libateccssl1.1'''
'''apt install libateccssl1.1'''


Строка 24: Строка 27:
init = 1
init = 1
</pre>
</pre>
Теперь приступим к созданию сертификатов.
Для начала создадим свой центр сертификации (Certification Authority, CA):
Для этого сгенерируем ключевую пару:
'''openssl genrsa -out ca.key 2048'''
И сертификат нашего CA:
'''openssl req -x509 -new -days 3650 -key ca.key -out ca.crt -subj "/CN=MY CA"'''
'''CA''' является основой безопасности в данной схеме, поэтому эти операции выполняем на машине доступ к которой
есть только у владельца '''CA'''.
Далее на конроллере WB создаем запрос на сертификат устройства:
openssl req -new -engine ateccx08 -keyform engine -key ATECCx08:00:04:C0:00 -subj "/CN=wirenboard-AP6V5MDG" -out device_AP6V5MDG.csr
В этой команде мы указываем, что запрос подписывается приватным ключом, находящимся в криптоустройстве ateccx08 ключом
с идентификатором ATECCx08:00:04:C0:00 и публичным именем wirenboard-AP6V5MDG. Запрос помещаем в файл device_AP6V5MDG.csr.
Имя можно выбрать любое уникальное, удобно для этой цели спользовать идентификатор устройства, который по умолчанию прописывается
в файле /etc/hostname:
cat /etc/hostname
wirenboard-AP6V5MDG
Далее этот запрос подписываем в нашем центре сертификации:
openssl x509 -req -in device_AP6V5MDG.csr -CA ca.crt -CAkey ca.key -out device_AP6V5MDG.crt -days 365 -CAcreateserial
В этой команде мы уазываем файл запроса, и файлы CA необходимые для подписи. В итоге получаем сертификат устройства device_AP6V5MDG.crt.
Файл device_AP6V5MDG.crt копируем на контроллер WB, он будет необходим для авторизацци.
Давайте посмотрим, что содержится в файлах сертификатов CA и устройства:
18

правок