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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

NetworkPackets Samtlige netværkspakker som bruges til kommunikation findes<br />

her. Herudover findes en CryptoPacket, som bruges når netværkspakker skal sendes i<br />

krypteret form.<br />

Servers<br />

o BLS Blacklistserver, kommunikationstråd samt blacklisten er placeret her.<br />

o CES Pengeserver, kommunikationstråd samt klasser til håndtering af<br />

brugernes konti er placeret her.<br />

o RS Registreringsserver, kommunikationstråd og klasser til opbevaring af<br />

registreringsinformation.<br />

o VS<br />

Verifikationsserver og kommunikationstråd er placeret her.<br />

Utilities Her er placeret generelle værktøjer og dataklasser, som benyttes af de<br />

andre pakker i systemet. F.eks. er alle krypteringsværktøjer placeret i klassen<br />

Cryptotools (beskrives yderligere i afsnit 7.3.3) og det er også i denne pakke, vi<br />

finder klassen Session, som står for automatisk oprettelse af kryptografiske sessioner,<br />

når dette er nødvendigt (afsnit 7.3.4). Her findes også klassen Debugger, et outputværktøj,<br />

der bl.a. er en stor hjælp i forbindelse med fejlfinding (behandles særskilt i<br />

afsnit 7.3.7).<br />

7.1.1 Tredjeparts-s<strong>of</strong>tware<br />

Vi har nu gennemgået strukturen af den implementerede s<strong>of</strong>tware. I det følgende vil den<br />

tredjeparts-s<strong>of</strong>tware, der benyttes i systemet blive beskrevet. Det antages at s<strong>of</strong>twaren er<br />

sikker (altså at algoritmerne er korrekt implementerede) og at disse ikke indeholder<br />

bagdøre.<br />

7.1.1.a BouncyCastle<br />

Grundet eksport-restriktioner i USA understøtter JAVA2SDK pakken ikke som standard<br />

kryptering med en styrke, som benyttes i dette projekt. Derfor benyttes en såkaldt<br />

security provider. Vi har valgt at benytte Bouncy Castle 5 som provider, da de leverer et<br />

bibliotek, som understøtter de krypteringsalgoritmer, der benyttes i systemet, nemlig<br />

RSA, AES og SHA-1. Derudover er Bouncy Castle en anerkendt open source provider, så<br />

der er grund til at stole på, at algoritmerne er korrekt implementerede og uden bagdøre.<br />

Det skal dog nævnes, at der umiddelbart kan skiftes provider i systemet, ved blot at<br />

ændre i klassen Cryptotools. Dette ville være oplagt at gøre, hvis algoritmerne på et<br />

tidspunkt blev understøttet som standard i Java.<br />

Noget som ikke understøttes af BouncyCastle, men som er nødvendigt i systemet, er<br />

muligheden for at danne blinde signaturer. Derfor har vi valgt at benytte endnu en<br />

provider, som leverer netop denne funktionalitet. Dette uddybes i følgende afsnit.<br />

7.1.1.b Logi<br />

For at understøtte blinde signaturer benyttes et bibliotek udviklet af open source<br />

provideren Logi 6 . I dette bibliotek er blinde signaturer i RSA implementeret således, at<br />

5 http://www.bouncycastle.org/<br />

6 http://www.logi.org/logi.crypto/<br />

110

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

Saved successfully!

Ooh no, something went wrong!