Nutzung der branchenweit ersten ARM®-Cortex®-M33-basierten MCU – Teil 2: Management des Sicherheitslebenszyklus

Von Stephen Evanczuk

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey

Anmerkung des Herausgebers: Teil 1 dieses zweiteiligen Artikels befasste sich mit der Optimierung des Allzweck-Mikrocontrollers (MCU) LPC55S6x von NXP Semiconductors hinsichtlich Leistung und niedrigem Stromverbrauch. Im vorliegenden Teil 2 soll es darum gehen, wie derselbe Mikrocontroller im Hinblick auf das Management des Sicherheitslebenszyklus optimiert werden kann.

Entwickler von Mikrocontroller-basierten Systemen müssen angesichts der Vielfalt von Designanforderungen für schnell wachsende Anwendungen wie etwa das Internet der Dinge (IoT), industrielle Automatisierung oder Verbraucherelektronik nur zu oft nach Kompromissen zwischen Systemfunktionalität, Leistung und Stromverbrauch suchen. Die zunehmenden Sicherheitsbedrohungen und damit die Notwendigkeit, die Sicherheit in diesen Designs zu erhöhen, stellen eine zusätzliche Herausforderung dar und lassen beim Entwickler noch weniger Mikrocontroller-basierte Lösungen als brauchbar erscheinen. Entwickler brauchen einen Mikrocontroller, der nicht nur die gängigeren Anforderungen nach reduziertem Stromverbrauch und hoher Leistung erfüllt, sondern auch die wachsenden Anforderungen im Hinblick auf die Sicherheit, und das in allen Phasen des Design-Lebenszyklus, einschließlich Bereitstellung, Kommunikation, sicheres Booten, sichere Firmware-Updates und mehr.

Teil 1 stellte bereits die Mikrocontroller-Baureihe LPC55S6x von NXP vor und beschrieb, wie deren Funktionen den Anforderungen hinsichtlich Leistung und geringem Stromverbrauch gerecht werden. Hier in Teil 2 soll es darum gehen, wie die in die LPC55S6x-Mikrocontroller integrierten erweiterten Sicherheitsfunktionen die Lebenszyklussicherheit unterstützen, angefangen bei der Bereitstellung und Kommunikation über sicheres Booten bis hin zu sicheren Firmware-Updates.

Wie schon in Teil 1 beschrieben, kombinieren die Single-Core-Mikrocontroller LPC55S66 und die Dual-Core-Mikrocontroller LPC55S69 von NXP den Arm®-Cortex®-M33-Allzweck-Prozessor mit Hardware-Funktionen, die gezielt für spezielle Anwendungsanforderungen entwickelt wurden. Zu diesen Funktionen zählen Hardware-basierte Beschleuniger für die symmetrische und asymmetrische Kryptographie, die grundlegende Mechanismen für eine sichere Kommunikation darstellen. In der Vergangenheit wurden Kryptographie-Beschleuniger für grundlegende Sicherheitsfunktionen wie die Datensicherung als ausreichend angesehen. Heute jedoch haben die Erwartungen der Anwender in Bezug auf noch umfassendere Sicherheitsfunktionen zu komplexeren Anforderungen hinsichtlich der Lebenszyklussicherheit geführt. Dazu zählen die Sicherheit bei der Bereitstellung und die Inbetriebnahme im Feld, sowie auch die Sicherheit beim Booten und Sicherheit bei Firmware-Updates.

Zur Verwirklichung dieses erweiterten Schutzes bedarf es eines umfassenden Katalogs an Sicherheitsprotokollen und Richtlinien, die deutlich über dem Niveau der Hardware angesiedelt sind. Und doch hängt die Effektivität eines jeden Sicherheitsprotokolls entscheidend von der Verfügbarkeit geeigneter Hardware-basierter Mechanismen ab, die sowohl seine Ausführung beschleunigen als auch die Angriffsflächen verringern oder eliminieren, die es heute unweigerlich in jedem vernetzten Gerät gibt.

Die LPC55S6x-Architektur bietet diese Art der Hardware-basierten Unterstützung von Lebenszyklussicherheit durch eine Vielzahl von Funktionsmerkmalen, angefangen bei seiner Unterstützung der Arm-TrustZone®-Technologie bis hin zu den mehreren Schutzebenen, die zur Erreichung eines effektiven Sicherheitsniveaus erforderlich sind.

TrustZone-Unterstützung

