"Kryptering" av ASP-kod

(2002-01-28)

Microsoft har ett litet program för att "skydda" skriptkod man har skrivit, som de beskriver så här:

"Ända tills nu har en av bristerna med att använda skript varit att de varken skyddar ens kod eller garanterar att koden når användarna intakt. Smarta lösningar och noggrannt konstruerade skript har alltid varit fullt synliga eftersom de lagrades som text. På grund av det har alla användare kunnat läsa skriptkoden och kunnat ta den och ändra på den och göra den till sin egen." (Min översättning.)

Men Microsofts lilla program fixar naturligtvis det här problemet, tack och lov. Eller? Nja, Microsoft har även lagt till följande lilla notering: "Note that this encoding only prevents casual viewing of your code; it will not prevent the determined hacker from seeing what you've done and how."

På ren svenska innebär det att koden bara är skyddad från de som inte vill se den. Så... praktiskt? Exakt vad fyller det egentligen då för funktion? Som med alla såna här låtsasskydd ger det ju tyvärr falsk säkerhet för den som använder det. Man tycker att det ser skyddat ut och vågar därför skriva hemliga saker som man aldrig skulle skrivit annars. Och så är det helt oskyddat...

Det är farligt att det förekommer, för det är inte lätt för medelsvensson att känna igen och upptäcka bluffprodukter, i synnerhet inte när de kommer från ett så välkänt företag som Microsoft.

Men vad är det då som gör den här kodningen så osäker? Ja, först är det det faktum att det är tekniskt omöjligt att göra den säker över huvud taget. Skript är per definition i klartext och är de kodade när de kommer till ens dator måste datorn veta hur det ska avkodas, och det går därför alltid att titta hur datorn gör. I värsta fall, vill säga. Det här är mycket enklare än så. Till och med enklare än korsorden i Hemmets Veckotidning.

Eftersom vi har Microsofts program för att kryptera skript (som får laddas ner gratis från Microsofts hemsida) så kan vi ju kryptera vilket skript som helst och se hur det ser ut krypterat. Detta kallas "chosen-plaintext attack". Vi börjar för enkelhetens skull med att skriva ett skript som ser ut så här: aaaaaaaaaaaaaaaa och så krypterar vi det och får till svar: b)zbzbbzbz)bzb)b. Av detta ser vi att bokstaven a kan representeras av tre olika tecken ("b", ")" och "z") enligt något visst mönster. För att se mönstret så provar vi att kryptera ännu fler a:n i rad, säg en 500 stycken. Om vi gör det så ser vi att mönstret upprepar sig efter vart 64:e tecken. Därmed har vi så gott som knäckt algoritmen och det enda som återstår är att skicka in en rad med b:n, c:n, d:n och så vidare för att se vilka tre tecken som varje bokstav motsvaras av.

Jobbigt och ansträngande? Ja, kan vara (om man inte kan programmera och sätter datorn på att göra det). Men svårt? Nej, knappast.

Microsofts beskrivning:
http://msdn.microsoft.com/library/default.asp?url=/library/...

Program för att avkoda:
http://www.virtualconspiracy.com/index.php?page=scrdec/intro