Ynt: Tutsak yazilim felsefesi - Cipe Uzaktan kod yuklemek

Başlatan z, 26 Nisan 2014, 14:40:16

z

1. Amac: Uzaktaki bir kart ustundeki islemciye yukletecegim programi gizlemek.
2. Amac: Bu karta bir baskasinin kod yuklemesini engellemek.

Asagida adi gecen ZIOS'un ARM konusunda bahsedilen ZIOS ile alakasi yoktur.

Ozgur yazilim felsefesinin tam zitti olan Tutsak yazilim felsefesinde asagidaki ipuclari bile cok gizli olmalidir.
Fakat bunlari aciklamayi sorun olarak gormuyor ve sizlerle bu konuda fikir cimlastigi yapmak istiyorum.


ZIOS, STM32F103C8 icine yuklenmis mini isletim sistemidir.

ZIOS;

Power on asamasinda  OSC, SD kart ve LCD ayarlamalarini yapar ve SD kartda
PROGRAM.ARM uzantili dosyayi arastirir.

Eger adigecen dosya bulunursa bunu LCD ekranda, cipe yuklemeyi isteyip istemediginizi sorar,
YUKLE cevabi verilmisse programi cipe yukler.

------------------------

Cip korumalidir. ZIOS isletim sistemine ait kodlar cok gizlidir ve cip JTAG ile
izlenemez. "PROGRAM.ARM" adindaki dosya Keil ile uretilen CPU kodlarinin, PC de ozel
bir program tarafindan kriptolanarak elde edilmesiyle olusturulur.

ZIOS bu dosyayi okur ve hata testinden gecirir. Boylece dosyanin bozulup bozulmadigini
anlar. Bozuk ise yukleme islemini sonlandirir ve LCD ekranda hata mesaji verir.

Eger dosya saglam ise kripto acilir ve cipe yuklenir ve ardindan yuklenen program
kodlari kosturulur.

Eger yukleme yapilmayacaksa cip uzerindeki mevcut eski program isletilir.

------------------------

Program.Arm dosyasi gizli değildir. Internetten vs dagitilabilir.

Brute force yapmak amaciyla karta sahte "Program.Arm" dosyasi yuklenmeye calisilirsa
LCD den verilecek uyari mesaji icin acele edilmez. Boylece pes pese yapilacak ataklarin
suresi uzatilir.

Bu esnada kodlarin yapacagi RF yayilimin ip ucu vermemesi icin ZIOS kodlarinda TEMPEST
konusuna dikkat edilmistir.

------------------------

Bu onlemler sayesinde kartin uzerinde istegim disinda kod kosturulmasi engellenmis olur.
Ayrica internetten dagittigim kodlarin kopya kartlarda islemesi engellenmis olur.


Bu konu ile ilgili olarak daha once hic kullanmadigim MPU unitesini de isleri zorlastirmak adina devreye almam ve yazilimi privileged ve user parcalarina ayirmam gerektigini dusunuyorum. Su anda tum yazilimin privileged seviyesinde olmasi beni korkutuyor. SD karttan yukleyecegim kodlarin kesinlikle user seviyesinde kalmasi gerekiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

Lcd de bilgi vermesin. Yapilan işlem dogru da olsa yanlis da olsa hemen belli olmasin. Zor kirilan programlar boyle olur.


z

Bir sekilde bilgilendirme yapmak zorundayim. Aksi takdirde kartin bana ulastirilmasi yada benim kartin yanima gitmem gerekebilir. LCD'de bahsettigin bilgi verme meselesini astim.

Islem basladiktan sonra sabit olarak 10 sn sonra program yuklendi yada yuklenmedi mesaji verirsem yeterince zorluk cikartmis olurum.

Bu 10 sn yi islemcinin hangi komutlarini calistirarak doldurdugum konusuna ise ozellikle dikkat ediyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kimlenbu

RF olayına nasıl dikkat edeceğiz ? Adamlar vga sinyallerini bile alıp ekran görüntünü oluşturabiliyorlar.

z

Sahte bir program yuklenmeye calisiliyorsa sende iceride sahte bir flash programlama kodu isleteceksin.

Eger boyle yapmaz da 1,2,3,4.... diye sayi sayarak 10 sn yi doldurmaya calisirsan yada benzeri gecikmeler yaparsan cipten yapilan RF yayilim, yuklenmeye calisilan programin uyusmadigini 10 sn den cok daha once zaten soyleyecektir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