TrustZone bietet eine Sicherheitsgrundlage, indem es die Ausführung von Code und Daten für bestimmte sichere und nicht sichere Domänen isoliert. Während der Ausführung eines Programms wechselt der primäre Kern des Cortex-M33 zwischen einer Vielzahl unterschiedlicher Ausführungsstadien, die mit unterschiedlichen Codeausführungsmodi verknüpft sind. Diese CPU-Stadien und Codeausführungsmodi umfassen:

  • Sicher – Privilegiert: für die Ausführung von Code auf Kernel-Ebene oder von Gerätehandlern
  • Sicher – Nicht-privilegiert: für die Ausführung von sicherem Benutzercode
  • Nicht sicher – Privilegiert: für die Ausführung typischer Systemaufrufe
  • Nicht sicher  – Nicht-privilegiert: für die Ausführung von typischen Benutzeranwendungen

Die Unterscheidung zwischen privilegierter und nicht privilegierter Ausführung ist von entscheidender Bedeutung für die Gesamtrobustheit des Betriebssystems. Für die Zwecke dieses Artikels können wir diese Ausführungsmodi jedoch zusammenfassen und uns ausschließlich auf den Unterschied zwischen sicherem und nicht sicherem Betrieb konzentrieren. In der TrustZone-Architektur bewirkt der Wechsel von sicheren zu nicht sicheren CPU-Stadien Hardware-unterstützte Einschränkungen für den Kern beim Zugriff auf Programmspeicher oder Daten.

In seinem sicheren Zustand hat der Kern Zugriff auf Daten sowohl in sicheren als auch nicht sicheren Regionen des Speichers, kann jedoch nicht auf Code zugreifen, der in einem nicht sicheren Speicherbereich gespeichert ist (Abbildung 1, links). In seinem nicht sicheren Zustand hat der Kern Zugriff auf Code und Daten aus den nicht sicheren Regionen des Speichers (Abbildung 1, rechts).

Schematische Darstellung der LPC55S6x-Mikrocontroller von NXP (zum Vergrößern anklicken)Abbildung 1: Mit ihrer Unterstützung der Arm-TrustZone-Technologie gewährleisten die Mikrocontroller LPC55S6x von NXP, dass ein Kern, der im sicheren (S) Zustand (links) arbeitet, nur Anweisungen für Programmspeicher mit S-Status abrufen kann, wogegen ein Kern, der im nicht sicheren (NS) Zustand (rechts) arbeitet, keinen Zugriff auf Code oder Daten im Speicher mit S-Status hat. (Bildquelle: NXP Semiconductors)

Die LPC55S6x-MCU-Architektur übt diese Steuerfunktion auf der untersten Ebene des Bus-Zugriffs aus und verringert damit Angriffsflächen wie etwa Pufferüberläufe, die von Angreifern genutzt werden, um nicht sicherem unprivilegiertem Code durch die Hintertür Zugriff auf „geschützte“ Regionen zu verschaffen. Hierbei setzt NXP die so genannte Arm TrustZone Security Attribution Unit (SAU) mit ihrer eigenen Implementation Defined Attribution Unit (IDAU) ein, die dafür ausgelegt ist, sicheren Kernel-Code völlig vom Anwendungscode zu isolieren. Die SAU stellt den Sicherheitsstatus bereit (sicher oder nicht sicher) und erkennt, ob die Anweisung aus einer erlaubten Region des Speichers stammt. Die IDAU bildet eine Schnittstelle mit der Device Attribution Unit (DAU), um für höhere Granularität zu sorgen, und ermöglicht in Verbindung mit der SAU die Bestimmung des Sicherheitsattributs einer bestimmten Adresse. Das Ergebnis ist eine an die entsprechenden Sicherheits- und Berechtigungsebenen gerichtete Bus-Anfrage (Abbildung 2).

Schema des von den LPC55S6x-Mikrocontrollern von NXP implementierten geschützten Zugriffs auf der Bus-TransaktionsebeneAbbildung 2: Geschützter Zugriff des LPC55S6x-Mikrocontrollers von NXP auf der Bus-Transaktionsebene. Dabei kommt die Arm TrustZone SAU mit eigener IDAU zum Einsatz, die gewährleistet, dass Systembus-Anforderungen auf den entsprechenden Sicherheits- und Privilegienebenen verarbeitet werden. (Bildquelle: NXP Semiconductors)

