Асимметричное шифрование на Teensy?

serial programming teensy mkr1000 performance

Я хочу отслеживать ввод, а затем отправлять информацию зашифрованным способом, который не может быть легко разблокирован, даже если злоумышленник получит доступ к самому устройству. Я новичок в использовании Teensy, хотя я сделал несколько простых вещей с микроконтроллерами Arduino. Я надеялся выяснить, внедрил ли кто-нибудь RSA или другое асимметричное шифрование на Teensy компьютере, или выяснить, достаточно ли у него вычислительной мощности, чтобы сделать это возможным. Я бы также согласился использовать другие ардуино (у меня тоже есть MKR1000), но я предполагаю, что, поскольку Teensy имеет гораздо лучшую производительность, он с большей вероятностью сможет выполнять дорогостоящее шифрование.

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

, 👍1

Обсуждение

На ваш вопрос нельзя полностью ответить, потому что мы не знаем, сколько байтов в секунду вы намерены шифровать. Вы уже должны знать, что asym. методы шифрования, такие как RSA, обмениваются только симметричными ключами с асимметричной технологией. Pyload является синхронным/расшифрованным. Если хакер получит доступ к вашему устройству, безопасность зависит от того, обеспечили ли вы секретный ключ паролем и насколько он безопасен. 100% - ная безопасность невозможна. Интернет полон информации о крошечном шифровании, например: https://forum.pjrc.com/threads/24327-RSA-encryption, @Peter Paul Kiefer

Я не могу получить доступ к этому сайту из-за моего VPN и archive.is похоже, у меня та же проблема. Можете ли вы поделиться соответствующей информацией здесь? Я не ожидаю черно-белого ответа "да/нет", я бы принял информацию о методах шифрования и/или о том, сколько байтов в секунду RSA-шифрование, вероятно, будет способно., @joel_xay

Я не дал вам ответа, который вы могли бы принять. Я только что упомянул, что вы даете нам слишком мало информации, чтобы ответить на вопрос "Достаточно ли быстр крошечный", и я указал вам на страницу, где объясняется использование библиотеки RSA. Пожалуйста, не просите меня написать полную программу или библиотеку, которую вы можете использовать, у меня нет ни времени, ни намерения делать это в свое редкое свободное время. Если вы можете получить доступ к таким страницам, почему вы не можете получить доступ к обычным интернет-страницам?, @Peter Paul Kiefer

Похоже, сайт, на который вы ссылаетесь, заблокировал мой VPN или IP-адреса из моей страны. Мне очень жаль. Я также был бы очень удивлен, если бы кто-нибудь взял на себя труд написать библиотеку в качестве ответа на этот вопрос. Может быть, я был неясен в формулировках, я имел в виду, что приму ответы, которые объясняют, как определить скорость шифрования на крошечном., @joel_xay

Мне тоже очень жаль, если это выглядело так, будто я пытался оскорбить или напасть на вас. Это не входило в мои намерения. Лучший способ определить скорость метода crypt-это использовать некоторые библиотеки и проверить, работает ли он и сколько через put можно заархивировать. Скорость и потребление оперативной памяти сильно зависят от используемого алгоритма. Таким образом, асинхронное шифрование занимает очень много времени, но, как я уже упоминал, оно в основном используется для шифрования синхронных ключей. А синхронное шифрование/дешифрование гораздо эффективнее. Но, не имея возможности загрузить lib, я боюсь, что у вас нет возможности попробовать что-то., @Peter Paul Kiefer

Подсказка: попробуйте следующие ключевые слова в поисковой системе: RSA, Teensy, Relic. Вероятно, у вас есть доступ к проекту Relic на GIT hub . https://github.com/relic-toolkit/relic . Вот более старая страница: https://code.google.com/archive/p/relic-toolkit/, @Peter Paul Kiefer

Я немного смущен тем, что вы используете слово "асинхронный". Я не очень хорошо знаком с криптографией, поэтому ничего не знаю о синхронном и асинхронном шифровании, это не та терминология, которую я слышал раньше для шифрования. Вы имели в виду асимметричность или синхронность-это то, что мне нужно изучить?, @joel_xay

