Требования
В настоящее время я работаю над порталом PHP для продавца машин. Его машины способны общаться через Интернет с помощью встроенного SBC с портом LAN. Потребители, купившие машину, могут настроить ее в режиме онлайн после входа на портал продавцов машин.
После того, как они настроили его онлайн, они могут загрузить файл конфигурации через ЧМИ (сенсорный дисплей на самой машине) на машину. Файл конфигурации содержит ценную и личную информацию.
HMI не основан на браузере. Это бинарное приложение, которое имеет, например, кнопку «Загрузить конфигурацию». Остальное должно быть сделано в bash / php-scripts на заднем плане.
Решение для аутентификации?
Я нахожусь в очень раннем состоянии зачатия, но мне интересно о некоторых процессах. У меня никогда не было машины, которой нужен доступ к моим услугам, только люди. Какой способ сделать это на самом деле?
У меня есть три подхода:
1. Доступ с помощью «API-ключа»
Значит: в ОС SBC лежит файл, содержащий последовательность вроде 8asd7d7d
, Когда я получу GET
запрос portal.company.com/getConfig/8asd7d7d
Я знаю, с какой машины он приходит и что ему разрешено получать этот конфиг.
Недостаток: покупатель имеет доступ к файловой системе SBC. Он мог уничтожить файл случайно. Он мог узнать схему генерации и загрузить файлы конфигурации от других покупателей.
2. Генерация одноразового UUID-URL
Значит: потребитель создает свою конфигурацию онлайн. После этого он отображается одноразовый URL-адрес, как portal.company.com/getConfig/d8ac2292ea1fec3fe5c65e6ef573
который он может ввести в HMI и загрузить файл.
Недостаток: потребитель должен ввести длинный URL-адрес на дисплее HMI.
3. Имитация процесса аутентификации человека
Означает: машина отправляет действительный пост-запрос portal.company.com/login
с логином-данными своего владельца. Он получает сессионный cookie-файл (возможно ли это даже в среде без браузера, такой как чистые PHP-скрипты ?!), и логика портала знает, какие URL-адреса доступны, а какие нет (как для посетителя-человека).
Любые другие / лучшие идеи?
Я склонен использовать решение 2, поскольку его относительно легко реализовать и, мы надеемся, безопасно (давайте представим, что строка sha512 является URL-параметром). У вас есть предложения получше? Имейте в виду, что наоборот невозможно, портал не может активно передавать данные на компьютер (так как у него нет фиксированного IP-адреса, веб-сервера, …)
Если устройство поддерживает криптографические функции, можно использовать PKI. Зашифруйте данные с помощью открытого ключа устройства. Только устройство, обладающее секретным ключом, может расшифровать файл конфигурации. PKI также поддерживает аутентификацию. здесь устройство подключается к порталу входа в систему, который запрашивает сертификат клиента, и после аутентификации клиента файл конфигурации отправляется на устройство, зашифрованное открытым ключом устройства.
минусы: для каждого устройства требуется сертификат клиента.
Других решений пока нет …