Bir CPU'nun ne yaptığını söylemek gerçekten imkansız mı? [kapalı]


24

Bilgisayar programcıları çoğu kez x86 komutlarının tamamen opak olduğu mantığından bahseder: Intel bize bir şey yaptıklarını söyler, ancak herhangi bir şeyin ne olduğunu doğrulayabileceğini ümit etmiyoruz, yani NSA onlara RNG'lerini arka kapılarına söylerse, biz gerçekten yapamayız. Bunun hakkında bir şey yap.

Bilgisayar programcılarının bu sorun hakkında hiçbir şey yapamayacağına inanıyorum. Fakat bir elektrik mühendisi ona nasıl saldırır? Bir elektrik mühendisinin, bir devrenin spesifikasyonunda belirtilen işlemleri gerçekleştirdiğini ve başka işlemler yapmadığını doğrulamak için kullanabileceği teknikler var mı?


5
Kalıp xray gibi bir şey yapmalı ve gerçekte ne yaptığını görmek için her şeyi analiz etmelisin. Temel olarak yongayı tersine çevirir ve her devrenin fonksiyonunu açıklar. Tamamen pratik değil.
DKNguyen

7
Hiçbir elektrik devresi gürültüden dolayı tam bir spesifikasyon gerçekleştirmez ve bir gün "yeterince büyük" bir aksaklık oluşma ihtimalinin düşük olması olasılığı.
Andy aka

5
Eğlence bilgisi: Bu, belli belirsiz Laplace's iblisiyle ilgilidir .
Harry Svensson

6
Intel'in içerik veritabanından dahili belgeler çalmak, tek bir modern, karmaşık Intel CPU'yu bile tersine çevirmekten daha kolay olacaktır.
orman,

14
@Harita tutucunuzun yapıcı olmaması ve bir arka kapının donanımda gizlenemeyeceği iddiası doğru değildir.
pjc50

Yanıtlar:


14

Konuyla ilgili okuduğum en iyi makale 2014'ten itibaren "Gizli Dopant Seviye Donanım Trojanları" (Becker et al).

Değiştirilen devre tüm kablolama katmanlarında (tüm metal ve polisilikonlar dahil) meşru göründüğü için, Truva atı ailemiz, ince taneli optik inceleme ve "altın cips" e karşı kontrol de dahil olmak üzere çoğu algılama tekniğine karşı dirençlidir. Yaklaşımımızın etkinliğini göstermektedir. Truva atlarını iki tasarıma yerleştirerek - Ivy Bridge işlemcilerinde kullanılan Intel'in kriptografik olarak güvenli RNG tasarımından türetilmiş bir dijital işlem sonrası ve yan-kanal dirençli SBox uygulamasından - tespit edilebilirliklerini ve güvenlik üzerindeki etkilerini araştırarak.

Belge, değişikliğin nasıl yapıldığını, silikonun incelenmesinden nasıl tespit edileceğini, üretim testinden gizleme tekniklerinin ve bir donanım kripto RNG'sinin güvenliğini azaltmak veya kilit bilgi sızdırmak için nasıl yapılabileceğini anlatmaktadır. Bir AES uygulamasının bir elektrikli ray yan kanalı vasıtasıyla.

Yan kanallar gelişmekte olan bir ilgi alanıdır. Intel, program tarafından kullanılmayan, bellekten gelen bilgi sızdıran spekülatif yürütme ile ilgili sorunlardan rahatsız oldu. Bu kasıtlı bir tasarım hatası olabilir mi? Söylemesi neredeyse imkansız.


Bir yan kanal, bilgiyi NSA'ya göndermek için bir tür verici gerektirmez mi? Aksi taktirde, dizüstü bilgisayarımdaki güç demiryolu akımını ölçen birinin kesinlikle üzerinde çalışacağını fark edecektim.
Dmitry Grigoryev

24

Bir elektrik mühendisinin, bir devrenin spesifikasyonunda belirtilen işlemleri gerçekleştirdiğini ve başka işlemler yapmadığını doğrulamak için kullanabileceği teknikler var mı?

Teoride, evet, bunun mümkün olduğunu düşünüyorum. Bununla birlikte, karmaşık bir CPU için çok zaman ve para alacaktır . Ayrıca, tasarımı tam olarak bilmiyor ve anlamazsanız, herhangi bir etkinliğin "okunaklı" olup olmadığına karar veremezsiniz.

Bir CPU "sadece" birçok mantık hücresinden oluşan karmaşık bir dijital devredir.

Çipin tersine mühendislik yapılması ve metal bağlantılara dikkat edilerek tasarımın yeniden yapılandırılması mümkündür . Bu bağlantı katmanlarının çoğu 8 veya daha fazla katman gibi olabilir.

