Planiram da radim jednu aplikaciju za upravljanje unosima pa još razmišljam o dizajnu. Prvo mi je pala napamet P2P mreža koja bi koristila blockchain, no to mi je previše komplikovano za razvoj (a i zauzima dosta prostora). Druga stvar je ta što blockchain u ovom slučaju nema neku svrhu jer postoji centralna tačka sa koje se podaci unose i dalje šire kroz mrežu povezanih korisnika.
To funkcioniše ovako; svaki korisnik ima svoj ID i par RSA ključeva (javni i privatni). Pre slanja podataka uzimam ID-eve i javne ključeve svakog korisnika. Šifriranje odgovarajućih podataka za svakog korisnika funkcioniše ovako:
U prvom koraku šifriram informacije pomoću AES ključa (pošto RSA nije za veće podatke). U drugom koraku, taj ključ šifriram javnim ključem korisnika kome su ti podaci namenjeni (primaoca). U trećem koraku šaljem ta dva podatka korisniku. U četvrtom koraku korisnik pomoću svog privatnog ključa dekriptuje poslati AES ključ i u petom taj dekriptovani ključ koristi kako bi dekriptovao informacije.
Pošto se radi o relativno malom broju korisnika i manjoj količini informacija u vidu JSON-a (ni pola kilobajta), mislio sam da umesto trećeg koraka napravim jedan JSON fajl od svih podataka u ovom formatu:
{
[
{
"id": 3876,
"data": << enkriptovani podaci >>,
"key": << enkriptovan AES ključ >>
},
{
"id": 2981,
"data": << enkriptovani podaci >>,
"key": << enkriptovan AES ključ >>
},
...
]
}
Kreiram jedan torent fajl, iskoristim neku biblioteku za BitTorrent protokol i da korisnici tako preuzimaju sadržaj. Time će podaci biti dostupni na dosta uređaja, a korisnik će moći da pročita samo one podatke koji su mu namenjeni.
Tu međutim postoji jedan problem; podaci se često menjaju, tako da torent nije dobro rešenje. Interesuje me da li postoje neko srećnije rešenje, a koje nije toliko komplikovano za implementaciju? Jedino na šta sam za sada naišao je WebRTC.
|