Sikring af netværkskommunikation

Relaterede dokumenter
Computer netværk og TCP/IP protokoller. dcomnet 1

Computer netværk og TCP/IP protokoller. dcomnet 1

Sikker netværkskommunikation

PGP tutorial og keysigning workshop

Konfidentialitet og kryptografi 31. januar, Jakob I. Pagter

TEKNISK INFO TIL BRUG FOR DECENTRAL KONFERENCESERVER VIA VDX

Netværksmålinger. - en introduktion! Netteknik. TCP - IP - Ethernet

FairSSL Fair priser fair support

Nemhandel infrastruktur. Morten Hougesen Christian Uldall Pedersen 8. April 2010

Kryptologi 101 (og lidt om PGP)

Netværksmålinger. - en introduktion! Netteknik

Kursusgang 3: Autencificering & asymmetrisk kryptering. Krav til autentificering. Kryptering som værktøj ved autentificering.

Public Key Crypto & Gnu Privacy Guard & CaCert

Indstilling Master i IT-sikkerhed. Jette Lundin it-vest leder på Handelshøjskolen Lektor på IFI

Tredjepart webservices

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

NemHandel infrastruktur. Lars Houe Heinrich Clausen 4. November 2010

TeamViewer sikkerhedsinformation

Nærmere om VDX v/ Per Abildgaard. 20. juni 2019

Hvordan vælger jeg dokumentprofilen?

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

LUDUS WEB. Installations- og konfigurations-vejledning. Den 7. april J.nr.: 4004 V

VIGTIG information til alle kunder som kører backup over Internet via SSL - Kræver kundeaktion inden 17. april 2009!

LUDUS Web Installations- og konfigurationsvejledning

NOX Security Whitepaper

GLOBETEAM. Danmarks Miljøportal (DMP) Vejledning til fagsystemejere omkring tilkobling af Java Metrobaseret. Version 1.2

FairSSL Fair priser fair support

Introduktion til Kryptologi

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Løsning af møntproblemet

LUDUS Web Bestilling og installation af SSL-servercertifikat Introduktion Bestilling af certifikat fra andre udbydere...

Webserverprogrammering

Kryptering og Sikker Kommunikation Første kursusgang Værktøjer (1): Introduktion til kryptering

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

UDP Server vejledning

Smartair 6.0. Installations guide

Digital Signatur Infrastrukturen til digital signatur

Digitaliseringsstyrelsen

IPv6 sameksistens med IPv4. af Laurent Flindt Muller & Jakob Pedersen

TDCs Signaturserver. 11/05 - Version TDC Erhverv Sikkerhed og certifikater

Koder og kryptering. Foredrag UNF 4. december 2009 Erik Zenner (Adjunkt, DTU)

Eksempel på en database: studenter, kurser, eksamener

Hvad er KRYPTERING? Metoder Der findes to forskellige krypteringsmetoder: Symmetrisk og asymmetrisk (offentlig-nøgle) kryptering.

Dag 10 Flertrådet programmering

Databaseadgang fra Java

TCP & UDP. - de transportansvarlige på lag 4. Netteknik 1

En teknisk introduktion til NemHandel

Note omkring RSA kryptering. Gert Læssøe Mikkelsen Datalogisk institut Aarhus Universitet

Grundlæggende kryptering og digital signatur 04/09/2012 ITU 2.1

Indberetning af afregninger teknik

DM502. Peter Schneider-Kamp

LUDUS Web Vejledning i eksport af certifikat

Praktisk kryptering i praksis

Get starting med. AS2 til. Progrator gatetrade

Citrix CSP og Certificate Store Provider

LUDUS Web Vejledning i eksport af certifikat

Introduktion til NemID og Tjenesteudbyderpakken

Fuld installation af Jit-klient

Sentinel (Dynamisk IP) til ZyWALL (Statisk IP) VPN Tunnel

Get starting med. AS2 til. Progrator gatetrade

A Profile for Safety Critical Java

Hvad er et distribueret objekt? Plan Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Kald af PingService via SOAPUI

FairSSL Fair priser fair support

Note omkring RSA kryptering. Gert Læssøe Mikkelsen Datalogisk institut Aarhus Universitet

Cisco ASA Vejledning. Opsætning af Site-to-Site VPN

FairSSL Fair priser fair support

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

DM507 Algoritmer og datastrukturer

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

e-tinglysning Digital signering

Løsning af skyline-problemet

Abstrakte datatyper C#-version

Jens Holm. Er du nervøs for, at uvedkommende læser med, når du sender mails? Og er det overhovedet sikkert at sende en god gammeldags ?

Det Danske Filminstitut byder velkommen til vores UDP Server. Pligtaflevering - Version 2.0

Transkript:

