















| | | | Mottó: Mindenkinek az emlékei között [...] Akadnak olyanok is, amelyeket még barátainak se tár fel, legfeljebb saját magának, de magának is csak hétpecsétes titok gyanánt. /Fjodor Mihajlovics Dosztojevszkij/ | 2013. február 28. | | | | CryptScript (SL4A + PHP for Android) | | | | | Most nem mennék bele abba, hogy mik az előnyei és a hátrányai a script nyelveknek. Azt viszont mondhatjuk, hogy ha nagyon gyorsan és fájdalommentesen kell valami Proof-of-Concept kódot farigcsálni, akár fejlesztőkörnyezet nélkül, akkor jól jöhet egy ilyen nyelv. Ez igaz Windows operációs rendszereken, de a különböző Linux változatokon is... Akár az Android esetében is...
De milyen script interfészek, utasítások érhetők el Android esetében? A Scripting Layer for Android (SL4A) pontosan egy ilyen csomagot biztosít a lelkes felhasználóknak. Segítségével el lehet érni többek közt GUI-elemeket, a GPS és BlueTooth kapcsolat paramétereit, a kamera interfészét egyszerű Python, Perl, JRuby, JavaScript hívásokon keresztül. Sőt, PHP-n keresztül is a PHP for Android (PfA) révén...
Számomra elsősorban az érdekes, hogy mi az a kriptográfiai tudás, ami ezen egyszerű hívásokon keresztül használható. Bár, a PfA projekt fejlesztői (és a hátterében álló Irontec) a 2010 nyarán elérhetővé tett első (v0.1) verzió után nem sok új kiadással lepték meg a rajongókat, azért a v0.3 változatra elérték, hogy az OpenSSL library-k is részévé váltak ezen Android csomagnak (PHP v5.3.3 alapon).
Ha valaki belenéz a PfA apk csomagjába, akkor láthatja, hogy egy régi OpenSSL 0.9.8h adja a kriptográfiai hátteret, azonban az alapvető funkciókat ez is meg tudja valósítani: tud lenyomatokat számolni, tud RSA kulcsokkal műveleteket végezni, akár lenyomatokat RSA titkos kulccsal kódolni (digitális aláírást létrehozni) is. A szűk keresztmetszetet nem is a régi OpenSSL, hanem a PHP v5.3.3 adja, mert:
These constants were added in 5.4.8. OPENSSL_ALGO_RMD160, OPENSSL_ALGO_SHA224, OPENSSL_ALGO_SHA256, OPENSSL_ALGO_SHA384, OPENSSL_ALGO_SHA512 ... mert csak a PHP v5.4.8 verzióval kerültek be az újabb, ma már erősen ajánlott algoritmusok. Az algoritmusok azonosítói, illetve az openssl_sign() függvény leírása egyébként kicsit félrevezető, hiszen lenyomatképző függvényt kell megadni változtatható paraméterként (nem aláíró algoritmust), viszont RSA helyett más meg nem választható a lenyomat aszimmetrikus kódolásához. Tehát, ami kipottyan a végén az egy sha1WithRSAEncryption aláíró algoritmus révén létrehozott digitális aláírás. Ha megvannak hozzá a szükséges kriptográfiai kulcsaink, akkor ki is lehet próbálni a CryptScript mintakódot!

A CryptScript futtatásának előfeltétele természetesen az SL4A és PfA telepítése...

... illetve a PHP forráskódon kívül egy titkos kulcsot tartalmazó PKCS#12 állomány felmásolása.

Ha ezek megvannak, akkor lehet próbálkozni! A mini workflow elején egy állományt kell kiválasztani. A jelen kódban ez a lépés csak illusztráció, de a PfA tartalmazza a file_get_contents() függvényt, úgyhogy akár valóban le is lehet kérdezni egy állománylistát pl. egy távoli, e-közigazgatási szerverről.

A kiválasztott dokumentum tartalmát a jelen kód csak aláírni ("Sign") tudja (lenyomatot számol és továbbadja), a többi funkció szintén csak illusztráció.

A PKCS#12 állományban rejtjelezetten tárolt titkos kulcshoz be kell kérni a jelszót, PIN kódot, majd a hozzáférés megszerzése után már végre lehet hajtani az aláírási műveletet.

Ha minden jól ment, akkor az alkalmazás visszaadja a kiválasztott dokumentum digitális aláírását, amit akár fel is lehet tölteni a szerver oldali, e-közigazgatási portálra.

Kapcsolódó anyagok:
| | vissza | | | | |
|