Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

Как защитить связь UART в устройствах IoT

С криптографическими блоками, интегрированными в микроконтроллеры, это стало возможным для разработчиков для защиты каждого канала связи, включая интерфейсы, такие как UART, которые сами по себе не обеспечивают безопасности.

С увеличением количества серьезных нарушений конфиденциальности и данных в системах Интернета вещей (IoT) предприятия и потребители все больше осознают необходимость обеспечения безопасности при покупке подключенных продуктов. Недостаточно просто предоставлять лучшие в своем классе продукты или услуги. Устройства, не обеспечивающие надлежащую безопасность, не смогут конкурировать с устройствами, обеспечивающими сквозную безопасность.

Многие протоколы реализуют безопасность в рамках стандарта и являются встроенной частью любого контроллера. Однако встроенные устройства, которые подключаются через универсальный асинхронный приемопередатчик (UART), не защищены. UART - один из простейших цифровых интерфейсов связи между устройствами. Это протокол связи без ACK, который может быть прочитан любым устройством, если известна скорость передачи данных.

Чтобы предотвратить считывание или ввод данных в систему, канал связи должен быть защищен системами, отправляющими и получающими данные. Таким образом, даже если злоумышленник получит доступ к каналу связи с правильной скоростью передачи, канал будет защищен.

Симметричная и асимметричная безопасность

Каналы связи часто защищаются с помощью криптографических алгоритмов. В общих чертах криптографические алгоритмы можно разделить на симметричные и асимметричные. В алгоритмах с симметричным ключом отправитель и получатель используют один секретный ключ. Отправитель шифрует сообщение с помощью ключа и делится зашифрованным сообщением с получателем. Затем получатель использует тот же ключ для расшифровки сообщения.

Основная проблема безопасности с алгоритмами симметричного ключа заключается в том, как безопасно обмениваться секретным ключом между отправителем и получателем. Если ключ захватывается другим объектом во время обмена ключами, этот объект также может расшифровать сообщения, отправленные отправителем. Таким образом, в алгоритмах симметричного ключа крайне важно, чтобы ключ безопасно передавался только отправителю и получателю.

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

Для наивысшего уровня безопасности в качестве алгоритма асимметричного ключа используется шифрование RSA. С RSA у взаимодействующего объекта есть открытый ключ и закрытый ключ. Открытый ключ, как следует из названия, является общедоступным и доступен всем. Напротив, закрытый ключ хранится только у общающегося объекта. Чтобы отправить сообщение объекту, отправитель шифрует сообщение, используя открытый ключ объекта. Это зашифрованное сообщение можно расшифровать только с помощью закрытого ключа. Поскольку закрытый ключ доступен только предполагаемому получателю, это гарантирует, что только получатель сможет расшифровать сообщение.

Шифрование открытого и закрытого ключей

RSA использует экспоненциальные вычисления и факторизацию очень больших чисел на простые множители, что делает его очень безопасным, но при этом ресурсоемким. Более того, реализация RSA в реальном времени - чтобы избежать задержек при обмене данными - увеличит стоимость системы, так как потребует более высокопроизводительного механизма обработки. Многие встроенные системы не требуют такого уровня безопасности. Вместо этого они могут использовать более компактный алгоритм шифрования, такой как Advanced Encryption Standard (AES), который более практичен и экономичен, поскольку требует меньше ресурсов обработки.

AES - это симметричный криптографический алгоритм, который означает, что обе стороны канала связи используют общий секретный ключ. Ограничение AES, как упомянуто выше, заключается в безопасном совместном использовании ключа между отправителем и получателем UART, не подвергая его воздействию внешних объектов. Чтобы решить эту проблему, можно использовать RSA для шифрования ключа AES и безопасного обмена им. Поскольку общий ключ должен быть передан только один раз, канал связи может выдержать сложность и задержку RSA. Другими словами, задержка обработки алгоритма RSA влияет только на начальный обмен ключами, а не на каждое сообщение.

