Ist es wirklich unmöglich zu sagen, was eine CPU tut? [geschlossen]

24

Computerprogrammierer rezitieren oft das Mantra, dass x86-Anweisungen völlig undurchsichtig sind: Intel sagt uns, dass sie etwas tun, aber es gibt keine Hoffnung, dass irgendjemand überprüfen kann, was passiert. Wenn die NSA ihnen also sagt, dass sie ihre RNGs durch Hintertüren schützen sollen, können wir das nicht wirklich etwas dagegen tun.

Nun, ich glaube, dass Computerprogrammierer nichts gegen dieses Problem unternehmen können. Aber wie würde ein Elektrotechniker es angreifen? Gibt es Techniken, mit denen ein Elektrotechniker überprüfen kann, ob ein Stromkreis die in seiner Spezifikation beschriebenen Vorgänge ausführt, und keine anderen Vorgänge?

user14717
quelle
5
Sie müssten so etwas wie den Würfel röntgen und alles analysieren, um zu sehen, was es tatsächlich tut. Im Grunde genommen den Chip zurückentwickeln und die Funktion jedes Stromkreises erklären. Total unpraktisch.
DKNguyen
7
Aufgrund des Rauschens und der geringen Wahrscheinlichkeit, dass eines Tages eine Panne auftritt, die "groß genug" ist, kann kein Stromkreis eine exakte Leistung erbringen.
Andy aka
5
Spaßinfo: Dies ist vage mit Laplace's Dämon verwandt .
Harry Svensson
6
Es wird einfacher sein, interne Dokumente aus der Inhaltsdatenbank von Intel zu stehlen, als selbst eine einzelne moderne, komplexe Intel-CPU rückzuentwickeln.
Wald
14
@Harper Ihre Haltung ist nicht konstruktiv und Ihre Behauptung, dass eine Hintertür nicht in Hardware verborgen werden kann, ist nicht wahr.
pjc50

Antworten:

14

Das beste Papier, das ich zu diesem Thema gelesen habe, sind "Stealthy Dopant-Level Hardware Trojaner" (Becker et al.) Aus dem Jahr 2014.

Da die modifizierte Schaltung auf allen Verdrahtungsschichten (einschließlich Metall und Polysilicium) als legitim erscheint, ist unsere Trojanerfamilie gegenüber den meisten Erkennungstechniken resistent, einschließlich optischer Feinkornprüfung und Prüfung auf „goldene Chips“. Wir demonstrieren die Wirksamkeit unseres Ansatzes durch das Einfügen von Trojanern in zwei Designs - eine digitale Nachbearbeitung, die aus Intels kryptografisch sicherem RNG-Design für die Ivy Bridge-Prozessoren und einer seitenkanalresistenten SBox-Implementierung abgeleitet ist - und durch die Untersuchung ihrer Erkennbarkeit und ihrer Auswirkungen auf die Sicherheit.

In dem Artikel wird beschrieben, wie die Änderung vorgenommen wird, wie schwierig es ist, das Silizium zu untersuchen, wie es vor dem Produktionstest verborgen werden kann und wie die Sicherheit eines Hardware-Krypto-RNG verringert oder Schlüsselinformationen verloren gehen können durch einen Power-Rail-Seitenkanal einer AES-Implementierung.

Seitenkanäle sind ein aufstrebendes Interessensgebiet. Intel war von Problemen im Zusammenhang mit der spekulativen Ausführung geplagt, bei denen Informationen aus dem Speicher verloren gingen, die nicht einmal vom Programm verwendet wurden. Könnte das ein bewusster Konstruktionsfehler gewesen sein? Es ist fast unmöglich zu sagen.

pjc50
quelle
Wäre für einen Seitenkanal nicht eine Art Sender erforderlich, um die Informationen an die NSA zu senden? Andernfalls würde mir sicherlich jemand auffallen, der den Stromverbrauch meines Laptops misst, während ich daran arbeite.
Dmitry Grigoryev
24