Sichere Speicherung und Peripheriegeräte

Die TrustZone-Schutzmechanismen isolieren Anwendungscode und Daten während der Laufzeit und adressieren in Gebrauch befindliche Daten (eines der klassischen Datensicherheitsprinzipien), was auch Daten in Ruhe und Daten in Übertragung einschließt. Obwohl sie üblicherweise im Zusammenhang mit Datensicherheitsfragen auf der Enterprise-Ebene diskutiert werden, gelten dieselben Prinzipien auch für Code und Daten in einem Embedded-System. Bei einem typischen Embedded-System kann die Verwendung des integrierten Flash-Speichers eines Mikrocontrollers zur Speicherung von Firmware-Images, Code und Daten eine enorme Angriffsfläche für Bedrohungen darstellen. Der LPC55S6x-Baustein verringert diese Gefahr durch einen Ver- und Entschlüsselungsalgorithmus namens PRINCE. [Hinweis an die Leser: PRINCE ist keine Abkürzung.]

Dank seiner hohen Geschwindigkeit und seines minimalen Ressourcenbedarfs eignet sich der PRINCE-Algorithmus gut für Sicherheitsimplementierungen in Embedded-Systemen. In Hardware wie den LPC55S6x-Bausteinen implementiert, arbeitet der PRINCE-Algorithmus in Echtzeit und entschlüsselt oder verschlüsselt Daten „on the fly“, während die Daten gelesen oder geschrieben werden. Im Gegensatz zu vielen anderen Kryptoalgorithmen benötigt der PRINCE-Algorithmus keinen RAM zum Speichern von Originaldaten oder Zwischenergebnissen, wodurch eine weitere Sicherheitslücke geschlossen wird. So können Entwickler Anwendungscode, Firmware-Images und sogar sichere Schlüssel mit verbesserter Sicherheit im internen Flash des Microcontrollers speichern.

Obwohl Krypto-Engines und sichere Flash-Speicherung den Datenaustausch und die Datenspeicherung abriegeln, benötigt ein sicheres Embedded-System dasselbe hohe Niveau an Sicherheit für seine Interaktionen mit Sensoren und Messwandlern. Neben ihren sicheren DMA-Funktionen bietet die Architektur der LPC55S6x-MCU Mechanismen, die den Austausch zwischen dem Kern oder anderen Bus-Mastern und deren integrierten Peripheriegeräten, Speicher oder GPIO weiter sichern (Abbildung 3).

Schematische Darstellung, wie die LPC55S6x-Mikrocontroller von NXP ihre mehrschichtige Bus-Matrix mit MSWs kombinierenAbbildung 3: Die LPC55S6x-Mikrocontroller von NXP kombinieren ihre mehrschichtige Bus-Matrix mit MSWs, MPCs und PPCs, um die Transaktionen zwischen den verschiedenen Bus-Mastern und deren Peripheriegeräten und Speicher zu isolieren und zu sichern. (Bildquelle: NXP Semiconductors)

In diesem Schutzkonzept schränken Memory Protection Checker (MPCs) den Speicherzugriff durch weniger sichere Anwendungen ein. Peripheral Protection Checker (PPCs) bieten die gleiche Art von Zugriffskontrolle für die Peripheriegeräte, was es Entwicklern ermöglicht, verschiedene Zugriffsregeln für verschiedene Peripheriegeräte festzulegen. Da der SAU/IDU-Mechanismus nur für den primären Cortex-M33-Kern verfügbar ist, kommen Master Security Wrapper (MSWs) zum Einsatz, um einen ähnlichen Zugriffsschutz für andere Bus-Master zu bewerkstelligen. Die mehrschichtige AHB-Matrix schafft einen dedizierten Pfad zwischen Bus-Mastern und Peripheriegeräten oder Speicher. So entsteht eine sichere interne Bus-Verbindung, die isoliert ist von anderen Bus-Transaktionen, die möglicherweise im Baustein auftreten.

Außerdem bewirkt die LPC55S6x-MCU-Architektur durch ihr geschütztes GPIO-System eine klare Isolierung von sicherem und nicht sicherem Zugriff auf externe Komponenten. Die gleiche Art der Isolierung weitet das System auch auf die GPIO-Pins aus, die von den TrustZone-Mechanismen zwischen sicheren und nicht sicheren CPU-Stadien und Codeausführungsmodi geschaffen werden. Somit kann der Zugriff auf sichere GPIO-Pins nur durch den primären Cortex-M33-Kern erfolgen, der in einem sicheren Zustand arbeitet, wodurch Entwickler Signale vor kritischen externen Komponenten schützen können.

