Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost] BAWP: Frontend- en backendcommunicatie beveiligen  (gelezen 7938 keer)

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
[Opgelost] BAWP: Frontend- en backendcommunicatie beveiligen
« Gepost op: 2009/12/12, 16:52:55 »
Hallo allemaal,

Inleiding:
Sinds het BAWP (build applications without programming)-project vanaf het ubuntu-nl forum is uitgeweken naar een google-code project (http://code.google.com/p/bawp/), zijn al veel ideeën uitgewerkt. We zitten nu echter met een probleem waar onze groep van drie personen niet uit komt, en wat we graag hierbij aan een grotere groep willen voorleggen.

Vraag:
Kortweg willen we dat programma's (frontends) via XML-RPC (http://en.wikipedia.org/wiki/XML-RPC) functies kunnen aanroepen op een server. (PHP, de backend.) Het probleem is dat we de verzonden data willen beveiligen. Heeft iemand een idee hoe/of dat mogelijk is? Zo nee, kent iemand dan een techniek waarmee we iets vergelijkbaars kunnen doen, maar dan met beveiliging?

Extra info:
Zie voor meer informatie http://code.google.com/p/bawp/wiki/CommunicatieBackendEnInterpreter , waar we tot nu toe hebben overlegd. We overwegen op dit moment de phpxmlrpc lib (http://phpxmlrpc.sourceforge.net/), maar als dat wat oplost kunnen we switchen naar een andere library, er is nog geen regel code geschreven.

Wat we al overwogen hebben:
  • https (certificaten kosten te veel)
  • xml versleutelen (maakt het gebruik van xml-rpc onmogelijk)

Namens het BAWP-team,
- commandoline (marten94 op google code)
« Laatst bewerkt op: 2009/12/15, 17:50:54 door commandoline »

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: XML-RPC-communicatie beveiligen.
« Reactie #1 Gepost op: 2009/12/13, 15:42:03 »
Blijkbaar is een oplossing vinden idd moeilijk. Ik heb vandaag wat zitten zoeken, en denk dat het misschien mogelijk is om ipv. iets als XML-RPC, SOAP en REST. te gaan voor een eigen gemaakte api. We kunnen binnen het project dan gewoon XML/JSON-bestandjes verzenden (POST-requests) met inhoud zoals beschreven op http://code.google.com/p/bawp/wiki/CommunicatieBackendEnInterpreter , en die dan versleutelen op basis van een key berekend uit de user & wachtwoord (als de user bekend is, kan de server dezelfde key berekenen).

Weet iemand of dit grote nadelen heeft? Van beveiliging weet ik namelijk niet veel.

Edit: leendert heeft me al eens eerder gewezen op http://www.w3.org/TR/xmlenc-core/ , dat lijkt me als we toch van RPC zouden afstappen ideaal, geen encryptie voor de username, die moet worden meegezonden, en wel voor de data-tags.
« Laatst bewerkt op: 2009/12/13, 15:59:49 door commandoline »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #2 Gepost op: 2009/12/13, 21:29:02 »
Ik denk dat de meest nette oplossing toch wel SSL is. De kosten zijn misschien een nadeel, maar misschien niet nodig. Met SSL beveilig je de hele verbinding (dus alle communicatie tussen client en server). Hierdoor is een groot deel gelijk beveiligd. Dan gaan er bijvoorbeeld ook geen username/wachtwoorden in klare tekst over het lijntje ;)

Wat betreft certificaten. Je kunt die gewoon zelf genereren. Maar de vertrouwlijkheid zit em in het feit dat het certificaat ondertekend moet zijn door een vertrouwde authoriteit (en dat kost wat geld). Gaat het verkeer tussen de gebruikers computer en de server? Want dan is het wel zo netjes om een getekend certificaat te hebben. Of je kiest ervoor dat de gebruiker zo'n melding krijgt in de browser, en het certificaat moet accepteren (dat is gratis :P).