Gibt es Techniken, mit denen ein Elektrotechniker überprüfen kann, ob ein Stromkreis die in seiner Spezifikation beschriebenen Vorgänge ausführt, und keine anderen Vorgänge?

Theoretisch denke ich, dass dies möglich ist. Für eine komplexe CPU ist jedoch viel Zeit und Geld erforderlich. Wenn Sie das Design nicht vollständig kennen und verstehen, können Sie auch nicht beurteilen, ob eine Aktivität "legitim" ist oder nicht.

Eine CPU ist "nur" eine komplexe digitale Schaltung, die aus vielen Logikzellen besteht.

Es ist möglich, Reverse Engineering , den Chip und das Design durch die Beobachtung der Metallverbindungen zu rekonstruieren. Es können viele dieser Verbindungsschichten vorhanden sein, z. B. bis zu 8 Schichten oder mehr.

Sie benötigen Experten auf dem Gebiet, um die Logikzellen zu erkennen, und dann kann möglicherweise eine Software herausfinden, wie sie alle verbunden sind, damit Sie die Netzliste rekonstruieren können.

Sobald Sie die Netzliste haben, "kennen" Sie das Design. Das heißt nicht, dass Sie jetzt auch wissen, wie es funktioniert!

Es kann sein, dass eine bestimmte Funktion zwei Bereiche des Designs aktiviert, während Sie der Meinung sind, dass einer ausreichen sollte, damit Sie den Verdacht haben, dass eine verdächtige Aktivität stattfindet. Das Design führt jedoch einen cleveren Trick aus, von dem Sie nichts wissen, um Vorgänge zu beschleunigen.

Ohne das Design zu kennen und zu verstehen, könnte jede Schlussfolgerung, die Sie ziehen, immer noch falsch sein. Nur die Ingenieure, die die CPU entworfen haben, verfügen über alle Konstruktionsinformationen und haben die beste Chance, herauszufinden oder zu erraten, was in einer CPU tatsächlich vor sich geht oder vor sich gehen sollte.

Bimpelrekkie
quelle
77
Nur die Ingenieure, die die CPU entworfen haben, wissen, was vor sich geht - ich bin zufällig ein Ingenieur in dieser Branche und kann diese Aussage als sehr optimistisch bewerten :)
Eugene Sh.
18
Nein, die CPU-Designer würden nicht alles wissen, was vor sich geht - das Design auf dieser Ebene hängt von Synthesewerkzeugen ab, und diese könnten ein Verhalten bewirken, das über das HDL-Design hinausgeht. Um ein harmloses Beispiel zu nennen: Mit vielen FPGA-Tools können Sie in einem Logikanalysator kompilieren.
Chris Stratton
9
Das Reverse Engineering eines Chips mit "Milliarden von Transistoren" wäre eine Herausforderung. spectrum.ieee.org/semiconductors/processors/…
Voltage Spike
4
@ Wilson Weil komplexe Schaltkreise (einschließlich CPUs) viele proprietäre (und geheime, geschützte / patentierte) Designs enthalten, die der Öffentlichkeit nicht zugänglich gemacht werden, weil die Unternehmen, die diese Designs besitzen, davon profitieren (Geld verdienen) möchten. Der 6502 ist ein altes Design , er hat keine wertvollen Designinformationen mehr, also ist er völlig offen und für jedermann zugänglich.
Bimpelrekkie
3
@Bimpelrekkie: Wenn sie patentiert sind, sind sie per Definition nicht geheim. Das ist der Sinn eines Patents. Sie tauschen ein Geheimnis gegen ein zeitweiliges Monopol.
MSalters
9

Nun, ich glaube, dass Computerprogrammierer nichts gegen dieses Problem unternehmen können. Aber wie würde ein Elektrotechniker es angreifen?

