С развитием интернета вещей и встраиваемых систем все больше устройств сталкивается с необходимостью безопасного и контролируемого доступа к удалённым ресурсам. Одним из способов обеспечить такой доступ являются подписанные URL - специальные ссылки, которые содержат информацию о периоде действия и криптографическую подпись, подтверждающую подлинность запроса. В условиях ограниченных ресурсов маломощных встроенных устройств задача генерации таких подписанных URL становится непростой, ведь криптографические операции часто требуют значительных вычислительных мощностей и памяти. Однако библиотека Signy предлагает элегантное и эффективное решение, адаптированное именно для таких устройств, позволяя им создавать подписанные URL с применением асимметричной криптографии на базе современных стандартов безопасности.Signy - это специализированная библиотека, разработанная для генерации подписанных URL именно на маломощных встроенных устройствах.
В основе ее работы лежит асимметричная криптография, которая позволяет устройствам подписывать запросы с помощью приватного ключа, а серверу - проверять подлинность ссылки с помощью соответствующего публичного ключа. Подобный подход широко применяется для предоставления временного доступа к приватным ресурсам, например, хранящимся на Content Delivery Network (CDN) или защищённых серверных хранилищах, где регулярное обменивание ключами или паролями затруднительно и рискованно.Подписанные URL обладают уникальной особенностью - они ограничены по времени. Это значит, что URL будет считаться действительным только в пределах определённого временного интервала. Такой подход значительно повышает безопасность, так как даже в случае утечки ссылки злоумышленник не сможет использовать её бесконечно долго.
В Signy временной период действия ссылки задаётся параметрами NOTBEFORE и NOTAFTER, которые представляют собой метки времени Unix. Первый из них определяет начало действия ссылки, а второй - окончание. Значения выставляются на основе системного времени устройства и заранее настроенной продолжительности валидности ссылки, что гарантирует строгий контроль сроков доступа.Одной из ключевых особенностей Signy является тесная интеграция с Platform Security Architecture (PSA) Crypto API. PSA - это стандартный набор интерфейсов, обеспечивающих единый доступ к аппаратным и программным криптографическим возможностям, который обеспечивает высокую безопасность и совместимость.
Использование PSA обращается к приватным ключам, хранящимся в защищённом хранилище устройства, а операции подписывания выполняются в безопасной среде, что значительно снижает риски компрометации ключей. Более того, приватные ключи могут быть либо сгенерированы непосредственно на устройстве, либо импортированы, в зависимости от конкретных задач и архитектуры системы.Формат подписанного URL, который генерируется Signy, выглядит следующим образом. В начале идет базовый URL, указывающий на расположение ресурса, например, https://gw.golioth.
io/.u/c/image@1.0.0. Далее идут параметры nb (NOTBEFORE) и na (NOTAFTER), задающие временное окно действия ссылки, затем передаются сертификат устройства в виде base64-кодированной строки без паддинга, и завершает строку параметр sig - сама цифровая подпись, которая защищает URL и подтверждает его подлинность.
Размер и кодировка сертификата проработаны таким образом, чтобы минимизировать нагрузку на канал передачи данных, что особенно важно для устройств с ограниченными возможностями связи.Signy нашёл ключевое применение в экосистеме Golioth - платформе для устройств интернета вещей, которая предоставила разработчикам инфраструктуру для быстрой и безопасной работы встроенных решений. Для полноценного использования Signy в связке с Golioth требуется загрузка сертификатов удостоверяющего центра, который выпустил сертификаты устройств. Это обеспечивает полноценную цепочку доверия при верификации подписей на серверной стороне и повышает общую безопасность системы. Благодаря этому Signy позволяет интегрироваться с экосистемами, использующими PKI и современные стандарты безопасности, без необходимости пересмысления или перестройки существующих процессов.
Разработчики, работающие с Zephyr и ESP-IDF, получат дополнительные преимущества благодаря тому, что Signy доступен как модуль для Zephyr и как компонент для ESP-IDF. Включение библиотеки в проект осуществляется посредством настройки файлов west.yml для Zephyr и idf_component.yml для ESP-IDF, что значительно упрощает интеграцию в существующие проекты. Кроме того, для обоих SDK существуют примеры использования Signy, демонстрирующие создание подписанных URL, генерацию и импорт ключей, работу с сертификатами и взаимодействие с PSA Crypto API.
Такой широкий охват обеспечивает простоту адаптации для различных устройств и платформ, позволяя внедрять подписанные URL в безопасных маломощных системах с минимальными усилиями.Безопасность является ключевым при работе с IoT-устройствами, где часто задействованы устройства с ограниченными вычислительными ресурсами и ограниченными возможностями обновления программного обеспечения. Благодаря Signy разработчики могут реализовывать механизм подписанных URL, который позволяет предоставлять доступ к конфиденциальным ресурсам без необходимости выдачи постоянных паролей или API-ключей. Контроль срока действия ссылок и проверка сертификатов исключают возможность несанкционированного доступа, а криптография на базе PSA обеспечивает высокий уровень защиты от атак и компрометации ключей.Важным аспектом применения Signy является его простота адаптации под требования конкретного проекта.
Конфигурация продолжительности действия URL осуществляется с помощью параметра CONFIG_SIGNY_URL_VALIDITY_DURATION, что позволяет разработчикам гибко управлять политиками безопасности в зависимости от среды использования. Кроме того, библиотека может использовать системное время устройства при выставлении временных меток, что важно для сценариев с постоянным доступом к корректируемому времени, например, через NTP.Поддержка Signy в сообществе с открытым исходным кодом и отсутствие необходимости в платных библиотеках делает её привлекательной для разработчиков, стремящихся внедрить стабильные и проверенные решения для безопасного обмена данными в IoT. Лицензия Apache-2.0 гарантирует открытость и свободу использования, что упрощает интеграцию и распространение библиотеки в любых целях.
Signy - это впечатляющее сочетание передовых технологий безопасности и адаптации под ресурсные ограничения, способное существенно повысить безопасность инфраструктуры интернета вещей. В среде, где конфиденциальность и доступность данных имеют решающее значение, Signy упрощает задачу создания безопасных и управляемых URL-ссылок, делая маломощные устройства более функциональными и защищёнными. Использование Signy помогает преодолеть барьеры, часто возникающие при внедрении современного шифрования в маленькие устройства, что открывает новые возможности для разработки безопасных и масштабируемых решений для самой разнообразной техники - от датчиков и контроллеров до умных бытовых приборов и промышленных систем. Таким образом, Signy является важным инструментом в эволюции моделей безопасности в индустрии встроенных систем и интернета вещей, существенно упрощая создание и использование подписанных URL. .