Tässä hieman mainostan TCrypto-kirjastoa. TCrypto on PHP 5.3+ key-value "data store". Perimmäisenä ideana on tarjota käyttäjille helposti lähestyttävä käyttöliittymä, minkä kautta datan salaus/tallennus/varmentaminen jne. asiat hoituvat näppärästi ja ennen kaikkea turvallisesti.
Dataa tallennetaan serialisoituna arrayna ja data voi näin ollen olla mikä vaan serialisoituva PHP:n datatyyppi.
Oletuksena data tallennetaan evästeeseen, valinnaisesti salattuna ja/tai pakattuna. Omia laajennuksia on helppo lisätä, esim. jos haluat tallentaa datan tietokantaan evästeen sijasta, se onnistuu pienellä vaivalla.
TCrypton mukana tulee pieni komentorivisovellus, millä luodaan kryptauksessa/autentikoinnissa käytettyjä avaimia. Avaimia voidaan vaihtaa ns. lennosta, eli uusi avain vodaan lisätä ja sitä käytetään datan tallennuksessa. "Vanhoja" avaimia käytetään lukemaan dataa mikä on luotu aiemmilla avaimilla.
Koodi on kokonaisuudessaan public domainissa, eli täysin vapaata matskua. PHP 5.3:n lisäksi Mcrypt-laajennos täytyy olla käytössä. Lisää infoa (parhaiten homma selviää README:stä) ja itse koodi GitHubissa:
https://github.com/timoh6/TCrypto
Kommentteja?
Nostan projektia esille, sillä eilen korjasin TCryptoa kriittisen tietuturvaongelman vuoksi. Joten jos joku on koodia käyttänyt, niin on syytä päivittää.
Ongelma koskee niitä tapauksia missä TCrypto on konfiguroitu käyttämään valinnaista datan pakkausta (CompressPlugin), sekä hyökkääjä pääse syöttämään TCrypton key-value arrayhin mielivaltaista dataa (ja myös lukemaan tätä dataa, ns. chosen plaintext attack).
Tuossa on pohjimmiltaan sama "compression oracle" -probleema, mitä hyväksikäytettiin mm. CRIME:ssä ja BREACH:ssa.
Tällaista mokaa ei olisi saanut sattua missään nimessä, mutta niin se vaan sinne lipsahti :(
Aihe on jo aika vanha, joten et voi enää vastata siihen.