Det har aldrig varit svårare att vara helt säker på att något meddelande du skickar kan överföras eller tas emot i absolut sekretess.

Den här heliga krypteringsgraden har långa frustrerade säkerhetsexperter, och de flesta människor är villiga att bosätta sig för att använda krypteringsprogram som gpg, som samtidigt teoretiskt brytbart kommer att motstå alla sprickande försök länge efter att du trycker upp tusenskönorna.

Om det emellertid var ett sätt att vara säker på att dina personliga e-postmeddelanden, bilder på ditt husdjurskattunge, säkerhetskopieringar av dina skattedeklarationer under det senaste decenniet och så vidare var säkra även om de avlyssnade? Ange One Time Pad.

  • Hur man är säker på nätet

Den notoriska OTP

I enklaste termer är en One Time Pad en serie slumpmässiga nummer som du håller med om med någon som du vill kommunicera med, vanligtvis genom att träffas personligen och byta kuddar.

När du skickar ett meddelande måste du först konvertera det till siffror, sedan lägger du till var och en av dessa nummer till numren i rutan. När mottagaren har fått meddelandet kan de arbeta bakåt med hjälp av deras kopia av dynan, dras av siffrorna för att hämta ditt ursprungliga meddelande.

En implementering av OTP som kodar meddelandet “Falken har flugit.”

Förutsatt att siffrorna är riktigt slumpmässiga ser ingen annan kudden och samma text kodas inte två gånger med samma kudde, då kan inte världens snabbaste superdator inte avkoda meddelandet.

Krypteringens styrka ligger i slumpmässigheternas slumpmässighet. Utan att veta dessa kunde någon som avlyssnade ett meddelande se ordet "LINUX" krypterad som "OSYAJ" men hade ingen väg att veta att det inte är ett annat fem bokstavsord, som "CHILE".

One Time Pad har sparkat runt i någon form eller form sedan 1880-talet, men det var inte förrän 1917 som Gilbert Vernam et al formellt patenterade en maskin för att automatisera processen.

I det här fallet användes två rullar av stansad tejp, en med det ursprungliga meddelandet och en med stämman med slumptal.

KGB-agenter i USA var snabba att utnyttja detta under det kalla kriget och placerade små kuddar inuti uthuggade nicklar, falska valnötter och några dödliga gömställen.

I det 21: a århundradet låter datorer som Raspberry Pi sig bra för att de enkelt bärs och är perfekta för att generera och bearbeta One Time Pads. Men för att förstå varför är det nödvändigt att förstå fallgroparna i One Time Pad.

  • Se fler Raspberry Pi-projekt
OTP går termisk

För att kunna fortsätta måste du ha din Adafruit Printer inrättad och arbetar. Lyckligtvis har webbplatsen en utmärkt guide till detta.

Först installera rng-verktyg som anges i steg 1 i genomgången på nästa sida. Du måste också redigera / etc / default / rng-tools i din favorit textredigerare. Ta bort # i början av raden HRNGDEVICE = / dev / hwrng. Spara och avsluta.

Använd sudo /etc/init.d/rng-tools omstart för att vara säker på att Raspberry Pi använder endast hårdvaran RNG nu.

Nästa, ladda ner otp-gen-programvaran:

$ git klon https://github.com/iworkinpixels/otp-gen.git

På det här steget om du vill kan du gå in i opt-gen / mappen och springa av en provkudde för att se hur det ser ut:

$ cd otp-gen

$ sudo ./otp.py

$ nano otp.txt

Nästa måste vi se till att programvaran startar automatiskt när maskinen startar:

$ sudo nano /etc/rc.local

Bläddra till botten av den här filen och sätt in följande tre rader ovanför orden "exit 0":

$ cd / home / pi / otp-gen

$ ./otp.sh

$ python ./otp.py

Om du har hämtat mappen otp-gen till någon annanstans förutom / home / pi / ändra sedan den första raden i enlighet med detta.

