Ik ben momenteel bezig met een project naar online beveiliging. Mijn opdrachtgever is van plan een extranet via de portal te koppelen, waarbij klanten dmv portal inkijk hebben in hun pensioen opbouw (er is dus ook een koppeling tussen de portal & het datawarehouse).
Mijn onderdeel is puur de beveiliging van Klant naar de portal. Ik heb redelijk wat onderzoek gedaan en ben tot een aantal mogelijke oplossingen gekomen. Een van deze oplossingen (wat naar mijn idee in iedergeval nodig is) is een SSL tunnel (certificaat).
Ik heb hier op tweakers redelijk wat gezocht naar informatie hierover maar toch kwam hier niet veel over naar voren. Met name niet over de manier hoe SSL precies eruit ziet (technisch). Vandaar dat ik dit topic met 3 redenen gemaakt heb:
Deze manier is volgens het asymetrische encrypty. Dat wil zeggen dat de server een public key heeft en een privat key. De berichten worden door de klant verstuurd dmv de public key. De server kan dit als enige lezen door gebruik te maken van zijn privat key. De server verstuurd berichten naar de klant dmv zijn privat key, die alleen gelezen kunnen worden door de public key. Door deze methode heeft de klant de server geauthenticeerd (de server is daadwerkelijk ook echt de server, hierbij moet wel opgemerkt worden dat de klant ook het certificaat CONTROLEERD).
Een nadeel die ik hierboven heb is dat data die de server verstuurd aan de klant gelezen kan worden door iedereen die de public key heeft. Of klopt dit niet omdat er een end-to-end verbinding is tussen de server en de client, waar niemand iets van kan lezen. Daar ben ik nog niet helemaal uit.
De volgende stap is het authenticeren van de klant. Dit gebeurt volgens de symetrice methoden. Dat wil zeggen dat er 1 publieke sleutel afgesproken wordt die zowel de klant als de server gebruikt om een bericht te versturen. Het tot stand komen van deze SSL-sessie (2-way ssl authentication) gebeurd op de volgende manier:
Uiteindelijk vind er dus over een SSL-tunnel een SSL-sessie plaats. Hiermee weet de klant zeker dat hij communiceerd met de server en de server weet zeker dat hij communiceerd met de klant.
Mijn onderdeel is puur de beveiliging van Klant naar de portal. Ik heb redelijk wat onderzoek gedaan en ben tot een aantal mogelijke oplossingen gekomen. Een van deze oplossingen (wat naar mijn idee in iedergeval nodig is) is een SSL tunnel (certificaat).
Ik heb hier op tweakers redelijk wat gezocht naar informatie hierover maar toch kwam hier niet veel over naar voren. Met name niet over de manier hoe SSL precies eruit ziet (technisch). Vandaar dat ik dit topic met 3 redenen gemaakt heb:
- Controleren of mijn idee over een ssl connectie klopt.
- Achter eventuele nadelen van een ssl verbinding komen.
- De kennis met anderen delen omdat er toch redelijk weinig op tweakers te vinden is.
code:
1
2
3
4
5
6
7
8
9
10
11
| Klant Communicatie Server TTP
Klant maakt verbinding met website -->
Hello? -->
<-- Reageert dmv versturen (public) ID
<-- id server
Leest id+vraagt id op bij TTP-->
vraagt id van server-->
<--stuurt id van server
<-- antwoord TTP
controleerd id van server+TTP
Kloppen deze 2 id's --> SSL tunnel is tot stand gekomen. (1-way ssl authentication) |
Deze manier is volgens het asymetrische encrypty. Dat wil zeggen dat de server een public key heeft en een privat key. De berichten worden door de klant verstuurd dmv de public key. De server kan dit als enige lezen door gebruik te maken van zijn privat key. De server verstuurd berichten naar de klant dmv zijn privat key, die alleen gelezen kunnen worden door de public key. Door deze methode heeft de klant de server geauthenticeerd (de server is daadwerkelijk ook echt de server, hierbij moet wel opgemerkt worden dat de klant ook het certificaat CONTROLEERD).
Een nadeel die ik hierboven heb is dat data die de server verstuurd aan de klant gelezen kan worden door iedereen die de public key heeft. Of klopt dit niet omdat er een end-to-end verbinding is tussen de server en de client, waar niemand iets van kan lezen. Daar ben ik nog niet helemaal uit.
De volgende stap is het authenticeren van de klant. Dit gebeurt volgens de symetrice methoden. Dat wil zeggen dat er 1 publieke sleutel afgesproken wordt die zowel de klant als de server gebruikt om een bericht te versturen. Het tot stand komen van deze SSL-sessie (2-way ssl authentication) gebeurd op de volgende manier:
code:
1
2
3
4
5
6
7
8
| Klant Communicatie Server
stuurt (over ssl-tunnel) een sessie key -->
Sessie key klant -->
<-- Controleerd sessie key dmv public key
Klopt sessie key, dan is sessie
gestart, klant geautoriseerd en
veilige communicatie tussen klant &
server vind plaats. |
Uiteindelijk vind er dus over een SSL-tunnel een SSL-sessie plaats. Hiermee weet de klant zeker dat hij communiceerd met de server en de server weet zeker dat hij communiceerd met de klant.