Krypteret ajax kald, indeholdende cpr nr.

Tags:    kryptering javascript crossdomain ssl

<< < 12 > >>
Hej.

Jeg har en kunde der har sit website i en synkron.via på www.domæne.dk, samtidigt bruger de en umbraco som datalag da synkron.via er lidt begrænset på div. områder.

Dvs jeg bruger synkron.via til at lave en normal html form, hvor action peger på umbraco løsningen. Denne form submittes asynkront til umbraco.

Nu ønsker de at en formular skal indeholde CPR nummer, og der er jeg lidt i knibe, hvordan får jeg mit asynkrone kald til at kryptere dataen før det sendes vha javascript ?

Jeg havde forestillet mig at vha et timestamp at lave en krypteringsnøgle, kryptere data'en der sendes til umbraco, men når data modtages af umbraco skal de dekrypteres så det kan læses af modtagere, dataen sendes pr mail, samt gemmes i umbraco.

Kan jeg vha javascript kryptere kaldet til umbraco, og læse det i umbraco ? - det skal hertil siges jeg har mulighed for at kryptere gennem C#, før jeg sender requestet videre til umbraco fra synkron, og fra umbraco igen læse det krypterede data vha C#.

Alternativt skal jeg igang med noget SSL, men så formoder jeg at både umbraco og synkron.via skal køre på SSL, og det vil jeg helst undgå.

Så mit løsningsforslag er at:
1: formularen udfyldes af brugeren
2: Når der submittes, kryptere jeg dataen vha C#, og sender det videre til umbraco, altså det krypterede data.
3: Når data modtages af umbraco, dekrypterer jeg det, og gemmer det i umbraco samt sender en mail

Er der nogle problemer i at gøre sådan, eller skal det foregå i et SSL miljø?

På forhånd tak, alternative løsningsforslag modtages gerne.
/Jacob



11 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 16 karma
Sorter efter stemmer Sorter efter dato
hvad med den data der bliver sendt fra klienten/brugeren trykker på submit og til det rammer dit C# kode. det er jo ikke krypteret. så der ville man kunne lave et man-in-the-middle attack.

og lidt off topic. hvorfor skal CPR nummer krypteres når du kan regne en persons CPR nummer ud inde for xx antal gæt. :)




Den eneste umiddelbart reelle mulighed er at serve den side som indeholder formularen som HTTPS, ellers bliver det lidt af et arbejde at kode et helt enkrypteringssystem i JavaScript.

Som Nicklas siger, vil den data der sendes til din C# kode være ukrypteret og derfor sårbar for Man-in-the-middle angreb.

@Nicklas: Af ren nysgerrighed, hvordan ville du gætte en persons CPR nummer inden for 'xx' antal gæt?



Man kan også kryptere med JavaScript (eller Java), men du skal finde en implementering som er kompatibel med modtagersiden (key generation, block padding og så videre).
Og så er der problemet med nøgleudveksling. Her bruger man typisk public key kryptografi, og det kan da også implementeres i JavaScript (eller Java).

Men hvorfor ?
Du får ALT foræret med SSL.



@Jakob det kræver selvfølgelig du har noget basis info om en person men med et navn og fødselsdag kan du gæt dig til de sidste 4 cifre.
her er et link til en arktikel i Jp Link





Takker, ja frygtede godt nok noget SSL.

/J



Man kan kryptere med C#, men jeg vil anbefale SSL.



@Martin ja selvfølgelig kan du kryptere med c# men det vil jo stadigvæk ikke hjælpe på et man-in-the-middle attack. da dataet fra man trykker submit til det rammer din serverside code ikke er krypteret.



Indlæg senest redigeret d. 29.01.2012 11:06 af Bruger #17017

og lidt off topic. hvorfor skal CPR nummer krypteres når du kan regne en persons CPR nummer ud inde for xx antal gæt. :)

Uanset hvor let det kan gættes, så har man en lovmæssig forpligtigelse og en moralsk forpligtigelse ovenfor sine kunder/brugere.





@Nicklas, jeg må have misforsået noget. Er det ikke netop det data han vil have krypteret, altså data mellem klient og service? Intet mindre, så vil jeg altid anbefale SSL. Så kan man jo mikse dette med noget andet.



@Martin: C# koden kan kun køre på serveren, og for at få data fra klientens browser til serveren er du nød til at sende den først, og mens du sender de data til serveren er de sårbare overfor Man-in-the-middle angreb, da de ikke er krypteret.



<< < 12 > >>
t