Använd Ctrl + X för att komma ur textredigeraren och tryck på Y för att spara ändringarna.

Använd sedan sudo omstart för att starta om din Raspberry Pi. Skrivaren ska skriva ut ett meddelande som säger att det är anslutet till nätverket tillsammans med din IP-adress och sedan pausa.

Tryck helt enkelt på knappen för att skapa din egen one-time pad. Upprepa så många gånger du vill.

Entropi är inte vad det brukade vara ...

Bruce Schneier beskrev en gångs Pad som en gång “teoretiskt säkert, men ... inte säkra i praktisk mening.”

Detta återspeglar det faktum att det har funnits gånger att OTP har brutits i praktiken trots deras teoretiska säkerhet. På 1940-talet kunde US SIGINTs kontraintelligensprogram Venona avkoda ett antal sovjetiska OTP-meddelanden, helt enkelt för att vissa pads hade återanvändits.

Denna kryptokardinala synd var begåvad eftersom sovjeterna helt enkelt inte kunde generera dynor tillräckligt snabbt för de tusentals dagliga meddelanden som skickades under krigstid.

En liknande chink hittas av tyska codebreakers i Neal Stephensons Cryptonomicon. Brittarna använder en flotta gamla damer med små bingo-maskiner för att rita nummererade bollar för att generera dynor.

Tyvärr följer de gamla hjärnorna inte alltid bästa praxis - de misslyckas med att titta bort varje gång de ritar en boll enligt instruktioner, vilket betyder att de medvetet väljer valda förutsägbara nummer.

Snabbspolning till det 21: a århundradet och frågan har inte förbättrats mycket. Hela böckerna har ägnats åt detta ämne, men det är tillräckligt att säga att datorer i allmänhet inte är så bra att generera sann slumpmässighet.

Vanligtvis när det krävs en webbplats eller ett program kommer att be dig att vinkla musen för att tillhandahålla en så kallad “bullerkälla” att jobba från.

För det mesta men när en dator kräver större mängder av slumpmässighet kommer det att bilda en rad pseudo-slumpmässiga data från din entropipool, vilket, trots att det är idealiskt att bestämma var nästa block kommer att falla när du spelar Tetris, är mindre än perfekt när det gäller säkerhet.

Tack och lov är en av de mindre kända funktionerna i Raspberry Pi att den har sin egen inbyggda hårdvara slumpmässig talgenerator, som i kombination med rng-tools-sviten kan generera exakt den typ av högkvalitativ slumpstyrka som behövs för en OTP.

Det andra hinderet för de som använder OTP har att göra med nyckelgenerering och distribution. Sovjeterna kunde inte följa krigets krav och i det verkliga livet skulle bingo-maskinerna i Storbritanniens lilla gamla damer antagligen sluta röka med antalet gånger de skulle behöva churned.

Ett ganska dramatiskt sätt att vara säker data har raderats. Av säkerhetsskäl kan det vara bättre att överväga säkra raderingsverktyg innan de når en blåsbrännare

Lyckligtvis kan hårdvaran RNG inbyggd i Raspberry Pi generera stora mängder data på kort tid. Exempelvis kan en pad med 10 000 uppsättningar femsiffriga slumptal genereras på sekunder genom att aktivera hårdvaru-RNG (se steg 1 i vår guide på nästa sida) och sedan ange:

$ sudo base64 / dev / hwrng | tr-dc '0-9' | vik -sw 5 | huvudet -c 10000> bobtoaliceotp.txt
Max ut din MAC

Det är bäst innan du skickar privat information med en OTP för att skicka ett Challenge-Response-meddelande först. Tekniskt sett kan du komma överens om två kodord att använda med din mottagare: man kan indikera att det är du och du kan tala fritt - till exempel, “everest” - och en annan kan avslöja att du talar under tvång - till exempel, “Sparv”.

Det betyder dock att samma text krypteras varje gång, vilket gör meddelanden lättare att spricka.