RF yayınıma bile önlem aldığınıza göre , amatörlerin yanında  tersine mühendislik uzmanlarına karşı da önlem almaya çalıştığınızı düşünüyorum.
Amatörlerde işe yarar. ama kartınızı ve yazılımınızı kafaya koymuş biri için işe yarayacağını düşünmüyorum.
ARM'da durum nedir bilmiyorum ama Atmega ve PIC'i  Çin'e gönderip  içindeki korumalı kodları elde eden birini tanıyorum.

z

Bahsettiğin durum için boynumuz kıldan ince.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

OG

Ben bu işi teorik bazda ancak şöyle düşündüm (denemiş değilim). Hatta bootloaderla çalışmış da değilim. Yükleme sonrası yüklediği alanın sigortalarını okumaya kapatabiliyormu onuda bilmiyorum.

İşlemci içine 2 adet program yüklü. Birisi bootloader birisi decrypt. Veya ikisinin bütünleşmiş hali.

Botloader malum, dışarıdan gelecek hexi ilgili yedek alana atacak ama decrypt ederek. Bu şifreleme gerek adres gerek data şifrelemesi veya her ikisinide içerir. Bunları çözerek cipe yazar.

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Analyzer

Selam,

İlk mesajı okuduğumda Asprotect yazılımı aklıma geldi. Envelope->Decrypting->Self Checking->Depacking işlemlerini
sırasıyla yaptırmak lazım. PE korumaların unpack tutoriallerine bakmak lazım kurguyu anlamak için. Sonuçta istenen
koruma işi win32 programlarında yıllardır yapılıyor.

Analyzer
Üşeniyorum, öyleyse yarın!

t2

Alıntı yapılan: z - 26 Nisan 2014, 15:05:47
Bir sekilde bilgilendirme yapmak zorundayim. Aksi takdirde kartin bana ulastirilmasi yada benim kartin yanima gitmem gerekebilir.
Ekranda durum kod = 6546 gibi kodlar çıkacak. uzaktan telefonla sorulacak.
- ekranda ne çıktı?
-durum kod 2569
- Tamam ozaman işlem kod 6598 girin.

denecek. her müşteride başka başka kod çıkacak. belki de bu kodların anlamı hiç olmayacak. adam kodu girse de girmese de program bildiğini okuyacak kafa karıştırılacak. her kullanımda ayrı kod çıksın durum koda göre ne işlem gerekiyor deyip tabloya bakar veya uyduracağınız bir işlem kodu girebilirsiniz. bu yapılanlar hiç biri anlamlı olmaz. hedef şaşırtırsınız.

Benim başımdan geçen  bir olay anlatayım. Windows 8 yeni çıkmıştı. kampanya vardı 75 TL ye mi ne aldım kurdum. korsan windows7 yi update ettim windows 8 oldu.

pc bozuldu o diski çıkardım  başka pcye taktım etkinleştime gerekiyor dedi internetten kendi kendine etkinleştirdi.

iyiymiş bu dedim sonra o pcyi sattım aynı diski başka pcye taktım. yine aynı durum fakat bu sefer etkinleştirme sunucusu sayıyı aştınız size artık etkinleştirme yok dedi.  Sonra ilaçlama yaptım. 1000 tane daha etkinleştirme hakkınız var size full dedi.


BUnunla ne alakası var bilemiyorum bir şekilde uzaktan kontrol etmeniz anahtar sizde olması lazım. Sistem ara sıra sunucuya bağlanıp bilgi aktarmaz ise kendini kilitlesin veya imha etsin denebilir.

camby

#10
i.mx datasheet'lerini karıştırırken şöyle bir özellik gördüm :

Alıntı Yap— Secure boot using 128-bit AES hardware decryption

Boot kripto'lu heralde dedim ve biraz daha karıştım şu tabloyu gördüm :

i.MX28 Boot Modes:
Alıntı YapPORT BOOT MODE
USB Encrypted/unencrypted USB slave boot mode
I2C Encrypted/unencrypted I2C0 master—boots from 1.8 V and 3.3 V EEPROM
SPI2 Encrypted/unencrypted SPI2 master from SSP2—boots from 1.8 V and 3.3 V Flash memory
SPI3 Encrypted/unencrypted SPI3 master from SSP3—boots from 1.8 V and 3.3 V Flash and EEPROM
SSP0 Encrypted/unencrypted SD/MMC master from SSP1—boots from 1.8 V and 3.3 V 1-bit, 4-bit, and 8-bit
SD/MMC/eSD/eMMC cards
SSP1 Encrypted/unencrypted SD/MMC master from SSP2—boots from 1.8 V and 3.3 V 1-bit, 4-bit, and 8-bit
SD/MMC/eSD/eMMC cards
GPMI Encrypted/unencrypted NAND, 1.8 V and 3.3 V, 8-bit wide, BCH2 to BCH20
JTAG Wait JTAG connection

