Nie chcesz szyfrować haseł (PIN) - chcesz je haszować . Gdy ktoś wpisze hasło, hashujesz je i porównujesz hash z przechowywanym hash. Zaletą tej metody (stosowanej od ponad 30 lat) jest to, że nawet jeśli ktoś zdobędzie źródło i skróty, nadal nie może powiedzieć, które kody PIN pasują do skrótów, o ile wybierzesz wystarczająco silną funkcję skrótu .
Nie chcesz samodzielnie implementować szyfrowania - chcesz korzystać z czyjejś biblioteki, szczególnie z otwartą implementacją przetestowaną przez dużą społeczność. Szyfrowanie jest trudne, testowanie jest trudne, a testowanie szyfrowania jest cholernie trudne, więc niech ktoś zrobi to za ciebie.
Powinieneś pobrać bibliotekę AVR Crypto Library , która jest licencjonowana na GPLv3. Istnieje również implementacja Skein dla AVR .
Ten link opublikowany przez Hristosa, choć prawdopodobnie przydatny, z pewnością nie liczy się jako „szyfrowanie”. To tak naprawdę tylko „zaciemnianie”.
Właściwa kryptografia jest bardzo łatwa do popełnienia błędu, nawet dla osób znających matematykę.
W odpowiedzi na oryginalny post - jakie metody ataku umożliwiłyby komuś dostęp do kodów PIN w EEProm? Z pewnością, jeśli masz , że daleko do elektroniki mogą po prostu „ciach czerwony przewód” i otworzyć drzwi?
Jeśli jakoś zrobić mieć system, w którym atakujący może zdobyć zawartości EEPROM bez konieczności już wystarczająco dostępu do otwierania drzwi, prawdopodobnie chcesz go przeprojektować. Państwo mogłoby wyglądać na jednokierunkowych funkcji mieszających podobnych do Unix hasłem mieszaja - ten sposób EEPROM nie potrzebuje t zawierać klucz deszyfrowania - problemem jest przestrzeń poszukiwań dla PIN jest bardzo mała - jeśli mogę pobrać z następujących wersji hashed PIN, mogę dość szybko wypróbować wszystkie 10 000 możliwych PINów, podejrzewam, że każdy nowoczesny laptop uruchomi je wszystkie w ciągu kilku sekund.
źródło
Problem, który widzę, polega na tym, że jeśli widzą twoje piny, mogą również zobaczyć twój program, który szyfruje / sprawdza / deszyfruje twoje piny. Plus, jeśli mają twój chip, nie mogą po prostu zmienić programu, aby zawsze dawał pozytywny wynik (skutecznie omijając czek) dla każdego wprowadzonego kodu PIN.
źródło
Jak planujesz zdekodować zaszyfrowane kody PIN, aby sprawdzić, czy użytkownik wprowadził prawidłowy kod PIN? Musisz przechowywać klucz odszyfrowujący ... w tym momencie, jeśli atakujący może odczytać twój eeprom, może również odczytać twoją pamięć flash, aby znaleźć klucz szyfrujący. Zasadniczo czynisz całe szyfrowanie całkowicie bezużytecznym. Również, jak powiedzieli inni ludzie, jeśli już umie czytać twój układ, może po prostu napisać nowy program. O wiele łatwiej jest po prostu otworzyć drzwi. Wątpię, czy ktokolwiek kiedykolwiek miałby problem z włamaniem się do chipa.
źródło
Oto metoda prostej zapisu w C, którą można łatwo przenieść na Arduino. To wydaje się być najprostszym sposobem szyfrowania danych przy użyciu ograniczonych zasobów arduino.
-EDYCJA- Aby trzymać klucz poza programem, możesz ustawić połowę kodu PIN na klucz. Oznacza to, że Twój program pobiera kluczową połowę kodu PIN, aby odszyfrować zaszyfrowaną 1/2 PIN przechowywaną w EEProm. Jeśli odszyfrowany klucz z EEProm pasuje do tej części kodu PIN, która nie jest kluczem, drzwi się odblokują. Działałoby to tylko w sytuacji, gdy intruz nie mógł wyłamać drzwi ani przeprogramować Arduino.
źródło
Nienawidzę nie odpowiadać na pytanie, zadając innym, ale ...
Czy istnieje jakiś powód, dla którego Twoje urządzenie nie jest odporne na manipulacje? Widziałem przełączniki przyciskowe w otworach na śruby zaimplementowane „na stole” w celu wykrycia rodzaju manipulacji, o którą się martwisz. A potem ... oto pojawia się dziecko z mikropankiem z butanem, które udaje się zdobyć twój chip bez odkręcania czegokolwiek (lub uszkodzenia chipa) .. w jakiś sposób znał konstrukcję twojego systemu odpornego na manipulacje, który (miejmy nadzieję) obejmuje także wykrywanie zmian w światło i / lub dźwięk otoczenia. Po zdjęciu okładki oba stają się zupełnie inne ... w dzień iw nocy.
W takim przypadku powinien to być dwuczęściowy system, w którym odsłonięte elementy komunikują się z czymś, w którym szyfrowanie jest łatwiejsze do zaimplementowania. Dodatkowo sumy kontrolne (pomoc) odpowiadają dziecku z pochodnią.
Myślę, że prosisz śrubokręta o młotek.
źródło
Te komentarze są naprawdę trafne. Nie ma nic złego w próbach eksperymentowania na temat szyfrowania, ale tak naprawdę nie jest to dobry projekt do nauki takich rzeczy. Naprawdę chcesz dobrego podręcznika i komputera, a jak mówi @bigiain, matematyka jest bardzo łatwa do popełnienia błędu.
Aby lepiej zrozumieć, jak działa kryptografia i co masz do czynienia, Podręcznik kryptografii stosowanej jest doskonały i bezpłatny:
Jeśli chcesz zabezpieczyć swój projekt, jest to nieefektywny sposób. Jeśli interesujesz się kryptografią, zacznij od tej książki i komputera.
źródło