Безопасный обмен ключами происходит в несколько этапов (рисунок 1). Сначала получатель UART генерирует пару ключей RSA и делится своим открытым ключом с отправителем. Не имеет значения, видит ли открытый ключ другой объект, потому что он будет использоваться только для шифрования сообщений, предназначенных для приемника UART. Затем отправитель случайным образом генерирует ключ AES и шифрует его, используя открытый ключ получателя. Получатель расшифровывает ключ AES, используя закрытый ключ RSA.


Рисунок 1. Безопасный обмен секретным ключом AES с использованием открытого и закрытого ключей RSA. (Источник:Infineon)

Поскольку только получатель имеет доступ к закрытому ключу RSA, зашифрованный ключ AES может быть расшифрован только получателем. Это гарантирует, что ключ AES известен только отправителю и получателю, и любой злоумышленник, имеющий доступ к каналу связи, не сможет получить ключ. Кроме того, все последующие сообщения между отправителем и получателем зашифрованы с помощью ключа AES, что делает эти сообщения недоступными для других сторон, не предназначенных для их получения. Это также устраняет угрозу атак типа "злоумышленник посередине" (MIM), которые включают изменение сообщений после того, как они были отправлены, но до того, как они были получены.

Прошивка и оборудование

Реализация алгоритмов безопасности во встраиваемых устройствах с помощью микропрограмм сопряжена со многими проблемами проектирования. Криптографические алгоритмы по своей природе обычно требуют больших вычислительных ресурсов. Они также увеличивают объем памяти, увеличивают задержку обработки и значительно усложняют системы. В результате реализация безопасности во встроенном ПО потребует значительных циклов ЦП и ресурсов микроконтроллера. Кроме того, для удовлетворения требований приложений реального времени потребуется более производительный MCU, что приведет к увеличению стоимости системы.

Одна из причин, по которой используется так много ресурсов MCU, заключается в том, что MCU являются универсальными процессорами. По этой причине многие микроконтроллеры включают оборудование, разработанное специально для криптографических алгоритмов. Благодаря встроенному криптографическому механизму MCU может обеспечивать шифрование и дешифрование данных в реальном времени с гораздо меньшими размерами и меньшими затратами по сравнению с MCU без возможностей аппаратной криптографической обработки.

Примером может служить микроконтроллер PSoC 6 от Infineon. Он имеет специальный криптографический блок, который обеспечивает аппаратное ускорение криптографических функций. Криптографический блок является гибким и может использоваться для поддержки различных криптографических алгоритмов, чтобы гарантировать защиту данных. Это позволяет разработчикам обеспечить безопасность встроенных устройств IoT с помощью стандартов шифрования, таких как AES, DES, TDES и RSA, и проверок целостности, таких как алгоритм безопасного хеширования ( SHA) и циклический контроль избыточности (CRC). Выгрузка криптографических функций из MCU таким образом позволяет с минимальными затратами обеспечить безопасность почти для всех встроенных приложений без необходимости использования более мощного процессора.

Истинные случайные числа

Однако для защиты встроенной системы требуется нечто большее, чем просто шифрование связи. В частности, ключ AES, генерируемый системой, должен быть случайным. Однако микроконтроллеры являются детерминированными, поэтому сгенерированные ключи также будут детерминированными, что позволит хакеру использовать «грубую силу» для циклического перебора различных возможных случайных начальных чисел и потенциально получить ключ AES. Таким образом, микропрограммному обеспечению необходим способ генерации истинных случайных чисел, чтобы гарантировать случайность ключа AES, чтобы его нельзя было использовать перебором.

Для этого криптографический блок должен включать в себя генератор истинных случайных чисел (TRNG). В криптографическом блоке PSoC 6, например, TRNG имеет шесть кольцевых генераторов, которые обеспечивают физические источники шума. Кольцевые генераторы содержат чувствительные к температуре инверторы, которые вносят джиттер в сигнал кольцевого генератора. Этот сигнал дает MCU доступ к истинному источнику случайных чисел, чтобы гарантировать случайность ключей AES, которые он генерирует.

Например, для генерации 16-байтового ключа случайное число генерируется 16 раз и добавляется к предыдущим числам. Это дает возможность использовать 2 ^ 128 ключей. Этого более чем достаточно, чтобы предотвратить перебор или угадывание ключа AES.

