Kontrola poctu kusu - firmware

Lubos Medovarsky lubos.medovarsky@accelera-networks.com
Pátek Červen 27 00:14:56 CEST 2008


Hm, zaujimave.

Zopar rokov dozadu som navrhol system, ktory pekne fungoval
a dal by sa "poohybat" na podobne ucely.

Ten system spocival vo vygenerovani vacsieho poctu pre
"beznych smrtelnikov" zvladnutelne velkych seriovych cisel
(SN), ktore si zaujemci mohli kupit v predajni, zabaleny
do obalky. Cize napr. serie 1*10^9 az 2*10^9 -1, nahodny
vyber v mnozstve napr. 1*10^5. Tym bolo na "rozumnu
ekonomicku mieru" stazene zaregistrovat neexistujucu
kopiu nasho softveru. Tak trosku "security through obscurity".

Vo Vasom pripade to moze byt nejake jedinecne cislo v MCU,
pripadne niektory z obvodov s jedinecnym SN, pripojitelny napr.
po i2c alebo spi. Skvele by bolo mat ich precitane do Vasej
databazy tak, aby ste ich VY dodali tomu vyrobcovi.

Cela ta procedura so SN nie je nutna, ale v podstatnej miere
zamedzuje pokusom plagiatorstvo, kedze je tymto evidencia poctu
(aj aktivovanych) zariadeni pod kontrolou.

Nasleduje procedura aktivacie.

Pri prvom starte si nasa aplikacia vygenerovala registracny kod (RC),
Staci akykolvek zdroj sumu (dioda + ADC, cas zapnutia pristroja
+ hash a podobne) to cislo raz vygenerovat a ulozit do trvalej
pamati.

Potom sa aplikacia pripoji k webovemu rozhraniu a posle SN a RC.
V pripade uspesnej procedury zaznamenania SN a RC do databazy,
bol na serveri vygenerovany aktivacny kod (AC), ktory len nami
znamym symetrickym (komplementarnym) algoritmom (napr. md5+xor)
odomykal aplikaciu tym, ze pri starte programu (v tomto pripade
spravne) dekryptoval kus kodu, alebo aspon dolezite premenne,
bez ktorych by dana ficuria alebo full verzia nefungovala.

Vasou vyhodou by oproti kedysi mne danym obmedzeniam bola
moznost prenasat vacsie mnozstva dat (http post), bez potreby
robit privelke kompromisy ohladom velkosti SN, RC a AC kodov.

Ak mate moznost uzamknut programovy kod v pamati MCU,
tak ceresnickou na torte by mohol byt kluc vo firmveri,
ktory by sa dal pekne pouzit pri sifrovani komunikacie
s vasim serverom. Nejake tie AES alebo 3-DES algoritmy
by mali byt lahko dostupne ci uz pre rozne MCU a CPU,
tak aj v PHP/Pythone/Perle/Jave a pod. na strane servera.


Dufam, ze som bol napomocny.


S pozdravom

Lubos Medovarsky
Accelera Networks
http://accelera-networks.com

Ing. Libor Konečný wrote:
> Zdravim
> Mam dotaz ohledne zajisteni kontroly vyrobenych poctu kusu.
> 
> Je schudna tato varianta ? :
> Firmware jako bin/hex soubor pustim z ruky, s tim ze pres interface a 
> nejake zabezpeceni MD5 /base64  pres internetovy interface aktivuji 
> program (dany bin/hex soubor)  napaleny  do MCU.
> Program pak zapise do MCU FLASH nejaky retezec a ten pak pri startu 
> precte = aktivovany firmware.
> Sitovy interface posle zaznam do databaze +1 v poctu programovanych kusu.
> 
> Je toto reseni schudne ?
> 
> Kdyz dam binarku, jake algoritmy pro testy a aktivaci bych mel pouzit, 
> aby  to nebylo jen tak jednoduche disasemblovat/interpretovat a obejit 
> tuto fintu ?
> 
> Program ma velikost cca 12 kilo instrukci.
> 
> Dekuji
> LK
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 
> 



Další informace o konferenci Hw-list