Sicheres Schlüsselmanagement

Die verschiedenen bisher in diesem Artikel beschriebenen Schutzmechanismen bilden lediglich die Grundlage für ein sicheres Embedded-System. Um dieses System sicher mit einem Netzwerk, Smartphone oder einem anderen Host zu verbinden, benötigen Entwickler jedoch die Möglichkeit, das Ziel der Verbindung während der Inbetriebnahme und bei den laufenden Transaktionen zu authentifizieren. Außerdem müssen sie in der Lage sein, einen sicheren verschlüsselten Kommunikationskanal aufrechtzuerhalten. Im Gegenzug hängt die Sicherheit der asymmetrischen und symmetrischen Kryptographie-Algorithmen, die das Herzstück von Authentifizierungsprotokollen und Verschlüsselungsmechanismen darstellen, letztlich von der Sicherheit der privaten Schlüssel ab, die innerhalb dieser Protokolle und Mechanismen zum Einsatz kommen.

Mit ihrer integrierten Physical Unclonable Function (PUF) bieten die LPC55S6x-Mikrocontroller einen hochgradig sicheren Mechanismus für die sichere Speicherung vorhandener Schlüssel und die Generierung neuer Schlüssel. Dieser Ansatz basiert auf der Fähigkeit der PUF-Hardware zur Schaffung eines eindeutigen PUF-Stammschlüssels, der zur Verschlüsselung anderer Benutzerschlüssel verwendet wird. Die Eindeutigkeit des PUF-Stammschlüssels ergibt sich aus der Verwendung von internen Funktionen des Bausteins in Verbindung mit SRAM-Startdaten, die aus dem zufälligen 0- und 1-Inhalt von SRAM-Zellen beim Einschalten abgeleitet werden. Im PUF-Anmeldestadium verwendet der Baustein diese beiden Quellen von Zufallsdaten zur Erzeugung eines digitalen Fingerabdrucks und eines zugehörigen 1192-Byte-Aktivierungscodes (Abbildung 4).

Schematische Darstellung der integrierten PUF-Funktion der LPC55S6x-Mikrocontroller von NXPAbbildung 4: Die integrierte PUF-Funktion der LPC55S6x-Mikrocontroller von NXP erzeugt aus dem Zufallsstatus von SRAMs beim Einschalten und aus anderen internen Funktionen einen digitalen Fingerabdruck und einen Aktivierungscode, die für nachfolgende Schlüsselgenerierungs- und Speicheroperationen verwendet werden. (Bildquelle: NXP Semiconductors)

Während der Bereitstellung der Komponente im Werk oder später am Einsatzort wird dieser Aktivierungscode im vom Kunden am Einsatzort programmierbaren Bereich (Customer in-Field Programmable Area, CFPA) innerhalb des geschützten Flash-Bereichs des Bausteins gespeichert. Bei jedem Einschalten des Mikrocontrollers und bei Aktivierung der PUF mit dem PUF-Start-Befehl kombiniert die PUF-Funktion den vorhandenen Aktivierungscode mit den SRAM-Startdaten, um den digitalen Fingerabdruck zu rekonstruieren.

Im Anschluss an dieses PUF-Start-Verfahren bewirkt der PUF-SetKey-Befehl die Codierung der Benutzerschlüssel durch die PUF-Funktion. Diese sind zum Beispiel gemeinsame Master-Schlüssel, die im Werk bereitgestellt werden, oder private Schlüssel, die von Entwicklern für ihre Anwendungen bereitgestellt werden. Jetzt generiert die PUF-Funktion einen Schlüsselcode für den entsprechenden Benutzerschlüssel. Grundlage dieser Generierung sind die Schlüsselgröße, ein Schlüsselindex sowie der eigentliche Benutzerschlüssel (Abbildung 5).

Schematische Darstellung der durch die PUF-Funktion des LPC55S6x von NXP bereitgestellten SetKey-FunktionAbbildung 5: Die PUF-Funktion des LPC55S6x von NXP stellt eine SetKey-Funktion bereit, die anhand eines digitalen Fingerabdrucks einen Benutzerschlüssel und einen Schlüsselindex codiert. So entsteht ein Schlüsselcode, der später zum Zugriff auf den ursprünglichen Benutzerschlüssel verwendet wird. (Bildquelle: NXP Semiconductors)