Es gibt keine guten Möglichkeiten , Hintertüren zu finden. Eine Möglichkeit, eine Hardware-Hintertür zu finden, besteht darin, Kombinationen oder undokumentierte Anweisungen zu testen. Hier ist ein gutes Gespräch über jemanden, der dies tatsächlich tut und Audits auf x86-Hardware durchführt . Dies kann erfolgen, ohne den Chip zu knacken. Ein Problem mit Intel (bei anderen Chips bin ich mir nicht sicher) ist, dass dort tatsächlich ein Prozessor mit Linux ausgeführt wird, sodass auf einigen Prozessoren auch Software ausgeführt wird, auf die Sie angeblich keinen Zugriff haben.

Gibt es Techniken, mit denen ein Elektrotechniker überprüfen kann, ob ein Stromkreis die in seiner Spezifikation beschriebenen Vorgänge ausführt, und keine anderen Vorgänge?

Es gibt Möglichkeiten zum Testen, um die Hardware selbst zum Testen der Funktionalität zu verwenden. Da x86 einen undokumentierten Teil seines Befehlssatzes hat, wäre es ungewöhnlich, in normalen Befehlen Backdoors einzuführen, da dies die Möglichkeit von Fehlern (wie wenn Sie eine Backdoor in einem Add- oder Multibefehl hatten) mit sich bringt wäre in den undokumentierten anweisungen.

Wenn Sie die Funktionalität von regulären Anweisungen testen mussten, können Sie die Ausführungszeit für Anweisungen und den Energiebedarf für die Ausführung von Anweisungen überwachen, um festzustellen, ob es Unterschiede zu den erwarteten gibt.

Spannungsspitze
quelle
3
Ich würde nicht zustimmen, es ist nicht unmöglich, dass jemand dies tun würde, aber unwahrscheinlich. Nehmen wir an, Sie haben eine reguläre Anweisung wie eine Add-Anweisung durch ein Backdoor geöffnet. Wenn Sie eine zusätzliche Anweisung ausgeführt haben, haben Sie beispielsweise eine Backdoor geöffnet. Dann entwickelt ein Kunde ein Programm, das genau diese Kombination aufweist. Er untersucht es, findet die Hintertür und jeder wird wütend und Sie werden verklagt. Viel sicherer ist es, eine Hintertür in die undokumentierten Anweisungen (oder in den in die CPU eingebauten Linux-Computer) zu setzen
Voltage Spike
4
IME führt Minix aus, das kein Linux ist und viel kleiner und einfacher ist. Linux wurde von der Existenz von Minix inspiriert und benutzte ursprünglich sein Dateisystem und wurde in seiner Newsgroup angekündigt, aber sie waren damals ganz anders und sind es auch heute.
Chris Stratton
5
@ user14717 - die fiese Möglichkeit eine Trigger - Sequenz in einem Gefängnis nativen ausführbaren, so etwas wie native Client sein würde. Aber es gibt keinen Grund, warum es sich um Code und nicht um Daten handeln muss .
Chris Stratton
5
@ laptop2d Bugs , wo CPUs , was die theoretische Dokumentation des Befehlssatzes sagen passieren nicht tun die ganze Zeit ; normalerweise wird niemand verklagt: Lesen Sie zum Beispiel den Errata-Abschnitt im Intel 7th Gen Core i7-Dokument-Update. Die Verwendung einer undokumentierten Anweisung würde sofort den Alarm eines Malware-Forschers auslösen. Bei Verwendung einer ungewöhnlichen Kombination von rhythmischen ADDs mit den richtigen MOVs zwischen Registern ist es weniger wahrscheinlich, dass ein Alarm ausgelöst wird.
Marcus Müller
6
@laptop2d Ich war beeindruckt von der "embedded linux within the CPU" -Anweisung. Also habe ich ein bisschen recherchiert, ich schätze, du sprichst über die Intel ME Engine. Nun, es läuft nicht auf der CPU selbst, sondern auf dem North Bridge-Chipsatz. Es scheint, dass es eine Menge Fehlinformationen darüber gegeben hat, siehe itsfoss.com/fact-intel-minix-case
dim
6