FYI
Ik zag een hoster die € 30 per jaar vroeg voor SSL. Ik weet niet zo wat een  certificaat per jaar kost. Tawte en verisign tekenen certificaten.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #3 Gepost op: 2009/12/13, 21:46:56 »
Ik denk dat de meest nette oplossing toch wel SSL is. De kosten zijn misschien een nadeel, maar misschien niet nodig. Met SSL beveilig je de hele verbinding (dus alle communicatie tussen client en server). Hierdoor is een groot deel gelijk beveiligd. Dan gaan er bijvoorbeeld ook geen username/wachtwoorden in klare tekst over het lijntje ;)
Dus eigenlijk wordt dat certificaat alleen gebruikt om te controleren of de ontvanger van de data klopt? De data is sowieso goed beveiligd? (Een derde kan er nog steeds niets mee tenzij die de encryptie gaat kraken?)

Wat betreft certificaten. Je kunt die gewoon zelf genereren. Maar de vertrouwlijkheid zit em in het feit dat het certificaat ondertekend moet zijn door een vertrouwde authoriteit (en dat kost wat geld). Gaat het verkeer tussen de gebruikers computer en de server? Want dan is het wel zo netjes om een getekend certificaat te hebben. Of je kiest ervoor dat de gebruiker zo'n melding krijgt in de browser, en het certificaat moet accepteren (dat is gratis :P).

FYI
Ik zag een hoster die € 30 per jaar vroeg voor SSL. Ik weet niet zo wat een  certificaat per jaar kost. Tawte en verisign tekenen certificaten.
Om je een idee te geven, we willen een soort op een server draaiende API maken om een database te bereiken. (Met wat functies als add, edit, remove, login, logout.) Die API wordt aangeroepen door programma's, niet door browsers.

Denk je dat SSL zonder certificaat dan voldoet? Betalen voor SSL-certificaten is op dit moment namelijk de allerlaatste optie. En volgens mij bied het al evenveel veiligheid als alleen stukjes xml versleutelen, en kunnen we het dan ook gebruiken i.c.m. xml-rpc o.i.d.

Bedankt voor je hulp tot nu toe,
- commandoline

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #4 Gepost op: 2009/12/13, 23:11:45 »
Om je een idee te geven, we willen een soort op een server draaiende API maken om een database te bereiken. (Met wat functies als add, edit, remove, login, logout.) Die API wordt aangeroepen door programma's, niet door browsers.
En die programma's draaien dus ook op een server? Of op meerdere servers?

Denk je dat SSL zonder certificaat dan voldoet? Betalen voor SSL-certificaten is op dit moment namelijk de allerlaatste optie. En volgens mij bied het al evenveel veiligheid als alleen stukjes xml versleutelen, en kunnen we het dan ook gebruiken i.c.m. xml-rpc o.i.d.
SSL werkt sowieso met een certificaat. Maar zoals ik eerder zei kun je gewoon zelf een certificaat aanmaken. Op ubuntu middels het pakket openssl. Ik ga nu niet op de details in. Maar het komt er ongeveer op neer dat je een certificaat op de server en client installeert. Vervolgens kun je dan een beveiligde (SSL) verbinding opzetten tussen client/server.