Sikring af netværkskommunikation Som udgangspunkt kan sikring af en netværkskommunikation foretages på et vilkårligt lag i netværksprotokolstakken. Hvis vi ser på TCP/IP protokolstakken vil det sige at en kommunikation over Internettet kan sikres ved:! Sikring af det fysiske lag! Sikring af data link laget! Sikring af netværkslaget! Sikring af transportlaget! Sikring af applikationslaget Disse 5 sikringsmetoder har forskellige formål, hvor det kun i begrænset omfang giver mening at anvende metoderne til andre formål. I forbindelse med Java er det kun applikationslaget og transportlaget der er relevante. 1 Sikring på applikationslaget Afsender Modtager Rent sikkerhedsmæssigt er den bedste måde at kommunikere sikkert på at lade meddelelserne være krypterede hele vejen fra den afsendende til den modtagende proces. Det vil i praksis sige at brugeren styrer processen, og at sikringen af kommunikationen foregår på applikationsniveauet. 2

Sikring på applikationslaget Formål: At give mulighed for at information kan overføres sikkert mellem to processer (her typisk identisk med brugerne, da disse skal identificere sig for at få adgang til informationen). Fordele:! Maksimal sikring af data.! Ingen krav til det underliggende netværk.! Mulighed for at opbevare data krypteret/signeret.! Autentificerer brugeren. Ulemper:! Alle klienter der skal kunne indgå i kommunikationen skal anvende samme sikkerhedsstandard og certifikater.! Kræver nøglehåndtering, da der skal kunne kommunikeres sikkert med ukendte personer/maskiner.! Hver anvendelse af internettet implementerer sin egen sikring.! Bruger skal aktivt involveres.! Netværksoplysninger (IP og port numre) står i klartekst.! Autentificerer ikke afsendermaskinen. 3 Sikring på applikationslaget Problemet er at dette kræver at alle programmer der skal kunne afsende eller modtage sådanne meddelelser skal anvende den samme standard. For at dette skal være praktisk muligt skal for eksempel alle e-mail klienter anvende den samme standard og nøglecertifikater. I praksis er dette næppe muligt at opnå, da der på nuværende tidspunkt er for mange e-mail klienter i brug. Der er imidlertid ikke noget til hinder for at alle klienter anvender den samme krypteringsstandard, enten ved at alle implementerer den samme standard, eller ved at alle anvender de samme krypteringsbiblioteker. 4

Sikring på transportlaget Afsender Modtager 5 Sikring på transportlaget Formål: At kunne sikre på sessionsniveau, således at den samme proces både kan bruge sikre og usikre kommunikationer. Fordele:! Alle klienter der ønsker at anvende en sikker kommunikation kan! anvende den samme API til kommunikationen, hvorfor denne ikke! skal implementeres på applikationsniveau.! Intet behov for en infrastruktur ud over internettet.! Normalt transparent for brugere.! Kan til en vis grad bruges til at autentificere brugeren af! programmet, på bekostning af transparens. Ulemper:! Data opbevares usikret på afsender/modtager.! Der er behov for håndtering af certifikater og nøgler da der skal kommunikeres med et stort antal forskellige servere og services.! Netværksoplysninger (IP og port numre) står i klartekst.! Kan ikke autentificere afsendermaskinen. 6

Usikret kommunikation 7 Sikret transportlag 8

Sikring via bibliotek Kommunikationssikring 9 Sikring på transportlaget Afsender Modtager 10

En familie af protokoller: SSLv2 SSLv3 TLS SSL/TLS Ligger ovenpå TCP således at det implementeres i de individuelle brugerprocesser. En anvendelse af SSL/TLS kræver derfor ikke ændring af det underliggende OS eller den anvendte TCP/IP stak. Ikke bare en overførselsprotokol, men giver mulighed for at definere en API, således at den samme implementation kan anvendes fra mange forskellige brugerprocesser. Typiske anvendelsesområder:! SSL server autentificering! SSL klient autentificering! En krypteret SSL session 11 Kurose & Ross: Computer Networking, 4.ed. 12

Kurose & Ross: Computer Networking, 4.ed. 13 Nøgleudledning Klienten sender en krypteret Pre Master Secret til serveren, hvorefter begge anvender denne til at generere en Master Secret som de derefter anvender til at udlede 4 nøgler: 2 symmetriske sessionskrypteringsnøgler - en til hver retning 2 symmetriske sessions MAC nøgler - en til hver retning Man kunne vælge at bruge premasternøglen som sessionsnøgle til både kryptering og MAC, men da man så anvender den samme nøgle i forbindelse med 2 algoritmer vil dette give ekstra information der kan bruges til at analysere sig frem til nøglen. Desto flere meddelelser der bruger den samme nøgle, desto større er sandsynligheden for at man kan analysere sig frem til nøglen specielt hvis flere meddelelser indeholder den samme information. Da en samtale har en tilbøjelighed til at en meddelelse gentager dele af en foregående meddelelse vil det være en fordel hvis der blev anvendt forskellige nøgler i de to retninger. 14

