Bir mikrodenetleyiciyi yazılımla fiziksel olarak imha etmek mümkün müdür?


29

Varsayımlar:

  • Harici devre bağlı değil (doğru olduğunu varsaydığımız programlama devresi dışında).
  • uC hatalı değil.
  • İmha etmekle, onu mavi bir duman dumanı olarak bırakmayı kastediyorum, yazılımın üstüne atmak değil.
  • Bu bir "normal" uc. Bazı çok garip bir milyonda bir çok amaçlı belirli bir cihaz.

Hiç böyle bir şey olduğunu gören oldu mu? Bu nasıl mümkün olaiblir?

Arka fon:

Bir toplantının konuşmacısı, bunu yapmanın mümkün olduğunu (hatta o kadar da zor olmadığını) söylemiştim ve bazı insanlar onunla hemfikirdi. Bunun olduğunu asla görmedim ve onlara nasıl mümkün olduğunu sorduğumda gerçek bir cevap alamadım. Şimdi gerçekten merak ediyorum ve biraz geri bildirim almak isterim.


3
Bunun gerçekleşmesi için tek uygulanabilir yol olan IMO, bir pimin fiziksel olarak VCC / COM'a bağlı olması ve bahsedilen pimin, aşırı akım durumuna neden olacak şekilde bağlı olduğu şeyin karşısına sürülecek şekilde yapılandırılmasıdır. Fakat bu birleşik HW / SW hatası.
Shamtam

6
Pek çok denetleyicide, yazılım denetimi altında yazılabilen ve aşınmaya tabi olan flaş vardır. Belleği kısa bir süre içinde kullanan yazılım çipi “yok etmek” olarak sayılır mı?
supercat

1
Sekonder @ supercat'ın EEPROM veya flaş aşınması konusundaki gözleminin yanı sıra (birkaç dakika içinde EEPROM'u dışarıda bırakmak mümkündür), fiziksel olarak tahrip edilmiş bir cihaz ile tuğladan yapılmış bir kullanıcı povunda birçok durumda çok az bir fark olduğunu ekleyeceğim. 'ürün. Fabrikaya geri dönmesi gerekiyorsa, hemen hemen aynı görünüyor.
Spehro Pefhany


3
@Roh Zaten bir çip yaktım, çünkü donanım adamı PCB üzerindeki Vcc ve GND pinlerini değiştirdi. (Sanırım yonganın yerine düşen bir damla olmasına rağmen ... Öyle değildi.) Duman ve yanmış plastik vardı. Uzun sürmedi, ancak tel bu şekilde hayatta kalabilir.
Mishyoshi

Yanıtlar:


20

Tabii ki, HCF talimatı ile yapabilirsiniz !

Bununla birlikte, güç ve bunun dışında herhangi bir harici devre olmadan bunun imkansız olduğunu söyledim.

Amaçlı olmayan bazı hatalı bağlantılar dahil olsa bile, muhtemelen kesmeyecektir: tüm gpios'ları bir güç rayına bağlarsanız, onları oldukça fazla güç harcayan çıkış (karşı güç rayına) olarak ayarlarsanız. Bir gpio pimi muhtemelen kısa devreye karşı korunur ve bu nedenle zararlı hiçbir şey olmaz.

Çipi yok eden bir dış devre tasarlamak, benim görüşüme göre önemsiz değil. Akla gelen ilk şey, biraz yüksek voltajlı güç kaynağına, nmos'a ve bir rezistöre ihtiyaç duyuyor:

şematik

Bu devreyi simüle - Şematik kullanılarak oluşturulan CircuitLab Nerede:

  • mikro, bazı 3v3 ila 5V arasındaki normal besleme kaynağıdır veya ne gerekiyorsa gereklidirVCC
  • HV, voltajın mikro mutlak maksimum değerlerin oldukça üzerinde olan bir beslemedir
  • D1, değerli 3V3 voltaj kaynağınızı korumak için var
  • Mikro toprağa tutmadığında R1 mosfet kapısını yukarı çeker
  • M1 belirlenen katildir

işlem basittir: mikro GPIOx M1'i serbest bırakırsa, Vcc yükselir ve çipiniz alev alır. Bunun berbat bir kurulum olduğunu unutmayın; örneğin , GPIOx'un sağlam şekilde zeminde tutulduğundan emin olduktan sonra HV'nin açılması gerekir. Bazı transistörler bazı -5V Vgs'lerden hoşlanmayabilir, vs.


3
HCF referansını seviyorum.
yer tutucu

Hey, kontrol etmem için bana yeni bir dizi verdiğin için teşekkürler!
OJFord

