Krypto/Hash med Arduino

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Digitum
Inlägg: 153
Blev medlem: 9 februari 2006, 17:19:59

Krypto/Hash med Arduino

Inlägg av Digitum »

Hej.

Jag har kommit en liten bit på vägen med min UDP/IP-fjärrknapp. När jag klickar på en knapp så skickar den ett UDP-datagram till mottagaren och den kommer fram korrekt. Men nu vill jag "signera" paketet också, för att säkerställa att det är en behörig avsändare.

Kort sagt består ett paket av tre delar på sammanlagt 12 bytes:
* Data: enhets-id (1 byte), typ (1 byte), funktion (1 byte), värde (1 byte).
* Serienr: 4 bytes som räknar från 0 och ett steg för varje paket som skickas. Används för att mottagaren skall kolla om något paket missats mm.
* Kontrollkod: 4 bytes. Hade tänkt en Hashning av ovanstående värden. Genom att ett paket inte blir det andra likt så kommer en bra hash-funktion att göra det svårt att lista ut rätt kod. Det skall inte duga med att skicka en kopia av ett paket eftersom serienumret då inte ligger i den ordning som förväntas.

Så, jag har googlat lite efter tex en MD5 eller SHA1-implementation för arduino, men jag har inte hittat någon som fungerar än. Är det nån som har en idé om någon som fungerar?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Krypto/Hash med Arduino

Inlägg av Micke_s »

Låter mer som du behöver rullande koder.
Annars så är det bara att spela in två UDP paket så kan du simulera knappens två lägen.
Användarvisningsbild
Digitum
Inlägg: 153
Blev medlem: 9 februari 2006, 17:19:59

Re: Krypto/Hash med Arduino

Inlägg av Digitum »

Ja, jag tänkte att det är det som serienumret på kommandot skall åtgärda så att man inte skall kunna göra så. Med en bra Hash-funktion så räcker det med ett bit-skifte så förändras hashen signifikant. Glömde säga att en hemlig gemensam kod i enheterna bakas in för hash-genereringen som ett sorts salt. Har även funderat på att lägga in en RTC-krets som lägger till en tidsbaserad komponent också, och de borde vara tillräckligt noggranna om man kontrollerar +/- 2 minuter. Men det kanske är lite överdrivet.

-Edit-
Å andra sidan så skulle ett 4-bytes serienummer vara lurigt att hålla koll på om flera enheter ansluter till samma mottagare av koder. Mycket data att hålla reda på. Kanske bättre med ett RTC-baserat nummer som genererar en ny kod varje minut. Sen kontrollerar man mot en NTP-server så att inte avvikelsen är för stor.
Senast redigerad av Digitum 15 december 2011, 22:00:07, redigerad totalt 2 gånger.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: Krypto/Hash med Arduino

Inlägg av v-g »

Ähh vafasen kör en "fuling" lägg in ett slumptal som du INTE tar med i din enkla kryptering typ XOR eller nåt så kan de knäcka på :D

En annan specialare kan ju vara att köra olika "Kryptering" beroende på "serienumret".

Datorn (som då är snabb) kan snabbt dekryptera säg 10-100 olika varianter om det ligger i osynk sen vet den ju nästa paket.
ToPNoTCH
Inlägg: 5152
Blev medlem: 21 december 2009, 17:59:48

Re: Krypto/Hash med Arduino

Inlägg av ToPNoTCH »

Jag tycker du skall låta kryptografer fixa med algoritmer och ägna dig åt dit projekt :wink:

Kolla på: http://code.google.com/p/cryptosuite/downloads/list
Användarvisningsbild
Digitum
Inlägg: 153
Blev medlem: 9 februari 2006, 17:19:59

Re: Krypto/Hash med Arduino

Inlägg av Digitum »

Har redan testat den, men får följande fel vid kompilering av medföljande exempel:

Kod: Markera allt

In file included from sha1test.cpp:1:
C:\Users\Odd\Desktop\arduino-1.0\libraries\Sha/sha1.h:26: error: conflicting return type specified for 'virtual void Sha1Class::write(uint8_t)'
C:\Users\Odd\Desktop\arduino-1.0\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'
Och jag kan egentligen inte C/C++ men hankar mig fram...
ToPNoTCH
Inlägg: 5152
Blev medlem: 21 december 2009, 17:59:48

Re: Krypto/Hash med Arduino

Inlägg av ToPNoTCH »

Du kör händelsevis inte Arduino 1.0 då ?

Exemplena kompilerar fint i 0022.

1.0 Har i princip ingen bakåtkompabilitet, och busta de flesta librarys.
Användarvisningsbild
Digitum
Inlägg: 153
Blev medlem: 9 februari 2006, 17:19:59

Re: Krypto/Hash med Arduino

Inlägg av Digitum »

Det fungerade. Valde ett Arduino Pro 5V/16Mhz ATmega328. Är det rätt för Arduino Ethernet?

Så, förhoppningsvis kommer det nya bibliotek för sha för 1.0 snart då?
-Edit-
Har skickat ett ärende i bugtrackern.
ToPNoTCH
Inlägg: 5152
Blev medlem: 21 december 2009, 17:59:48

Re: Krypto/Hash med Arduino

Inlägg av ToPNoTCH »

Jo 1.0 lär man ju vänta lite med.

För mycket librarys som man inte kan vara utan :vissla:

Om du har en Ethernet skall du uppdatera din boards.txt, så kan du välja den direkt i menyn.

Kolla längst ner på denna sida.
Användarvisningsbild
Digitum
Inlägg: 153
Blev medlem: 9 februari 2006, 17:19:59

Re: Krypto/Hash med Arduino

Inlägg av Digitum »

När jag kör Arduino .22 så verkar inte programbiblioteket EthernetUdp.h finnas med. Eftersom UDP är väsentligt för projektet så får jag väl fortsätta att utveckla men lägga med en dummyfunktion för hash-funktionerna, tills biblioteket kommer för 1.0.
Skriv svar