Hocam herhalde anladığım kadarıyla OTP'nin içine , 128-bit AES key'ini bırakıyorsun , sonra kodu kriptolu atabiliyorsun CPU'ya USB'den. Key'de zaten okuma korumalı olması yeter sanırım.

Herhalde diğerlerinde de vardır diyerek F4'ün kriptolu modellerini inceledim fakat böyle bir donanımsal secure boot özelliği göremedim. Diğer markalarda nasıl bilemiyorum.

Yazılımsal boot yazamaya kalkışırsan olabilir tabi.

Kaynak: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX287&fpsp=1&tab=Documentation_Tab


z

CM3 islemcilerde asagidaki soruna cozum getiremedim. Getirebilmeyi isterdim.

ZIOS tamamen gizli bir mini isletim sistemi. Cipe bunu ben yerlestiriyorum ve ardindan cipi/ karti piyasaya veriyorum.

ZIOS,  kriptolanmis harici programlarimi da okuyor cozuyor ve cipe yukluyor. Yani isletim sistemi calistirilabilir program parcaciklarini disaridan (USB, SD card vs) okuyup Flash'a yukleyebiliyor.

Bu harici programlari da mecburen ben yaziyorum.

Peki baskalarinin da program yazmasina izin verebilirmiyim? Evet baskalari da yazabilsin istiyorum.

Ben kriptolanmis program yazar ve internetten dagitirim. Kimse benim kodlarimi goremez ama kartima yukleyebilir. (Bu ozellikle istedigim bir sey)

Musterim ise kendi programini yazip kriptolamadan cipe yukleyebilir. ZIOS buna aracilik edebilir.

Sorun:

Fakat musterim iceriye (Flasha) kod koydugu anda ZIOS'u kendi programina okutup disariya sizdirabilir. Bu da benim icerideki kripto algoritmalarimin ve kritik rutinlerimin su yuzune cikmasi demek.

L,  CM2,  CM4 serilerinde buna engel olacak mekanizma cip icinde donanimsal olarak kurulmus vaziyette. Gel gelelim CM3 icin bu mekanizmayi yapmamislar.

Sizin cozum oneriniz varmi?

Aslinda bu soruna bir cozumum var gibi. Fakat MPU unitesiyle hic ilgilenmedigim ve hakkinda detayli bilgim olmadigi icin cozumumden emin değilim.

Eger, MPU unitesi sayesinde kullanicinin RAM'dan kod isletmesine engel olunabilirse musterimin kodlari icerideki programlarimi asla calamaz. Daha dogrusu musterimin boyle bir niyeti oldugunu anlarim ve kodlari cipe yukletmem.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hgs

Bu kadar korunan kartın fiyatı nedir? Ve satış adedi nedir?

muhittin_kaplan

hgs, hocam bazen fiyat ve satış adedi önemsizdir. birtane ve bedava (mesai ve adam/saat ücretidir) yaparsınız.

hgs

Askeri bir iş yapıyor olsanız anlıyacagım. Yada cok spesifik bir iş olsa anlıyacağım. Teknoloji saklamak gerektiriyordur vs... 

Burada z nin ugrastıgı motor sürücü kartı için bu kadar evhamlanmaya gerek yok. Birine verilirse belli bir para ve kartın bir tane örneği yenisi tasarlanabilir.
Koruma için 3. 4. 5. önlemler çok gereklimi diye düşünmek gerek. Basit adamlara ilk 1-2 koruma adımı yeterli gelir zaten.  Yoksa biri kartı kopyalayacaksa kopyalar. Sadece devreyi görmesi ve cihazın özelliklerini broşürden okumak bile yeterli olabilir.

Devreyi epoksiye yatırmak bile baya araştırıldı. Bunlara bu kadar zaman harcanacağına cihazın daha yeni modelleri, yazılım desteğinin sürdürülmesi, ürünün arkasında yılları aşacak şekilde durmak daha etkin bir yöntemdir.

Baya üstün bir teknolojinin üretildiğini de düşünmüyorum.