Een nieuwe client moet het certificaat van de server dan eerst installeren (accepteren) voordat ze met elkaar kunnen comuniceren. Ik wilde dit even uitwerken in jullie BAWP, maar weet niet precies hoe dat zit. Kan een client zowel een webapp(PHP) als een desktop app zijn? Qua SSL denk ik dat dit niet zoveel uitmaakt. Je kunt het certificaat namelijk meeleveren in de client software.     

Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #5 Gepost op: 2009/12/14, 15:58:34 »
Om je een idee te geven, we willen een soort op een server draaiende API maken om een database te bereiken. (Met wat functies als add, edit, remove, login, logout.) Die API wordt aangeroepen door programma's, niet door browsers.
En die programma's draaien dus ook op een server? Of op meerdere servers?
Denk je dat SSL zonder certificaat dan voldoet? Betalen voor SSL-certificaten is op dit moment namelijk de allerlaatste optie. En volgens mij bied het al evenveel veiligheid als alleen stukjes xml versleutelen, en kunnen we het dan ook gebruiken i.c.m. xml-rpc o.i.d.
SSL werkt sowieso met een certificaat. Maar zoals ik eerder zei kun je gewoon zelf een certificaat aanmaken. Op ubuntu middels het pakket openssl. Ik ga nu niet op de details in. Maar het komt er ongeveer op neer dat je een certificaat op de server en client installeert. Vervolgens kun je dan een beveiligde (SSL) verbinding opzetten tussen client/server.

Een nieuwe client moet het certificaat van de server dan eerst installeren (accepteren) voordat ze met elkaar kunnen comuniceren. Ik wilde dit even uitwerken in jullie BAWP, maar weet niet precies hoe dat zit. Kan een client zowel een webapp(PHP) als een desktop app zijn? Qua SSL denk ik dat dit niet zoveel uitmaakt. Je kunt het certificaat namelijk meeleveren in de client software.
OK, even een kleine inleiding op bawp dan maar (Voor een uitgebreidere uitleg is onze wiki redelijk goed, en afgezien van deze kwestie up to date):
- Bawp is een ontwikkeltookit en tegelijk een ontwikkelomgeving.
- Bawp genereert applicaties, die bestaan uit een database, en een xml-bestand met oa interface informatie. Deze bestanden komen op een server te staan.
- Een frontend (daar moeten er meerdere van komen) leest het xml-bestand (bereikbaar via een url) en toont de daarin beschreven interface. Ook roept het de 'backend' op de server aan, eigenlijk een php script. Daarin wordt ingelogd (verbinding met de database) en wordt alle communicatie met de database via gedaan. Frontends kunnen onder andere desktopapplicaties zijn, bijvoorbeeld geschreven in java, python, C(#,++). Ook kunnen het webapps zijn, bijvoorbeeld geinstalleerd op dezelfde server als de backend, maar technisch gezien is dat niet noodzakelijk.

Waar we het in deze thread over hebben is de verbinding tussen de frontend en de backend, maar ik heb geprobeerd om dat in de startpost wat te versimpelen, want nu zijn er waarschijnlijk door de lengte al meerdere mensen halverwege afgehaakt, als bovenstaande er ook nog had bij gemoeten was dat 90% geweest :P

Probleem is wel als ik jou uitleg zo lees dat iedereen die een op bawp gebaseerde applicatie maakt, een eigen ssl certificaat moet genereren. We hebben nl. als één van de belangrijkste doelstellingen simpelheid voor de eindgebruiker, en willen het bouwen van een applicatie volledig in een editor doen. (Dat zit zelfs in de naam: Build Application Without Programming.) Misschien kan dat certificaat wel gegenereert worden in de editor (java zoals het er nu uitziet, dan kunnen we 'm ook gebruiken als applet), en dan in de xml worden bijgeschreven bijv.

Verder wilden we tot nu toe proberen om het mogelijk te houden om backend en applicatie gescheiden te houden, dan kunnen meerdere apps dezelfde backend gebruiken.

Leuk dat je mee wilt denken over dit onderdeel, als het makkelijker werkt kun je schrijfrechten krijgen op de wiki, door een PM aan leendert te versturen. (zit ook op het forum en is projectleider.) Via dit topic kan natuurlijk ook.
-commandoline

Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #6 Gepost op: 2009/12/14, 16:16:44 »
Je kan altijd een soort van beveiligde lijn scripten zeg maar. Waardoor je zelf een versleuteling maakt, en die dan alleen laat ontsleutelen door de backend. Is maar een gedacht natuurlijk.

Offline leendert

  • Lid
    • Dutchgimpers.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #7 Gepost op: 2009/12/14, 16:37:38 »
Ik heb nog even verder gezocht

We kunnen zelf een encryptie-class schrijven, waarmee we data die heen en weer gaat kunnen versleutelen.

Bijvoorbeeld met behulp van het RC4 algoritme (wordt ook gebruikt door WEP en WPA)
http://nl.wikipedia.org/wiki/RC4_(encryptie)
Uitgebreider Engels artikel:
http://en.wikipedia.org/wiki/RC4
Ik heb meerdere classes kunnen vinden die gebruik maken van deze encryptie.

Of nog ingewikkelder met RSA (schijnt onkraakbaar te zijn)
http://nl.wikipedia.org/wiki/RSA_(cryptografie)
En daar zijn ook verschillende classes van te vinden.

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #8 Gepost op: 2009/12/14, 16:42:57 »
Je kan altijd een soort van beveiligde lijn scripten zeg maar. Waardoor je zelf een versleuteling maakt, en die dan alleen laat ontsleutelen door de backend. Is maar een gedacht natuurlijk.
Je bedoelt dat het mogelijk is om SSL te gebruiken zonder tussenkomst van de gebruiker (ok, username en passw dat ook bekend id op de server) d.m.v. een script? Ik ben nl. absoluut niet thuis op het gebied van beveiliging.

Ik heb nog even verder gezocht

We kunnen zelf een encryptie-class schrijven, waarmee we data die heen en weer gaat kunnen versleutelen.

Bijvoorbeeld met behulp van het RC4 algoritme (wordt ook gebruikt door WEP en WPA)
http://nl.wikipedia.org/wiki/RC4_(encryptie)
Uitgebreider Engels artikel:
http://en.wikipedia.org/wiki/RC4
Ik heb meerdere classes kunnen vinden die gebruik maken van deze encryptie.

Of nog ingewikkelder met RSA (schijnt onkraakbaar te zijn)
http://nl.wikipedia.org/wiki/RSA_(cryptografie)
En daar zijn ook verschillende classes van te vinden.
Hoe werkt dit dan, zo?
1) Client beveiligd met de door jou genoemde algoritmes en wachtwoord de data
2) Server zoekt de user op en probeerd met het wachtwoord weer te decoderen?