Mantık hücrelerini tanımak için bu alanda uzmanlara ihtiyacınız olacak ve belki bazı yazılımlar hepsinin nasıl bağlandığını bulabilir ve böylece netlisteyi yeniden oluşturabilirsiniz.

Netliste sahip olduğunuzda, tasarımı "bilirsiniz". Bu, şimdi nasıl çalıştığını da bildiğiniz anlamına gelmez!

Belli bir fonksiyonun, tasarımın 2 bölümünü aktive ettiği, bunun yeterli olabileceğini düşündüğünüzden, şüpheli bir faaliyetin devam ettiğinden şüpheleniyor olabilirsiniz. Ancak, tasarım işlemleri hızlandırmak için bilmediğiniz bazı akıllıca bir hile yapar.

Tasarımı bilmeden ve anlamadan, çizdiğiniz herhangi bir sonuç yine de yanlış olabilir. Sadece CPU'yu tasarlayan mühendisler tüm tasarım bilgisine sahipler ve bir CPU'da gerçekte ne olup bittiğini anlama veya tahmin etme şansına sahipler.


77
Sadece CPU'yu tasarlayan mühendisler devam eden her şeyi biliyor - bu sektörde çalışan bir mühendis oluyorum ve bu ifadeyi çok iyimser bir durum olarak değerlendirmeme izin veriyorum :)
Eugene Sh.

18
Hayır, işlemci tasarımcıları olmaz gider her şeyi bilmek - sentez araçları bağlı olduğunu seviyede tasarım ve bu HDL tasarımında bunun ötesinde davranışı enjekte edebilir. Kötü niyetli olmayan bir örnek vermek gerekirse, birçok FPGA aracı bir mantık çözümleyicide derlenmenize izin verecektir.
Chris Stratton

9
"Milyarlarca transistörlü" bir çipin tersine mühendislik yapılması zorluydu. spectrum.ieee.org/semiconductors/processors/...
Gerilim Spike

