Ako spravit kryptograficky token zo smartphonu

Programovacie jazyky, rady, poradňa...
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa Mek »

Takuto temu na diplomku mi navrhol moj potencionalny veduci, mna to pomerne zaujalo a slubil som mu, ze cez leto sa na to skusim kuknit a uvidim, co sa da robit (najradsej by som to ale cez leto nakodil cele, aby som mal toho potom menej :D ).
Ale k veci: Mam smartphone HTC Touch HD s WM6.1. Pripaja sa k PC cez USB kabel a synchronizuje cez MS Sync Center.
Mojou ulohou by bolo spravit nieco take, aby sa ten telefon tvaril ako kryptograficky token sluziaci na elektronicky podpis, so sukromnym klucom a certifikatom umiestnenym na SIM karte. Rozhodol som sa vziat to z toho jednoduchsieho konca, postupovat po troske, najma ked este nemam potrebne vybavenie (na manipulaciu so SIM kartou).
Potreboval by som teda najprv naprogramovat nejaky PKCS #11 modul, ktory by bolo mozne pouzit trebars v Thunderbirde - to zaisti pouzitelnost vo vsetkych aplikaciach, ktore ovladaju PKCS #11. Tento modul by komunikoval s mojim ovladacom (dalsi kus softveru, ktory treba naprogramovat), a tento ovladac by komunikoval priamo s mobilom pomocou USB (alebo by to mozno bolo mozne napichnut na ten Sync Center?). V telefone by bol dalsi kus softveru, beziaci ako sluzba a reagujuci na poziadavky z pocitaca, a vytvarajuci elektronicky podpis.
Cely vcerajsok som googlil a nenasiel som nic, co by mi pomohlo. Nasiel som specifikaciu PKCS #11, ale ta je mi na houby, ked nemam aspon nejake zdrojaky - nejaky example, na ktorom by som mohol stavat. V prvej faze by som chcel aspon naprogramovat taky PKCS #11 modul, ktory by vratil vzdy rovnaky elektronicky podpis (to je jedno, ze nebude platny, pre testovacie ucely postaci). Celkovo google je velmi, velmi skupy na vysledky a to ma mrzi. Nemam na com stavat, nemam sa odkial dozvediet, co potrebujem, kedze taketo veci sa tykaju vyrobcov hardveru a ti ziadne zdrojaky samozrejme nezverejnia.
Vedel by mi niekto poradit, kde zacat? Naviest spravnym smerom, alebo mozno navrhnut nejake lepsie riesenie tejto celej problematiky. Ako naprogramovat ten PKCS #11 modul (ma to byt jeden dll subor)? Ako naprogramovat ovladac pre windows?
:|
pipiak
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 321
Registrovaný: 11 jún 2006, 9:24
Bydlisko: KE
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa pipiak »

Ahoj, takze len tak zhruba...daco malo som si uz na platforme win mobile programoval(v c#) a podla mna je to jednoducha zalezitost. Na to tvoje kryptovanie existuju kniznice priamo pre NET, ktore by teoreticky mali fungovat aj na compact framework. Ziaden ovladac ti netreba vybarat, staci ti vytvorit aplikaciu ktora pouziva NET remoting a potiahnut to po sieti(ta sa vytvori po spojeni telefonu s pc cez active sync).
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa Mek »

Ano, ale to sa telefon nebude spravat ako kryptograficky token, ale na podpisovanie by sa pouzivala moja vlastna aplikacia - pochopil som spravne? V tom pripade by som musel vediet, z coho vsetkeho mam vytvorit hash (podla pouzitia aplikacie - napr. v thunderbirde z mailu) a to by uz nebolo aplikacne nezavisle - teda pouzitelne pre rozne aplikacie. Ja by som prave chcel, aby to pomocou PKCS #11 bolo mozne pouzit v kazdej aplikacii, ktora toto rozhranie ovlada.
Dalsia otazka (keby sa mi toto podarilo rozchodit): .NET asi neposkytuje prostriedky na priamy pristup k SIM karte, je tak? Asi by som si musel urobit nejaku DLL kniznicu v C++, ktora by toto zabezpecovala, a tu si potom k tej mojej aplikacii na mobile prilinkovat?
Zatial dik, cenim si, ze si mi odpisal, myslel som, ze sa tu na mna opat vykaslu :)
pipiak
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 321
Registrovaný: 11 jún 2006, 9:24
Bydlisko: KE
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa pipiak »

No vpodstate co sa tyka toho hashu ,tak by som to riesil asi tak ze by som tvoril hash aj na pc aj na telefone (tie by sa porovnavali ,ci sa sprava nezmenila po ceste) A ano tvoril by sa podla typu dokumentu ,ktory by bol v nejakom formate, neviem co vsetko chces podpisovat ,ale tusim ze snad vsetky dokumenty sa daju prerobit na xml a tie sa lahko v Net podpisuju. Co sa tyka simkarty to neviem ,ale kniznice pre .NET na to budu urcite a nebudes musiet vytvarat nic. Osobne si ale neviem predstavit co na tu simku chces dat :)
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa Mek »

