Бібліотека шифрування для Arduino


9

Я використовую Arduino для читання клавіатури та відкриття електричного удару при введенні PIN-коду клавіатури. Для цього ескізу я хотів використовувати якесь легке шифрування для зберігання PIN-кодів у EEProm. Хтось знає про таку бібліотеку? Я чув, що це можливо за допомогою TwoFish.

Відповіді:


12

Ви не хочете шифрувати паролі (PIN-коди) - ви хочете їх хеш . Коли хтось вводить пароль, ви хеште цей пароль і порівнюєте хеш із збереженим хешем. Перевага цього методу (застосовується понад 30 років) полягає в тому, що навіть якщо хтось захоплюється джерелом і хешами, він все ще не може сказати, які PIN-коди відповідають хешам, якщо ви виберете досить сильний хеш-функцію .

Ви не хочете реалізовувати шифрування самостійно - ви хочете використовувати чужу бібліотеку, зокрема ту, що має відкриту реалізацію, протестовану великою спільнотою. Шифрування важке, тестування важке, а тестування шифрування прокляте важко, тому дозвольте іншим зробити це за вас.

Вам слід оформити криптобібліотеку AVR , яка має ліцензію на GPLv3. Існує також реалізація Skein для AVR .


1
Upvoted - Хороший ресурс, і це має бути встановлено як відповідь на питання.
Лу

9

Це посилання, яке Христос розмістив, хоч і можливо корисне, звичайно, не вважається "шифруванням". Це справді лише "обфускація".

Правильна криптографія, як відомо, легко помилитися навіть для людей, які знають математику.

У відповідь на оригінальний пост - які методи атаки дозволяють комусь отримати доступ до PIN-кодів у EEProm? Звичайно, якщо у них є , що далеко в вашу електроніку вони просто можуть «чик червоний провід» і відкрити двері?

Якщо ви яким - то чином зробити є система , в якій зловмисники могли отримати вміст ЕСППЗУ без вже мають достатній рівень доступу , щоб відкрити двері, ви , ймовірно , хочете , щоб перепроектувати його. Ви можете подивитися на односторонні хеш-функції, схожі на хешування паролів Unix - таким чином EEProm не потребує вмісту ключа розшифровки - проблема в тому, що місце пошуку PIN-кодів дуже мало - якщо я можу завантажити хешовану версію PIN-код, я можу досить швидко спробувати всі 10000 можливих PIN-кодів, я підозрюю, що будь-який сучасний ноутбук запустить їх за кілька секунд.


Я погоджуюсь (і погодився вище), односторонній хеш був би корисним, і якщо ви програмуєте систему, то ви можете зробити шпильку, скільки завгодно, наприклад, 8 цифр дає 100 000 000 комбінацій, що може зайняти набагато більше часу.
Амос

1

Проблема, яку я бачу, полягає в тому, що якщо вони бачать ваші шпильки, вони також можуть бачити вашу програму, яка шифрує / перевіряє / розшифровує ваші шпильки. Плюс якщо вони мають ваш чіп, чи можуть вони не просто змінювати програму, щоб завжди давати позитивний результат (фактично минаючи чек) для будь-якого введеного штифта.


1

Як ви плануєте розшифрувати зашифровані PIN-коди, щоб перевірити, чи ввів користувач дійсний PIN-код? Вам потрібно буде зберегти ключ розшифровки ... в цей момент, якщо зловмисник зможе прочитати ваш eeprom, він також може прочитати ваш спалах, щоб знайти ключ шифрування. В основному, ви робите все шифрування повністю марним. Також, як казали інші люди, якщо він вже має можливість читати ваш чіп, він може просто написати нову програму. Набагато простіше просто відкрити двері, я сумніваюся, хтось коли-небудь піде на спробу спробувати зламати ваш чіп.


1

Ось метод простого запису на С, який легко можна перенести на Arduino. Це здається найпростішим способом шифрування даних з обмеженими ресурсами arduino.

-EDIT - Щоб утримати ключ у програмі, ви можете ввести половину PIN-коду. Це означає, що ваша програма бере ключову половину PIN-коду для розшифрування зашифрованого 1/2 PIN-коду, що зберігається в EEProm. Якщо розшифрований ключ від EEProm відповідає тій частині вашого штифта, яка не є ключем, двері відчиниться. Це спрацювало б лише в ситуації, коли зловмисники не можуть зламати двері або перепрограмувати Arduino.


Але якщо вони не мають доступу до вашого чіпа, вам не потрібно шифрувати штифт.
Амос

1

Я ненавиджу відповідати на питання, запитуючи іншого, але ...

Чи є якась причина, чому ваш пристрій не є захистом від несанкціонованих дій? Я бачив перемикачі кнопок у отворах під гвинти, реалізовані "на лавці", щоб виявити вигляд фальсифікацій, які ви переживаєте. Потім .. ось приходить дитина з бутановим мікро-факелом, якому вдається дістати ваш чіп, не відкручуючи нічого (або пошкоджуючи чіп). навколишнє світло та / або звук. Коли чохол зійде, обидва стають зовсім різними .. день або ніч.

Якщо це так, це повинна бути система з двох частин, де викриті фрагменти спілкуються з чимось, де шифрування реалізується легше. Плюс контрольні суми (допомога) приділяють дитині факел.

Я думаю, ти просиш викруткою бути молотом.


1

Ці коментарі справді точкові. Немає нічого поганого в тому, щоб спробувати експериментувати, щоб дізнатися про шифрування, але це насправді не дуже хороший проект для вивчення таких речей. Ви дуже хочете гарного підручника та комп’ютера, і як говорить @bigiain, математику, як відомо, легко помилитися.

Для кращого розуміння того, як працює криптографія та проти чого ви, Довідник прикладної криптографії є чудовим та безкоштовним:

Якщо ви просто хочете забезпечити свій проект, це неефективний спосіб зробити це. Якщо вас цікавить криптовалюта, почніть з цієї книги та комп’ютера.


Я розумію криптографію, читаю Брюса Шнейєра і програмую понад двадцять років. Я розумію, що реальна загроза - це просто розбити двері та пройти повз будь-який контролер Arduino. Я просто не можу по совісті встановити його з чіткими текстовими PIN-кодами в EEProm, якщо цього можна уникнути. Fly

Існує будь-яка кількість простих методів обфускування, які були б настільки ж ефективними в цій ролі, якщо ви хочете уникати зберігання PIN-кодів з чітким текстом. Вищевідповідачі намагалися лише допомогти вам зрозуміти, що криптографія робить, а що не робить. Ось бібліотека AES: hoozi.com/Articles/AESEncryption.htm Я також хотів би сказати, що те, що ви програмували протягом 20 років, це не означає, що ви "розумієте" криптографію. Це зовсім інше поле. 20-річний автомеханік є кваліфікованою людиною, але я б не очікував, що він спроектує шину CAN з нуля. Перевірте своє ставлення, будь ласка.
Лу

О боже ... 20 років кодування, і ти думаєш, що можливо зашифрувати дані виконання ????? Вийдіть.
MickLH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.