Spørgsmål:
Krypteringsbibliotek til Arduino
Fly
2009-11-12 04:33:45 UTC
view on stackexchange narkive permalink

Jeg bruger en Arduino til at læse et tastatur og åbne et elektrisk strejke ved indtastning af tastaturets PIN-kode. Til denne skitse ville jeg bruge en slags letvægtskryptering til at gemme PIN-koder i EEProm. Ved nogen om et sådant bibliotek? Jeg har hørt, at det kan være muligt at bruge TwoFish.

Syv svar:
#1
+12
Craig Trader
2009-11-13 04:39:34 UTC
view on stackexchange narkive permalink

Du ønsker ikke at kryptere adgangskoder (PIN-koder) - du vil hash dem. Når nogen indtaster en adgangskode, skal du hash den adgangskode og sammenligne hashen med den gemte hash. Fordelen ved denne metode (brugt i over 30 år) er, at selvom nogen får fat i kilden og hashen, kan de stadig ikke fortælle, hvilke PIN-koder der matcher hashen, så længe du vælger en stærk nok hash funktion.

Du ønsker ikke selv at implementere kryptering - du vil bruge en andens bibliotek, især et med en åben implementering, der er testet af et stort samfund. Kryptering er hård, test er hård, og test af kryptering er forbandet hårdt, så få en anden til at gøre det for dig.

Du bør tjekke AVR Crypto Library, som er licenseret med GPLv3. Der er også en implementering af Skein til AVR.

Opstemt - En god ressource, og dette skal indstilles som svaret på spørgsmålet.
#2
+9
bigiain
2009-11-12 07:26:23 UTC
view on stackexchange narkive permalink

Dette link, som Hristos postede, tæller bestemt ikke som "kryptering", selvom det muligvis er nyttigt. Det er egentlig kun "obfuscation".

Korrekt kryptografi er notorisk let at få forkert, selv for folk der kender matematikken.

Som svar på det oprindelige indlæg - hvad er angrebsmetoderne der ville give nogen adgang til pinkoderne i EEProm? Hvis de har det langt inde i din elektronik, kan de bare "klippe den røde ledning" og åbne døren?

Hvis du på en eller anden måde gør har et system, hvor angribere kan få fat i EEProm-indholdet uden allerede at have nok adgang til at åbne din dør, vil du sandsynligvis redesigne det. Du kunne se på envejs hash-funktioner, der ligner Unix-adgangskodeshashing - på den måde behøver EEProm ikke at indeholde en dekrypteringsnøgle - problemet er, at søgerummet for PIN-koder er meget small - hvis jeg kan downloade den hashede version af PIN-koden, kan jeg ret hurtigt prøve alle 10.000 mulige PIN-koder, jeg formoder, at enhver moderne bærbar computer kører dem alle på få sekunder.

Jeg er enig (og aftalt ovenfor), en envejs hash ville være nyttigt, og hvis du programmerer systemet, kan du lave stiften, så længe du vil, f.eks. 8 cifre giver 100.000.000 kombinationer, hvilket skulle tage meget længere tid.
#3
+1
Hristos
2009-11-12 05:05:44 UTC
view on stackexchange narkive permalink

Her er en metode til enkel indskrivning i C, der let kunne overføres til Arduino. Dette virker som den nemmeste måde at kryptere data med arduinos begrænsede ressourcer.

-EDIT- For at holde nøglen ude af dit program kan du gøre halvdelen af ​​pinkoden nøglen. Dette betyder, at dit program tager nøglehalvdelen af ​​PIN-koden for at dekryptere den krypterede 1/2 PIN-kode, der er gemt i EEProm. Hvis den dekrypterede nøgle fra EEProm matcher den del af din pin, der ikke er nøglen, låser døren op. Dette fungerer kun i en situation, hvor det ikke er muligt for ubudne gæster at nedbryde døren eller omprogrammere Arduino.

Men hvis de ikke har adgang til din chip, behøver du ikke kryptere stiften.
#4
+1
Amos
2009-11-12 05:06:40 UTC
view on stackexchange narkive permalink

