1 Laboration i säker e-post
Table of Contents
1 Laboration i säker e-post...1
1.1 Inledning...1
Tillvägagångssätt och förklaringar...2
PGP algoritmen...7
Digitalt certifikat...8
Hjälp för Microsofts e-mailprogram/appar...9
1.2 Labbuppgift...10
Krypteringsberäkningar...10
Betygsnivåer. VG: klara alla frågor som ställts tillräckligt bra. G: Fråga 1.2e felaktig eller ej behandlad.
1.1 Inledning
Vi ska i denna laboration lära oss att hantera kryptering och digitala signaturer.
Du måste använda en säker e-postklient. Det finns en lista på säkra e-mailklienter här: http://www.bretschneidernet.de/tips/secmua.html.
PGP/MIME är den ursprungliga standarden för säker e-post. Den öppnades upp och blev standardiserad och under namnet OpenPGP: http://www.openpgp.org/.
En fri variant av OpenPGP är GNU Privacy Guard (GnuPG eller GPG)
https://www.gnupg.org/. I Windows är det lättast att använda “GnuPG For Windows” som finns här: http://www.gpg4win.org. OpenPGP och GnuPG är kompatibla med varandra. Mozilla Thunderbird: https://www.mozilla.org/en-US/thunderbird/ och OpenPGP/GnuPG via ett AddOn som heter EnigMail: http://www.enigmail.net/home/index.php är ett bra, gratis och väldokumenterat val som som jag kan rekommendera i labben.
Observera att skolan inte stödjer annat än webbmail så du måste använda egna värden för mail-server, t.ex. de som hör till ditt Internetabonnemang. I praktiken bör du använda ett eget mailkonto någonstans, tex. Gmail. Sök på tex. ”access gmail via pop” för att ta reda på hur du konfigurerar din emailklient för detta och andra fria emailtjänster. Exempel:
http://lifehacker.com/111166/how-to-use-gmail-as-your-smtp-server
Tillvägagångssätt och förklaringar
Jag redovisar nedan hur jag gått tillväga i denna laboration för att ställa in The Bat! att skicka säker e-post med OpenPGP. Notera att du ska använda min publika GPG nyckel i labben. Under menyn i Verktyg|Tools > Meddelande Säkerhet|Message Security eller Verktyg|Tools > OpenPGP finns tex. de nödvändiga inställningarna som behövs för säker e-post i TheBat! Jag ställde in Internal (RFC-1991) som PGP implementation. Det finns nyare versioner som bör användas i skarpt läge. TheBat PGP Guide:
http://users.du.se/~hjo/cs/common/doc/thebat_pgpguide.htm rekommenderar GnuPG (GPG) eller PGP 5,6,7,8.
Beroende på vad du väljer för lösning så kommer det naturligtvis att se annorlunda ut för dig! Om man t.ex. vill använda ett externt program som GnuPG kan man ladda hem programmet från http://www.gnupg.org/ och läsa instruktionerna i Doc-katalogen noggrant för att få det att fungera med sin mail-klient. Framförallt Introduction-rubriken i README.txt.
Enklare alternativ som redan nämnts är GnuPG For Windows, Mozilla Thunderbird och OpenGPG/GnuPG via AddOn:et EnigMail eller tex. webbmail via Gmail och Mailvelope som också använder OpenGPG/GnuPG Addon/Extension.
Följande beskrivning är alltså med den interna (RFC-1991) vilket är enklare att få igång iom. att det är inbyggt i TheBat.
Jag genererade en privat nyckel jag använder för dekryptering av mottagen krypterad e-post samt sändning av signerad e-post ifrån mig. Och en publik nyckel som kan exporteras och sändas till de kontakter jag har som vill sända krypterad e-post till mig samt verifiera e-post jag signerat och sänt till dem.
Kom ihåg var du spar den publika nyckelfilen så att du kan sända den till olika mottagare senare. Den privata bör förvaras så hemligt som möjligt och alltså ej sändas någonstans. Om de följande bilderna som visas inte ser likadana ut för dig kan det bero på att du ställt in e-postklienten att sända meddelanden som RTF(Rich Text Format) eller HTML etc. Jag har valt att sända meddelanden som ”plain-text” i detta exempel.
Bild 1.
Mottagaren ([email protected]) importerar den publika nyckeln till sin nyckelhanterare. Här ser man att han har sin egen privata och publika nyckel samt en mottagen publik nyckel från [email protected] i sin nyckelring.
Bild 2.
Bild 3.
Meddelandet som min vän Hans på pixelin.net ser det i bild 4.
Efter han klickat på verifiera OpenPGP signatur (uppe till höger i bild 4) och angett sitt lösenord/pass phrase så kan han få validering på att det verkligen är [email protected] som sänt meddelandet och att innehållet inte är förändrat på något sätt via den publika nyckeln jag sände tidigare.
Bild 5.
Vad som hände här är följande, vid sändningen (generering av digital signatur):
Bild 6.
message
hash algorithm hash encryption
Private key of signer
encrypted hash message
Vid mottagningen (kontroll av digital signatur):
Bild 7.
Det tidigare meddelandet kunde vem som helst läsa iom. att det var i klartext.
Här har jag ([email protected]) mottagit ett krypterat meddelande i bild 8 som min vän Hans på pixelin.net sänt med den publika nyckel han fick från mig ([email protected]) tidigare.
Bild 8.
Efter jag klickat på hänglåset (uppe till höger i bild 8) och angett min OpenPGP Pass Phrase kan jag dekryptera och läsa meddelandet med min privata nyckel (endast denna nyckel kan dekryptera meddelandet). Funktionen är alltså i stort sett densamma som för signerat
meddelande fast (omvänt ang. nycklarna) här krypteras meddelandet och även bifogade filer istället för att sändas i klartext.
encrypted
hash
message
Signed message
hash algorithm
hash
decryption
Public key
of signer
hash
PGP algoritmen
PGP sänder faktiskt en symmetrisk nyckel med meddelandet för att snabba upp
dekrypteringen av stora meddelanden eftersom detta kan gå väldigt långsamt med publika dekrypteringsnycklar (assymetrisk kryptering). Den symmetriska nyckeln är i detta fall slumpmässigt genererad endast för detta meddelande och krypterad med den publika nyckeln som sändaren fått från mottagaren.
När mottagaren får meddelandet och den slumpmässiga symmetriska nyckeln så dekrypteras först den slumpmässiga privata nyckeln med mottagarens egen privata nyckel och sedan dekrypteras meddelandet med sändarens slumpmässiga symmetriska nyckel. Mer om PGP kan man läsa om här: http://users.du.se/~hjo/cs/common/doc/kryptera.eposten.med.pgp.pdf TheBat! använder som ni sett en efterföljare till PGP – OpenPGP. För hantering av publika och privata nycklar används RSA algoritmen (assymetrisk kryptering) och IDEA chiffret för symmetrisk kryptering.
Vad som händer vid sändningen av krypterat meddelande är följande (se bild 10). Obs! Förenklat (om man även signerar meddelandet så sker denna process före krypteringen):
Bild 10.
Vad som händer vid mottagningen av krypterat meddelande är följande (se bild 11). Obs! Förenklat (om meddelandet även är signerat sker kontrollen av signaturen efter
dekrypteringen):
Bild 11.
Digitalt certifikat
Eventuellt kan man skaffa ett digitalt ID (certifikat) från någon CA (Certificate Authority), med detta menas att CA:n går i god för att du är den du påstår dig vara. I en senare labb ska vi lära oss hur man t.ex. kan utfärda ett sådant certifikat till sig själv med: http://openssl.org/. PGP kräver inget digitalt id/certifikat eftersom det förlitar sig på ”web of trusts”.
Med ett digitalt ID (certifikat) kan man kryptera in/utgående meddelanden och bifogade filer, signera och verifiera meddelanden eller använda båda teknikerna tillsammans. Precis som jag visat med TheBat!
Nedan i bild 12 ifrån en äldre Outlook Express installation finns avancerade inställningar för certifikat där jag kan ställa in nyckelängd och lite annat. Det framgår dock inte vilken
krypteringsalgoritm eller hashfunktion som kommer att användas.
Revocation Checking innebär att Outlook Express kontrollerar om ett certifikat gått ut eller är ogiltiga av annan orsak.
message Public key of recipient
message
Encrypted
message
encryptionIDEA key
IDEA key
encryptionmessage
Encrypted message
decryption
Private
key
of recipient
IDEA key
IDEA key
Bild 12.
Hjälp om hur man ordnar S/MIME support i Microsoft Outlook * finns här:
http://www.marknoble.com/tutorial/smime/smime.aspx och här är en guide för Mac OS X: http://www.lopnet.se/smime.htm
Hjälp för Microsofts e-mailprogram/appar
Microsoft har instruktioner för att konfigurera och felsöka deras e-mailprogram på sina supportsidor. Det bruka följa med en enklare e-mailklient tillsammans med operativsystemet. Sedan har vi också den mer avancerad Outlook-klienten som ingår i Office-paketet.
Exempel:
1.2 Labbuppgift
Innan du börjar med uppgiften verifiera att din mail-klient kan sända och ta emot vanlig epost. a) Installera och konfigurera upp din mail-klient för att kunna motta och sända säker e-post. Dvs. välj kryptering/signeringsmetod och generera nycklar.
Prova gärna mot någon kompis eller mellan dina egna mail-konton innan du sänder till mig så du behärskar tekniken!
Använd min publika nyckel som finns här: http://users.du.se/~hjo/cs/ik1080/lab/lab1_saker_e-post/ i filen: GPG_pubkey_hjo.du.asc och sänd ett krypterat e-mail till mig. När du fått OK i svar så bifoga detta i din rapport.
b) En sak man bör komma ihåg är att kryptering och INTE täcker mail header. Vad innebär detta?
c) Vad är egentligen MIME för något och vilken skillnad är det på S/MIME vs. PGP (OpenPGP/GPG)/MIME?
Krypteringsberäkningar
Se föreläsningsmaterialet för användning av algoritmen. Kalkylatorn i Windows har en modulo-knapp som kan användas vid beräkningar. Du kan behöva ha kalkylatorn i
programmeringsläge eller vetenskapsläge. Moduloknappen kan nås till vänster om knappen A i bild 13 och ovanför division i bild 14. Mer om modulo här:
http://en.wikipedia.org/wiki/Modulo_operation
Du kan även använda en formel i ett kalkylprogram för att lösa uppgiften.
Tänk på att det är irrelevant i vilken ordning eller med vilken nyckel kryptering och dekryptering sker. Samma nyckel kan dock inte kryptera och dekryptera i nyckelparet. Meddelanden som t.ex. krypterats med en publik nyckel kan endast dekrypteras med den matchande privata nyckeln och vice versa.
Lite hjälp kan finnas på: http://users.du.se/~hjo/cs/common/rsa/ och en webbläsarbaserad (Java) demonstration finns här: http://users.du.se/~hjo/cs/common/div/rsakryptering.zip d) Utför kryptering och dekryptering med RSA algoritmen för: p = 7, q = 11, e = 17 och ”plaintext” M = 8. Visa dina beräkningar.
e) I ett publikt nyckelsystem med RSA algoritmen så lyckas du komma över ”ciphertext” C = 10 som sänts till en användare vars publika nyckel är e = 5 och n = 35. Vad är ”plaintext” M? Om möjligt bevisa och visa dina beräkningar.
RSA formula help: The public key is (e, n) and the private key is (d, n). The public encrypt function is:
encrypt(m) = m^e mod n where m is ”plain-text” and m < n. The private decrypt functionen is:
decrypt(c) = c^d mod n where c is ”cipher text”.
RSA crypto referens med ytterligare exempelberäkningar finns här: https://en.wikipedia.org/wiki/RSA_(cryptosystem)
När du fått OK från mig så kan du lägga in svaren på fronter i ett dokument.