Qua werk voor de frontend maakt het niet zoveel uit denk ik, en dat is na de veiligheid het belangrijkste lijkt me.

Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #9 Gepost op: 2009/12/14, 16:53:22 »
Je kan altijd een soort van beveiligde lijn scripten zeg maar. Waardoor je zelf een versleuteling maakt, en die dan alleen laat ontsleutelen door de backend. Is maar een gedacht natuurlijk.
Je bedoelt dat het mogelijk is om SSL te gebruiken zonder tussenkomst van de gebruiker (ok, username en passw dat ook bekend id op de server) d.m.v. een script? Ik ben nl. absoluut niet thuis op het gebied van beveiliging.


Neen ik bedoel eerder iets zoals leendert bedoeld ;) Wat hij dus blijkbaar snel vond :)

Offline leendert

  • Lid
    • Dutchgimpers.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #10 Gepost op: 2009/12/14, 16:56:46 »
Hoe werkt dit dan, zo?
1) Client beveiligd met de door jou genoemde algoritmes en wachtwoord de data
2) Server zoekt de user op en probeerd met het wachtwoord weer te decoderen?

Qua werk voor de frontend maakt het niet zoveel uit denk ik, en dat is na de veiligheid het belangrijkste lijkt me.
Voordeel van RC4 is dat deze makkelijk te implementeren is (de code stelt echt niet veel voor en is zo over te maken van classes op internet) en ook erg snel is.
Elk bericht wordt versleuteld zowel van als naar de backend.
De sleutel stuur je ook mee met het bericht zodat het andere programma deze kan ontsleutelen (random gegenereerde sleutel) .