4
@Wilson Çünkü karmaşık devreler (CPU'lar dahil) kamuya açık olmayan birçok özel (ve gizli, ticari marka / patentli) tasarım içerecektir çünkü bu tasarımlara sahip olan şirketler onlardan faydalanmak istiyor (para kazanmak). 6502 eski bir tasarımdır , artık hiçbir değerli tasarım bilgisine sahip değildir, bu yüzden evet, tamamen açık ve herkese açıktır.
Bimpelrekkie

3
@Bimpelrekkie: Patentli iseler, tanımı gereği sır değiller. Bu bir patent noktası. Geçici bir tekel için sır takas ediyorsun.
MSalters

9

Bilgisayar programcılarının bu sorun hakkında hiçbir şey yapamayacağına inanıyorum. Fakat bir elektrik mühendisi ona nasıl saldırır?

Yoktur iyi yolu , Test kombinasyonlarının veya belgesiz talimatlara olacak bir donanım arka kapı bulmak için bir yol kapılarını geri bulmak için. İşte bunu gerçekten yapan ve x86 donanımında denetimler yapan biriyle ilgili iyi bir konuşma . Bu çipi kırmadan yapılabilir. İntel ile ilgili bir sorun (diğer yongalardan emin değilim) aslında üzerinde çalışan linux'lu bir işlemciye sahip olduğu için bazı işlemcilerde çalışan yazılımlar da var ve buna sözde erişiminiz yok.

Bir elektrik mühendisinin, bir devrenin spesifikasyonunda belirtilen işlemleri gerçekleştirdiğini ve başka işlemler yapmadığını doğrulamak için kullanabileceği teknikler var mı?

İşlevselliği sınamak için donanımı kullanmak için sınama yolları vardır. X86, talimat setinin belgesiz bir bölümüne sahip olduğundan, normal talimatlarda arka kapıların tanıtılması alışılmadık olacaktır, çünkü hata olasılığını ortaya koyacaktır (örneğin, bir ekleme veya çoklu komutta arka kapınız varsa), ilk bakışta belgelenmemiş talimatlarda olacaktır.

Düzenli talimatların işlevselliğini test etmeniz gerekirse, talimatları yürütmek için geçen süreyi izleyebilir, beklediğinizden farklılıklar olup olmadığını görmek için talimatları çalıştırmak için harcadığınız gücü izleyin.


3
Katılmıyorum, birisinin yapması imkansız değil, ama mümkün değil. ekleme talimatı gibi normal bir talimatı arka kapıdan açıklayalım ve ilave talimatlar uygularsanız arka kapıyı açalım. Daha sonra müşteri tam olarak bu kombinasyona sahip bir program geliştirir, içine bakar, arka kapıyı bulur ve herkes sinirlenir ve dava edilir. Belgelenmemiş talimatlara (ya da CPU'ların içine yerleştirilmiş linux bilgisayarı) arka kapı koymak çok daha güvenli
Voltage Spike

4
IME, Linux olmayan ve çok daha küçük ve daha basit olan Minix'i çalıştırır. Linux, Minix'in varlığından ilham aldı ve başlangıçta dosya sistemini kullandı ve haber grubunda açıklandı, ancak o zamanlar oldukça farklıydı ve şimdi de oldukça fazlaydı.
Chris Stratton

5
@ user14717 - kötü olasılık, yerel bir müşteri gibi bir şey olan hapisli bir yerel çalıştırılabilir bir tetikleyici sekansı olurdu. Ancak veri olması değil kod olması gerekmiyor .
Chris Stratton

5
@ laptop2d CPU'ların talimat setinin teorik dökümantasyonunu her zaman söylediklerini yapmadığı hatalar ; Kimse genellikle dava açılmaz : Örneğin, intel 7. nesil Core i7 ailesi doküman güncellemesindeki hata bölümünü okuyun . Belgelenmemiş bir talimat kullanılması, herhangi bir kötü amaçlı yazılım araştırmacısının alarmını derhal çalacaktır. Sıradışı ritmik ADD'lerin sağ kayıt arası MOV'larla kombinasyonunun kullanılması, herhangi bir alarmı tetikleme olasılığının düşük olması anlamına gelir.
Marcus Müller,

6
@ laptop2d "CPU içindeki gömülü linux" ifadesiyle şaşırdım. Bu yüzden biraz araştırma yaptım, sanırım Intel ME motoru hakkında konuşuyorsunuz. İşlemci üzerinde değil, kuzey köprüsü yongasetinde çalışıyor. Bu konuda çok fazla yanlış bilgi var gibi görünüyor, bkz. İtsfoss.com/fact
dim

6

Tek yol çip katmanını katmana göre soymak ve her transistörü bir elektron mikroskobu ile kaydetmek ve daha sonra bunu bir tür simülasyon programına girmek ve ardından çalışmasını izlemek olacaktır.

Bu, esas olarak, iç kısımları girdi ve çıktıları ölçmek için yeniden yapılandırmaya çalıştığınız Kara Kutu sorunudur. İç kısımların karmaşıklığı veya G / Ç sayısı önemsiz hale geldiğinde, olası iç durumların sayısının astronomik hale geldiği bir kombinasyon patlaması yaşanır. Googol gibi sayılar atılıyor.


2
... ve tasarımı sosyal mühendislik kullanarak çalmak daha kolay :)
Eugene Sh.

8
Hayır. Burada göze çarpan hata, simülasyonun yeterli olmamasıdır. Eğer olsalar bile verilen bir doğru simulasyon modeli size nasıl hiçbir fikrim yok çünkü, yine dikkatle gizlenmiş davranışı bulmak mümkün olmaz tetikleyebilir onu.
Chris Stratton

4
@ ChrisStratton Bu hataya göz kamaştırıcı demem . Tasarımın fiziksel olarak normal olan basitleştirmeler yapmaya dayandığına dair makul bir varsayım, örneğin iki metalizasyon izini o kadar yakın koymamanız gerektiği, bir MOSFET geçitinin durumunu değiştirmek için indüktif olarak yeterince birleşiyorlar. Bu sadece, a) sadeleştirmeleriniz, tasarımcının kullandığı şeyin fiziksel modeliyle eşleşmiyorsa veya b) tasarımcı, kasıtlı olarak, bu sadeleştirmeler için gereklilikleri açıkça belli olmayan yollarla kırarak saklıyorsa.
Marcus Müller,

7
@ ChrisStratton ah, pardon, tamam, sanırım şimdi anladım. Bir CPU'nun dijital / davranışsal saatli modellerinin bile, programcının anlayış / varsayımlarının basitçe uygulanmadığı durumları gizleyecek kadar karmaşık olduğunu söylüyorsunuz. Bu doğru. Kişi SPECTER'e götüren etkileri çok ayrıntı verici bir biçimde belgelemiş olabilirdi ve çoğu insan veri veya programın akışla ilgili yan etkilerini önbelleğe almayı asla düşünmezdi. Aslında!
Marcus Müller