Die einzige Möglichkeit wäre, den Chip Schicht für Schicht abzutrennen und jeden Transistor mit einem Elektronenmikroskop aufzuzeichnen, und dies dann in eine Art Simulationsprogramm einzugeben und dann zu beobachten, wie es abläuft.

Dies ist im Wesentlichen das Black-Box-Problem, bei dem Sie versuchen, die Interna aus den gemessenen Ein- und Ausgängen zu rekonstruieren. Sobald die Komplexität der Interna oder die Anzahl der I / O über das Triviale hinausgeht, kommt es zu einer kombinatorischen Explosion, bei der die Anzahl der möglichen internen Zustände astronomisch wird. Wo Zahlen wie Googol herumwirbeln.

Dirk Bruere
quelle
2
... und es ist einfacher, das Design mit Social Engineering zu stehlen :)
Eugene Sh.
8
Nein. Der grelle Fehler hier ist, dass die Simulation nicht ausreichen würde. Selbst wenn Sie wurden gegeben ein genaues Simulationsmodell, würden Sie noch nicht in der Lage sein , sorgfältig versteckt Verhalten zu finden, weil Sie keine Ahnung haben , wie man auslösen es.
Chris Stratton
4
@ChrisStratton Ich würde diesen Fehler nicht nennen grell . Es ist eine vernünftige Annahme, dass der Entwurf auf physikalisch üblichen Vereinfachungen beruhte, z. B. dass Sie nicht zwei Metallisierungsspuren so nahe beieinander platzieren, dass sie sich induktiv genug koppeln, um den Zustand eines MOSFET-Gates zu ändern. Dies ist nur dann ein Fehler, wenn a) Ihre Vereinfachungen nicht mit dem physischen Modell des verwendeten Designers übereinstimmen oder b) der Designer absichtlich etwas verbirgt, indem er die Anforderungen für diese Vereinfachungen absichtlich auf nicht offensichtliche Weise verletzt.
Marcus Müller
7
@ ChrisStratton ah, tut mir leid, ok, ich denke jetzt verstehe ich deinen Standpunkt. Sie sagen, dass selbst die digital / behavioural getakteten Modelle einer CPU komplex genug sind, um Fälle zu verbergen, in denen das Verständnis / die Annahmen des Programmierers einfach nicht zutreffen. Das ist richtig. Man hätte die Auswirkungen, die zu SPECTER geführt haben, sehr detailliert dokumentieren können, und die meisten Menschen hätten nie daran gedacht, daten- oder programmflussrelevante Nebenwirkungen in den Cache zu stellen. Tatsächlich!
Marcus Müller
3
Danke :) Ihr Argument bringt das gesamte Thema der formalen Überprüfung der Korrektheit von ISAs wieder ins Blickfeld ("Gewährleistet diese ISA tatsächlich, dass eine konforme CPU nicht RING 0-Berechtigungen für nicht privilegierten Code gewährt?") Und der formalen Überprüfung von HDL / RTL gegen solche ISA-Spezifikationen (Ich mag dieses RISC-V-CPU-Core-Verifizierungsprojekt besonders.)
Marcus Müller
5

Es ist außerordentlich schwer zu beweisen, dass die CPU nichts hinterhält. Das klassische Beispiel ist eine Wahlmaschine. Wenn ein einziger Teil Ihrer Stimme eine Kopie Ihrer Stimme enthält und diese später an einen Diktator weiterleitet, kann dies an manchen Stellen für Sie Leben oder Tod sein. Und es ist ziemlich schwer zu beweisen, dass es nicht ein einziges bisschen unter den Milliarden gibt.