Ett bättre system är att välja mellan en lista över förordnade ord eller fraser. Ett sätt att göra detta skulle vara att komma överens om en bok - kataloger och almanackor är perfekta typer av bok för detta - och i din “utmaning” meddelande kan du skicka en godtycklig sida och rad.

Till exempel kan du gå med på att använda 1992-utgåvan av Wisden Cricketer's Almanack. Bob kan meddelandet Alice säger, “613-1.” Alice kan svara med den första raden på sidan 613, som är: “Worcestershire var det enda länet som vann två troféer 1991.”

Hon kan sedan lägga till en utmaning för sig själv till meddelandet, till exempel att be om sidan 582, rad 4.

Om självklart svarar Alice med något annat än rätt ord, kommer Bob att veta att det inte är henne eller hon är i tvivel, och detsamma gäller med sitt svar på henne.

Du kan ytterligare öka säkerheten för detta system genom att på förhand komma överens om att svaret på utmaningen inte ska vara den linje som begärs i meddelandet, men den ena (säga) tre rader efter eller kanske samma rad på följande sida.

Den resulterande textfilen kan sedan skrivas ut, till exempel av Adafruits termiska skrivare. Den här skrivaren har fördelen att det i motsats till de flesta laserskrivare inte registrerar serienumret, tillverkningen eller modellen på varje ark som den skriver ut (se här den här webbplatsen).

Den rymmer också upp till 15m papper, vilket kommer att vara gott för att generera långa meddelanden. Med detta i kombination med det utmärkta programmet otp-gen kan du automatiskt skriva ut dina egna pads med en knapptryckning (se "OTP går Thermal" rutan på den här sidan).

När pappersarken trycks trycks och tuckas bort kommer nästa problem att distribuera kuddarna fysiskt.

Detta är utan tvekan den främsta anledningen till att OTP inte har sett mycket utbredd användning. Det är ryktet att den röda telefonen som körs mellan Washington och Moskva till exempel är säkrad av en OTP, främst för att båda supermakten är rika och melodramatiska nog att få män med mörka glasögon att handbåda själva till portföljer och byta pads med jämna mellanrum.

Självklart om du har tryckta pappersdukar är det möjligt att maila dem till din mottagare, men då är din OTP inte säkrare än en vanlig bokstav eftersom det kan ha blivit avlyssnat och kopierat på vägen. Detsamma gäller för att använda vanliga krypteringsprogram som GnuPG.

Det enda sättet att vara säker på att din kudde inte kan avlyssas är att leverera den personligen. Återigen kommer den ödmjuka Raspberry Pi på framsidan här, eftersom den är extremt liten och lätt att bära. När du träffar den person med vilken du vill byta meddelanden kan du ge dem en kopia av din Raspberry Pis MicroSD-kort eller Raspberry Pi själv.

För att säkerställa perfekt säkerhet för dina meddelanden är det nödvändigt att ta bort kuddar som tidigare har använts.

Om du har skrivit ut din utskrift, kommer en liten rubbning och en Zippo-tändare troligen att vara till hjälp här. (Andra tändare finns tillgängliga.)

Annars körs skurkommandot på kudden som du just använt bör vara tillräckligt för att förhindra återhämtning. Både SD-kort och Raspberry Pis är billiga också, så om du verkligen känner att du måste förstöra dem när padsna har bytt händer, kan du också göra detta.

Den låga kostnaden för en Raspberry PI är också ett bra svar på en annan gemensam kritik, vilket är att en OTP vanligtvis är mycket svår att skala utöver två personer som byter meddelanden.

Om du bestämmer dig för att bilda ett hemligt samhälle, kan det vara bäst att utse en person för att träffa varje medlem och byta pads regelbundet. Den personen kan sedan sitta i mitten av nätet och fungera som ett clearinghus för meddelanden, vidarebefordra dem mellan medlemmarna som det behövs.

Även med hjälp av en Raspberry Pi är det dock fortfarande möjligt att pussar tas upp och kommunikation kan vara besvärlig. Det är därför det är bra att använda några bra metoder för din OTP.