29.07.2013 Views

Master of Science thesis Fighting Spam

Master of Science thesis Fighting Spam

Master of Science thesis Fighting Spam

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

protokollen beskrevet i afsnit 4.4 kan benyttes. I afsnit 7.3.9 vises det, hvordan<br />

protokollen benyttes i praksis i <strong>Spam</strong>Cash-systemet til udstedelse af e-mønter.<br />

7.1.1.c Javamail<br />

I systemet er det i mange tilfælde nødvendigt at modificere emails, når disse afsendes<br />

eller modtages via proxyprogrammet. Dette er f.eks. tilfældet, når der skal vedhæftes eller<br />

opsnappes mønter på emails. Derfor har vi valgt at benytte Sun s javamail 7 , som bl.a.<br />

gør det nemt at arbejde med emails i MIME-formatet. I <strong>Spam</strong>Cash-systemet benyttes<br />

Javamail primært til at påhæfte og fjerne mønter på emails i MIME-format. Derudover er<br />

det simpelt at afsende emails vha. javamail, hvilket udnyttes i forbindelse med generering<br />

og afsendelse af notifikationsmails.<br />

7.1.1.d OpenSSL<br />

Registreringsserveren (RS) står for udstedelse af certifikater, som beskrevet i afsnit<br />

6.2.1.b. I <strong>Spam</strong>Cash-systemet benytter vi OpenSSL 8 til at opnå dette. OpenSSL er en<br />

kommandobaseret open source certifikatautoritet. Hvordan OpenSSL installeres og<br />

konfigureres er beskrevet i installationsvejledningen i Appendiks A. Da OpenSSL<br />

benyttes via en normal kommandoprompt, og altså ikke umiddelbart kan styres via et<br />

Java-interface, foregår al kommunikation via systemkald. Dette gøres i Java vha. klassen<br />

Runtime. Ønskes f.eks. system-kommandoen angivet i strengen command eksekveret via et<br />

javaprogram, kan dette gøres således:<br />

Runtime rt = Runtime.getRuntime();<br />

String command = "openssl ...";<br />

rt.exec(command);<br />

Javaprogrammet kan dermed gemme et certificatesigning-request på disken, eksekvere<br />

kommandoen og til sidst indlæse det færdige certifikat fra disken. Hermed kan RSserveren<br />

udstede certifikater vha. OpenSSL. OpenSSL holder styr på at ingen emailadresser<br />

kan registreres to gange. Forsøges dette, vil en fejlmeddelelse blive returneret.<br />

Der behøves altså ikke eksplicit at blive kontrolleret for allerede registrerede<br />

emailadresser i registreringsserveren under oprettelse.<br />

Generering af rodcertifikat og tilhørende privat nøgle foregår i OpenSSL. Certifikater<br />

dannet i OpenSSL dannes i X.509 formatet. Dette understøttes af Javas<br />

standardbiblioteker, hvorfor certifikater kan indlæses ad denne vej i <strong>Spam</strong>Cashapplikationerne.<br />

De private nøgler genereres i Java, dog ikke nøglen hørende til<br />

rodcertifikatet. Dette udgør et mindre problem, idet den private nøgle, benyttet under<br />

OpenSSL, er gemt i et format, som ikke umiddelbart understøttes af Java. Derfor skal<br />

denne først konverteres. Dette gøres vha. følgende kommando i OpenSSL:<br />

openssl pkcs8 -topk8 -inform PEM -outform DER -in priv.pem -nocrypt -out priv.der<br />

Efter denne engangskonvertering kan certifikatudstedelse og nøglegenerering foregå<br />

fuldautomatisk. Ingen af serverne kræver herefter nogen form for administration. Udover<br />

7 http://java.sun.com/products/javamail/<br />

8 http://www.openssl.org/<br />

111

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!