moeten we wel op het volgende letten:
Citaat
Het is niet mogelijk om verschillende berichten te vercijferen met dezelfde sleutel. In dat geval zou de XOR-relatie tussen de klare teksten hetzelfde zijn als de XOR-relatie tussen de cijferteksten, wat het zeer eenvoudig maakt om de cijferteksten te kraken. Dit kan opgelost worden door aan elk bericht een uniek serienummer toe te wijzen, en de sleutel voor dat bericht te berekenen met een cryptografische hashfunctie over de basissleutel en het serienummer.

De verwerking van sleutels is een zwak punt in RC4. Dit is verschillende malen aangetoond, het duidelijkst door de aanval van Fluhrer, Mantin en Shamir. In het bijzonder is het onveilig om de berichtsleutel te vormen door een serienummer achter een basissleutel te plakken (zoals gedaan wordt in het WEP protocol). Sleutels moeten daarom eigenlijk altijd voorbewerkt worden met een cryptografische hashfunctie zodat er in de RC4-sleutel geen systematische patronen kunnen zitten.
« Laatst bewerkt op: 2009/12/14, 16:58:50 door leendert »

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #11 Gepost op: 2009/12/14, 17:10:38 »
OK, een paar vragen/gedachten:

Elk bericht wordt versleuteld zowel van als naar de backend.
De sleutel stuur je ook mee met het bericht zodat het andere programma deze kan ontsleutelen (random gegenereerde sleutel) .
Maar als die sleutel in handen valt van een derde kan die het bericht ook decoderen? Of heb je daar ook nog het gebruikerswachtwoord voor nodig?

Wazzzaaa vond het netter om SSL te gebruiken met een zelf getekend certificaat. Zijn mening moeten we dus ook nog even afwachten, zodat we goed de voordelen en nadelen op een rijtje hebben vind ik.

Verder betekend het gebruik van encryptie op deze manier dat we ook geen xml-rpc/soap/rest kunnen gebruiken, toch? (Dus backend + frontend wordt meer werk.)

Offline leendert

  • Lid
    • Dutchgimpers.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #12 Gepost op: 2009/12/14, 17:14:03 »
Je moet de sleutel ook versleuteld meesturen inderdaad.
Over hoe je dit veilig moet doen is veel te lezen op internet.

Je kunt toch nog steeds deze data (versleuteld) verzenden via xml-rpc? Alleen moet je zorgen dat je hem eerst ontsleuteld voordat je er iets mee gaat doen.

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #13 Gepost op: 2009/12/14, 17:30:25 »
Je moet de sleutel ook versleuteld meesturen inderdaad.
Over hoe je dit veilig moet doen is veel te lezen op internet.
Op dit moment kan ik het technische deel niet volgen, maar ik zal eens wat gaan zoeken, mij gaat het erom dat het veilig is en gebruiksvriendelijk.

Edit: Of bedoel je soms zo'n schema, dat ik eerder ben tegengekomen:

bron:http://www.ibm.com/developerworks/xml/library/x-encrypt/

Je kunt toch nog steeds deze data (versleuteld) verzenden via xml-rpc? Alleen moet je zorgen dat je hem eerst ontsleuteld voordat je er iets mee gaat doen.
Alleen als de elementenstructuur niet versleuteld is, dus (in versimpelde stijl, ik ken de namen die xml-rpc gebruikt niet uit mijn hoofd):
<request>
 <action>Backend.Add</action>
 <params>
  <param><encodedData>jfdskfle7893kldfj2356</encodeddata></param>
  <param><key>39484398fd</key></param>
  <param><id>34234</id></param>
  <param><algorythm>rc4</algorythm></param>
 </params>