pipiak napísal:No vpodstate co sa tyka toho hashu ,tak by som to riesil asi tak ze by som tvoril hash aj na pc aj na telefone (tie by sa porovnavali ,ci sa sprava nezmenila po ceste)
Nejak mi to nesedi podla toho, aku mam predstavu o tom, ako by to malo fungovat. Mam v umysle to realizovat tak, ze v kompe sa vytvori hash podpisovaneho dokumentu a tento hash sa posle telefonu. Telefon ho podpise sukromnym klucom a vysledok vrati kompu. Posielat cely dokument do mobilu by bol nezmysel :)
pipiak napísal:A ano tvoril by sa podla typu dokumentu ,ktory by bol v nejakom formate, neviem co vsetko chces podpisovat ,ale tusim ze snad vsetky dokumenty sa daju prerobit na xml a tie sa lahko v Net podpisuju.
Chcel by som podpisovat vsetko, co sa podpisat da (preto som sa snazil vrtat do PKCS #11). Napriklad maily v thunderbirde by sa tak podpisovali lahko, pretoze spolupracu s tokenmi ovladajucimi PKCS #11 thunderbird podporuje.
pipiak napísal:Co sa tyka simkarty to neviem ,ale kniznice pre .NET na to budu urcite a nebudes musiet vytvarat nic. Osobne si ale neviem predstavit co na tu simku chces dat :)
Predsa sukromny kluc a certifikat :) Len mi nejak nenapada sposob, ako zabezpecit, aby tieto dve veci boli v bezpeci (teda nedostupne v citacke sim kariet, ak by ich odtial niekto chcel vydolovat). I ked, sukromny kluc bez hesla k nemu by bol utocnikovi nanic, nemam pravdu? :idea:

//autoeditácia príspevku (15 Júl 2010, 22:34)
No tak po tom, co som zistil, ma presla chut implementovat ten PKCS #11 modul. Oficialna dokumentacia ma cez 200 stran, je neprehladna, a jedine dostupne zdrojaky su hlavickove subory a tie su mi nanic. Netusim ani kde zacat. Stiahol som teda OpenSC, kde bol taky PKCS #11 modul implementovany a kukol som si tie zdrojaky. Bola tam toho hromada a nezistil som ani, ktory z nich je ten hlavny subor a co k comu vlastne patri. Hnusne C++ :?
Tak som pohladal nieco o MS CAPI (CryptoAPI), co je nieco podobne ako PKCS #11, ale mrkvosoftacke. Tam je dokumentacia lepsia, aj zdrojaky su lepsie, ale zase v tom odpornom C-cku a este aj WinAPI, ktore vobec neovladam.
Existuje vobec nejaky rozumny sposob, ako takyto modul naprogramovat? Alebo existuje nejaky hotovy PKCS #11 modul, ktory by presmeroval poziadavky, ktore dostava, beziacej sluzbe, ktoru si naprogramujem pekne v C#.NET? Stve ma, ze cela diplomka pada na tomto :(
pipiak
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 321
Registrovaný: 11 jún 2006, 9:24
Bydlisko: KE
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa pipiak »

netusim ,ale mam nejake kniznice v C# co riesia tieto veci...tvorbu certifikatov a pod...okrem toho nejake matematicke funkcie na vypocty hashov a pod su implementovane v C# cize to je vpoh. na cryptoapi sa da dostat tiez a je k tomu aj dobra dokumentacia podla mna...

A vpodsate vysledkom ti bude certifikat .crt ktory mozes vyuzivat v inych aplikaciach.
Len osobne vobec nerozumiem tomu naco chces pouzivat ten telefon,teda ze co v nom chces programovat. Lebo ak ma on robit vsetky veci tak potom don posli aj subor a urob v nom vsetky operacie. A ked to ma byt len ulozne zariadenie ,tak potom zase opacne bude vsetko v PC
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa Mek »

pipiak napísal:Len osobne vobec nerozumiem tomu naco chces pouzivat ten telefon,teda ze co v nom chces programovat. Lebo ak ma on robit vsetky veci tak potom don posli aj subor a urob v nom vsetky operacie. A ked to ma byt len ulozne zariadenie ,tak potom zase opacne bude vsetko v PC
Pretoze v telefone bude sukromny kluc v bezpeci :) To je to, na co sluzia aj kryptograficke tokeny samotne. Do telefonu sa nebude posielat samotny subor, lebo ten moze byt dost velky (predstav si, ze chces podpisat 700megove AVIcko :) ), ale iba jeho hash.
Inac, trochu som sa do toho oprel, poriadnejsie si nastudoval to PKCS#11 a podarilo sa mi nakodit ten DLL subor v C++. Sice po jeho nacitani Thunderbird spadne, ale to je dobre znamenie, ze idem spravnym smerom :) (mam implementovanych len par funkcii, neimplementovane funkcie vracaju hodnotu CKR_FUNCTION_NOT_SUPPORTED). To si uz oddebugujem, aj tak este raz vdaka za ochotu :)
--==[ RA ]==--
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 841
Registrovaný: 03 mar 2006, 18:07
Bydlisko: Kosice
Kontaktovať používateľa:

Re: Ako spravit kryptograficky token zo smartphonu

Príspevok od používateľa --==[ RA ]==-- »

No daco som s kriptovanim uz robil (PKCS#7) to je cca to iste...
Na zakriptovanie je potrebny sukromny kluc (alebo certifikat ktory ho obsahuje), ten bude ulozeny v telefone a telefon nikdy neopusti koli bezpecnosti. Zo suboru, ktory je potrebne podpisat by sa mal urobit hash, ten by sa mal poslat do telefonu a podpisat, to by sa malo vratit spet do PC a by sa mala vytvorit PKCS#11 struktura ktora by mala obsahovat subor, kryptovany hash a certifikat iba s verejnym klucom.
Ja som to robil v jave a bol to len jedoduchy program do ktoreho sa vlozil subor a ten vyhodnotil podpis, podla tohoto som postupoval:
http://download.oracle.com/docs/cd/E174 ... ensig.html
a tu je struktura PKCS#7, mozno na tej stranke nasjdes aj strukturu 11
http://www.cpress.cz/knihy/tcp-ip-bezp/CD-pem/pkcs1.htm
Napísať odpoveď