lördag 2 oktober 2010

Skicka krypterade filer för ickeavancerade användare

Jag använder sedan ett par år krypterad epost. Jättebra och ganska enkelt, men en stor sak är fel: att det är få som använder det. Nu har jag ibland behov av att skicka saker krypterat med användare som ibland inte är särskilt datorkunniga eller inte har tillräckliga rättigheter att bestämma över sin egen dator.

När en sådan användare ska skicka något hemligt till mig kan jag be personen att komprimera filen med 7-zip lösenordsskyddat och välja något lösenord som meddelas mig på något annat sätt. Problemet är att användaren då behöver komma över tröskeln att installera och/eller använda 7zip. Samt något annat jobbigt och potentiellt svårt: att meddela lösenordet. Och inte minst, att komma på ett tillräckligt varierat lösenord som dessutom inte missuppfattas över en raspig mobilanslutning.

En lösning skulle vara att jag sätter upp en säker (https) sida för filuppladdning på min webserver som i sin tur får kryptera och maila mig, med pgp och min publika nyckel. Nackdelen är att https är tungt för servern, samt att servern får jobba hårt för att kryptera ytterligare en gång. Fördelen är att användaren inte behöver veta något annat än adressen till min sida.

En väldigt bra ide är att låta användaren stå för datorkraften själv, genom att låta krypteringen ske hos användaren. Den krypterade filen kan sedan skickas över nätet utan några speciella åtgärder. Som med andra lösningar löser det inte problemet med autentisering (att jag kan vara säker på vem som skickat det) på samma sätt som "riktig" krypterad epost gör.

Såhär skulle det kunna se ut:
  • jag sätter upp en sida som användaren går in på, https-skyddad för att hindra man in the middle-attack på java-scripten. Typ "https://www.pauldreik.se/laddauppfiler.php" eller något sådant. Här finns javascripen inbäddade som senare sköter krypteringen. Den lilla trafik som måste krypteras är själva htmlkoden för sidan samt scripten, enbart några kb.
  • jag sätter även upp en normal (http) sida med ett php-script eller vad som helst, t ex "http://www.pauldreik.se/mottagare.php" som accepterar indata i form av uppladdade filer. användaren ser ej denna, så denna kan vara vad som helst.
  • användaren väljer en fil ifrån en vanlig htmlform, som de flesta användare använt väldigt många andra ställen, t ex när man laddar upp en bilaga till webmail. Filen läses sedan lokalt på användarens dator, krypteras lokalt med javascript och min publika nyckel, och postas sedan till "http://www.pauldreik.se/mottagare.php" i krypterad form över vanlig http. 
  • på webservern skickas den mottagna filen i ett mail till mig.  Eftersom bara jag har den privata nyckeln är det bara jag som kan läsa filen. Kringdetaljer som datum och ev namn och så som användaren skrivit in samt avsändande ipadress följer med. Dessa går naturligtvis att mixtra med på samma sätt som vem som helst kan skicka mig en fil och hävda att de heter något annat.Detta problem löses genom signering, som finns stöd för i "riktig" krypterad epost.
På detta sätt behöver användaren inte ha några rättigheter, inte installera något, och kan skicka mig filer utan yttre insyn. Jag behöver inte ha en kraftig server eftersom den inte gör någon kryptering.

Byggstenar kommer från hanewin.net (se länk i texten ovan), pgp och standard html samt javascript.

Inga kommentarer: