INNEHÅLL 1 INLEDNING... 15 2 BAKGRUNDSINFORMATION... 16 2.1 Linux och öppen programvara... 16 2.2 Apache och PHP... 17 2.3 SSL och PKI... 17 2.4 Certifikat och elektroniska signaturer... 19 2.5 MySQL... 22 2.6 XML... 22 2.7 Tidstämpling... 23 2.8 Elektronisk arkivering... 23 2.9 Internet Explorer och SmartTrust Personal... 23 3 KRAVSPECIFIKATION... 25 3.1 Arcadas ekonomiska reglemente... 25 3.2 Datasäkerhet... 25 3.3 Flexibilitet, kompabilitet och integrering... 27 3.4 Vidareutveckling... 28 3.5 Användarvänlighet... 28 3.6 Dokumentering... 29 4 FAKTURAHANTERINGSSYSTEMET... 31 4.1 Autentisering... 31 4.2 Åtkomstbegränsning... 32 4.2.1 Grupphierarki... 33 4.2.2 Specialfunktioner... 34 4.3 Sessionshantering... 34 4.4 Uppladdning av filbilagor... 37 4.5 Databasplanering... 38 4.6 Databaseffektivitet... 48 4.7 Modularitet och flyttbarhet... 51 4.8 Signaturhantering... 55 4.8.1 Skapandet av elektroniska signaturer med WebSigner... 55 4.8.2 Extrahering av signeringscertifikat ur en PKCS#7-signatur... 58 4.8.3 Verifiering av elektroniska signaturer... 60 4.8.4 Konvertering mellan olika format och kodningar... 63 4.9 Datalagring... 64 4.9.1 Datatypen TEXT och BLOB... 65 4.9.2 Användningen av XML för datalagring... 65 4.9.3 Databastabeller... 72 4.10 Flexibilitet och självservice... 73 4.10.1 Återanvändning av programkod... 73 4.10.2 Automatiska servicefunktioner... 73 4.10.3 Databashantering... 79 4.11 Administration... 79 4.11.1 Konfigurering av administratörer och applikationsanvändare... 80 4.11.2 Underhåll av användarinformation... 81
4.11.3 Underhåll av grupper... 83 4.11.4 Underhåll av avdelningar... 84 4.12 Hanteringslogistik... 85 4.12.1 Inmatningsfasen... 86 4.12.2 Cirkulationsfasen... 86 4.12.3 Signeringsfasen... 88 4.12.4 Utbetalningsfasen... 88 4.12.5 Arkiveringsfasen... 89 4.12.6 Papperskorgen... 90 4.12.7 Filbilagor... 90 4.12.8 Kommentarer... 91 4.12.9 Den personliga fakturakön... 91 4.13 E-posthantering... 92 4.14 Loggning... 94 5 INSTALLATION OCH KONFIGURATION... 96 5.1 Installation... 96 5.2 Konfiguration... 97 6 TESTNING... 108 7 UTVECKLINGSPERSPEKTIV... 111 7.1 Databasplanering... 111 7.2 Moduler... 112 7.3 Tidstämpling... 113 7.4 Arkivet... 114 7.5 Loggning... 115 7.6 Gränssnitt för revisorer... 116 7.7 Sökningar och rapporter... 116 7.8 Validering av inmatade data... 116 7.8.1 Felkontroll med JavaScript... 117 7.8.2 Felkontroll med PHP... 117 7.8.3 Begränsningar i databasen... 117 7.9 Certifikat- och signaturhantering... 118 7.9.1 Arkivering av certifikat... 118 7.9.2 Hantering av multipla användarcertifikat... 118 7.9.3 Förbättring av signaturverifiering... 119 7.9.4 Hantering av strukturerade signaturer... 119 8 SLUTSATSER... 120 LITTERATUR... 122 BILAGA: KÄLLKODSDOKUMENTATION... 125
FIGURER Figur 1. Exekvering av ett OpenSSL-kommando i ett PHP-skript... 18 Figur 2. Det elektroniska ID-kortet för finländare.... 19 Figur 3. PKCS#7-formatet... 20 Figur 4. Filhuvud för S/MIME-formatet.... 20 Figur 5. PKCS#7-formaterad signatur i PEM-kodning... 21 Figur 6. Signering av XML-post med SmartTrust Websigner.... 24 Figur 7. PKI-autentisering i Internet Explorer.... 31 Figur 8. Grupphierarkin i fakturasystemet.... 34 Figur 9. Exempel på filnamn för en sessionsfil... 35 Figur 10. SQL-kod för generering av ett nytt unikt fakturanummer... 40 Figur 11. Databasens design och en del av dess relationer.... 41 Figur 12. Beräkning av ett MD5-extrakt för en fil.... 42 Figur 13. Buffertarkitekturen... 51 Figur 14. Exempel på en databaskonfigurationsfil för fakturasystemet... 55 Figur 15. Textbox med XML-data för signering... 56 Figur 16. HTML-kod för inbäddning av WebSigner-komponenten.... 56 Figur 17. Dialogfönster för inmatning av signaturcertifikatets PIN-kod.... 57 Figur 18. JavaScript för aktivering av WebSigner-komponenten.... 57 Figur 19. Extrahering av signeringscertifikatet ur en PKCS#7-signatur... 59 Figur 20. Verifiering av elektronisk signatur i PHP... 60 Figur 21. Kedjade tidstämplar.... 62 Figur 22. Gränssnitt för granskning av signerad faktura... 62 Figur 23. Konvertering av DER-kodad spärrlista till PEM-kodad spärrlista.... 63 Figur 24. Rutin för avkodning av hexadecimala koder i teckensträngar... 63 Figur 25. Teckensträngar i X.509-certifikat före avkodning och efter avkodning... 64 Figur 26. XML-formulär för lagring av fakturauppgifter... 66 Figur 27. XML-formulär för lagring av delbeslut (kommentarer).... 67 Figur 28. Webbformulär för insamling av data till XML-formulär.... 67 Figur 29. Funktion för sammanfogning av tabell och tomt XML-formulär... 68 Figur 30. Funktion för utplockning av information ur XML-formulär.... 70 Figur 31. Fullständig XML-post för lagring av fakturauppgifter och filbilagor.... 71 Figur 32. Automatiskt påminnelsebrev per e-post... 76 Figur 33. Innehållet i indextabellen i databasen... 77 Figur 34. Information om den inloggade användaren.... 78 Figur 35. Konfiguration av användare och åtkomstbegränsningar för webbservern.... 81 Figur 36. Applikationsanvändare samt deras gruppmedlemskap... 82 Figur 37. Gränssnitt för underhåll av signeringsrättigheter... 82 Figur 38. Grupper och grupprelationer lagrade i databasen.... 83 Figur 39. Gränssnitt för underhåll av grupper.... 84 Figur 40. Gränssnitt för underhåll av grupprelationer... 84 Figur 41. Gränssnitt för underhåll av avdelningar... 85 Figur 42. Cirkulationsförloppet för fakturor i fakturahanteringssystemet.... 86 Figur 43. Innehållet i tabellen Paminnelser i databasen.... 93 Figur 44. Gränssnitt för utskickning och editering av manuella påminnelsebrev... 94 Figur 45. Loggdata i systemloggen vid inloggning... 95 Figur 46. Utdrag ur httpd.conf (Apache-konfigurationsfil)... 98 Figur 47. Bash-skript för kompilering av PHP 4.3.2 och externa moduler... 99 Figur 48. Utdrag ur php.ini (konfigurationsfil för PHP 4.3.2).... 100 8
Figur 49. Utdrag ur mod_ssl.conf... 101 Figur 50. Inställningar i files.inc.... 103 Figur 51. Direktlänk för hämtning av spärrlista via HTTP.... 103 Figur 52. Uppdatering av spärrlista via LDAP-sökning med OpenLDAP... 104 Figur 53. Utdrag ur my.cnf (konfigurationsfil för MySQL)... 105 Figur 54. Fil- och funktionsträd... 125 TABELLER Tabell 1. SSL-variabler i bläddrarens globala miljö. (Hästbacka, 2002).... 32 Tabell 2. Funktioner för olika typer av åtkomstkontroll.... 33 Tabell 3. Variabler för databaskonfigurering.... 35 Tabell 4. Funktioner för sessionsvariabelshantering.... 36 Tabell 5. Filinformation för uppladdade filbilagor... 37 Tabell 6. Konfigurationsinställningar för PHP-modulen.... 38 Tabell 7. Konfigurationsinställningar för MySQL... 38 Tabell 8. Databastabeller.... 43 Tabell 9. Funktionsbibliotek... 52 Tabell 10. Metoder för inställning av de vanligaste egenskaperna hos WebSigner... 58 Tabell 11. Databastabeller för lagring av fakturor.... 72 9
FÖRKORTNINGAR ASCII American Standard Code for Information Interchange. Alfanumerisk teckenkod som används för att representera alla tecken med siffror. Finns i både 7-bitars och 8-bitars versioner. ASP Active Server Pages. En teknik framtagen av Microsoft för programmering av dynamiska webbsidor med Visual Basic-skript eller JScript. BLOB Binary Large Object. Datatyp som används i databaser för lagring av binär information. CA Certification Authority. Utgivare av certifikat. CN Common Name. Fält som ingår i ett certifikat som innehåller certifikatägarens namn. CRL Certificate Revocation List. Förteckning över certifikat som spärrats. DER Distinguished Encoding Rules. Ett kodningssystem som ingår i ASN.1- formatet. Används bland annat för att koda kryptografisk information. DOM Document Object Model. DPI Dotch Per Inch. En måttenhet för pixeltäthet, punkter per tum. DTD Document Type Definition. Formatmall för dokument kodade enligt SGML eller XML. GNU GNU is Not Unix. En rekursiv ordlek som namnger en del projekt med öppen källkod. 10
GPL General Public License. Licensavtal som omfattar öppen källkod. HTML HyperText Markup Language. Språk för att strukturera information för visning på webben. HTTP Hypertext Transfer Protocol. Protokoll som används på Internet för kommunikation mellan webbservrar och webbläsare. HTTPS Secure HTTP. Ett tillägg till HTTP för att skydda kommunikationen. ISO International Organization for Standardization. Europeisk organisation som standardiserar gränssnitt, teckenkoder m.m. ITU International Telecommunications Union. Europeisk organisation som ansvarar för standarder inom telekommunikationsområdet. JPG Joint Photographic Expert Group. Standard för komprimering av data, i första hand fotografier och andra bilder som innehåller många färger. Standarden orsakar förluster proportionellt mot komprimeringsgraden. LDAP Lightweight Directory Access Protocol. Protokoll för bläddring i katalogtjänster på Internet. MD5 Message Digest #5. Algoritm för beräkning av matematiska extrakt. PEM Privacy Enhanced Mail. En kodningsteknik som används för kryptografisk information. PHP Hypertext Preprocessor. Programmeringsspråk för dynamiska webbsidor i alla miljöer. Följer syntaxen för C-språket. 11
PIN Personal Identification Number. Kod som används tillsammans med smartkort, bankkort och andra identifieringssystem. PKCS #11 Allmän standard för gränssnitten mot kryptografisk hårdvara. Utfärdad av RSA Laboratories. PKCS #7 Allmän standard för hantering av information anknuten till kryptografi. Utfärdad av RSA Laboratories. PKI Public Key Infrastructure. Infrastruktur för hantering och distribution av kryptografiska nycklar. RAID Redundant Array of Independent Disks. Metod för att öka säkerheten i lagringen hos ett hårddisksystem. Stöder datafördelning och dataspegling. S/MIME Secure Multipurpose Internet Mail Extension. Utökad version av MIME med stöd för kryptering. Med MIME-kodning kan binär information överföras via e-post på Internet. SGML Standard Generalized Markup Language. Format för strukturerad text, standardiserat med ISO 8879. Texten kodas och kan med hjälp av olika typer av dokumentmallar formateras för olika typer av media. SMTP Simple Mail Transfer Protocol. Protokoll för överföring av meddelanden mellan datorer på Internet. SQL Structured Query Language. Standardiserat frågespråk för kommunikation med databaser. SSH Secure Shell. Program för fjärrinloggning på en annan dator. Kan även användas för att köra program på en annan dator och för att flytta filer mellan datorer. Har hög säkerhet. 12
SSL Secure Sockets Layer. Metod för att skydda kommunikation. TCP/IP Transmission Control Protocol / Internet Protocol. Standardprotokollet i Internet som används för kommunikation mellan noderna i nätet. Består av flera delprotokoll som alla behövs för kommunikation på Internet. TLS Transport Layer Security. Säkerhetssystem för kommunikation. TSP Time Stamp Protokoll. Del av X.509-standarden som definierar elektroniska tidstämplar. URL Uniform Resource Locator. Systemet för adresskoder i Internet. UTF Universal Transformation Format. Metod för konvertering av tecken i Unicode som är 16-bitar till tecken med 7 eller 8 bitar. X.509 Standard för digitala certifikat. Rekommendation från ITU. XML Extensible Markup Language. Förenklad version av SGML som kan strukturera information och användas för produktion av plattformsoberoende databassystem. 13
FÖRORD Detta examensarbete har utförts inom ramarna för forskningsprojektet Hantering och arkivering av digitala fakturor på Institutionen för IT och Elektronik, Arcada Nylands svenska yrkeshögskola. Min studieinriktning har varit datateknik inom utbildningsprogrammet informationsteknik. I examensarbetet presenteras hur man med hjälp av programpaket med öppen källkod kan bygga ett system för certifierad elektronisk dokumenthantering. Examensarbetet visar även med många exempel hur man hanterar olika typer av kryptografisk information. Som bilaga till rapporten finns dokumentation för den källkod som använts inom forskningsprojektet. Projektet är uppdelat i flera delar och detta examensarbete omfattar den tekniska uppbyggnaden av den fakturahanteringsmodell som forskningsprojektet har tagit fram. Modellen är en generell plattform som även kan utnyttjas för andra ändamål än elektronisk fakturahantering. Det första examensarbetet inom samma projekt skrevs av min kollega Peik Åström. I Peiks examensarbete behandlas bland annat den applikation, som i detta examensarbete beskrivs i detalj, mera allmänt. Jag vill passa på att tacka min numera forna kollega Peik Åström för det grupparbete och för det resultat vi tillsammans har uppnått. Jag vill även tacka min handledare, och forskningsprojektets ledare, Göran Pulkkis för den enorma expertis och entusiasm som han har bidragit med, men framför allt för det tålamod han har visat med färdigställandet av denna rapport. Helsingfors 08.10.2004 Krister Karlström 14
1 INLEDNING Det papperslösa kontoret har redan under en längre tid förblivit en vision och förhållandevis få ärenden sköts idag helt elektroniskt. Kanske har det varit den omfattande tekniska infrastrukturen som saknats eller brist på kunskap som har bromsat upp utvecklingen. Idag har informationstekniken och datatekniken utvecklats till den grad att en smidig övergång är möjlig. Elektroniska signaturer är legaliserade och Finlands befolkning erbjuds elektroniska ID-kort. Dessutom utvecklas öppna applikationer för hantering av dessa. Målet med detta projekt har varit att visa hur man med hjälp av öppen programvara och standarder kan bygga upp en infrastruktur för elektronisk dokumenthantering. Resultatet blev en intranätportal för hantering av elektroniska fakturor, skräddarsydd för ekonomiadministrationen i Arcada. Arbetet utgör även en god grund för fortsatt utveckling av portaler för elektronisk dokumenthantering. Projektet är utfört som ett IT-forskningsprojekt vid Institutionen för IT och Elektronik vid Arcada Nylands svenska yrkeshögskola. Projektet omfattar fakturahantering med elektroniska digitala signaturer för godkännande av fakturor. För att den lösning som presenteras i detta examensarbete skall kunna tas i bruk krävs ännu att ett elektroniskt arkiv görs. Uppbyggnaden av arkivet faller dock utanför ramarna för detta examensarbete. Rapporten är en teknisk beskrivning av uppbyggnaden av systemet och är avsedd som en teknisk dokumentation för programkoden. I rapporten beskrivs i detalj hur elektroniska signaturer och certifikat kan hanteras med hjälp av standardiserad öppen programvara och hur dessa kan användas i elektronisk dokumenthantering. Hypotesen för detta examensarbete är: Hur kan öppen programvara användas för elektronisk fakturahantering? Examensarbetet ger ett av flera svar på denna hypotes. Läsaren förutsätts ha grundkunskaper inom datateknik, programmering och kryptografi. 15
2 BAKGRUNDSINFORMATION I detta kapitel sammanfattas i korthet bakgrundsinformation till de flesta verktyg, metoder, tekniker och komponenter som använts i projektet. 2.1 Linux och öppen programvara En av projektets målsättningar är att ta fram en lösning som så långt som möjligt utnyttjar programvara med öppen källkod. Denna typ av programvara omfattas av GPLlicensen och får fritt användas och distribueras. De komponenter och verktyg som använts är alla, förutom en enda, programvaror som omfattas av GPL-licensen. Slackware Bland servrar på Internet har Linux blivit mycket populärt. Tre starka argument för Linux är säkerhet, prestanda och pris. Även i Arcada har Linux blivit standard-operativsystem för de flesta servrar. Linux förekommer i ett hundratal olika distributioner med olika spridningsgrad, vissa mera kända distributioner och många små okända distributioner. I Arcada används en mycket känd och välutvecklad distribution för servrar, nämligen Slackware. Distributionen är mycket populär för nätverksservrar och har i Arcada blivit en de facto standard. Valet av operativsystem och distribution för projektets server gjordes i enlighet med IT-Centralens riktlinje. Projektet är byggt och testat på Slackware 9.0 med Linux kernel 2.4.20. I ett senare skede har även kernel 2.4.24 använts utan problem. (Slackware, 2004). GNU General Public License (GPL) GNU General Public License är ett licensavtal som de flesta projekt med öppen källkod omfattar. Licensavtalet tillåter fri användning och distribuering. (GPL). Om man använder GNU-licenserad programvara och modifierar denna enligt eget behov är man också skyldig att erbjuda andra personer den modifierade programvaran. 16
2.2 Apache och PHP Detta projekt är uppbyggt som en webbportal för ett intranät. Projektet är utformat för att köras på en Apache webbserver under Linux med stöd för skriptspråket PHP. För konstruktion av dynamiska webbsidor är kombinationen PHP och Apache en utmärkt kombination. Bägge komponenterna är projekt med öppen källkod och utvecklingen fortgår kontinuerligt. (Apache, 2004). Detta projekt är byggt och testat på Apache 1.3.27 och PHP 4.3.2 under Slackware 9.0. Efter ett fåtal förändringar i källkoden fungerar systemet felfritt även med PHP 4.3.4. (PHP, 2004). 2.3 SSL och PKI Elektronisk dokumenthantering kan inte utföras utan att involvera kryptografi. Med Public Key Infrastructure (PKI) autentiseras information och användare. Likväl måste datakommunikationen skyddas och det utförs enklast med hjälp av Secure Socket Layer (SSL). Förbindelser skyddade med SSL stöds av alla webbläsare. På webbservern måste SSL aktiveras i serverns konfiguration och dessutom behövs ett servercertifikat. OpenSSL I PHP ingår en mängd färdiga funktioner för att utföra olika SSL-operationer. Funktionsbiblioteket i PHP är i dagens läge dock långt ifrån komplett. Åtminstone detta projekt behöver för både certifikat och signaturer sådana hanteringsfunktioner som inte ingår som standard i PHP. För dessa ändamål används programpaketet OpenSSL, vilket är ett projekt med öppen källkod. Funktioner som ingår i OpenSSL kan med ett systemanrop köras i ett PHP-skript, information förmedlas då enklast via tillfälliga filer (se Figur 1). 17
passthru("openssl x509 -subject -issuer -dates -noout -inform PEM -in certfile > $outfile"); Figur 1. Exekvering av ett OpenSSL-kommando i ett PHP-skript. Med OpenSSL kan man bland annat hantera certifikat, signaturer och spärrlistor. (OpenSSL, 2004). PKI PKI är en förkortning för Public Key Infrastructure (PKI-Forum, 2004). Tekniken bygger på så kallade nyckelpar där den ena nyckeln är hemlig och den andra är offentlig. Nycklarna är av naturen sådana att ingen känd lätthanterlig matematisk härledning finns mellan dem men tillsammans kan de användas för att kryptera och avkryptera information. Nycklarna kompletterar på så sätt varandra och så länge den privata nyckeln hålls hemlig kan den krypterade informationen anses vara säker. FINEID-kort innehållande nyckelpar används i detta projekt både vid autentisering (inloggning) och signering (elektronisk underskrift). Nycklarna finns sparade på det elektroniska identitetskortet, dessutom finns de publika nycklarna publicerade i Befolkningsregistercentralens katalogtjänst. Detta projekt utnyttjar FINEID-korten och har enbart blivit testat med dessa kort. FINEID-kortet I Finland är det sedan år 1999 möjligt att skaffa ett elektroniskt ID-kort. Kortet innehåller två PKI-nyckelpar, ett för autentisering och ett för signering. Kortet utfärdas av Befolkningsregistercentralen och de praktiska arrangemangen sköts av polisen. De publika certifikat som finns ombord på kortet är elektroniskt signerade av Befolkningsregistercentralen och certifikaten finns offentligt tillgängliga i en katalogtjänst på Internet. Den privata nyckeln som behövs vid säker kommunikation finns enbart i kortet. Det elektroniska ID-kortet har i början haft en giltighetstid på tre år, men nu ges ID-kort ut för fem år. I detta projekt har ID-kortet med tre års giltighetstid använts. I praktiken är den enda skillnaden mellan 3- och 5-årskort den att certifikaten har en längre giltighetstid och att 5-årskorten är undertecknade med ett annat CA-certifikat för 18
5-åriga kort. I Figur 2 visas ett elektroniskt identitetskort för finländare. (FINEID, 2004). Figur 2. Det elektroniska ID-kortet för finländare. Modulen mod_ssl för Apache För att skydda datakommunikationen mellan Apache och användarens webbläddrare används modulen mod_ssl. Modulen kompileras ihop med Apache och därefter måste Apache startas med kommandot apachectl startssl för att SSL-servern skall starta. För en lyckad uppstart av mod_ssl krävs att modulen är korrekt konfigurerad och att ett servercertifikat finns angivet i konfigurationsfilen. Modulen levereras oftast färdigt kompilerad tillsammans med Apache webbservern. Projektet är byggt och testat på mod_ssl 2.8.12. (mod_ssl, 2004). 2.4 Certifikat och elektroniska signaturer I detta projekt används många olika standarder och kodningsmetoder för olika typer av kryptografisk information. X.509-standarden Certifikat är i allmänhet konstruerade enligt X.509-standarden (X.509, 2004). De certifikat som förekommer i detta projekt är alla X.509v3-certifikat. Utbudet på certifikathanteringsfunktioner i PHP är mycket begränsat och certifikaten hanteras i detta projekt främst med OpenSSL. 19
PKCS#7-standarden PKCS#7 är standaren för Cryptographic Message Syntax Standard (PKCS #7, 2004). Standarden beskriver en generell syntax för information kopplad till kryptografi. De signaturer som skapas i detta projekt följer denna standard enligt version 1.5. Standarden stöder rekursivitet, d.v.s. kedjor av signaturer. I detta projekt förekommer dock inte signaturer i flera nivåer. Information kodad enligt PKCS#7-standaren känns igen genom att informationsblocket börjar med -----BEGIN PKCS7---- och slutar med -----END PKCS7-----. Informationen där emellan är uppbruten till rader om 64 tecken. I Figur 3 visas PKCS#7-formatet. -----BEGIN PKCS7----- XXXXX...XXXXX XXXXX...XXXXX XXXXX...XXXXX -----END PKCS7----- Figur 3. PKCS#7-formatet. S/MIME-standarden S/MIME är en standard som beskriver hur MIME kodad information kan knytas till kryptografi. En del operationer i detta projekt använder S/MIME istället för PKCS#7. I Figur 4 visas huvudet för en S/MIME-post. (S/MIME, 2004). MIME-Version 1.0 Content-Disposition: attachment; filename= smime.p7m Content-Type: application/x-pkcs7-mime; name= smime.p7m Content-Transfer-Encoding: base64 Figur 4. Filhuvud för S/MIME-formatet. PEM- och DER-kodning För kodning av kryptografiska poster används två olika format. Med kryptografiska poster avses i detta projekt både signaturer, certifikat och tidstämplar. 20
PEM-kodningen är lätthanterlig eftersom den resulterar i enbart läsbara ASCII-tecken och lämpar sig därför för lagring i databaser. Eftersom kodningen enbart består av läsbara ASCII-tecken kan hela signaturen enkelt representeras med hjälp av en teckensträng. I Figur 5 visas en signatur i PKCS#7-format. DER-kodningen resulterar i ett kompaktare format och sparar därmed diskutrymme men är mycket svårhanterlig, eftersom kodningen är binär och signaturen kan inte lika enkelt representeras med en teckensträng. I detta projekt används PEM-kodning. Ibland förekommer dock DER-kodad information. Spärrlistan som Befolkningsregistercentralen ger ut är ett exempel på DERkodad information. -----BEGIN PKCS7----- MIIFfwYJKoZIhvcNAQcCoIIFcDCCBWwCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3 DQEHAaCCA5owggOWMIICfqADAgECAgMAnmYwDQYJKoZIhvcNAQEFBQAwTDELMAkG A1UEBhMCRkkxHDAaBgNVBAoUE1ZSSy1GSU5TSUdOIEdvdi4gQ0ExHzAdBgNVBAMU FkZJTlNJR04gQ0EgZm9yIENpdGl6ZW4wHhcNMDIxMjA5MjM1OTU5WhcNMDUxMjA1 MjM1OTU5WjBlMQswCQYDVQQGEwJGSTEQMA4GA1UEBBQHUFVMS0tJUzEOMAwGA1UE KhQFR9ZSQU4xIDAeBgNVBAMUF1BVTEtLSVMgR9ZSQU4gMTAwMDA5MjdKMRIwEAYD VQQFEwkxMDAwMDkyN0owgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMKNB4ga G7UseIoK/ZG140N+KeW1bh2JX/L75BLlKXFr1L6PX52lIUThbLRXGF9NpdaFbcxJ PSm07h8JxmT3N2YnHon7zgNAyaRz7sSvfp4iP4WvKKpvPffmkP+AFBjWoqbIbzxx fphlokbekd3su27poeosptmxlnviatnpv40vagmbaagjgeswgegweqydvr0obaoe CEte1qZrYDbTMBQGA1UdIAQNMAswCQYHKoF2hAUBATATBgNVHSMEDDAKgAhGSU5D QUswMTAOBgNVHQ8BAf8EBAMCBLAwgZcGA1UdHwSBjzCBjDCBiaCBhqCBg4aBgGxk YXA6Ly8xOTMuMjI5LjAuMjEwOjM4OS9jbj1maW5zaWduJTIwY2ElMjBmb3IlMjBj axrpemvulg89dnjrlwzpbnnpz24lmjbnb3yujtiwy2eszg1kbmftzt1maw5lawqs Yz1GST9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MA0GCSqGSIb3DQEBBQUAA4IB AQBssYrbaKVbPQ0A4XmMYdOPMTvt3wY3z31r7es+Z0BnS5np/OK3F6zvxouqSyCF Tn5agdOaHERFFK7UZTC/62WzRmc4VVaxIrJi+CS8NdvoMgPl+Qi6dY/pxbYkluy/ um5lkzjgktw+lj3e5nv7i68klmjvvppji+b6cnjwg59onjjqtowhiohtnrlo/gur YolNEtM/6J2wdVCdIefSAd3aoHp6UNAvFktjFyCFEodXxdLdZ1zSVP2MhFDbflrF HPg3cRsEKxBB2IU7Aq3N143eSPz4642BTr5B0V1C+nna1QSSLfj0h9+KMWVodLK8 jihb2e36ed/jpjnno7mzgpvfmyibrtccaakcaqewuzbmmqswcqydvqqgewjgstec MBoGA1UEChQTVlJLLUZJTlNJR04gR292LiBDQTEfMB0GA1UEAxQWRklOU0lHTiBD QSBmb3IgQ2l0aXplbgIDAJ5mMAkGBSsOAwIaBQCggbEwGAYJKoZIhvcNAQkDMQsG CSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDMwNTEzMTQ1MDAxWjAjBgkqhkiG 9w0BCQQxFgQU4OYKtTH6vY7AN/mxqK9XSkCadUcwUgYJKoZIhvcNAQkPMUUwQzAK BggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwBwYFKw4DAgcwDQYIKoZIhvcNAwIC AUAwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEgYAjNs9UQBReqpSSWSjI Fdg2yI1qLGYrq6RGz6LTXXq5jS0rp7oOWb62QBs5reVNHSgxCjoh5EvaQvWEV3a1 XkCiwGdbduOj72XpmYEeEUXm3uoCKS3R/m40Z3Yu3iE8O5W7xZkaxeUXSNTEMR78 LznwGMJuo65ITdNzWcHDKHu78A== -----END PKCS7----- Figur 5. PKCS#7-formaterad signatur i PEM-kodning. 21
Signaturkategorien Elektroniska signaturer kan indelas i två kategorier, signaturer som enbart innehåller ett extraktvärde ( detached signature ) och signaturer som innehåller hela klartexten ( attached signature ). Eftersom den post som signeras i detta projekt är liten används signaturer som innehåller hela posten i klartext. 2.5 MySQL En mycket populär databashanterare på Internet är MySQL. MySQL är relativt effektiv och enkel att använda och har vunnit stor spridning under de senaste åren. En nackdel är dock att MySQL inte ännu stöder SQL-standarden fullt ut. Nya versioner kommer dock ut hela tiden. MySQL ägs nu av ett svenskt företag grundat av upphovsmännen själva, MySQL AB, men utvecklingen har fortsatt med öppen källkod under GPL-licensavtalet. För kommersiellt bruk krävs dock licens. MySQL förekommer ofta tillsammans med PHP och Apache. Detta projekt är byggt och testat på MySQL 4.0.13, under projektets början användes version 3.23.56. (MySQL, 2004). 2.6 XML XML står för Extended Markup Language och är ett notationsspråk. Med hjälp av XML kan man enkelt bygga upp mallar för att lagra strukturerad information. I PHP finns tillräckligt med stöd för detta projekt för att hantera information lagrad som XMLposter. Genom att lagra information i XML-format kan informationen hanteras och lagras som ett allmänt datapaket utan att hänsyn behöver tas till hurudan information ingår i datapaketet. XML passar utmärkt för datalagringen i detta projekt. Detta projekt är utvecklat för PHP 4.3.2 4.3.4 och använder ett flertal av de XMLfunktioner som är definierade i den API:n. Under andra halvan av år 2004 utges PHP version 5 där bland annat hela XML-komponenten är utbytt till en helt annan. Detta medför troligen att XML-hanteringen i detta system måste programmeras om för att 22
fakturasystemet skall fungera på PHP 5. Detta öppnar i sin tur nya möjligheter att vidareutveckla användningen av XML i systemet. (XML, 2004). 2.7 Tidstämpling För att kunna bevisa när en signering har utförts behövs någon form av bevisbar tid. En tidstämpel innehåller en tidsangivelse som tillsammans med ett extrakt av ett dokument är signerad av en trovärdig tidstämplingsmyndighet. Tidstämpeln bildar tillsammans med det elektroniskt signerade dokumentet en komplett helhet. Tidstämpling har inte skapats än i detta projekt. (TSP, 2003). 2.8 Elektronisk arkivering Den elektroniska dokumenthanteringen innebär att inga fysiska papper behöver arkiveras i mappar, hyllmeter efter hyllmeter. Det elektroniska arkivet erbjuder flexiblare sökmöjligheter och sparar mycket fysiskt utrymme. Givetvis ställs det mycket höga krav på ett elektroniskt arkiv av denna typ, såsom integritetskontroll, säkerhetskopiering och skydd mot mediedegeneration. Även arkiveringsrutinerna är annorlunda. Om den arkiverade informationen dessutom är tidstämplad föråldras tidstämplarna. Tidstämplarna måste förnyas varje gång tidstämplingsmyndigheten ger ut ett nytt CAcertifikat. Allt detta kan byggas upp med den teknik som idag existerar. Det elektroniska arkivet och de rutiner som krävs har inte skapats än i detta projekt. 2.9 Internet Explorer och SmartTrust Personal De elektroniska signaturerna som skapas i detta projekt genereras av en programvara inköpt från SmartTrust, nämligen produkten SmartTrust Personal (SmartTrust, 2004) och ActiveX-komponenten WebSigner. Eftersom WebSigner är en ActiveX-komponent (ActiveX, 2004) fungerar projektets signeringsgränssnitt enbart med Microsoft Internet Explorer. ActiveX är en teknik för bl.a. insticksprogram för Internet Explorer framtagen och utvecklad av Microsoft. I Figur 6 visas dialogfönstret för skapandet av en elektronisk signatur med WebSigner-komponenten i SmartTrust Personal. 23
SmartTrust Personal är den enda licensbelagda programvaran som använts, om man frånser Microsoft Internet Explorer. Detta projekt är byggt och testat på SmartTrust Personal 3.3.1 och Internet Explorer 6.0 (version 6.00.2800.1106). Figur 6. Signering av XML-post med SmartTrust Websigner. 24
3 KRAVSPECIFIKATION Kravspecifikationen har tagits fram i en iterativ process med ekonomibyrån. Oftast har kraven specificerats för en modul åt gången och på så sätt har programmeringen och planeringen alternerat med varandra. Inom programmeringstekniken finns en utvecklingsmodell som allmänt kallas för Spiralmodellen. Detta projekt har ganska långt utförts enligt den modellen. Till grund för kravspecifikationen ligger Arcadas ekonomiska reglemente. 3.1 Arcadas ekonomiska reglemente Det ekonomiska reglementet ligger till grund för ekonomiadministrationens funktion. I reglementet specificeras hanteringen av fakturor, namnteckningsrätt (signeringsrätt), hur man gör inköp, skillnaden på kostnader och investeringar samt attesteringsrättigheter. (Ekonomiskt reglemente, 2002). 3.2 Datasäkerhet Vid utformningen av en applikation av den här typen finns det givetvis stora krav på datasäkerheten. Förbindelserna måste vara säkrade mot avlyssning och informationen i systemet skall enbart nås av behöriga användare. Hårdvaran måste vara pålitlig och den fysiska tillgången till servern begränsad. Servern utsätts även för hårda systemsäkerhetskrav. Även ett effektivt skydd mot mediedegenerering (dataförlust) behövs. HTTPS För att säkra kommunikationen över nätverket används ett skyddat protokoll, HTTPS. Protokollet är en SSL-utökning av det vanliga HTTP-protokollet vilket används vid överföring av webbsidor på Internet. Protokollet stöds av både Apache och webbbläddraren Internet Explorer och förbindelsen mellan dessa två är skyddad av SSL. 25