zabezpieczenie programu w zewn. pamięci ?

Aug 19, 2010 14 Replies

No to tym razem z innek beczki... Zastanawiam się - załóżmy, że mam jakiś MCU z zewnątrzną pamięcią (czy to flash, czy to SD jakieś) - i trzymam tam program. Jak zabezpieczyć się przed kradzieżą ? Są jakieś sprawdzone sposoby ?



W dniu 2010-08-20 00:52, sundayman pisze:

To te pliki graficzne są tak cenne, że ktoś ci je będzie chciał skraść?

Użytkownik "sundayman" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:i4kcjp$2vv$ snipped-for-privacy@news.onet.pl...

Ja bym nie stawiał na sprawdzone, bo są znane.

Wyobraź sobie, że zamieniasz linie szyny danych i odpowiednio przekodowujesz zapis w pamięci. Nie do końca wierzę, że jest to do zrealizowania na SD, ale na programie w EPROM to możliwe.

Więc, jeśli ten sposób się rozpowszechni to ile czasu zajmie średnio inteligentnemu hakerowi na "odplątanie" linii danych?

Dla dysków twardych chyba były sprzętowe moduły szyfrujące. Czy to wystarczające zabezpieczenie przed kradzieżą?

A teraz inny aspekt: Często samym "patentem" jest interfejs programu. Czy jest jakiś problem żeby go napisać innym kodem?

Więc: Co chronimy, przed kim, i za ile. Czy chodzi o "niekopiowalny" klucz sprzętowy?

Feromon

sundayman pisze:

Zależy przed czym chcesz się zabezpieczyć, czy przed powielaniem programu, czy przed dekompilacją.

Chodzi mi generalnie o program, a nie pliki graficzne... Po prostu zastanawiam się, jak rozwiązać zabezpieczenie aplikacji przed skopiowaniem. Produkt jest komercyjny i dobrze by było, żeby jakoś zabezpieczyć się przed prostym skopiowaniem.

Nie, chodzi o rodzaj sterownika (MCU + LCD + ładne GUI). Prawdopodobnie to będzie ARM9, ale pytanie mi się nasunęło generalne - w przypadku, kiedy program nie siedzi w samym MCU, zabezpieczony "fusebitami", to jak chronić program ? (przed skopiowaniem, odczytaniem, czy jak kto woli). Jak wiadomo, sprzętowo tutaj Ameryki odkrywać nie będę, cała "wartość" to głównie program (a przecież będzie musiał siedzieć w zewnętrznym flashu).

No, bo wyobrażam sobie, że być może skuteczne byłoby jakieś "szyfrowanie w locie", ale pewnie byłaby to masakra... I dlatego pytam, czy może są jakieś gotowe "rozwiązania" , czy też "metody".

Chronic mozna na rozne sposoby, tylko pytanie czego sie boisz:

-ze ktos to wszystko skopiuje w calosci,

-ze ktos twoj program odczyta i wszczepi do swojego sterownika,

-ze ktos go zdeassembluje i pozna twoje najtajniejsze algorytmy.

W wielu przypadkach ambitniejsze zabezpieczanie sie po prostu nie oplaca - to nie iphone ani nokia, zeby oplacalo sie kopiowac.

O ile pamietam to sa procki ktore deszyfruja sobie program w locie.

J.

Użytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news: snipped-for-privacy@4ax.com...

swoją drogą, "proste" skopiowanie może służyć tylko do zrobienia "prostej" kopii urządzenia - czy naprawdę ktoś będzie identycznego urządzenia potrzebował (i skompletuje identyczny hardware)?

e.

Użytkownik "sundayman" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:i4kcjp$2vv$ snipped-for-privacy@news.onet.pl...

Nie przed kradzieżą, tylko przed skopiowaniem :) Jeśli chcesz się zabezpieczyć tylko przed zrobieniem prostej kopii, umieść w urządzeniu coś niepowtarzalnego w każdym egzemplarzu (np. cokolwiek mającego nr seryjny, kawałek programowalnej logiki, malutki procesorek z jakąś logiką sekwencyjną itp) lub coś w procesorze o ile się da (wewn. flash?). Kiedyś były robione jakieś cuda z przeplataniem nóg pamięci, albo z logiką TTL na sygnałach pamięci, ale to bez sensu (utrudnienie głównie dla Ciebie). Przed bardziej skomplikowanymi akcjami IMHO też nie warto się zabezpieczać przy takim urządzeniu.

e.

W dniu 2010-08-20 15:01, sundayman pisze:

Pisałeś że potrzebujesz zewnętrzną pamięć bo masz dużo danych. Procesorki mają teraz nawet do 512kB Flasha na program. Jesteś pewien że potrzebujesz zewnętrznej pamięci dla programu? Procki mają zazwyczaj możliwość zablokowania odczytu wewnętrznej pamięci flash prze ISP czy JTAG.

W dniu 2010-08-20 00:52 sundayman napisał(a):

A nie masz w ogóle wewnętrznego Flasha? Często się przydaje nawet mały - ot choćby do trzymania algorytmu i kluczy deszfrowania (a właściwy większy soft śmiga po zabootowaniu w RAMie).

Nawet jezeli, to i tak z reguly taniej od nowa zaprojektowac. Zwlaszcza skoro tam ma byc, bez urazy dla OP, 'mcu + lcd + ladne gui' - a nie supertajny algorytm sterowania maszyna do druku pieniedzy.

Tylko pod warunkiem ze w wewnetrznym - bo z zewnetrznego ramu grzecznie sobie przeczytasz jak juz procek rozszyfruje.

W dniu 2010-08-22 23:47 Jerry1111 napisał(a):

No jasne. Chyba że procek ma wsparcie do szyfrowania RAMu w locie (jak chipy kartowe).

Na razie to nie wiem, bo jestem na etapie wyboru procesora :) Tyle wiem, że raczej jakiś ARM9 powinien to być, z uwagi na to, że chciałbym dać na tym Linuxa + QT. Ewentualnie druga opcja - android. Ale raczej QT jednakowoż.

Urządzenie jest , można powiedzieć "domowe", więc nie jest to element broni masowego rażenia :) Ale, klient jednakowoż zadaje kłopotliwe pytania co do zabezpieczenia softu :) A, że mozna oczywiście (zapewne najłatwiej) taki soft napisać od nowa, i to od razu po chińsku, to inna sprawa...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required