Nada

Föreläsning 7: Tolka HTML, kryptering, datajuridik

Att tolka HTML-filer

Java är det mest webbanpassade programspråket. Inte nog med att all dokumentation om språket och biblioteksklasserna finns på Suns webbplats, följande gäller också.

Kryptering

Teoretisk datalogi lever ibland sitt eget liv i avskildhet från databranschen, men ett lysande undantag är kryptering. Det är något som utvecklats av teoretikerna men som är helt avgörande för branschens kommersiella sida. På Nada är vi stolta över att ha några världskändisar på kryptering: professorn Johan Håstad och ett gäng doktorander (numera doktorer) som knäckte chiffren i Simon Singhs Kodboken (dom heter Staffan Ulfberg, Gunnar Andersson och Lars Ivansson).

Lösenordskryptering

Sedan urminnes tider har man känt till metoder att med en hemlig nyckel kryptera ett meddelande så att det bara kan avkrypteras med samma nyckel. Om meddelandet M och nyckeln K skrivs binärt är krypteringen enkel - i varje position summeras bitarna modulo två, dvs 1+1=0, och det ger den krypterade bitföljden C. Nyckeln upprepas så att den räcker meddelandet ut. Avkryptering går till på exakt samma sätt.
	M = 1 1 0 1 1 0 0 0 0 1 0 1...
       +K = 1 0 1 1 0 1 1 1 0 1 1 0...
        ------------------------------
	C = 0 1 1 0 1 1 1 1 0 0 1 1...
       +K = 1 0 1 1 0 1 1 1 0 1 1 0...
        ------------------------------
	M = 1 1 0 1 1 0 0 0 0 1 0 1...
Krypteringen går blixtsnabbt men om man gör det så här okomplicerat finns det metoder att knäcka kryptot med hjälp av statistik på bokstavsfrekvenser och andra ännu listigare angreppssätt. Om man kombinerar metoden med upprepade blandningsoperationer blir den tillräckligt svårknäckt och en sådan standardmetod är DES, som är amerikanska försvarsmaktens standard.
Den enda nackdelen är att lösenordet måste distribueras till alla som ska vara invigda och det kan inte göras över en avlyssnad kanal utan måste ske med kurir. Det trodde man i alla fall innan Diffie och Hellman 1973 kom på hur det kunde gå till.

Vi tänker oss att Alice vill skicka ett meddelande til Bob. Hon krypterar det med sin hemliga nyckel (som inte Bob känner till) och skickar det med e-post till Bob. På vägen tjuvläser Eve det men hon fattar förstås ingenting. Det gör inte Bob heller, men han krypterar det en gång till med sin hemliga nyckel och skickar tillbaka det till Alice. Alice avkrypterar med sin hemliga nyckel och skickar tillbaka till Bob. När nu Bob avkrypterar med sin nyckel blir meddelandet läsbart för honom utan att Eve kunnat snoka fram det. Detta förutsätter förstås att krypteringsmetoden är sådan att det inte spelar någon roll i vilken ordning A och B krypterar.

Public key - secret key

Diffie kom ett par år senare på en ännu effektivare metod, som gör att meddelandena inte behöver gå tre gånger fram och tillbaka. Den kräver att alla människor har två nycklar, en hemlig och en offentlig. Krypteringsmetoden är sådan att det som krypteras med den ena nyckeln bara kan avkrypteras med den andra.
           ___               ___
    A---->| p |------------>| s |---->B
       M  |__B|      C      |__B|  M 
Alice slår upp Bob i public-key-katalogen och krypterar sitt meddelande med p_B. Den enda i världen som kan avkryptera det är Bob, för han känner till s_B. Nu kan inte Eve tjuvlyssna men hon kan sabotera på ett annat sätt. Eve kan skicka ett med p_B krypterat meddelande till Bob som ser ut så här.
Bry dej inte om vad jag skrev nyss. Alice
För att gardera sej mot detta krypterar Alice först med sin hemliga nyckel. Det krypterade meddelandet förser hon med överskriften "Hemligt meddelande från Alice" och krypterar en gång till med Bobs offentliga nyckel.
           ___     ___               ___     ___
    A---->| s |---| p |------------>| s |---| p |---->B
       M  |__A|   |__B|      C      |__B|   |__A|  M 