Entwickler können mit dem PUF-GenerateKey-Befehl auch neue Schlüssel generieren. Dabei kommt derselbe Generierungsprozess wie bei SetKey zur Anwendung, allerdings ersetzen hier eindeutige, intern generierte Daten die in Abbildung 5 gezeigte KEYIN-Funktion. Für Schlüssel, die mit einem Schlüsselindex = 0 festgelegt oder generiert werden, kommt ein weiterer Schutzmechanismus zum Tragen, der weiter unten beschrieben wird.

Zur Verwendung von Schlüsseln rufen Entwickler den PUF-GetKey-Befehl auf, um den ursprünglichen Benutzerschlüssel mit zwei unterschiedlichen Ausgabepfaden abzurufen. Diese richten sich nach dem Wert des Schlüsselindex, der bei der Festlegung oder Generierung des Schlüssels verwendet wurde. Wenn der Schlüsselindex größer als null ist, dann ist der Benutzerschlüssel über das PUF-CODEOUTPUT-Register verfügbar. Wenn der Schlüsselindex gleich null ist, wird der Schlüssel direkt an die AES-Engine weitergegeben oder an die drei unterstützten Flash-Speicherbereiche der PRINCE-Engine, was sich nach dem Wert von KEYENABLE richtet (Abbildung 6). Obwohl das 4-Bit-KEYMASK-Register der PUF-Funktion nicht direkt am Abrufen der Schlüssel beteiligt ist, unterstützt es einen internen Mechanismus, der zur Verringerung von Side-Channel-Attacken konzipiert wurde.

Schematische Darstellung des PUF-GetKey-Befehls für den Zugriff auf Schlüssel im LPC55S6x von NXPAbbildung 6: Für den Zugriff auf Schlüssel verwenden Entwickler den PUF-GetKey-Befehl des LPC55S6x von NXP. Dieser nutzt den Schlüsselindex und den Schlüsselcode, die bei Ausführung von SetKey (oder GenerateKey) generiert wurden, um den ursprünglichen Benutzerschlüssel auszugeben oder um diesen über einen privaten Bus zu den Krypto-Beschleunigern des Mikrocontrollers zu senden. (Bildquelle: NXP Semiconductors)

Null-Index-Schlüssel tragen zur weiteren Verbesserung der Lebenszyklussicherheit bei, was schon im Stadium der Bereitstellung im Werk beginnt. Sobald er durch den PUF-SetKey-Befehl bereitgestellt wurde, verlässt ein gemeinsamer Master-Schlüssel, der zur symmetrischen Kryptographie verwendet wird, oder der private Schlüssel, der zur asymmetrischen Kryptographie verwendet wird, niemals den Baustein und gelangt nicht einmal in den Systembus. Stattdessen erfolgen die Schlüsselübertragungen zu den AES- oder PRINCE-Engines intern über eine dedizierte festverdrahtete Schnittstelle, die für Software nicht zugänglich ist.

Der PUF-Mechanismus zum Schlüsselmanagement und die sonstigen Sicherheitsfunktionen des Mikrocontrollers kommen in Kombination miteinander auch in anderen Phasen der Lebenszyklussicherheit zum Einsatz, wozu sicheres Booten und Firmware-Updates zählen. Für das sichere Booten unterstützt der LPC55S6x mehrere Schutzmethoden, einschließlich Authentifizierung von RSA2048-signierten Images durch validierte X.509-Zertifikate oder Entschlüsselung von Images, die in einem PRINCE-Flash-Bereich gespeichert sind. In beiden Fällen ruft der Bootloader die erforderlichen Schlüssel zur Zertifikatvalidierung oder Image-Entschlüsselung sicher aus dem PUF-Schlüsselspeicher ab. Dabei kommen von PUF generierte Schlüssel-Hashes zum Einsatz, die zusammen mit den Images im geschützten Flash-Bereich gespeichert sind.

Für Firmware-Updates wird ein ähnlicher Mechanismen verwendet, um ein drahtlos bezogenes (OTA) Firmware-Update-Image zu authentifizieren, zu entschlüsseln und es für den Boot-Vorgang vorzubereiten.