SSL protokol http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/jsserefguide.html 15 SSL uden certifikater enciphering proposal, RA enciphering choice, RB, Bob-pub A l i c e Bob-pub[S], HashA HashB data B o b quit quit 16

Tovejs certifikat autentificering enciphering proposal, RA enciphering choice, RB, certificateb, NC proposal A l i c e certificatea, Bob-pub[S], {HashA}Alice-pri, HashA HashB data B o b quit quit 17 Encryption possibilities A numeric value defined by strings using _ as delimiter. Example: SSL_RSA_EXPORT_WITH_DES40_CBC_SHA Meaning: SSL => SSLv3 RSA => RSA key exchange EXPORT => weak encryption WITH => filler! DES40 => 40 bit DES encryption CBC => Cipher Block Chaining SHA => records has HMAC-SHA digest 18

First in the description string. SSL_: SSLv3 SSL2_: SSLv2 Protocol 19 Key exchange DHE_DSS_: Diffie-Hellman with DSS signatures DHE_RSA_: Diffie-Hellman with RSA signatures DH_anon_: Anonymous Diffie-Hellman DH_DSS_: Diffie-Hellman with DSS certificates DH_RSA_: Diffie-Hellman with RSA certificates FORTEZZA_DMS_: Fortezza/DMS NULL_: No key exchange RSA_: RSA key exchange Variants: If followed by EXPORT_ weak encryption is used (all but NULL and FORTEZZA_DMS). 20

3DES_EDE_CBC_ DES_CBC_ DES40_CBC_ FORTEZZA_CBC_ IDEA_CBC_ RC2_CBC_40_ RC4_128_ RC4_40_ NULL_ Enciphering algorithms 21 MD5 SHA NULL Hash algorithms 22

Java Secure Socket Extension Udvidbart SSL/TLS bibliotek implementeret i ren Java. Implementerer SSL 3.0 og TLS 1.0 (bagudkompatibel med SSL 2.0). Indeholder klasser der leverer sikrede SSL forbindelser både til server- og klient-siden. Kan anvende: RSA (512 og større nøgler) til autentificering og nøgleudveksling. RC4 (40 og 128 bit nøgler), DES (56 og 40 bit nøgler), 3DES (112 bit nøgler) samt AES (128 og 256 bit nøgler) til datakryptering. Diffie-Hellman (512 og 1024 bit nøgler) til nøgleudveksling. DSA (1024 bit nøgler) til autentificering. Baseret på JCA, og leveres som standard med en SSL provider, SunJSSE, der implementerer SSL 3.0 og TLS 1.0, samt anvendelse af X.509 certifikater der opbevares i et JCA keystore, med en simpel implementering af PKCS12 23 Overblik over JSSE klasser http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/jsserefguide.html 24

SSL Engine http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/jsserefguide.html 25 import java.io.*; import java.util.*; import javax.net.ssl.*; Eksempel: HTTPS klient public class WebTest { public static void main(string argv[]) throws Exception { String inputline; SSLSocketFactory sslfact = (SSLSocketFactory)SSLSocketFactory.getDefault(); SSLSocket s = (SSLSocket)sslFact.createSocket("www.thawte.com", 443); BufferedReader infromserver; DataOutputStream outtoserver; infromserver = new BufferedReader( new InputStreamReader(s.getInputStream())); outtoserver = new DataOutputStream(s.getOutputStream()); outtoserver.writebytes("get / HTTP/1.1\r\n"+ "Host: www.thawte.com\r\n"+ "Connection: close\r\n\r\n"); inputline = infromserver.readline(); while ( inputline!= null ) { System.out.println(inputLine);!! inputline = infromserver.readline(); } s.close(); } } 26

Eksempel: HTTPS server... import javax.net.ssl.*;... public class WebServer { public static void main(string argv[]) throws Exception... SSLServerSocketFactory sslsrvfact = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault(); SSLServerSocket listensocket = (SSLServerSocket)sslSrvFact.createServerSocket(443); } }... while (true) { try { connectionsocket = (SSLSocket)listenSocket.accept();... // som normalt... } catch (... ) {... } } 27 Certifikater Javas keytool værktøj kan bruges til at oprette og manipulere keystores og certifikater. For at oprette et keystore (server.jks) og et selfsigned server certifikat (localhost) kaldes keytool med følgende argumenter: -genkey -alias server -keyalg RSA -keypass 123456 -storepass 123456 -keystore server.jks Ved udførsel bedes om et navn, og her angives navnet på serveren (for eksempel localhost) hvor der bedes om for- og efternavn. Indholdet af denne keystore kan ses med: keytool -list -storepass 123456 -keystore server.jks For at bruge denne keystore kan den angives som argument når en SSL server startes: java -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.keyStore=server.jks HTTPServer 28