Krypton (långt och tungt)
"...att de kan knäcka krypton är lite mysko. jag tror att RSA säkert har ett sätt på vilket det kan knäckas, och att NSA inte är så långt från att ha tagit reda på det - idag. se bara på DES och dess gelikar. NSA visste att sånna krypton var knäckbara 15 år innan det blev knäckt, så de hjälpte ibm att bygga des, så att det skulle stå emot sådana attacker... vad vet inte NSA idag om RSA i så fall?"
RSA kan knäckas och har knäckts. Inte av NSA, utan av knasiga entusiaster som har harvat igenom problemet med ett krypterat meddelande och en publik nyckel.
RSA och DES har totalt skilda uppbyggnader. DES är skapat för att kryptera information som lagras, medan RSA skapades för att kryptera information som överförs. Av den anledningen så har man byggt DES och RSA så totalt olika. DES bygger på en databas av nycklar (som NSA har tillgång till, för övrigt - det är lättare att knäcka ett meddelande om man har tillgång till nycklarna), medan RSA bygger på nycklar som skapas genom att kombinera två jefligt stora primtal.
RSAs krypto bygger på att man tar två jefligt stora primtal och multiplicerar dem. På så sätt får man den publika nyckeln som alla har tillgång till. Själv har man en privat nyckel, som tas fram från de två stora primtalen. När man krypterar något så slår man upp mottagarens publika nyckel och krypterar meddelandet med den. Mottagaren använder sedan sin privata nyckel för att dekryptera meddelandet. Endast den nyckeln kan dekryptera meddelandet. Vill man vara extra säker så kan avsändaren dessutom kryptera det krypterade meddelandet en gång till med sin privata nyckel. Den enda nyckel som kan göra det dubbelt krypterade meddelandet enkelt krypterat är avsändarens publika nyckel. På så sätt vet mottagaren inte bara att meddelandet är riktat till honom, utan även att endast avsändaren kan ha skickat det.
"Men i så fall är det ju snorlätt" säger den tänkande hackern. "Eftersom primtal är tal som bara kan delas med sig själva och ett så blir produkten av två primtal enbart delbart med ett och endera av de två primtalen. Det enda jag behöver göra är att dela upp den publika nyckeln i två primtal, så kan jag räkna ut den privata nyckeln."
Skitsimpelt. Problemet är att det tar tid. En 56-bitars RSA-nyckel tar idag 37 dagar för några miljoner samverkande datorer att faktorisera till sina två primtal. Standardkrypto för affärskorrespondens är idag 128 bitar. Det är 72 bitar mer. Varje extra bit fördubblar knäckningstiden. Det innebär att med lika många datorer så skulle det idag ta 478 377 987 313 283 704 057 år (närmare 500 miljarder miljarder år) att knäcka ett 128-bitarskrypto. Visserligen kommer Moores lag att halvera tiden var artonde månad, men det innebär trots det att vi kommer att få vänta i 72 år innan normal affärskorrespondens knäcks lika snabbt som dagens 56-bitarskrypto. Dessutom kontras Moores lag enkelt genom att lägga på en bit var artonde månad, och dessutom är RSA i sina värsta former redan 512-bitars.
Det finns två möjliga bakdörrar till RSA. Den ena är en kvantdator som bygger på qbits. En qbit är en kvantbit som kan vara 1 eller 0 samtidigt. Det gör att du kan bygga en kvantdator som i en enda räkneoperation kan utvärdera en bit RSA-nyckel per qbit. En kvantdator med 56 qbits kan alltså knäcka en 56-bitarsnyckel i en räkneoperation, och den gör att ett 128-bitarskrypto bara motsvarar ett 72-bitarskrypto. 56 av dem kan lösas av en annan kvantdator med 56 qbits. Då är det bara 16 bitar krypto kvar, och då är RSA så svagt att man nästan kan knäcka det med papper och penna. <img src="/images/icons/wink.gif" border=0 width=15 height=15>
Den andra möjliga bakdörren är att man kommer på ett sätt att faktorisera extremt stora tal oerhört enkelt. För närvarande finns ingen sådan metod, och frågan är om det ens är möjligt. Om det är möjligt så kommer RSA att rasa i samma ögonblick.
Båda bakdörrarna är dock hårt beroende av tekniska utvecklingar som ännu inte har gjorts. De har inte byggts in i systemet med någon slags förhandskoll eller beställning, eftersom RSA är en metod och en algoritm. DES å andra sidan är en metod, en algoritm och en databas med nycklar. Databasen är så att säga bakdörren till DES, och det är därför som DES är knäckbart av den som har tillgång till databasen, vilket NSA har. RSA å andra sidan har ingen databas utom den över publika nycklar, och därför måste man räkna fram primtalen och de privata nycklarna från de publika.
Slutligen så finns det en form av krypto som är totalt oknäckbart, det så kallade kvantkryptot. Än så länge är det bara i experimentell form och kan enbart användas för direkt kommunikation mellan avsändare och mottagare, men det är bevisat praktiskt användbart.
Kvantkrypto bygger på att man för över information optiskt med fotoner. Varje foton kan stå för 1 eller 0, och kodas genom att man polariserar ljuset. Det finns inte heller någon nyckel, utan den skapas inför varje överföring genom slump (vill man vara extra säker kan man kryptera meddelandet konventionellt först).
Så här går det till: när man skickar en foton så polariseras den till att stå horisontellt, lodrätt eller snett: --, |, \ eller / helt enkelt. -- och \ får stå för 0, och | och / får stå för 1. Mottagaren har ett filter som antingen släpper igenom horisontellt/vertikalt (dvs -- eller |, eller om man så vill +-format) eller snett (dvs dvs \ eller /, eller x-format). Endast ett av filtrena används, beroende på vad nyckeln säger. Om en bit i nyckeln är 0 så används +-filtret, och om biten är 1 så används x-filtret.
Finessen med detta kommer från hur polariserat ljus fungerar. Skickar du lodrätt polariserat ljus mot en horisontell spalt (dvs | mot --) så stoppas ljuset helt. Skickar du vågrätt polariserat ljus mot samma spalt (dvs -- mot --) så släpps det igenom. Men vad händer om man skickar snett polariserat ljus mot en vågrät spalt, dvs \ mot --? Jo, följande: det är 50% chans att ljuset släpps igenom. Inte nog med det, om ljuset släpps igenom så är det inte längre snett polariserat, utan horisontellt, dvs \ har förvandlats till --.
Filtren fungerar på liknande sätt. Skickar du lodrätt polariserat ljus mot ett lodrätt/vågrätt filter (dvs | mot +) så släpps ljuset igenom. Men vad händer om du skickar snett polariserat ljus mot ett lodrätt/vågrätt filter (dvs \ mot +)? Jo, ljuset släpps igenom, men det är 50% chans att det förvandlas till -- och 50% chans att det förvandlas till |. Kort sagt, har man fel filter så är det 50% chans att en nolla förblir en nolla och 50% chans att den blir en etta.
Nyckeln skapas på ett rätt lurigt sätt. Avsändaren skapar en slumpvis serie om ettor och nollor och skickar över den, dessutom med slumpvis polarisering. Mottagaren chansar med sitt filter på antingen + eller x och ser vad han tar emot. Avsändaren kan alltså skicka en 1, medan mottagaren kan komma att ta emot en 1 eller 0. Avsändaren tar sedan kontakt med mottagaren på konventionellt sätt och talar om huruvida det var snedställd eller vågrätt/lodrätt polarisering (dvs + eller x) som användes. Han talar dock inte om vilka bittar som skickades, utan enbart vilket filter. Mottagaren tittar på hur han har chansat, och talar om vilka filter som var rätt och vilka som var fel. Ingen av dem talar om den faktiskta strängen av ettor och nollor som överfördes, utan enbart om filterinställningarna.
Avsändaren tar nu sin sträng med ettor och nollor och stryker alla ettor eller nollor där mottagaren gissade fel på filter. Mottagaren gör likadant. Vad de nu har är en serie på ettor och nollor som är likadan, och kan användas som nyckel för överföringen. Dessutom är det bara de två som vet hur den serien ser ut.
Vad händer om de blir avlyssnade? Till att börja med, enda sättet att avlyssna är att lyssnaren sätter in en egen mottagare och sändare mellan avsändare och mottagare. Eftersom varje bit bara skickas över med en foton så blir det ingen spillenergi som kan avlyssnas. Man måste fånga upp varje foton och skicka en ny foton vidare till mottagaren (annars blir mottagaren misstänksam).
I och med att varje bit sänds över som en foton, polariserad antingen som \, |, / eller --, så måste avlyssnaren också använda ett filter för att ta reda på polariseringen. Men som vi såg ovan så kommer lyssnaren att inte bara avläsa fel då och då, utan även förvanska meddelandet om han väljer fel filter. Det innebär att om fel filter används så vet både avsändare och mottagare att meddelandet är avlyssnat, i och med att meddelandet blir förvrängt. Men det innebär en annan sak också: när avsändare och mottagare skickar ettor och nollor för att skapa en kryptonyckel så kan lyssnaren aldrig vara säker på att han har uppfattat rätt ettor och nollor. Därmed kan lyssnaren inte heller vara säker på att denne skickar över rätt ettor och nollor till mottagaren. Det gör att den mottagna nyckeln hos mottagaren blir fel, vilket gör att mottagaren snabbt kan se att meddelandet är oläsligt och avbryta sändningen. Mottagaren kan alltså direkt se om någon avlyssnar.
Detta gör att om inte fysiken hos ljus och kvantmekanik är totalt käpprätt uppåt väggarna fel så är det här kvantkryptot totalt oknäckbart. Inte bara "praktiskt taget oknäckbart" som RSA eller DES, utan faktiskt, fysiskt totalt oknäckbart. Det fysiska genombrott som krävs för att göra kvantkryptot knäckbart är knappt möjligt att föreställa sig - antigravitation och överljusfart är liksom blöja i jämförelse. Det närmaste fysiska genombrott som jag kan komma på är nog relativitetsteorin - det krävs något i stil med en helt ny fysik som mer eller mindre kastar den gamla i soptunnan.