Über die unmittelbaren Bedürfnisse nach Sicherheit beim Booten und bei Firmware-Updates hinaus bieten die zahlreichen Schlüsselspeicheroptionen und Schlüsselgenerierungsmöglichkeiten auch Unterstützung für die aktuellen Sicherheitslebenszyklus-Anforderungen im Hinblick auf den Widerruf von Schlüsseln und Zertifikaten. Diese Fähigkeit zum Schlüsselmanagement unterstützt ihrerseits Sicherheitsrichtlinien höherer Ebene, wie z. B. den Widerruf von Firmware-Images.

Für Entwickler gibt es eine einfache Methode, die Funktionen der LPC55S6x-Mikrocontroller zu erkunden: mit der von NXP angebotenen LPCXpresso55S69-Entwicklungskarte in Verbindung mit der MCUXpresso-IDE (integrierte Entwicklungsumgebung), mit IAR oder Keil-IDEs. Die MCUXpresso Config Tools, die bereits in die MCUXpresso-IDE integriert sind, helfen Entwicklern beim Einrichten der MCU-Hardware und bei der Generierung von Initialisierungscode. Mit dem in diesem Toolset enthaltenen TEE-Tool (Trusted Execution Environment) können Entwickler den mehrstufigen Sicherheitszugang der LPC55S6x-MCU einfacher konfigurieren. Über die grafische Benutzeroberfläche des TEE-Tools können Entwickler die Zugriffsrechte auf Speicher, Bus-Master und Peripheriegeräte für jeden der oben beschriebenen vier CPU-Stadien und Ausführungsmodi präzise justieren (Abbildung 7).

Abbildung der NXP MCUXpresso Config Tools-Dienstprogramme (zum Vergrößern anklicken)Abbildung 7: Innerhalb der NXP MCUXpresso Config Tools können Entwickler über die grafische Oberfläche des Trusted-Execution-Environment-Tools Zugriffsberechtigungen für Speicher, Busmaster und Peripheriegeräte für Code festlegen, der in den vier CPU-Zuständen und Ausführungsmodi ausgeführt wird (Bildquelle: NXP Semiconductors).

Für die Entwicklung von Code stellt NXP auch eine Reihe von einfachen Code-Beispielen zur Verfügung. Sie bieten grundlegende Designvorlagen für den Einsatz der Sicherheitsfunktionen des Mikrocontrollers, wie etwa ein geschütztes GPIO-System, sicheres PUF-Schlüsselmanagement und andere Funktionen. Durch seine Authentifizierungsfunktion Single Wire Debug (SWD) bietet der LPC55S6x-MCU sogar schon in der Entwicklungsphase Möglichkeiten zur Gewährleistung der

Lebenszyklussicherheit. Mit dieser Funktion können autorisierte Entwickler ihren sicheren Code debuggen und jeglichen weiteren SWD-Zugriff deaktivieren, um die Ressourcen zu schützen, bevor das Entwicklungsprojekt an Entwickler von nicht sicherer Software übergeben wird. Wenn diese Entwickler wiederum ihr Code-Debugging abgeschlossen haben, können sie den gesamten Debugging-Zugriff über den SWD-Port deaktivieren.

Fazit

Entwickler stehen vor einer wachsenden Nachfrage nach energiesparenden Hochleistungsdesigns, mit denen sich die Sicherheit während des gesamten Lebenszyklus gewährleisten lässt, von der Bereitstellung im Werk bis zum sicheren Betrieb in der Praxis. Wie hier beschrieben wurde, bietet die LPC55S6x-Reihe der Mikrocontroller von NXP eine effektive Lösung. Sie vereint Allzweck-Prozessorfunktionen mit einer umfangreichen Palette spezieller Hardware-Funktionen, mit denen sich die Lebenszyklussicherheit gewährleisten lässt.

DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Autor

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk hat mehr als 20 Jahre Erfahrung im Schreiben für und über die Elektronikindustrie zu einem breiten Spektrum von Themen wie Hardware, Software, Systeme und Anwendungen einschließlich des IoT. Er promoviertein Neurowissenschaften über neuronale Netzwerke und arbeitete in der Luft- und Raumfahrtindustrie an massiv verteilten sicheren Systemen und Methoden zur Beschleunigung von Algorithmen. Derzeit, wenn er nicht gerade Artikel über Technologie und Ingenieurwesen schreibt, arbeitet er an Anwendungen des tiefen Lernens (Deep Learning) zu Erkennungs- und Empfehlungssystemen.

Über den Verlag

Nordamerikanische Fachredakteure von DigiKey