Det problem, jeg forudser, er at hvis de kan se dine pins, kan de også se dit program, der krypterer / kontrollerer / dekrypterer dine pins. Plus, hvis de har din chip, kan de ikke bare ændre programmet for altid at give et positivt resultat (effektivt omgå kontrollen) for enhver indtastet pin.

#5
+1
davr
2009-11-12 05:46:46 UTC
view on stackexchange narkive permalink

Hvordan planlægger du at afkode de krypterede pinkoder for at kontrollere, om brugeren har indtastet en gyldig pinkode? Du bliver nødt til at gemme dekrypteringsnøglen ... på hvilket tidspunkt hvis angriberen kan læse din eeprom, kan han også læse din flash for at finde krypteringsnøglen. Grundlæggende gør din hele kryptering helt ubrugelig. Også som de andre sagde, hvis han allerede har evnen til at læse din chip, kunne han bare skrive et nyt program. Meget nemmere at bare sparke døren åben, jeg tvivler på, at nogen nogensinde vil gå i besværet med at prøve at hacke din chip.

#6
+1
Lou
2009-11-12 19:27:24 UTC
view on stackexchange narkive permalink

Disse kommentarer er virkelig spot-on. Der er ikke noget galt med at prøve at eksperimentere for at lære om kryptering, men dette er ikke rigtig et godt projekt til at lære sådanne ting. Du vil virkelig have en god lærebog og en computer, og som @bigiain siger, er matematikken notorisk let at få forkert.

For en bedre forståelse af, hvordan kryptografi fungerer, og hvad du er imod, er Handbook of Applied Cryptography er fremragende og gratis:

Hvis du bare vil sikre dit projekt, er dette en ineffektiv måde at gøre det på. Hvis du er interesseret i kryptografi, skal du starte med denne bog og en computer.

Jeg forstår kryptografi, læste Bruce Schneier og har programmeret i over tyve år. Jeg forstår, at den virkelige trussel bare er at bryde døren ned og gå forbi enhver form for Arduino-controller. Jeg kan bare ikke med god samvittighed installere det med klare tekst-pinkoder i EEProm, hvis det kan undgås.
Der er et hvilket som helst antal enkle tilsløringsmetoder, der ville være lige så effektive i denne rolle, hvis du vil undgå lagring af pinkoder til klar tekst. Respondenterne ovenfor forsøgte kun at hjælpe dig med at forstå, hvad kryptografi gør og ikke gør. Her er et AES-bibliotek: http: //www.hoozi.com/Articles/AESEncryption.htm Jeg vil også gerne sige det bare fordi du har programmeret i 20 år, betyder det ikke, at du "forstår" kryptografi. Det er et helt andet felt. En 20-årig bilmekaniker er en dygtig person, men jeg forventer ikke, at han designer en CAN-bus fra bunden. Tjek din holdning, tak.
Åh gud ... 20 år kodning, og du synes det er muligt at kryptere runtime data ?????Afslut.
#7
+1
Tim Post
2009-11-12 23:59:44 UTC
view on stackexchange narkive permalink

Jeg hader ikke at svare på spørgsmålet, mens jeg stiller et andet, men ...

Er der en eller anden grund til, at din enhed ikke er manipulationssikker? Jeg har set trykknapkontakter i skruehuller implementeret 'på bænken' for at opdage den slags manipulation, du er bekymret for. Så .. her kommer barnet med en butan-mikrobrænder, der formår at få din chip uden at skrue noget ud (eller beskadige chippen) .. på en eller anden måde kendte han designet til dit manipulationssikre system, som (også forhåbentlig) inkluderer detektering af ændringer i omgivende lys og / eller lyd. Når dækslet løsner, bliver begge ganske forskellige .. dag eller nat.

Hvis det er tilfældet, skal det være et todelt system, hvor de udsatte stykker kommunikerer med noget, hvor kryptering lettere implementeres. Plus, kontrolsummer (hjælp) redegør for barnet med fakkelen.

Jeg tror, ​​du beder en skruetrækker om at være en hammer.



Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 2.0-licens, den distribueres under.
Loading...