@OllieFord Ne hakkında konuştuğunuzdan emin değilim ...
Vladimir Cravero


15

Feragatname: supercat bunu ilk yorumda yaptı.

Aslında, çoğu MCU'yu fiziksel olarak imha etmek mümkün olmamakla birlikte, kullanılamaz olduğu bir noktaya kadar arızalanmaya başlamak için yeterince giymek mümkündür. TI’nin MSP430’unda deneyimim var, işte burada:

Bu MCU'lar tüm flaşı herhangi bir zamanda yeniden programlamaya izin verir. Flaşı, başarısız olana kadar milyonlarca kez yeniden yazarak takmak mümkün değildir, ancak çip üzerindeki flaş programlama jeneratörü, programlama jeneratörü yanlış yapılandırılmışsa alt uç işlemcide arızaya neden olabilir. Bunlar programlama için izin verilen bir frekans aralığıdır. Bu aralığın dışına çıkıldığında (daha yavaş), programlama süresi aşırı uzun olabilir ve flaş hücrelerinin bozulmasına neden olabilir. Yalnızca birkaç yüz devirden sonra, kalıcı hücrelere neden olan flaş hücrelerini "yakmak" mümkündür.

Ayrıca, bazı modeller iç voltajı artırarak daha yüksek hıza ulaşması için çekirdeğin overclock edilmesine izin verir. MCU, 1.8-3.6V voltaj beslemesinden çalışır, ancak çekirdeğin kendisi 1.8V'de çalışacak şekilde tasarlanmıştır. Tüm G / Ç'leri değiştirirken 3.6V güç rayı üzerindeki çekirdeği çok fazla overclock ediyorsanız, tüm çevre birimlerini etkinleştirir ve küçük bir kapalı durumda yanan 40MHz (normalde daha büyük modellerde maksimum 25MHz'dir) çalıştırabilirseniz aşırı ısınma nedeniyle çekirdek. Aslında bazı adamlar bu frekansları elde ettiklerini söylediler (genellikle DCO daha önce başarısız olur ve çip kurtarılır, ama belki de ...).

Sadece dene?


nit-pick - Flaşın çoğunun 10.000'den fazla yazar olmadığından ve "milyonlarca" çalışmadığından emin olduğuma inanıyorum. Muhtemelen bir şey ifade ederken sabitlemeye değmez.
gbulmer

2
Ah ... Flash aşınması. Bir fotoğrafta EEPROM'a sürekli yazmaya neden olan bir hatam olduğunu ilk defa hatırlıyorum. Tüm süreleri 10 saniye ya da öylesine çalışma zamanıydı. Olanları farketmem bir dakika sürdü :-)
slebetman

6

Stackexchange'e göre - "Bir MCU giriş pimini yüzdürmek gerçekten kötü bir fikir mi?"

Bu çip içinde kaç durumu tarif edilebilir bir açık devre pimi ile hasar görebilir. Düzenleme: bir örnek Spansion Analog ve Mikrodenetleyici Ürünleri diyor ki:

4.1 Bağlantı Noktası Girişi / Kullanılmayan Dijital G / Ç Pimleri
Dijital G / Ç pinlerini girişe bağlıyken bağlı bırakmamanız şiddetle tavsiye edilir. Bu durumda bu pimler sözde kayan duruma girebilir. Bu, düşük güç modlarına ters olan yüksek bir ICC akımına neden olabilir. Ayrıca MCU’ya zarar gelebilir.

Bu sorudaki durum tam olarak açık devre pimleridir.

Yani, bizim görev o sağlamaksa mayıs için olacak pimini zarar verir. Bence 'tuğlalama'nın ötesine geçmek için yeterli.

Bu cevapta tanımlanan bir mekanizma, iki tamamlayıcı transistörün her ikisinin de 'açık' olduğu bir giriş pimini bir orta değer voltajına sürmektir. Bu modda çalışırken, pin arayüzü ısınabilir veya başarısız olabilir.

Bir giriş pimi çok yüksek bir empedansa sahiptir ve aynı zamanda bir kapasitördür. Muhtemelen, komşu pimleri yeterince hızlı bir şekilde birbirine geçiren ve giriş pimini şarj edip onu 'sıcak' duruma itebilecek bitişik pimler arasında yeterli bir bağlantı olması muhtemeldir. G / Ç pimlerinin bu duruma sürülmesi, çipi hasara neden olacak kadar ısındırabilir mi?

(Açık devre piminin kapasitesinin voltaj ikilisi gibi kullanılabileceği bir mod var mı? Hmm.)

Ayrıca flaşın zarar vermesinin yeterli olduğunu düşünüyorum. Çipi işe yaramaz hale getirecek kadar kötü olduğunu düşünüyorum.

Tüm flaş olması gerekmez, ancak yalnızca Power-on, RESET vb. Vektörlerini içeren sayfa. Tek bir sayfadaki limit birkaç on saniye sürebilir.

Bazı MCU'lar için daha kötü olabileceğine dair bir belirti vardı, ancak sağlam kanıtlar yoktu. Birkaç yıl önce bir sunuma katıldım. Bazıları, neden rakiplerin çok daha yüksek flaş yazma özellikli parçalar sunduğunu sordu. (Büyük isimsiz MCU üreticisinin) sunucusu, flash bellek özelliklerinde çok daha muhafazakar bir yaklaşım izlediklerini söyledi. Garanti güvencelerinin endüstri normlarından daha yüksek bir sıcaklıkta tanımlandığını söyledi. Birisi "ne olmuş" diye sordu. Konuşmacı, birçok üreticinin ürünlerinin, kullanım süreleri ile aynı ömürleri olan parçaların ömründen önemli ölçüde daha düşük bir yeniden yazma oranına sahip olacağını söyledi. Hatırladığım kadarıyla 5x <1x olacaktı. Çok doğrusal olmadığını söyledi. Bunu, 25C yerine 80C'de programlamanın “kötü bir şey” olacağı anlamına geldim.

Bu yüzden, çok sıcak bir çip ile birlikte flaş yeniden yazma, 10 saniyeden daha kısa sürede işe yaramaz hale getirebilir.

Düzenleme:
"mavi ölüm dumanını salıvermek" in gerekenden daha zor bir kısıtlama olduğunu düşünüyorum. Şunlardan herhangi biri: RESET pin devresi, brown-out dedektörü, çalıştırma devresi, RC veya kristal osilatör (ve muhtemelen birkaç diğer devre) zarar görebilirse, çip işe yaramaz hale gelir.

Diğerlerinin de belirttiği gibi, flaş patlaması da onarılamaz şekilde öldürür.

"Duman" kulağa etkileyici geliyor, ancak daha az belirgin ölümcül ataklar hala ölümcül ve tespit edilmesi daha zor.


5

Bu tür bir tahribatın potansiyel bir kaynağı, bir çip içerisindeki istenmeyen (içsel) transistörlerin daha sonra bir çok akımı batırabilen bir tür TRIAC oluşturmak üzere bir araya geldiği SCR mandalıdır. Bu kolayca bağlanma kablolarını patlatabilir ve üretilen ısı nedeniyle gözle görülür şekilde bükülmüş plastik kaplı cihazlar bile gördüm.

Bunun tipik nedeni, sırasıyla besleme veya toprak raylarının üzerine veya altına bir girişi sürmektir (bir anlık bile olsa), ancak bir girişin yüzer halde kaldığını görebilirsiniz. Ve girişin değişkenliğinin yazılım tarafından kontrol edildiği bir devre hayal etmek zor değildir (buna rağmen izin verilmesi çok saçma bir şeydir).


4

Çok spesifik bir işlemciyi hedefleyen, amaç için kasıtlı olarak yazılmış yazılımın, işlemcinin aşırı ısınacağı noktaya overclock yapmayı zorlaması mümkün olabilir. Elbette, işlemcinin yazılımla yapılandırılabilir saat kontrol kayıtları içermesi sağlandı.

Elbette TÜM işlemcilerin bu şekilde zarar görmesi mümkün DEĞİLDİR. Eğer bu doğru olsaydı, yine de makine kodunu yazarken, rastgele hatalar yaparak, yazılım yolunda yazılan terazilerle yol kenarına koyan milyarlarca Z80 ve 6800 ve 6502 vardı.


2
Saati yapılandırmak için erişmenize gerek yok. Yazılımı sadece CPU tasarımcısının öngörmediği şekilde çalıştırmanız gerekir. İşte bir Intel Core serisi işlemcide döngü başına teorik 4 FLOPS elde etmeye çalışan bazı kod: stackoverflow.com/questions/8389648/… . Bu kodun CPU'ları aşırı ısıtdığı biliniyor.
slebetman,

1
Bu "güç virüsü" programları ile ilişkili mi?
davidcary

1
@ davidcary, bu benim için yepyeni bir terim. Bununla birlikte, bir dizi saat aç talimatına değil, saat hızının gerçek değiştirilmesine (bazı işlemciler kontrol kayıtlarının manipülasyonu yoluyla saat hızı üzerinde yazılım kontrolünü destekliyor) CPU ya da soğutucudan daha yüksek bir frekansa değiniyordum. başa çıkabilirim.
TDHofstetter

3

Bu benim bir mikrodenetleyiciyi olabildiğince az parçaya mahvetmeye girişim ...

Sadece çıkış pinlerini birkaç kHz'de değiştirin!

Yine de iç arıza moduna bağlı olarak hala duman göremeyebilirsiniz.

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

--Edit, 22 Ağustos eklendi -

Şimdi, verilen kriterleri kullanarak bir mikrodenetleyiciyi mahvedebileceğinizi sanmıyorum. Fakat KOLAY dış devre devrelerini yanlış kodla mahvedebilirsiniz. Akla gelen bir örnek, yakın zamanda tasarladığım basit bir destek dönüştürücü ... basitçe hata ayıklama sırasında bir indükleyicinin bir MOSFET ile toprağa kısalamasına neden olurken kodu duraklatmak. PUF


2
Ben "Bu Adam" olmak istemiyorum, ama Varsayım # 1: "Bağlı harici devre yok"
Radian

1
"O Adam" sizsiniz. Bu yanıtın alt metni "Hayır, böyle bir çipi mahvedemezsin."
Daniel

2

Düzenli kullanıcı modu kodu açısından çipi kıracak bir şey yazabileceğinizi sanmıyorum.

Bununla birlikte, ısı alıcı düştüğünde bir dakikadan veya hatta saniyeden kısa sürede tahrip edilebilecek mikroişlemciler günlerini hatırlıyorum. Ardından, parça çok ısındığında saati azaltacak termal algılama devreleri eklediler. Artık bir kerede kullanılabileceğinden çok daha fazla transistör koyabildiğimize göre, yongalar ısı emicinin harcayabileceğinden daha fazla ısı üretme kabiliyetine ve güvenli olmasını sağlayan güç yönetimi ve termal devrelere sahiptir. Örneğin, bkz. Intel Turbo Boost 2.0. Bu nedenle, güç yönetimi ve termal devre sınırlarını atlayabilir veya yükseltebilirseniz bir çipi eritmek oldukça mümkün görünmektedir. Yani, bunlar yazılım kontrolü altındaysa (hiçbir fikrim yok; belki de BIOS güncellemesi gerekiyor mu?) O zaman, H.264 donanım kod çözme ve kodlama ile birlikte, entegre GPU çalışması ile birlikte bir sürü paralel hiçbir işe yaramaz döngüyü çalıştırabilirsiniz. çip yapabileceğim başka bir şey, her seferde çip hararet ve yayar kadar sihirli mavi duman.


2

En çok STM32 işlemcilere aşinayım, bu yüzden bunlar en çok o aile için geçerli. Ancak, diğer işlemcilerde de benzer yaklaşımlar mümkün olabilir:

  1. Kalıcı bir yazma koruma modu var. Bu yüzden, o parçayı ve FLASH'a bazı yararsız programları programlarsanız, MCU bir daha asla kullanılamaz. Bunun 'tuğla' olarak sayılıp sayılmadığını bilmiyorum, ama kalıcı bir donanım mekanizması içeriyor.

  2. Programlama pimleri GPIO olarak yeniden yapılandırılabilir. Saat pimi programlama cihazı tarafından sürüldüğü için kısa devreye neden olmak için kullanılabilir. Büyük olasılıkla, bir programlama pini olan tek pimin kırılması oldukça kötü olurdu.

  3. Dirkt tarafından belirtildiği gibi, PLL'ler işlemciyi overclock etmek için kullanılabilir. Bu muhtemelen aşırı ısınmasına veya başka şekilde hasar görmesine neden olabilir.


1

Bunun, tasarım sürecinin bu çiplerle ne kadar ilgili olduğunu anlamadığını kim söyledi. Bu, kayma olayının gerçekleşmediği ve regresyonların ve köşe davalarının kod kapsamının bazen bazı şeyleri özlediği anlamına gelmez, ancak ALL veya çoğu işlemcinin bu kusurun mantıklı bir şekilde şüpheli olduğunu ifade etmek.

Kendinize sorun, zaman aşımına uğrayan bir kişi zamanlama gereksinimlerini aştığında ne olduğunu (aşırı ısınmadığını varsayarak). çip arızalanır ve belki de belleği ve hatta HDD erişimini bozar, ancak temelde işlemci yeniden geri teper ve bozulma düzeltildiyse işletim sistemini yeniden çalıştırır. Peki, ne tür bir doğru tasarlanmış mikro kod bu senaryoda olduğundan daha fazla bozulmaya neden olabilir? - çok büyük olasılıkla cevap yok.

TLDR; Tüm işlemcilerde bu hata var - DEĞİL


Bazı / çoğu mikrodenetleyici işlemcilerin (hacmen, değer değil) mikro kodlama olmadığına inanıyorum. Peki bu senin varsayımını geçersiz kılıyor mu?
gbulmer

Hayır, bir sıralayıcı mı yoksa sabit amaçlı bir hücre mi tasarlıyorsanız, tasarımdaki gerilemeler ve kısıtlamalar / testler sıkı olacaktır.
yer tutucu

Mavi bir duman kabarcığının oluşması için CPU bir şekilde aşırı ısınırdı. Ya çok yüksek gerilim yaşayarak, çok yüksek akım yaşayarak, ya da ters kutup deneyimleyerek ya da yaşayarak, transistörler çok yüksek bir frekansta geçiş yapabilir. Yazılımda yalnızca son yöntem kullanılabilir. 500MHz'den daha düşük çalışan CPU'ların aşırı ısınmaya neden olan yazılım nedeniyle ölme olasılığı yoktur ancak aşırı ısınmaya neden olan yazılım nedeniyle CPU'ların öldüğünü gördüm. Yaptığın varsayım tam olarak yapmamanız gereken şey.
slebetman,

@slebetman, burada çok fazla şeyi birbirine karıştırıyorsunuz. Yazılım yönergeleriyle kişi nasıl “ters polarite” elde edilir? Bir kişi “çok yüksek bir frekansta çok fazla anahtarlamaya geçiş” nasıl elde edilir, belki de tüm yongalarda onları büyük ölçüde paralel yürütme boru hatlarına dönüştüren sihirli bir kusur vardır?
yer tutucu

@placeholder: Yazılım talimatlarıyla ters kutupluluk alamayacağınızı söyledim. Yorumumu okudun mu?
slebetman

1

Mikro denetleyiciyi (MC) fiziksel olarak yazılımla imha etmenin kesinlikle mümkün olduğuna inanıyorum. Gerekli olduğu bütün, bir kombinasyon neden% 100 kullanımı bu talimatlar bir "sıkı" döngüye olmak MC ve birikimi için çip içinde ısı sağlayan bir "hatalı" ısı emicisi. Arızanın saniye, dakika veya saat mi sürmesi, ısının ne kadar hızlı yükseldiğine bağlı olacaktır.

Sadece% 50 sürekli kullanımda kullanabileceğim bir dizüstü bilgisayar var. Bunu aşarsam, bilgisayar kendini kapatır. Bu,% 50 kullanımda MC sıcaklığının ayarlanan tetikleyici noktasının altında olduğu anlamına gelir. Kullanım arttıkça, MC'nin sıcaklığı tetikleme noktasına ulaşılana kadar artar. Termal kapanma devresi çalışmadıysa (ya da olmadıysa), MC'nin sıcaklığı tahrip olana kadar artmaya devam edecektir.


0

şematik

bu devreyi simüle et - CircuitLab kullanılarak oluşturulan şematik

#include <avr/io.h>

int main(void)
{
    DDRB |= _BV(2) | _BV(4);
    PORTB |= _BV(2);
    PORTB &= ~_BV(4);
    for (;;);
}

Yukarıdaki kod, MCU'nun PB4'ü düşük çekerken PB2'yi yüksek itmesine neden olur ve bu VDD'den PB2'ye PB4'ten GND'ye kısa bir devre oluşturur ve PB2 ve / veya PB4'ün port sürücüleri hızla kızarır. Kısa devre, yanlışlıkla lehim köprüsü gibi masum bir hata olabilir.


Bunun işe yarayacağından şüpheliyim. GÇ pimleri genellikle büyük miktarda akımı besleyemez veya batıramaz. IO sürücü transistörleri akımı sınırlar.
Adam Haun

@AdamHaun Sorun şu ki, mevcut bir sınırlama mevcut değil. Burada olan şey, bu devrenin bu transistörleri yakabileceğidir.
Maxthon Chan

Akım sınırlama, çıkış tahrik transistörlerinin boyut ve kapı voltajından kaynaklanmaktadır. Belki bir 5V AVR sürücüleri yakabilir, ancak ATMega tipik sürücü gücü çizelgelerine bakıldığında, 3V Vcc birlikte iki pimi kısaltan mutlak maksimum pin akımını bile geçemez. Ve akım yüksek sıcaklıkta düşer! Düşük güç MCU'ları muhtemelen iyi olurdu.
Adam Haun
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.