3
Teşekkürler :) Argümanınız, ISA'ların doğruluğunun resmi olarak doğrulanması konusunu tekrar gündeme getirir ("bu ISA aslında uyumlu bir CPU'nun RING 0'a imtiyazsız kod için ayrıcalıklar vermemesini garanti etmiyor mu?") Ve HDL’nin resmi doğrulaması / Bu tür ISA spesifikasyonlarına karşı RTL (Özellikle bu RISC-V CPU Çekirdek doğrulama projesini seviyorum .)
Marcus Müller

5

İşlemcinin sinsi bir şey yapmadığını kanıtlamak olağanüstü zor. Klasik örnek bir oylama makinesidir. Oyunuzun bir kopyasını alan ve daha sonra bazı diktatörlere gizlice sokan tek bir kısmı varsa, bazı yerlerde sizin için yaşam ya da ölüm olabilir. Ve bunun kanıtlanmasının tek bir parça olmadığını kanıtlamak milyarlarca arasında oldukça zor.

Çipi fiziksel olarak izole etmeyi düşünebilirsiniz, bu nedenle yanlış kablo bağlantıları olmadığını görmek pratiktir. Ve ağ bağlantısına, yalnızca doğru yere bağlanmasını garanti eden başka bir yongayı veya birden fazla yongayı seri olarak (farklı kaynaklardan gelen) koymak. Sonra oyunuzu verdikten sonra bisiklete binin. Ve orada kalıcı olmayan bitler olmadığını umuyorum. Veya gizli kablosuz bağlantılar. Ama hayatına buna güveniyor musun?


5

Herhangi bir veriyi NSA'ya iletmek ağ erişimi gerektirir; bu nedenle ağ hizmetlerini devre dışı bırakılmış bir işletim sistemi çalıştırarak ve ağ arayüzlerini trafik açısından kontrol ederek böyle bir arka kapıyı tespit etmek oldukça kolay olacaktır. Açık kaynak kodlu bir işletim sistemi için, işletim sisteminin yasal olarak erişebileceği herhangi bir adresle eşleşmeyecek olan IP adresleri ile tam ağ desteği ve spot hileli bağlantı ile çalışmak bile mümkündür.

Veri aktarımı olmayan RNG'ye dayanan bir arka kapı çok sınırlı kullanışlılığa sahip olacaktır. CPU RNG tek entropi kaynağı olmadıkça, böyle bir arka kapının saldırgana herhangi bir avantaj sağlama şansı aynı anda belirgin olmama ihtimali neredeyse sıfırdır . Russel'in çaydanlıklarının, var olmak için iyi bir neden olmamasına rağmen, orada ısrar etmediğiniz sürece, aynı argümanı RNG donanımına da uygulayabilmelisiniz.


5
Yani, düşmanın bir donanım truva atı yaratma ve gizleme zamanı, parası ve becerisine sahip olduğunu varsayıyorsunuz, ancak ilk yaptıkları şey telnet www.nsa.gov? Bu çok saf bir bakış açısı gibi görünüyor.
Elliot Alderson

1
Eğer NSA bir güvenlik açığını gizleseydi, evet, insanların rdrandya rdseedda Intel’in önerdiği gibi: PRNG tohumlarının tek entropi kaynağı olduğunu umuyorlardı . Linux (Kernel) için yapmak değil seçti /dev/random, ama rahat ve iyi konuşan / libstdc ++ 'ın akım std::random_device yapar sadece kullanımını rdrandyerine açılma zamanında kullanılabilir olup olmadığını /dev/random. Godbolt ile standart kütüphane çağrısı yapın
Peter Cordes

@ElliotAlderson Sizin görüşünüz nedir? Birisi hiç bir yere aktarmadan değerli verileri nasıl çalabilir?
Dmitry Grigoryev

@ PeterCordes std::random_devicekriptografik olarak güçlü bir RNG değildir. C ++ standardı, bir PRNG ile uygulamanıza izin verir, her seferinde aynı sırayı etkili bir şekilde döndürür , bu nedenle şifreleme için hiç kimsenin kullanmaması gerektiği açıktır.
Dmitry Grigoryev

Oh doğru, unuttum ki bunun iyi olduğuna dair hiçbir garanti yok, xD. Bu ise birçok uygulamaları üzerinde iyi, ama MinGW platformu edebildiği sürece bu kütüphanenin ana amacını yenerek kaliteli rasgele sayı olarak size verdiği tasarım amacına çarpıcı istisnadır. (Dediğiniz gibi kripto değil , PRNG'leri başka amaçlar için tohumlamak). ( Ndw gcc4.8.1 ile std :: random_device ile her çalışma için neden aynı sırayı alıyorum? ). Entropisi olmayan (minimum gömülü aygıt) bir platformda kabul edilebilir, ancak x86 Windows!
Peter Cordes
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.