@PeterPaulKiefer спасибо, что связали инструментарий relic. Я проведу расследование. Меня беспокоит отказ от ответственности: "RELIC-это самое лучшее программное обеспечение альфа-качества. Реализации могут быть неправильными или безопасными и могут включать запатентованные алгоритмы. Существует множество вариантов конфигурации, которые делают библиотеку ужасно небезопасной". Наверное, я предполагал, что для ардуиносов найдется что-то похожее на PGP... может быть, его не существует?, @joel_xay

Я боюсь, что вы не сможете написать действительно хорошее шифрование для своего проекта, если не узнаете, как работает шифрование. Здесь тебя ничему не научат. Проверьте в Интернете информацию о синхронном, асинхронном, шифровании, RSA, DSA, Диффи Хеллманне, Открытом ключе, Закрытом ключе. Тогда вы лучше поймете проблему с инструментарием relic и сможете решить, полезен ли он., @Peter Paul Kiefer

Синхронное шифрование означает, что у вас есть только один ключ, который должны знать обе конечные точки. Этот ключ используется для шифрования и дешифрования полезной нагрузки. Синхронные методы очень эффективны по сравнению с асинхронными методами. Асинхронность означает, что у вас есть два ключа-открытый и закрытый. Вы отправляете открытый ключ партнеру по связи, который использует его для шифрования полезной нагрузки, а затем отправляет зашифрованную полезную нагрузку вам. Только закрытый ключ может быть использован для расшифровки полезной нагрузки, но открытый ключ не может быть использован для расшифровки., @Peter Paul Kiefer

Я думаю, нам нужно вернуться сюда и посмотреть на общую картину. Вы говорите, что вам нужна система, которую нелегко разблокировать, даже если у нападавшего есть само оборудование. Но тогда у него будет прямой доступ к исходному выходу сенсора, и ему даже не нужно будет беспокоиться о каком-либо шифровании. Есть ли что-то, что я здесь упускаю?, @Boggyman

@Boggyman Злоумышленник, естественно, будет иметь необработанные данные датчиков с момента получения контроля над системой. Но я бы хотел, чтобы злоумышленник не смог расшифровать данные, которые были отправлены до получения оборудования, даже если злоумышленник каким-то образом записал их., @joel_xay


1 ответ


1

Teensy4.1 имеет 55 цифровых выводов ввода-вывода (последовательных) с частотой до 200 МГц. Порт USB поддерживает скорость 480 Мбит/с, а Ethernet-10/100 Мбит / с. Однако вы ограничены 32 каналами DMA (сложными, но они используются для доступа к встроенной периферии/памяти). У вас тоже не так много непрерывной оперативной памяти.

Так вот, вы не объяснили, что делаете с этими данными. Это важно, потому что, несмотря на то, что процессор работает на частоте 600 МГц, асимметричное шифрование работает медленно. Вы пытаетесь выполнить шифрованную связь в реальном времени? Вы просто отправляете или получаете данные?

Ничто не мешает вам асимметрично шифроваться на Teensy. Вы можете найти исходный код функций OpenSSL RSA_public_encrypt и RSA_private_decrypt. Этот вопрос касается расчета того, сколько циклов процессора необходимо для шифрования X байтов данных.

Однако асимметричное шифрование имеет проблемы: как я уже сказал, оно медленное - особенно RSA, и размер данных, которые вы можете зашифровать, зависит от размера вашего ключа и заполнения.

Если вы хотите общаться в режиме реального времени, вам нужно использовать гибридное шифрование. Вы должны прочитать о том, как работает TLS; короткая версия заключается в том, что асимметричное рукопожатие происходит там, где две стороны соглашаются на симметричный ключ. Как только вы решите, каковы ваши данные на самом деле, вы можете квантовать их (например, "Куски" TLS имеют размер до 16 КБ, которые затем отправляются в виде нескольких TCP - пакетов), затем обе стороны используют симметричный ключ для отправки/получения, который может шифровать большие куски данных без проблем.

,