Sie könnten überlegen, den Chip physisch zu isolieren. Es ist also praktisch, festzustellen, dass keine fehlerhaften Kabelverbindungen vorhanden sind. Und indem Sie einen anderen Chip oder mehr als einen Chip in Reihe (von verschiedenen Quellen) in die Netzwerkverbindung einbauen, wird sichergestellt, dass nur die richtige Verbindung hergestellt wird. Schalten Sie es dann aus und wieder ein, nachdem es Ihre Stimme abgegeben hat. Und in der Hoffnung, dass dort keine nichtflüchtigen Bits sind. Oder kabellose Verbindungen. Aber würden Sie Ihrem Leben vertrauen?

emrys57
quelle
5

Das Übertragen von Daten an den NSA erfordert einen Netzwerkzugriff. Daher ist es recht einfach, eine solche Hintertür zu erkennen, indem ein Betriebssystem mit deaktivierten Netzwerkdiensten ausgeführt und die Netzwerkschnittstellen auf Datenverkehr überprüft werden. Für ein Open-Source-Betriebssystem ist es sogar möglich, mit vollständiger Netzwerkunterstützung und Spot-Rogue-Verbindung über die Ziel-IP zu arbeiten, die keiner Adresse entspricht, auf die das Betriebssystem berechtigterweise zugreifen könnte.

Eine auf RNG basierende Hintertür ohne Datenübertragung hat nur einen sehr begrenzten Nutzen. Sofern das CPU-RNG nicht die einzige Entropiequelle ist, ist die Wahrscheinlichkeit, dass eine solche Hintertür dem Angreifer einen Vorteil verschafft und gleichzeitig nicht offensichtlich ist, praktisch Null . Sofern Sie nicht darauf bestehen, dass Russels Teekanne da draußen ist, obwohl es keinen guten Grund dafür gibt, sollten Sie in der Lage sein, dasselbe Argument auf die Hardware-RNG-Hintertüren anzuwenden.

Dmitry Grigoryev
quelle
5
Sie gehen also davon aus, dass der Gegner die Zeit, das Geld und die Fähigkeit hat, ein Hardware-Trojaner-Pferd zu erstellen und zu verstecken, aber das erste, was er tut, ist telnet www.nsa.gov? Dies scheint eine sehr naive Sicht zu sein.
Elliot Alderson
1
Wenn die NSA eine Sicherheitslücke versteckt hätte, dann hätten sie ja gehofft, dass die Leute rdrandoder rdseedwie von Intel vorgeschlagen: als einzige Entropiequelle für einen PRNG-Samen. Linux (der Kernel) hat sich entschieden, dies nicht zu tun /dev/random, aber die aktuelle Version von glibc / libstdc ++ std::random_device wird nur verwendet, rdrandwenn sie zur Laufzeit verfügbar ist, anstatt sie zu öffnen /dev/random. Betreten Sie die Standardbibliothek mit Godbolt
Peter Cordes
@ElliotAlderson Was ist Ihre Sichtweise dann? Wie kann jemand wertvolle Daten stehlen, ohne sie jemals irgendwo hin zu übertragen?
Dmitry Grigoryev
@PeterCordes std::random_deviceist kein kryptografisch starkes RNG. Mit dem C ++ - Standard können Sie es mit einem PRNG implementieren, wobei jedes Mal dieselbe Sequenz zurückgegeben wird. Es ist also klar, dass niemand sie für die Verschlüsselung verwenden sollte.
Dmitry Grigoryev
Oh ja, ich habe vergessen, dass es keine Garantie dafür gibt, dass es gut ist, xD. Es ist bei vielen Implementierungen gut, aber MinGW ist die herausragende Ausnahme von der Entwurfsabsicht, dass es Ihnen Zufallszahlen von so guter Qualität liefert, wie es die Plattform kann, was den Hauptzweck der Bibliothek zunichte macht. (Was, wie Sie sagen, keine Krypto ist, sondern PRNGs für andere Zwecke aussetzt). ( Warum erhalte ich mit std :: random_device mit mingw gcc4.8.1 für jeden Lauf dieselbe Sequenz? ) Das wäre auf einer Plattform ohne Entropie akzeptabel (minimales eingebettetes Gerät), aber nicht auf x86 Windows!
Peter Cordes