AVR ve PIC denetleyicilerinde ürün yazılımı koruması


23

Birisi onlara verdiğim bir mikrodenetleyicide yazdığım HEX dosyasını çıkarabilir mi?

Bu mümkünse, birileri kodlarının gömülü sistemlerde güvenli olduğundan nasıl emin olabilir? PIC ve AVR mikrodenetleyicileri durumunda, bir ürün yazılımı yeniden üretilmekten nasıl korunabilir?



1
# 1 durumunda, hex dosyasını müşterilerinize vermeyi önerdiğiniz görülüyor, bu durumda birkaç klon cihazına yazabilirler, mümkün olmasına rağmen kodu çözmeye gerek yoktur . Kilitli bir cihazda (# 2), genellikle kodu almak için ne kadar kararlı oldukları (başka bir deyişle, ne kadar harcamaya hazır oldukları) bir meseledir, ancak genellikle mümkündür.
alexan_e

1
iki yıl oldu, ancak bu günlerde korunma, popüler cihazlar için ortalama olarak bir veya iki günde mağlup olma eğilimindedir. temelde bir kez karar vermeye değer olduğuna karar verdiğinde. Eğer gerçekten güvenlik istiyorsanız, çip işine girmeniz gerekiyor, raftaki ticari parçalardan hiçbirini alamayacaksınız.
old_timer

Yanıtlar:


33

Bugünlerde çoğu mikro kontrolör gömülü üretici yazılımı kodunu korumak için parçaya veya üreticiye özgü yöntemlere sahiptir. Bu genellikle normal olarak kod belleğinin okunmasına izin veren devreleri kilitleyerek yapılır. (Veri sayfasında ya da geçerli uygulama notlarındaki üreticilerin web sitesinde kısmi ayrıntılara bakmak zorunda kalacaksınız).

Kilitlendikten sonra normal teknikleri kullanarak kod belleğini okumak mümkün değildir. Bu, çoğu bilgisayar korsanının gömülü uygulamanızın makine kodunu görüntülemesini engellemek için makul bir koruma düzeyi sağlar.

Bugünlerde birçok MCU cihazı, program kodunu değiştirmek için yerleşik FLASH belleğe sahiptir. Daha önce FLASH'da depolanan ve korunan bir program genellikle yeni kodla değiştirilebilir ancak koruma mekanizmasının kilidini açmak için tam bir çip FLASH silme işlemi gerekir. Silinen parça, orijinal koruma kilidinden önceki gibi çalışır. Yeni bir program yüklenirse, yeni yüklenen makine kodunu korumak için parçanın tekrar kilitlenmesi genellikle mümkündür.

Mikrodenetleyicilerde kod korumayla ilgili herhangi bir tartışma, parça üreticisi tarafından sunulan herhangi bir koruma düzeninin aptal olduğunun garanti edilmediğinden genellikle söz edilmeden tamamlanmış sayılmaz. Üreticiler, koruma sistemlerinin% 100 aptal olmadıklarını bile belirtecekler. Bunun nedenlerinden biri, bir ücret karşılığında çalışkan bilgisayar korsanlarının, ödeme yapmak isteyen herkes için korunan bir bölümden kod okuyacağı bir karaborsa endüstrisi olduğudur. Korumalı mikro kontrolörlerde kodun ROM'lardan veya FLASH'lardan okunmasına izin veren çeşitli şemalar geliştirdiler. Bu programların bazıları inanılmaz derecede zekidir ancak bazı ailelerde diğerlerine göre daha iyi bir başarı için çalışmaktadır. Öyleyse bu gerçeğin farkında olun, ardından programınızı meraklı gözlerden korumaya çalışırsınız.

Biri bir mikrodenetleyiciden okunan makine kodunun ikili görüntüsünde ellerini tutarsa, korumalı bir mikrodenetleyici olsun ya da olmasın, makine kodunu bir disassembler adı verilen bir araçla işleyebilir. Bu, ikili veriyi, programınızın algoritmalarının nasıl çalıştığını öğrenmek için çalışılabilecek derleme dili koduna dönüştürür. Makine kodunun doğru bir şekilde sökülmesi, çok fazla iş gerektirebilecek özenli bir iştir. Sonunda işlem, tarif ettiğim gibi assembler koduna yol açabilir. Programınız C, C ++ veya Basic gibi bazı yüksek dilde yazılmışsa, montaj kodu yalnızca programınızın derlenmiş ve bağlantılı sonucunu gösterir. Çalınan kodun mühendisliğini yüksek dil seviyesine kadar geri döndürmek genellikle mümkün değildir.

Bunun anlamı, gömülü uygulama donanım yazılımınızı yüksek seviyede bir dilde yazmanın bir faydası olduğudur. Programınızın tamamen tersine mühendislik edilmesini zorlaştıran başka bir katman sağlar. Gömülü uygulamayı derlemek için derleyicileri optimize etmede en yüksek teknolojiyi kullanarak daha da büyük bir fayda elde etmek gerekir, çünkü en yüksek performans optimize edicileri, programı tam anlamıyla çok zor olan düzinelerce çağrı ile dolu büyük bir spagetti kabına dönüştürebilir. bir sökme cihazında deşifre etmek.

En deneyimli yerleşik geliştiriciler, uygulamanızdaki MCU'da sunulan herhangi bir koruma düzenini kullanmanıza devam etmenizi ve bunun ürününüz için yolun sonuna bağlı olmamanızı söyleyecektir. Rakiplerin önünde durmanın en iyi yolunun, ürününüzün sürekli yükseltilmesi olduğunu, böylece eski sürümlerin korsanların kodunuzu klonladığı zamanın ilgisini çekmemesini sağlamaktır. Kodunuzu değiştirin, yeni özellikler ekleyin, zaman zaman tüm G / Ç'lerinizi ve aklınıza gelebilecek diğer şeyleri değiştirmek için PC kartlarınızı döndürün. Bu şekilde yarışı her seferinde kazanabilirsiniz.


Çok teşekkür ederim @Michael Karas Bu tam bir cevaptı
Rookie91

12

Michael'ın cevabı bu soru için yeterli olduğunu düşünüyorum ama bu ikisi bağlantıyı ekleyin: PIC 18F1320 Hacking ve yaptıkları her şey, biz kırabilir! Bu ikisi de benim için çok ilginçti.


Gayretli EE geçtiğimiz bağlantıyı incelemek, ve araştırma / karşılaştırmak / cihaz (lar) ın almalı eksik listeden. Karmaşıklık her zaman daha caydırıcıdır - örneğin bir DS3641 veya ATSHA204 eklemek gibi . Hiçbir ek güvenlik hiçbir zaman% 100 kırılmaz olmayacak olsa da, eklenen karmaşıklık buna değmez hale getirebilir.
rdtsc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.