du använder förmodligen kryptering, i en eller annan form, varje dag. Du kanske inte vet att du är, men det är du. Och min gissning är att du inte ger det en andra tanke. Har du en prenumerationsbaserad kabel-eller satellit-TV-tjänst? Gissa vad, en del av det innehållet kommer att krypteras. Ansluter du till webbplatser med https://? Det är mer kryptering. Någonsin skapat .zip-fil med ett lösenord? Det använder kryptering.,
jag kunde fortsätta och en lista dussintals andra exempel på varje dag kryptering, men jag kommer inte. när det gäller Android stöder den också kryptering, inte bara för webben med https: / / men också för dina filer och data. Android 6.0 Marshmallow använde full diskkryptering, medan Android 7.0 Nougat har lagt till alternativet för per-filkryptering. Tanken är att om din telefon ska falla i händerna på ovänliga, är din privata data säker.
Så vad är kryptering? Det är processen att ta vanliga data, inklusive text, och omvandla den till en oläslig (av människor eller datorer) form., Krypteringsprocessen är baserad på en nyckel, analogi här är ett lås som behöver en nyckel, och endast personer med nyckeln kan låsa upp (dekryptera) data och sätta tillbaka den i sin ursprungliga form. Det betyder att alla som får tag på dina krypterade data inte kan läsa den om de inte har nyckeln.
som Tom Jericho karaktär i den utmärkta filmen Enigma uttryckte det, ” det visar oformaterad textmeddelanden i gobbledygook. I den andra änden är en annan maskin, som översätter meddelandet tillbaka till originaltexten.”Kryptering och dekryptering!,
det hela började med Caesar
konsten att hemligt skrivande, vad vi skulle kalla kryptering, har funnits i minst 2500 år, men det mest kända exemplet från antiken är att substitution chiffer som används av Julius Caesar för att skicka meddelanden till Cicero., En substitutionchiffer fungerar så här, du börjar med alfabetet på en rad och lägger sedan till en andra rad med alfabetet skiftat längs lite:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZX Y Z A B C D E F G H I J K L M N O P Q R S T U V W
om du vill kryptera ordet ”hej” tar du första bokstaven, H och tittar på bokstaven under den, vilket ger dig E. då ger E B och så vidare. Den krypterade formen av HELLO är ebiil. För att dekryptera det du lookup E på den nedre raden och se h ovanför den, sedan B på botten för att få E ovanför den och så vidare. Slutför processen för att få hej.,
i det här fallet är ”nyckeln” 3, eftersom alfabetet har skiftats tre till höger (Du kan också flytta till vänster istället). Om du byter till key to say 5 får du det här:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
nu skulle den krypterade versionen av HELLO vara CZGGJ. Mycket annorlunda än EBIIL. I detta fall är nyckeln 5. Magi!
det finns dock några större problem med denna form av kryptering. Först och främst finns det bara 26 nycklar. Du kanske har hört talas om människor som pratar om 128-bitars nycklar eller 256-bitars nycklar, ja det här är en 5-bitars nyckel (dvs 26 i binär är 11010)., Så det skulle inte ta för lång tid att prova alla 26 variationer och se vilken som börjar producera förståelig text.
För det andra har engelska (och andra språk) vissa egenskaper. E är till exempel den mest populära bokstaven på engelska, så om du hade en bra bit text kan du se vilken bokstav som visas oftast och gissa sedan att det är E. Skift det nedre alfabetet för att matcha E med den vanligaste karaktären och du har förmodligen knäckt koden. Det finns också bara några bokstäver som kan dubbla upp på engelska, som OO, LL, SS, EE och så vidare., När du ser en dubbel som II eller GG (från exemplen ovan) bör du försöka matcha dem på alfabet först.
kombinationen av den lilla nyckeln och det faktum att samma bokstav alltid krypterar till samma motsvarande bokstav på chiffer alfabetet innebär att detta är mycket svag kryptering. Och idag med datorer som gör det hårda arbetet är det bortom svagt!,
fler alfabet och okrossbar kryptering
svagheterna i Caesar substitution chiffer kan lindras något genom att använda mer än ett skiftat alfabet. Exemplet nedan kan utökas till 26 skiftade alfabet varav flera används samtidigt, men inte alla av dem.
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZZ A B C D E F G H I J K L M N O P Q R S T U V W X YY Z A B C D E F G H I J K L M N O P Q R S T U V W XX Y Z A B C D E F G H I J K L M N O P Q R S T U V WW X Y Z A B C D E F G H I J K L M N O P Q R S T U VV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
så om vi ställer in nyckeln till WVY betyder det att vi använder alfabetet som börjar med W först, då den som börjar med V och slutligen den som börjar med Y. detta upprepas sedan för att koda hela meddelandet. Så HEJ skulle bli DZJHJ., Lägg märke till att nu dubbel L i HELLO inte är kodad som samma tecken, det är nu J och sedan H. också, den första J i den krypterade texten är koden för L medan den andra på är koden för O. så J representerar nu inte alltid samma vanliga textbrev.
en version av denna idé, med 26 alfabet, är grunden för Vigenère-chiffret som publicerades på 1500-talet av Blaise de Vigenère. En liknande idé beskrevs också av Giovan Battista Bellaso år 1553., Vigenère-chiffret förblev oföränderligt i 300 år tills det knäcktes av Charles Babbage och sedan av Friedrich Kasiski. Hemligheten med att bryta Vigenère chiffer är att förstå att i slutändan samma ord kan kodas med samma bokstäver eftersom samma alfabet används om och om igen. Så ordet ”och” kan kodas olika de första gångerna det visas, men i slutändan kommer det att kodas med samma bokstäver igen. Upprepning är i allmänhet undergången av en chiffer.,
upprepning är svagheten i Caesar-chiffret, Vigenère och alla varianter, men det finns ett sätt att använda en alfabetet chiffer för att skapa en okrossbar hemlig kod utan repetitioner, det kallas engångsplattan. Tanken är att i stället för att använda ett skiftat alfabet används en slumpmässig sekvens av bokstäver. Denna sekvens måste vara riktigt slumpmässig och måste vara lika lång som meddelandet.
I S T H I S U N B R E A K A B L EP S O V Y V U B M W S P A H Q T D
i stället för att göra en rak substitution den här gången använder vi tillägg, med en twist., Varje bokstav i alfabetet tilldelas ett nummer, a är 0, B är 1, C är 2 och så vidare. Jag är alfabetets 9: e bokstav, vilket innebär att det har ett värde på 8. P (bokstaven under den på vår engångs-chifferplatta) 15. 8 + 15 = 25 vilket betyder X. Den andra bokstaven i vårt meddelande är S, som har värdet 18. Det råkar vara så att s också är brevet på vår engångsplatta (vilket inte är ett problem alls). 18 + 18 = 36. Nu här är vridningen, det finns ingen 36: e bokstav i alfabetet. Så vi utför vad som kallas en moduloperation., Vad det i grunden betyder är att vi delade resultatet med 26 (antalet bokstäver i alfabetet) och använda resten. 36 / 26 = 1 resten 10. Bokstaven med värdet 10 är K. Om du fortsätter att göra detta är det slutliga krypterade meddelandet:
X K H C G N O O N N W P K H R E H
anledningen till att den här koden inte går att bryta är att du bara använder nyckeln (den slumpmässiga strängen) en gång. Det betyder att alla som försöker avkoda meddelandet inte har någon referenspunkt och det finns ingen upprepning. Nästa meddelande som ska skickas kommer att använda en helt annan slumpmässig nyckel och så vidare.,
det största problemet med engångs kuddar, är att få nycklarna till den andra parten så att de kan dekryptera meddelandet. Traditionellt gjordes detta med en bok i form av en anteckningsblock, med de olika koderna på varje sida. Vilka sidor som användes skulle ändras varje dag och när en kod användes kunde den rippas från dynan och kasseras. Men dessa dynor måste transporteras i en säker metod. För om någon annan får koderna kan krypteringen knäckas., Detta innebar i princip att du behövde träffa den andra parten innan handen och komma överens om vilka koder som skulle användas och när. Det är den säkraste metoden men det är också den mest besvärliga, och det är verkligen inte en fungerande lösning för dagens moderna digitala värld.
den digitala tidsåldern
under 1900-talet blev krypteringen mekaniserad, det mest kända exemplet var Enigma-maskinen som användes av nazisternas under andra världskriget. , Det finns tre stora fördelar för datoriserad kryptografi:
- datorer är flexibla, till skillnad från mekaniska lådor, datorer kan programmeras för att utföra massor av olika operationer på ett meddelande och antalet och komplexiteten av dessa operationer kan ändras relativt snabbt.
- hastighet.
- datorer hanterar binära tal inte bara bokstäver.
punkterna 1 och 2 är mycket viktiga, särskilt när man jämför datorer med mekaniska krypteringsmetoder. Men paradigmändringen är att datorer hanterar siffror och inte bokstäver., Detta innebär att kryptering kan tillämpas på alla typer av data. Ett textmeddelande, en bild, en ljudfil, en film, en databas, filer på en smartphone och så vidare.
med flytten från bokstäver till binär kom en förändring i hur kryptering utförs. Hela bokstäver behöver inte längre krypteras men istället kan de och nollorna manipuleras för att ge nya sekvenser. Ordet hej i 8-bitars ASCII är 010010000100010101001100010011000100111111. Härifrån kan binären manipuleras på en myriad av olika sätt. Det kan delas, skiftas, läggas till, multipliceras, vad som helst.,
metoden som används för att bearbeta de och nollorna är känd som en kryptografisk algoritm och det finns många olika typer av algoritmer. De viktigaste egenskaperna hos en krypteringsalgoritm är dess säkerhet (kan det vara knäckt) och dess prestanda (hur lång tid tar det att koda eller avkoda data).
Stream ciphers är som engångs kuddar genom att data inte bara krypteras mot en enda nyckel, utan snarare en sekvens av pseudo-slumptal som är baserad på nyckeln. Skillnaden mellan en engångsplatta och en strömchiffer är att med en engångsplatta måste nyckeln vara riktigt slumpmässig. Med ström ciphers med samma nyckel innebär att du får samma sekvens av siffror, det är det som gör det möjligt att avkoda meddelandet., Men utan nyckeln ser sekvensen slumpmässig ut och är därför svår att bryta.
RC4S svaghet var att under vissa omständigheter och under vissa förhållanden (främst när samma data upprepade gånger krypterades) är det möjligt att gissa vilka nummer som kan komma nästa i sekvensen. Denna gissning minskar antalet möjliga kombinationer och tillåter en brute force attack (där varje kombination försöker) som ska användas. För att få attacken att fungera behövs massor av data. RC4 ingen mer attack behöver samla in 75 timmar värde av krypterade data, baserat på 4450 förfrågningar per sekund.,
den andra huvudtypen av chiffer är blockchiffret. Detta fungerar genom att dela data i mer hanterbara block, säger 64-bitars. Varje block bearbetas flera gånger, känd som rundor (som i boxning). För varje runda delas blocket i två lika delar, vänster och höger. Den högra delen förblir orörd medan den vänstra delen krypteras med en speciell funktion, kallad en rund funktion. Den runda funktionen tar två ingångar, nyckeln och den högra delen (den del som gick orörd). Resultatet från den runda funktionen är sedan ”added”till den vänstra delen med XOR.,
denna modell är känd som en Feistel chiffer, uppkallad efter sin uppfinnare Horst Feistel som arbetade med kryptering på IBM. Hans arbete ledde slutligen till utvecklingen av Data Encryption Standard (DES). 1977 blev DES den officiella krypteringsstandarden för USA och såg världsomspännande adoption. DES använder 16 rundor som arbetar på 64-bitars block. Problemet med DES är att NSA begränsade nyckelstorleken till 56-bitar. Även i 1977 detta var tillräckligt, i slutet av 1990-talet blev det möjligt för icke-statliga organisationer att bryta DES krypterade meddelanden.,
jargong BUSTER
exklusiv eller (XOR) – detta är en bit nivå logisk operation som tillämpas på 2 inmatningsbitar A och B. Den exklusiva eller returnerar sant eller falskt (1 eller 0) till frågan, ”A eller B, men inte, A och B”. Du kan tänka på det som”den ena eller den andra men inte båda”. Så, om A är 1 och B är 0 så är det ena eller det andra, så resultatet är 1 (sant). Samma resultat gäller för A är 0 och B är 1. Men om A är 0 och B är 0 är resultatet 0 (falskt), eftersom båda har samma värde. Falskt ges också för A är 1 och B är 1.,
men xors verkliga magi är att den är reversibel. Om en XOR B = C då b XOR C = A, och en XOR C = B. Detta är mycket viktigt för kryptering eftersom det innebär att data kan krypteras (där A är data) med hjälp av en nyckel (B) för att få krypterade data (C). Senare krypterade data kan dekrypteras av XOR det med nyckeln igen för att få originaldata. Anledningen till att XOR används i samband med komplicerade runda funktioner och bitskiftningsoperationer är att på egen hand kan xor brytas med frekvensanalys (på grund av den ständigt upprepade nyckeln).,
som svar på DES: s svagheter föreslogs en ny standard kallad Triple DES (3DES). Som i princip krypterade data tre gånger med DES, men med tre olika nycklar. 3DES erbjöd ett sätt att öka nyckelstorleken från 56-bitar till 168-bitar utan att behöva utforma en helt ny blockchifferalgoritm. På grund av vissa tekniska detaljer är den effektiva nyckeln 112 bitar, men om du hade en maskin som kunde spricka DES i 1 minut, skulle det ta samma maskin om 260,658 år att knäcka en Triple-DES-nyckel.,
medan DES hade tjänat sitt syfte i nästan 25 år, innebar den begränsade nyckellängden att det var dags för en annan krypteringsstandard. I 2001, US National Institute of Standards and Technology (NIST) publicerade Advanced Encryption Standard (AES). Det är inte ett Feistel-chiffer, utan snarare ett substitutions-permutationsnätverk. Den använder fortfarande block och rundor precis som DES, men under varje runda byts bitarna i blocket runt och resultatet kombineras med nyckeln med XOR.
AES använder 128, 192 eller 256 bitar nycklar och fungerar på block av 128-bitar., Antalet rundor som används beror på nyckelstorleken. Minsta är 10, som används för 128-bitars nycklar och maximalt är 14, vilket används för 256-bitars nycklar.
AES, Android och ARMv8-arkitekturen
AES är kärnan i krypteringsundersystemen i Android. För Android 5.0 och Android 6.0 gav Google användning av AES med minst en 128-bitars nyckel för enheter som stöder full diskkryptering., Med Android 7 har Google flyttat över till filbaserad kryptering (FBE) som gör att olika filer kan krypteras med olika nycklar samtidigt som filer kan dekrypteras oberoende. Det ser ut som FBE i Android 7 använder 256-bitars AES.
När ARM gjorde flytten från 32-bitars till 64-bitars definierade den en ny översyn av sin instruktionsuppsättning arkitektur som heter ARMv8. Förutom att definiera instruktionsuppsättningen för 64-bitars ARMCHIPS, lade den också till nya instruktioner för att implementera delar av AES-algoritmen i hårdvara. Under varje runda byts olika bitar runt och ersätts., Hur bitarna manipuleras är väldefinierad (och en del av standarden) så att AES-förlängningarna i ARMv8 tillåter att dessa delar av krypteringen sker i hårdvara snarare än programvara.
resultatet är blixtsnabb kryptering, vilket bör ha en försumbar inverkan på den totala systemprestandan. AOSP-implementeringen av filbaserad kryptering använder AES-256 och kräver en prestanda på minst 50MB/S.
kryptering med öppen nyckel och wrap-up
det mesta av det vi har diskuterat hittills är känt som symmetrisk kryptering., För att kryptera och dekryptera ett meddelande måste både avsändaren och mottagaren känna till den hemliga nyckeln. Det finns en form av kryptering som kallas asymmetrisk kryptering där det finns två nycklar, en för kryptering av meddelanden och en annan för dekryptering av dem. Krypteringsnyckeln kan fritt publiceras för alla som vill skicka mottagaren ett meddelande, men dekrypteringsnyckeln måste förbli hemlig, men behöver bara vara känd av mottagaren. Det betyder att det finns en offentlig nyckel och en privat nyckel. Detta system är grunden för hur säkerhet på Internet fungerar, hur https:// protokollet fungerar., Men det är en historia för en annan dag!
När jag stänger vill jag lägga till en varning. Kryptering är ett komplext ämne och det finns mycket mer att kryptera än jag har skrivit här.