</request>
Wel zouden we het kunnen gebruiken icm xml-encryptie standaarden. (Daar heb jij al eerder info over opgezocht.)
« Laatst bewerkt op: 2009/12/14, 17:41:00 door commandoline »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #14 Gepost op: 2009/12/14, 18:08:45 »
Waar we het in deze thread over hebben is de verbinding tussen de frontend en de backend, maar ik heb geprobeerd om dat in de startpost wat te versimpelen, want nu zijn er waarschijnlijk door de lengte al meerdere mensen halverwege afgehaakt, als bovenstaande er ook nog had bij gemoeten was dat 90% geweest :P
Ik wil weten, waar draait die front-end op? Die draait op 1 (of meerdere) server(s)? En die front end is software die jullie hebben gebouwd? Zo ja, dan zorg je ervoor dat je JULLIE certificaat meelevert met je software. in praktijk gaat dit iets anders, maar daar wil ik later wel mee helpen.

Leuk dat je mee wilt denken over dit onderdeel, als het makkelijker werkt kun je schrijfrechten krijgen op de wiki, door een PM aan leendert te versturen. (zit ook op het forum en is projectleider.) Via dit topic kan natuurlijk ook.
-commandoline
Jullie hebben een leuk verhaal, maar het is best lastig te vatten. Ik zou heel graag een plaatje zien van hoe jullie de architectuur in gedachte hebben. Hierin zijn dan de volgende dingen verwerkt:
 - de backend
 - frontend
 - computer van de BAWP gebruiker
 - computer van de bezoeker van de app die een BAWP gebruiker heeft gebouwd.
 - misschien nog meer?
Misschien is het logischer om meerdere plaatjes te maken..
 
Gewoon blokjes en lijntjes zegt al heel veel.

We kunnen zelf een encryptie-class schrijven, waarmee we data die heen en weer gaat kunnen versleutelen.
Bijvoorbeeld met behulp van het RC4 algoritme (wordt ook gebruikt door WEP en WPA)
Of nog ingewikkelder met RSA (schijnt onkraakbaar te zijn)
Begin daar niet aan! Een veel gemaakte security fout is het zelf bouwen of verkeerd implementeren van encryptie. Laten we even aannemen dat jullie verkeer over HTTP gaat. Blijkbaar is HTTP niet veilig genoeg, dus probeer je dan stukjes te beveiligen. Beter beveilig je de hele lijn en gebruik je HTTPS (SSL)! Zo regel je de beveiliging op een lager niveau. cert. zet je op de server in apache. Op de client zeg je dat er een beveiligder verbinding (SSL) gemaakt moet worden. Als dit eenmaal tot stand is, kunnen client en server op de normale manier communiceren. Dus eigenlijk is het dan meer configureren, dan echt iets bouwen. 

Tevens is RSA het principe dat in SSL wordt gebruikt. Namelijk Public/Private Key Encryptie.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #15 Gepost op: 2009/12/14, 18:11:51 »
Voordeel van RC4 is dat deze makkelijk te implementeren is (de code stelt echt niet veel voor en is zo over te maken van classes op internet) en ook erg snel is.
Elk bericht wordt versleuteld zowel van als naar de backend.
De sleutel stuur je ook mee met het bericht zodat het andere programma deze kan ontsleutelen (random gegenereerde sleutel) .
Ik vertaal dit even naar gewone mensen taal:
Ik stuur jou geld. Maar omdat ik niet wil dat andere kunnen zien of veranderen wat ik jou stuur. Doe ik het geld eerst in een kluis, en dan stuur ik de kluis op. Tevens stuur ik de sleutel van de kluis mee. Zodat jij de kluis open kan maken.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline leendert

  • Lid
    • Dutchgimpers.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #16 Gepost op: 2009/12/14, 18:20:16 »