Некоторые крипто-атаки сосредоточены на анализе перехваченных сообщений. Имея достаточно ресурсов, любой ключ в конечном итоге может быть взломан. Чтобы устранить эту возможность и повысить общую безопасность канала связи, ключ AES генерируется при каждой перезагрузке. Это простая, но эффективная мера повышения безопасности встроенных систем. Короче говоря, даже если ключ будет идентифицирован злоумышленником, ключ, скорее всего, больше не будет использоваться к тому времени, когда его можно будет использовать.

Безопасность с уверенностью

На этом этапе может возникнуть соблазн считать интерфейс UART безопасным. Однако UART не поддерживает протокол связи ACK. Это означает, что протокол не имеет механизма, гарантирующего, что сообщение, полученное получателем, является а) полным, а также б) не поврежденным.

Для подтверждения целостности сообщения требуется заключительный этап безопасности. Эффективный метод достижения этого - использование алгоритма SHA для хеширования сообщения. Выполнение сообщения с помощью криптографической хеш-функции, такой как SHA, дает хеш-результат фиксированной длины. Поскольку хеш-функции являются необратимыми односторонними функциями, единственный способ идентифицировать сообщение, которое сгенерировало конкретный хеш-код, - это попытка перебора всех возможных входных данных.


Рисунок 2:Хеш-функция обеспечивает целостность связи во время безопасного обмена ключами и передачи сообщений. (Источник:Infineon)

Перед отправкой сообщения к сообщению добавляется хэш всего сообщения (рисунок 2). Затем сообщение плюс хэш шифруется с помощью ключа AES. Таким образом, хэш может служить проверкой целостности. Получатель после расшифровки вычисляет хэш сообщения, которое он расшифровал. Затем получатель сравнивает полученный хэш и рассчитанный хеш. Если они совпадают, значит, сообщение не было изменено. Однако, если хэши не совпадают, это указывает на нарушение целостности сообщения. Это могло произойти из-за того, что хакер попытался изменить сообщение или произошла ошибка во время передачи. В любом случае связь не удалась.

Обратите внимание, что канал связи можно дополнительно усилить для проверки подлинности, подписав сообщение закрытым ключом отправителя. Подписанное сообщение можно проверить с помощью открытого ключа отправителя, чтобы убедиться, что только отправитель мог отправить сообщение. Другими словами, никакая другая сторона не может имитировать отправителя, поскольку у них нет закрытого ключа отправителя, что гарантирует подлинность сообщений. Чтобы получить больше идей, ознакомьтесь с примерами кода сообщества, которые включают множество проектов от других инженеров.

Обеспечение безопасности стало необходимым соображением при проектировании встроенных систем IoT. Крайне важно, чтобы каждое подключенное устройство было защищено и защищало пользовательские данные от компрометации. С криптографическими блоками, интегрированными в микроконтроллеры, разработчики получили возможность защищать каждый канал связи, включая интерфейсы, такие как UART, которые сами по себе не обеспечивают безопасности.

—Хариговинд А. и Ракшит М. Б. - старшие инженеры по приложениям в Infineon Technologies.

>> Эта статья изначально была опубликована на нашем дочернем сайте EDN .


Интернет вещей

  1. Как 5G ускорит промышленный IoT
  2. Как Интернет вещей соединяет рабочие места
  3. Интернет вещей, обеспечивающий всемирные преимущества
  4. Как Интернет вещей влияет на мобильность предприятия?
  5. 7 важных советов, которые помогут вашей сети IoT оставаться в рабочем состоянии и обеспечивать безопасность
  6. Как сделать IoT платным:как построить прибыльную бизнес-модель IoT
  7. Обеспечение безопасного будущего для миллиардов устройств Интернета вещей за счет киберустойчивости
  8. Насколько опасна угроза цепных атак на Интернет вещей?
  9. Как Интернет вещей меняет безопасность на рабочем месте?
  10. Как Интернет вещей улучшает качество обслуживания клиентов