När Bob avkrypterar med sin hemliga nyckel ser han att det är från Alice, slår upp henne i public-key-katalogen, avkrypterar och är nu säker på att det verkligen kommer från Alice.

PGP och Kerberos

Eftersom asymmetrisk kryptering är tusen gånger långsammare än lösenordskryptering är det effektivaste att använda den långsamma krypteringen för att utbyta lösenordet, ett lösenord som bara gäller under någon timme. Ett utvecklat system för detta är PGP (pretty good privacy) med upphovsmannen Phil Zimmermann, en hjälte i datavärlden. Härmed uppmanas alla att läsa denna trevliga beskrivning av PGP och att skaffa sej PGP-nycklar.

Vem skrev vad när? Meddelandehashning och tidsstämpel.

När Alice skickar ett krypterat meddelande till Bob kan inte den elaka Eve tjuvlyssna, men hon kan sabba på andra sätt. Om Alice och Bob använder krypteringsprogrammet PGP avslöjas all förvanskning eftersom meddelandehashning används. En algoritm räknar fram en hashkod för hela texten och denna hashkod krypteras med Alices hemliga nyckel och får följa med meddelandet (som ju krypteras med symmetrisk engångsnyckel). Bob avkrypterar meddelande och hashkod och kollar att hashningsalgoritmen ger just denna hashkod. Därmed vet han både att Alice skrivit meddelandet och att det är oförvanskat. Algoritmen måste vara envägs, alltså sådan att man, givet en hashkod, inte kan konstruera ett meddelande som har just den hashkoden. Nu kan inte heller Alice backa ur eventuella anbud som hon gjort - hon är juridiskt bunden till meddelandet.

För att bevisa att meddelandet skickats vid viss tidpunkt kan Alice utnyttja en tidsstämpelserver. En sådan lägger till tiden först i meddelandet, krypterar med sin secret key och skickar till Bob, som ju känner till serverns public key.

Mobilt internet

WAP-telefoner, handdatorer och allt fler apparater ansluts till Internet. Kylskåp, dammsugare och dasspappershållare kommer att ha radioförbindelse (Bluetooth) med nätet. Eftersom minneskapaciteten är begränsad får man använda en miniversion av javabiblioteket, J2ME (Java2 Micro Edition) och eftersom skärmen är minimal visar en WAP-telefon inte HTML-sidor utan WML-kort. Webservern skickar en bunt kort till en gateway som gör om WML-taggarna till binärkod för att spara utrymme. Slutligen skickas kortbunten via basstation till WAP-luren.
Problemet är att kryptering inte fungerar så bra med detta system. Från gateway till webserver sköter SSL krypteringen och mellan telefon och gateway finns ett liknande krypteringsprotokoll WTLS. Men i själva gatewayen måste det bli klartext ett ögonblick och där finns den svaga punkten. En bank kan ha en egen gateway på en skyddad plats, men tills vidare tycks dom inte vara så intresserade av det.

Datajuridik

Personuppgiftslagen är ganska trögläst men det är absolut nödvändigt att känna till vad den säger. PUL gäller inte bara personregister utan även e-post, löpande text på papper och framför allt webbsidor. Varje uppgift som identifierar en levande person (namn, smeknamn, foto, beskrivning) är en personuppgift. All befattning med personuppgifter kräver enligt PUL samtycke om den inte görs i journalistisk eller konstnärlig verksamhet eller rent privat. För att det ska räknas som privat ska uppgifterna bara vara åtkomliga för en själv och familjen, som fotoalbum, telefonbok och dagbok. Ringa brott mot bestämmelsen är inte straffbart men känsliga uppgifter kräver alltid samtycke. Uppgifter om hälsa, religion, politisk åsikt och medlemskap i fackförening är alltid känsliga. Personnummer får användas endast då det är befogat.

Den som lägger upp sökbara personuppgifter måste anmäla detta till Datainspektionen eller till företagets eget personuppgiftsombud. Varje person har rätt att en gång om året på begäran få upplysning om allt som står om henne i företagets eller myndighetens register.


Sidansvarig: <erikf@nada.kth.se>
Senast ändrad 5 januari 2005
Tekniskt stöd: <webmaster@nada.kth.se>