Begin daar niet aan! Een veel gemaakte security fout is het zelf bouwen of verkeerd implementeren van encryptie. Laten we even aannemen dat jullie verkeer over HTTP gaat. Blijkbaar is HTTP niet veilig genoeg, dus probeer je dan stukjes te beveiligen. Beter beveilig je de hele lijn en gebruik je HTTPS (SSL)! Zo regel je de beveiliging op een lager niveau. cert. zet je op de server in apache. Op de client zeg je dat er een beveiligder verbinding (SSL) gemaakt moet worden. Als dit eenmaal tot stand is, kunnen client en server op de normale manier communiceren. Dus eigenlijk is het dan meer configureren, dan echt iets bouwen. 
Tevens is RSA het principe dat in SSL wordt gebruikt. Namelijk Public/Private Key Encryptie.
RSA is niet moeilijk te implementeren....

Wat we ook heel belangrijk vinden is gebruiksvriendelijkheid. Is dat https/ssl verhaal eenvoudige te configureren door iemand die over zulke zaken geen verstand heeft? En volgens mij ondersteunen de meeste basis-hostingpakketten dit niet.
En krijg je als je geen ondertekend certificaat hebt (wat dus iets van 130 euro per jaar kost) altijd een beveiligings-waarschuwing bij de cliënt.

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #17 Gepost op: 2009/12/14, 18:23:05 »
Je kunt toch nog steeds deze data (versleuteld) verzenden via xml-rpc? Alleen moet je zorgen dat je hem eerst ontsleuteld voordat je er iets mee gaat doen.
Ah, jullie willen met XML RPC aan de gang. Ik heb daar geen ervaring mee, maar dat kan dus bijv. over SSL.
http://www.google.nl/search?q=xml-rpc+ssl
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline leendert

  • Lid
    • Dutchgimpers.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #18 Gepost op: 2009/12/14, 18:23:54 »
Ik wil weten, waar draait die front-end op? Die draait op 1 (of meerdere) server(s)? En die front end is software die jullie hebben gebouwd? Zo ja, dan zorg je ervoor dat je JULLIE certificaat meelevert met je software. in praktijk gaat dit iets anders, maar daar wil ik later wel mee helpen.
We hebben een database + php-backend die door ons geprogrammeerd word, en die dus op een webserver gaat draaien.
De front-end kan van alles zijn: een AJAX web-interface, een Java programma, Python.......Iedereen kan eigen interfaces schrijven.

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #19 Gepost op: 2009/12/14, 18:29:32 »
Begin daar niet aan! Een veel gemaakte security fout is het zelf bouwen of verkeerd implementeren van encryptie. Laten we even aannemen dat jullie verkeer over HTTP gaat. Blijkbaar is HTTP niet veilig genoeg, dus probeer je dan stukjes te beveiligen. Beter beveilig je de hele lijn en gebruik je HTTPS (SSL)! Zo regel je de beveiliging op een lager niveau. cert. zet je op de server in apache. Op de client zeg je dat er een beveiligder verbinding (SSL) gemaakt moet worden. Als dit eenmaal tot stand is, kunnen client en server op de normale manier communiceren. Dus eigenlijk is het dan meer configureren, dan echt iets bouwen.  
Tevens is RSA het principe dat in SSL wordt gebruikt. Namelijk Public/Private Key Encryptie.
RSA is niet moeilijk te implementeren....
Wat wil je hiermee zeggen? Dit dekt totaal niet mijn citaat :S
« Laatst bewerkt op: 2009/12/14, 18:34:30 door Wazzzaaa »
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #20 Gepost op: 2009/12/14, 18:33:02 »
Ik wil weten, waar draait die front-end op? Die draait op 1 (of meerdere) server(s)? En die front end is software die jullie hebben gebouwd? Zo ja, dan zorg je ervoor dat je JULLIE certificaat meelevert met je software. in praktijk gaat dit iets anders, maar daar wil ik later wel mee helpen.
We hebben een database + php-backend die door ons geprogrammeerd word, en die dus op een webserver gaat draaien.
De front-end kan van alles zijn: een AJAX web-interface, een Java programma, Python.......Iedereen kan eigen interfaces schrijven.
Duidelijk!
Wil je SSL, dan zou je in de frontend het SSL certificaat moeten installeren. In het geval van Java, python; lever je die mee met het programma (dus de gebruiker merkt er niets van). In het geval van AJAX is je browser het programma. Je krijgt dan de bekende melding. De gebruiker zal dit certificaat dan (permanent) moeten accepteren... Of je betaalt geld, zodat de gebruiker niet 1 keer die melding krijgt.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #21 Gepost op: 2009/12/14, 18:41:00 »
OK, hier is de blokjestekening waar Wazzzaaa een tijdje geleden om vroeg: http://bawp.googlecode.com/files/bawp.odg , ik hoop dat dat het wat duidelijker maakt. Verder is als je serieus je erin wilt verdiepen onze wiki ook een goede informatiebron (http://code.google.com/p/bawp/w/list).

@Wazzzaaa: Jou methode klinkt netjes, maar waar ik me zorgen om maak is dat het regelen van een self-signed certificaat, zonder dat de gebruiker en applicatiemaker zich daar wat van hoeven aan te trekken. Gebruiksvriendelijkheid is nl doelstelling #1. Als ik jou uitleg goed begrijp moet dat namelijk per applicatie die gebruik maakt van bawp, en dan moet dat dus gebeuren door de beheerder van de applicatie. Tenzij dat automatisch gaat is het waarschijnlijk gewoon te veel gevraagd. Wat vind jij?
« Laatst bewerkt op: 2009/12/14, 19:02:04 door commandoline »

Offline Ronnie

  • Lid
    • ronnie.vd.c
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #22 Gepost op: 2009/12/14, 21:34:24 »
Hoe werkt dit bijvoorbeeld bij Pidgin.
Kijk maar eens in de map .purple/certificates/x509/tls_peers
Hernoem of verwijder daar eens een bestand en start pidgin opnieuw op. Er verschijnt netjes een melding voor een nieuw certificaat, klik op accepteren en je bent klaar.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Documentatie Terminal

Offline leendert

  • Lid
    • Dutchgimpers.nl
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #23 Gepost op: 2009/12/14, 21:42:02 »
Ah dat is leuk om naar te kijken Ronnie!
Blijft natuurlijk de vraag of standaard hostingpakketten ssl ondersteunen....en hoe makkelijk dit is te configureren is.
« Laatst bewerkt op: 2009/12/15, 09:41:55 door leendert »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: BAWP: Frontend- en backendcommunicatie beveiligen
« Reactie #24 Gepost op: 2009/12/15, 10:49:41 »
OK, hier is de blokjestekening waar Wazzzaaa een tijdje geleden om vroeg: http://bawp.googlecode.com/files/bawp.odg , ik hoop dat dat het wat duidelijker maakt. Verder is als je serieus je erin wilt verdiepen onze wiki ook een goede informatiebron (http://code.google.com/p/bawp/w/list).
Ah thnx! Ik had jullie wiki ook al bekeken, maar het werd me nog niet helemaal duidelijk. Nu snap ik het idee. Ik vind het wel apart dat de editor direct aan de DB verbonden is, maar dat is denk ik jullie ontwerpkeuze.

@Wazzzaaa: Jou methode klinkt netjes, maar waar ik me zorgen om maak is dat het regelen van een self-signed certificaat, zonder dat de gebruiker en applicatiemaker zich daar wat van hoeven aan te trekken. Gebruiksvriendelijkheid is nl doelstelling #1. Als ik jou uitleg goed begrijp moet dat namelijk per applicatie die gebruik maakt van bawp, en dan moet dat dus gebeuren door de beheerder van de applicatie. Tenzij dat automatisch gaat is het waarschijnlijk gewoon te veel gevraagd. Wat vind jij?
Ik heb het een paar keer geprobeerd uit te leggen, maar je hoeft zo'n cert. maar 1 keer te genereren. Vervolgens lever je die mee met de software... Als het goed is hoeft de gebruiker van de editor of de bezoeker van de site maar mininmale inspanning te verrichten.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!