​​Leitfaden zu NI LabVIEW Kryptographie und sicherer Kommunikation

Überblick

​​Sichere Daten sind ein kritischer Bestandteil moderner Prüf- und Messsysteme. Dieser Leitfaden stellt Kryptografiekonzepte vor und zeigt, wie Verschlüsselung, sichere Kommunikation, Schutz ruhender Daten und Schlüsselverwaltung in NI LabVIEW-Anwendungen implementiert werden, mit praktischen Anleitungen für FIPS und regulierte Umgebungen.

Inhalt

Leitfaden zu LabVIEW Kryptographie und sicherer Kommunikation

Kryptographie ist heute wichtiger denn je, um Daten zu schützen. Auch bei Testsystemen müssen Ingenieure kryptographische Verfahren in Betracht ziehen, um Testdaten sowohl bei der Übertragung als auch bei der Speicherung zu schützen. Verschlüsselung kann die Daten schützen, wenn das System kompromittiert wird, entweder durch einen böswilligen Akteur, der Zugriff erhält, oder durch einen Insider-Akteur, der die Daten unbeabsichtigt außerhalb der beabsichtigten Verwendung verfügbar macht. Datenschutz einschließlich Verschlüsselung ist wichtig, um das geistige Eigentum eines Unternehmens zu schützen, Kundendaten zu schützen oder Sicherheitsvorschriften einzuhalten.

In diesem Dokument erhalten Sie einen praktischen Leitfaden für die Implementierung von Kryptographie in LabVIEW-Umgebungen, der speziell für Ingenieure entwickelt wurde, die keine Vorkenntnisse in der Kryptografie haben.

Grundlagen der Kryptographie

​Was ist Kryptographie?

​Kryptographie ist ein breites Gebiet von Datenschutztechniken, einschließlich Verschlüsselung, Hashing, digitaler Signaturen und Schlüsselaustausch.

​Verschlüsselung ist vergleichbar mit dem Sperren von Daten mit einem Schlüssel. Plaintext ist der Text vor der Verschlüsselung, der von jedem ohne Schlüssel gelesen werden kann. Ciphertext ist der Text nach der Verschlüsselung, auf den nur jemand zugreifen kann, der einen Schlüssel zum Aufheben der Verschlüsselung hat.

​Bei der digitalen Verschlüsselung ist ein Schlüssel eine Menge von Zeichen, die verwendet werden, um die Bits von Klartext zu verschlüsseln, um ihn in Chiffretext umzuwandeln. Jeder, der einen Schlüssel hat, kann die Daten entschlüsseln, daher müssen Schlüssel geschützt werden. Kein Verschlüsselungsalgorithmus kann das versehentliche Teilen des Schlüssels überwinden, der die verschlüsselten Daten entschlüsselt. Zum Schutz von Daten werden Schlüssel oft rotiert, um neue zu erzeugen, wodurch die älteren Schlüssel veraltet werden.

​Hashing ist eine Einwegtransformation. Es wandelt eine Sammlung von Datenbits in einen Digest fester Länge um, der mit äußerst geringer Wahrscheinlichkeit durch unterschiedliche Eingaben erzeugt wird. Dadurch wird die Integrität der Quelldaten überprüft. Anders als bei der Verschlüsselung kann ein Hash nicht in die ursprünglichen Quelldaten zurückgeführt werden.

​Eine digitale Signatur verwendet einen privaten Schlüssel, um eine kryptografische Signatur basierend auf einem Hash der Daten zu erzeugen. Die Unterschrift wird zusammen mit dem Dokument gesendet. Der Empfänger überprüft die Signatur mit Hilfe des öffentlichen Schlüssels des Absenders und bestätigt, dass sich das Dokument seit der Signatur nicht geändert hat.

​Details zur Verschlüsselung

​In diesem Abschnitt wird die Funktionsweise der Verschlüsselung ausführlich beschrieben. Für Leser, die sich für eine tiefergehende Diskussion interessieren, bietet JKI eine hervorragende Einführung unter Simple XOR Cipher Encryption in LabVIEW.

​Die Verschlüsselung beginnt auf der untersten Ebene mit der XOR-Funktion. Die mathematischen Eigenschaften von XOR sind einzigartig und ermöglichen es, dass keine Informationen verloren gehen, wenn Daten durch sie hindurch bewegt werden. Die XOR-Funktion ist eindeutig, da die Hälfte der Ausgänge TRUE und die Hälfte FALSE ist:

 

​Tabelle 1: Wahrheitstabelle für XOR

 

​XOR hat auch assoziative und kommutative Eigenschaften, die es ermöglichen, Daten in beide Richtungen durch die Funktionen zu bewegen. Dies bedeutet, dass Daten über XOR verarbeitet und anschließend wiederverarbeitet werden können, um die ursprünglichen Daten wiederherzustellen.

​Mit diesen Eigenschaften kann eine Nachricht mit einem Schlüssel XOR-verknüpft werden, um eine verschlüsselte Nachricht zu erzeugen. Mit XOR und demselben Schlüssel kann die verschlüsselte Nachricht auf die ursprüngliche Nachricht zurückgesetzt werden.

​Mit Hilfe von XOR zur Verschlüsselung kann ein unzerbrechlicher Code erstellt werden, wenn alle folgenden Bedingungen erfüllt sind:

  • ​Der Schlüssel ist wirklich zufällig.
  • ​Der Schlüssel ist mindestens so lang wie die Nachricht.
  • ​Kein Teil des Schlüssels wird wiederverwendet.
  • ​Der Schlüssel wird geheim gehalten.

​Es gibt Herausforderungen, dies zu tun. Es ist nicht sinnvoll zu erwarten, dass der Schlüssel immer die gleiche Länge wie die Nachricht hat, insbesondere wenn die Länge der Nachricht vor dem Start der Übertragung nicht bekannt ist. Auch ist es für moderne Systeme schwierig, wirklich zufällige Schlüssel ohne sich wiederholende Teile zu erzeugen.

​Zur Lösung des Problems der Schlüssellänge wird ein Algorithmus verwendet, um einen Schlüssel beliebiger Länge basierend auf einem bekannten Startpunkt zu erzeugen. Der Startpunkt für den Algorithmus wird zufällig erzeugt und von Sender und Empfänger gemeinsam genutzt. Mit demselben Startwert und demselben Algorithmus kann der Empfänger denselben Schlüssel erzeugen, der vom Sender mit demselben Startwert und demselben Algorithmus erzeugt wird.

​Das Programm LabVIEW in Abbildung 1 veranschaulicht dieses Konzept anhand des gaußschen weißen Rauschgenerators. Da dieses Muster zufällig erscheint, viele Zufallstests besteht und vollständig reproduzierbar ist, wenn Sie den Anfangs-Startwert kennen, ist dieses Muster pseudozufällig.

LabVIEW-Code zur Erzeugung eines gaußschen weißen Rauschmusters

​Abbildung 1: Erzeugung pseudozufälliger Zahlenmuster in LabVIEW

​Im vorherigen Programmcode kann der Benutzer zwischen der Verwendung desselben oder unterschiedlichen Startwerts wählen. Wenn der gleiche Startwert verwendet wird, wird das gleiche „zufällige“ Muster erzeugt, wie in Abbildung 2 gezeigt:

Diagramme mit zwei weißen Rauschmustern mit übereinstimmenden Ergebnissen

​Abbildung 2: Pseudozufällige weiße gaußsche Rauscherzeugung

​Wenn sowohl der Sender als auch der Empfänger den Startwert und den Algorithmus kennen, können sie einen Schlüssel neu erstellen, ohne einen Schlüssel mit der gleichen Größe wie die Nachricht zu übertragen.

​Das Senden einer verschlüsselten Nachricht besteht daher aus zwei Teilen: dem Erzeugen eines Schlüssels mit Hilfe eines Startwerts und eines Algorithmus und dem Durchführen von XOR an jedem Zeichen der Nachricht mit Hilfe der erzeugten Zeichen des Schlüssels.

​Es ist wichtig zu beachten, dass ein Passwort nicht der Schlüssel ist; der Schlüssel wird aus dem Passwort erzeugt. Ein Passwort wird mit Hilfe einer Schlüsselableitungsfunktion (KDF) in einen starken kryptografischen Schlüssel fester Länge umgewandelt. Passwörter sind kurz, vorhersehbar, von variabler Länge und oft schwach. KDFs wandeln Passwörter in Werte mit einer exakten Länge, hoher Zufälligkeit und einheitlicher Formatierung um.

​Schlüssel müssen von einer kryptographisch sicheren Zufallsquelle erzeugt werden. Im Allgemeinen sollten Zufallsgeneratoren des Betriebssystems anstelle von anwendungsgenerierten Zufallszahlen verwendet werden. Betriebssystem-Zufallsgeneratoren erzeugen Zufallszahlen aus einer Vielzahl von Quellen, einschließlich Tastatur-Timing, Mausbewegungen, CPU-Jitter und anderen Messungen, die normalerweise nicht von einer Anwendung verwendet werden. 

​Ein KDF fügt einem Passwort „Salz“ hinzu (siehe Abbildung 3). Salt verhindert, dass Angreifer Schlüssel erraten, da zwei identische Passwörter zwei sehr unterschiedliche Schlüssel erzeugen.

Prozess des Hinzufügens von Salt zum Passwort zur Erzeugung eines Schlüssels

​Abbildung 3: Von einer KDF zu einem Passwort hinzugefügtes Salt zur Erzeugung eines Schlüssels

​Einige der Algorithmen, die ein Benutzer bei der Verschlüsselung antrifft, sind für die KDF und einige für die tatsächliche Verschlüsselung. Beides ist entscheidend, um die Sicherheit der verschlüsselten Daten zu gewährleisten.

​Ein Schlüssel ist eine feste Länge, während eine Nachricht in ihrer Länge variabel sein kann. Bei den meisten Verschlüsselungsalgorithmen ist die Nachricht in Blöcke unterteilt, die die gleiche Größe wie der Schlüssel haben. Der Schlüssel wird dann wiederholt auf jeden Abschnitt der Nachricht angewendet, um die Daten zu verschlüsseln.

​Die Sicherheit hängt sowohl vom Algorithmus als auch von der Schlüssellänge ab. Längere Schlüssel erhöhen in der Regel den Widerstand gegen Brute-Force-Angriffe. Die Mindestlänge hängt von der Art der Verschlüsselung, der Empfindlichkeit der Daten und der erwarteten Lebensdauer der Daten ab. Für die allgemeine Verwendung bei der AES-Verschlüsselung gelten 128-Bit-Schlüssel heute als Mindestlänge für die Sicherheit von Daten. Viele Unternehmen bevorzugen AES-256 für hochsensible oder langlebige Daten, obwohl AES-128 für viele Anwendungen weiterhin zugelassen und sicher ist. AES-256 gilt derzeit als resistent gegen bekannte Quantenangriffe, obwohl sich zukünftige kryptografische Standards weiter entwickeln werden.

Arten der Kryptographie

​Forscher haben viele Arten von Verschlüsselungsalgorithmen entwickelt, jeder mit Vor- und Nachteilen. Es gibt zwei Hauptkategorien von Kryptographiealgorithmen: symmetrische und asymmetrische.

Symmetrische Verschlüsselung

​Symmetrische Algorithmen verwenden denselben Schlüssel zum Verschlüsseln und Entschlüsseln der Daten. Der Vorgang ist in Abbildung 4 dargestellt.

Symmetrischer Verschlüsselungsprozess, bei dem derselbe Schlüssel für die Verschlüsselung und Entschlüsselung verwendet wird

​Abbildung 4: Symmetrische Verschlüsselung

​Symmetrische Verschlüsselung ist schneller und effizienter als asymmetrische Verschlüsselung, da die Operationen einfacher sind. Symmetrische Verschlüsselung ist ideal für große Dateien, Streaming-Daten und Echtzeit-Testsysteme.

​Die Sicherheit der symmetrischen Verschlüsselung hängt stark vom Schlüsselschutz ab. Wenn jemand den Schlüssel erhält, kann er alles entschlüsseln. Symmetrische Schlüssel erfordern, dass Sender und Empfänger beide den Schlüssel haben. Das heißt, der Schlüssel muss an den Empfänger übergeben werden. In manchen Fällen ist dies nicht möglich, so dass eine asymmetrische Verschlüsselung verwendet wird.

​Die gängigste symmetrische Verschlüsselung ist AES. Sie wird durch die Schlüssellänge bezeichnet, so dass AES-128 und AES-256 in der Länge des verwendeten Schlüssels variieren. Für die meisten Anwendungen wird AES-256 empfohlen, es sei denn, Sie haben einen bestimmten Grund, dies nicht zu tun. AES ist für FIPS-Anforderungen zulässig. ChaCha20 ist ein weiterer symmetrischer Verschlüsselungsalgorithmus, der heute häufig verwendet wird.

​Transport Layer Security (TLS) verwendet symmetrische Verschlüsselung, um Daten zu senden, nachdem Schlüssel mit asymmetrischer Verschlüsselung sicher ausgetauscht wurden. Moderne Systeme sollten TLS 1.2 oder TLS 1.3 verwenden und SSL und ältere TLS-Versionen vermeiden. Diese neueren TLS-Implementierungen verwenden in der Regel authentifizierte Verschlüsselungsalgorithmen wie AES-GCM oder ChaCha20-Poly1305.

​Verwenden Sie für die meisten Datenspeicher- und Datenübertragungssituationen in Testsystemen eine symmetrische Verschlüsselung.

​Asymmetrische Verschlüsselung

​Die asymmetrische Verschlüsselung ist langsamer als die symmetrische Verschlüsselung und wird daher nicht für große Datenmengen verwendet. Es wird in der Regel für die Kommunikation über das Internet, Geräte-Server-Verbindungen und verteilte Systeme verwendet. Bei der asymmetrischen Verschlüsselung werden Daten mit Hilfe zweier unterschiedlicher, aber mathematisch zusammenhängender Schlüssel verschlüsselt und entschlüsselt. Diese beiden Schlüssel werden öffentlicher Schlüssel (der gemeinsam genutzt werden kann) und privater Schlüssel (der geheim gehalten werden muss) genannt. Bei der symmetrischen Verschlüsselung handelt es sich um einen Tresor, bei dem zwei Personen übereinstimmende Schlüssel zum Aufheben der Sperre haben. Bei der asymmetrischen Verschlüsselung handelt es sich um eine Mailbox mit einem Steckplatz, in den jeder einen Brief einwerfen kann (unter Verwendung eines öffentlichen Schlüssels), aber nur der Eigentümer kann ihn aufheben und lesen (mit einem privaten Schlüssel). Der Vorgang ist in Abbildung 5 dargestellt.

Asymmetrischer Verschlüsselungsprozess, bei dem ein öffentlicher Schlüssel für die Verschlüsselung und ein privater Schlüssel für die Entschlüsselung verwendet werden

​Abbildung 5: Asymmetrische Verschlüsselung

​Öffentliche Schlüssel werden offen gemeinsam genutzt, in der Regel zusammen mit einer Zertifikatsdatei, die die Authentizität des öffentlichen Schlüssels überprüft. Private Schlüssel werden vom Eigentümer geheim gehalten. Dadurch wird eine sichere Kommunikation ohne vorheriges Vertrauen ermöglicht. Sie müssen der Partei, die die Verschlüsselung durchführt, nicht vertrauen, um den Schlüssel mit ihnen zu teilen.

​Die beiden gebräuchlichsten asymmetrischen Verschlüsselungsalgorithmen sind RSA und ECC. RSA ist älter mit größeren Schlüsseln, aber es hat heute eine breite Akzeptanz. RSA-Schlüssellängen von mindestens 2.048 werden empfohlen. Elliptische CURVE-Kryptografie (ECC) ist kleiner und schneller als RSA und wird für moderne Systeme mit Schlüssellängen von mindestens 256 Bit empfohlen. Sowohl RSA als auch ECC sind nach FIPS-Vorschriften erlaubt, aber es wird nicht erwartet, dass sie in einer Post-Quantencomputer-Welt sicher sind. Asymmetrische Algorithmen werden sich weiterentwickeln, wenn Post-Quanten-Standards angenommen werden.

​Hybride Verschlüsselungssysteme sind heute üblich. Mit Hilfe der asymmetrischen Verschlüsselung wird ein gemeinsam genutzter Schlüssel erstellt, der dann bei der symmetrischen Verschlüsselung der eigentlichen Daten verwendet wird. TLS verwendet beispielsweise während des anfänglichen Handshakes eine asymmetrische Verschlüsselung und dann eine symmetrische Verschlüsselung (AES) für die Datenübertragung.

Kryptographieanwendungen

Hashing und Integrität

​Verschlüsselung schützt die Vertraulichkeit, indem sie Daten geheim hält. Ein weiterer Teil einer sicheren Übertragung ist das Sicherstellen, dass Daten nicht geändert wurden, was mit Hashing geschieht.

​Eine Hash-Funktion verarbeitet beliebige Eingaben – eine Datei, eine Nachricht oder einen Datenstrom – und erzeugt eine Ausgabe fester Länge, die als Digest bezeichnet wird. Ein Hash-Digest ist unabhängig von der Größe der Eingangsdaten gleich lang, und eine kleine Änderung der Daten führt zu einem völlig anderen Hash.

​Ein häufiger Anwendungsfall eines Hashs ist das Herunterladen von Daten. Ein Sender berechnet einen Hash für die Datei und sendet diesen an den Empfänger. Der Empfänger lädt die Datei herunter und berechnet den Hash. Wenn sich die Datei nicht geändert hat, bleibt der Hash gleich.

​Hashes werden in einer Vielzahl von Cases über das Herunterladen von Daten hinaus verwendet. Ein Hash kann verwendet werden, um sicherzustellen, dass sich eine Datei auf dem Datenträger nicht geändert hat, so dass eine Anwendung Daten aus der Datei importieren kann, mit der Gewissheit, dass sich die Daten nicht geändert haben. Ein Hash kann eine Computer- oder Betriebssystemkonfiguration überprüfen und das Hochfahren blockieren, wenn sich etwas geändert hat, wodurch verhindert wird, dass ein böswilliger Benutzer den Computer manipuliert.

​Hashing wird mit Verschlüsselung kombiniert, um Systeme sicherer zu machen. TLS verwendet einen Hash, um Handshake-Informationen zu überprüfen, um sicherzustellen, dass die ausgetauschten Schlüssel während der Transaktion nicht geändert werden.

​Der gängigste Hash-Algorithmus ist SHA (normalerweise SHA256). MD5 wird auch häufig für Datei-Downloads verwendet, um die Dateiintegrität zu überprüfen, aber MD5 hat bekannte Schwächen für andere Verwendungen. MD5 ist nicht FIPS-zugelassen, aber SHA256 ist FIPS-zugelassen.

​Authentifizierte Verschlüsselung

​Verschlüsselung allein schützt die Vertraulichkeit, garantiert aber nicht, dass Daten nicht verändert wurden. Moderne kryptografische Systeme verwenden daher eine authentifizierte Verschlüsselung, die Verschlüsselung und Integritätsschutz in einem Arbeitsschritt kombiniert.

​Algorithmen zur authentifizierten Verschlüsselung erzeugen verschlüsselte Daten zusammen mit einem Authentifizierungs-Tag. Wenn der Empfänger die Daten entschlüsselt, wird das Authentifizierungs-Tag verifiziert. Wenn ein Teil der Nachricht geändert wurde, schlägt die Entschlüsselung fehl und die geänderten Daten werden verworfen.

​Gängige authentifizierte Verschlüsselungsalgorithmen sind AES-GCM, AES-CCM und ChaCha20-Poly1305. Diese Algorithmen bieten sowohl Vertraulichkeit als auch Integrität und werden in modernen Protokollen, einschließlich TLS, häufig verwendet.

​Wenn verfügbar, sollten authentifizierte Verschlüsselungsmodi älteren Ansätzen vorgezogen werden, die Verschlüsselung und Hash-Funktionen getrennt kombinieren, da sie einfacher zu implementieren sind und das Risiko von Sicherheitslücken verringern.

​Sichere Protokolle

​Mit den zuvor erwähnten Verschlüsselungs- und Hash-Technologien werden heute mehrere sichere Protokolle verwendet.

​TLS wird für die sichere Netzwerkkommunikation verwendet. Es handelt sich um ein Protokoll, das eine sichere Kommunikation über ein Netzwerk ermöglicht, indem es Verschlüsselung, Authentifizierung und Datenintegrität kombiniert. Es stellt sicher, dass Daten zwischen Parteien privat, unverändert und an den richtigen Empfänger gesendet werden. TLS verschlüsselt Daten in der Regel mit AES, erkennt Manipulationen mithilfe von Hashing und überprüft die Identität mit Zertifikaten.

​SSH ist ein Protokoll, das für den sicheren Zugriff auf entfernte Systeme über ein Netzwerk verwendet wird. SSH verwendet Nachrichtenauthentifizierungscodes (MACs), die auf Hash-Funktionen wie SHA basieren, um die Datenintegrität zu überprüfen und die Benutzer-/Serveridentität beim Anmelden zu überprüfen. Bei einer SSH-Transaktion präsentiert der Server einen öffentlichen Schlüssel. Der Client speichert den öffentlichen Serverschlüssel in der Regel nach der ersten Verbindung und prüft auf Änderungen bei zukünftigen Verbindungen. Der Client tauscht dann Schlüssel mit dem Server aus, um Daten zwischen Server und Client mit AES- oder ChaCha20-Verschlüsselung zu verschlüsseln.

​HTTPS (Hypertext Transfer Protocol Secure) ist eine HTTP-Version, die TLS verwendet, um die Kommunikation zwischen einem Client und einem Server zu verschlüsseln und zu sichern. HTTP ist, wie die Daten in einer Webanfrage strukturiert sind, und TLS ist, wie diese Daten geschützt werden. HTTPS wird heute häufig in Webbrowsern und auch in Web-APIs, Cloud-Diensten sowie Industrie- oder Testendpunkten verwendet.

​Ohne HTTPS können Daten während der Übertragung zwischen Systemen über jedes nicht vertrauenswürdige Netzwerk abgefangen oder modifiziert werden. Mit HTTPS werden Daten verschlüsselt, verifiziert und vor Manipulationen geschützt. HTTPS kann den FIPS-Bestimmungen entsprechen, muss es aber nicht – es hängt vom TLS-Stack ab, der zur Unterstützung des Protokolls verwendet wird.

​HTTPS arbeitet auf Anwendungsebene – die Anwendung führt die Verschlüsselung durch. IPsec (Internet Protocol Security) ist eine Reihe von Protokollen, die die Netzwerkkommunikation auf der Netzwerkschicht durch Verschlüsselung und Authentifizierung von Paketen sichern. IPsec verarbeitet den Datenverkehr zwischen Systemen transparent, ohne dass die Anwendung die Verschlüsselung übernehmen muss.

​Ein Beispiel für IPsec ist das Virtual Private Network (VPN). In einem VPN wird der gesamte Netzwerkverkehr verschlüsselt, während er gesendet wird, und vom Client beim Empfang entschlüsselt. Die Anwendungssoftware weiß nicht, dass die Daten jemals verschlüsselt sind.

​Verwenden Sie IPsec-Tools, wenn Sie alle Daten zwischen zwei Systemen verschlüsseln möchten. Verwenden Sie TLS, wenn Sie die Verschlüsselung direkt von Ihrer Anwendung aus steuern möchten.

​FIPS-Verschlüsselung

​Welche Verschlüsselung sollten Sie verwenden, wenn verschiedene Verschlüsselungsmethoden zur Verfügung stehen? Welche Verschlüsselung ist ausreichend? Um diese Frage für US-Regierungsanwendungen zu beantworten, hat NIST die Publikation FIPS 140 (Federal Information Processing Standards) entwickelt. Dies befindet sich derzeit in Version 3, so dass FIPS 140-3 die neueste verfügbare Anleitung ist.

​Wenn ein Lieferant ein kryptografisches Modul erstellt, kann dieses von einem FIPS-Testlabor auf FIPS-Validierung getestet werden. Ein Modul mit dieser Bezeichnung wurde unabhängig getestet und validiert, um die Anforderungen von FIPS 140 zu erfüllen. Validierte Module werden im NIST-Ressourcenzentrum für Informatik auf der Seite Validierungsprogramm für kryptographische Module aufgeführt.

​Module können eine Software-Kryptographie-Bibliothek oder eine Hardware-Sicherheitsvorrichtung sein. Die meisten Anwendungen delegieren kryptografische Operationen an diese FIPS-validierten Module, anstatt sie direkt in der Anwendung zu implementieren.

​Das FIPS-Validierungsprogramm ist teuer und dauert sehr lange. Das FIPS-Programm hat einige moderne, starke Verschlüsselungsalgorithmen wie ChaCha20 und BLAKE2 noch nicht validiert. Aus diesen Gründen erstellen viele Hersteller, die Produkte mit Verschlüsselung erstellen, keine FIPS-validierten Module, da sie FIPS-validierte Komponenten wiederverwenden können, oder sie verwenden möglicherweise Algorithmen, die bekanntermaßen den FIPS-Vorschriften entsprechen. 

​Die Notwendigkeit der FIPS-Compliance ergibt sich am häufigsten für Benutzer, wenn ihre Sicherheitsteams verlangen, dass sie ihre Windows-Computer in den FIPS-Modus versetzen. In diesem Modus kann Windows die Verwendung von nicht FIPS-geprüften Algorithmen durch unterstützte kryptografische APIs einschränken. Windows prüft nicht auf FIPS-Validierung, sondern nur, ob die verwendete Verschlüsselungstechnik im Rahmen des FIPS-140-Programms zugelassen ist. Wenn ein Programm beispielsweise MD5 verwendet (ein älterer Hash-Algorithmus, der als nicht sicher bekannt ist), blockiert Windows die Ausführung des Programms, wenn der FIPS-Modus aktiviert ist.

​Das CMMC-Programm, das Anforderungen von NIST SP 800-171 ableitet, erfordert den Schutz kontrollierter unklassifizierter Informationen (CUI) mit Hilfe von Kryptographie, die durch FIPS-validierte Module implementiert wird. Remote-Zugriffssitzungen sind ein häufiges Szenario, in dem diese Anforderungen gelten.

Verschlüsselung in LabVIEW

​LabVIEW Entwickler werden in zwei Anwendungsfällen auf Verschlüsselung stoßen: Speicherung (Daten im Ruhezustand) oder Übertragung (Daten während der Übertragung).

​Verschlüsselung für Daten im Ruhezustand

​Daten im Ruhezustand beziehen sich auf Informationen, die gespeichert und nicht aktiv übertragen werden. Beispiele sind Konfigurationsdateien, Testergebnisse, Datenbanken, Protokolldateien, Kalibrierdaten und kryptografische Schlüssel. Wenn ein böswilliger Akteur Zugriff auf ein Speichergerät, einen Wechseldatenträger oder eine kopierte Sicherungsdatei erhält, können unverschlüsselte Daten gelesen werden, ohne Zugriff auf die ausgeführte Anwendung zu benötigen.

​Nicht alle gespeicherten Daten müssen verschlüsselt werden. Beim Speichern der folgenden Informationen sollte eine Verschlüsselung in Betracht gezogen werden:

  • ​Kunden- oder proprietäre Informationen
  • ​Testdaten mit geistigem Eigentum
  • ​Authentifizierungsdaten
  • ​Kryptographische Schlüssel
  • ​Kontrollierte nicht klassifizierte Informationen (CUI)
  • Informationen, die regulatorischen Anforderungen unterliegen

​Betriebssystemschutz wie Windows BitLocker bieten für viele Anwendungen eine effektive erste Verteidigungsschicht, indem das gesamte Speichergerät verschlüsselt wird. Vollständige Festplattenverschlüsselung schützt Daten, wenn ein Computer oder Laufwerk verloren geht oder gestohlen wird, verhindert jedoch nicht, dass berechtigte Benutzer oder Anwendungen auf Dateien zugreifen, sobald das System ausgeführt wird. Die Verschlüsselung während der Übertragung schützt die Daten nicht, nachdem sie gespeichert wurden, und die Verschlüsselung im Ruhezustand schützt die Daten während der Übertragung nicht. Viele Systeme erfordern beides.

​Bei sensiblen Dateien müssen Anwendungen die Daten möglicherweise selbst verschlüsseln, bevor sie auf den Datenträger geschrieben werden. Gängige Ansätze umfassen die folgenden Arten der Verschlüsselung:

  • ​Verschlüsseln von Dateien mit AES-256
  • ​Verschlüsseln von Datenbankinhalten oder Datenbankfeldern
  • ​Verschlüsseln exportierter Protokolle und Archive
  • ​Verschlüsseln von Backups vor dem Speichern oder Übertragen

​Bei der Verschlüsselung von Anwendungsdaten sollten authentifizierte Verschlüsselungsalgorithmen wie AES-GCM bevorzugt werden, da sie sowohl Vertraulichkeit als auch Integritätsschutz bieten. Wenn die verschlüsselte Datei geändert wird, kann die Anwendung die Änderung erkennen, wenn sie versucht, die Daten zu entschlüsseln.

​Hinweise zu LabVIEW für Daten im Ruhezustand

​LabVIEW-Anwendungen speichern Informationen in folgenden Formaten:

  • ​TDMS-Dateien
  • ​Konfigurationsdateien (INI, JSON, XML)
  • ​SQLite oder andere Datenbanken
  • ​Protokolldateien
  • ​Serialisierte Datendateien

​Diese Formate bieten wenig oder keine native Verschlüsselung. Wenn ein Schutz erforderlich ist, verschlüsseln Sie die Daten vor dem Schreiben auf die Festplatte oder speichern Sie sie in einem verschlüsselten Laufwerk, das durch Betriebssystemwerkzeuge wie BitLocker geschützt ist.

​Vermeiden Sie es, Passwörter, Zertifikate oder kryptografische Schlüssel direkt in Konfigurationsdateien zu speichern. Verwenden Sie geschützte symmetrische und asymmetrische Schlüsselspeicher des Betriebssystems, vertrauenswürdige Plattformmodule (TPMs) oder APIs wie CryptProtectData, um sensible Secrets zu schützen.

​Verschlüsselung für Daten im Transit

​LabVIEW bietet eine Vielzahl von Netzwerkkommunikationsfunktionen von Low-Level bis High-Level. Die meisten dieser Funktionen bieten derzeit keine Verschlüsselung. Emerson-Ingenieure arbeiten derzeit daran, einige dieser Netzwerkfunktionen um Kryptographie zu ergänzen. Diese Funktion wird in zukünftigen Versionen von LabVIEW angekündigt.

 

​Tabelle 2: LabVIEW-Kommunikationsfunktionen

​Kryptographie ist in diesen Funktionen nicht enthalten. Es gibt jedoch verschiedene Möglichkeiten, Verschlüsselung in LabVIEW für die Datenübertragung zu implementieren.

Option 1: IPsec/VPN

​Beim Aktivieren eines VPNs auf dem Server und auf dem Client werden alle zwischen den beiden Computern übertragenen Daten verschlüsselt, einschließlich LabVIEW-Daten. Die LabVIEW-Anwendung muss nichts über die VPN-Verbindung wissen. Die gesamte Verschlüsselung wird von der VPN-Software übernommen, bevor die Daten an den Client übertragen werden.

​Wir empfehlen WireGuard als VPN. WireGuard ist kostenlos, schnell und sicher. WireGuard wird sowohl unter Windows als auch unter NI Linux RT unterstützt und kann daher zur Übertragung von Daten von einem Echtzeitgerät an ein Windows-System verwendet werden (siehe Abbildung 6). WireGuard ist in der NI Linux RT-Distribution enthalten.

Daten, die während der Übertragung durch WireGuard fließen, um verschlüsselt zu werden

​Abbildung 6: WireGuard-Datenübertragung

​Im internen Test haben wir festgestellt, dass WireGuard schnell und einfach zu konfigurieren ist. Es sind keine Änderungen am LabVIEW-Code oder am Rest des Systems erforderlich. Es erfordert, dass der WireGuard-Client sowohl auf dem Server als auch auf dem Client ausgeführt wird. Vergewissern Sie sich daher, dass dies möglich ist, bevor Sie ihn in Ihr System einbinden.

​WireGuard ist nicht FIPS-validiert. Andere VPNs sind verfügbar, die FIPS-validiert sind, wenn Sie regulatorische Anforderungen erfüllen müssen, die eine FIPS-Validierung umfassen.

​Option 2: LabVIEW-Funktionen mit Verschlüsselung verwenden

​Einige LabVIEW Funktionen enthalten die Möglichkeit, Verschlüsselung zu Datenaustauschfunktionen hinzuzufügen.

​Wenn Sie mit gRPC Daten zwischen Geräten oder Diensten austauschen, können Sie die TLS-Verschlüsselung aktivieren. Sie müssen TLS für den Server und die Clients konfigurieren. Sie müssen ein X.509-Zertifikat für den Server erzeugen. Weitere Informationen zur Verwendung von gRPC in LabVIEW finden Sie unter Verwendung von gRPC mit Software und Hardware von NI.

​Wenn Sie mit der sicheren FTP-Funktion (SFTP) arbeiten, müssen Sie einen sicheren FTP-Server einrichten. Die LabVIEW Funktionen ermöglichen das Senden und Empfangen von diesem Server. Diese Übertragungen verwenden das SSH-Protokoll, das eine Reihe von Verschlüsselungsalgorithmen unterstützt. Der verwendete spezifische Algorithmus hängt von der Konfiguration des SFTP-Servers ab, den Sie separat installieren müssen. Weitere Informationen zur Verwendung des SFTP in LabVIEW finden Sie im Abschnitt SFTP des LabVIEW Programming Reference Manuals.

​Keine der in LabVIEW enthaltenen Funktionen ist FIPS-validiert, aber einige der Algorithmen verwenden FIPS-zugelassene Algorithmen. Windows blockiert diese nicht im FIPS-Modus.

​Die LabVIEW Funktionen bieten keine Verschlüsselung des gesendeten Datenpakets. In diesen Fällen müssen Sie eine der anderen Optionen verwenden.

Option 3: Verwenden eines Kryptographie-Toolkits von Drittanbietern

​Encryption Compendium for LabVIEW ist über die LVS Tools erhältlich und bietet eine vollständige Bibliothek mit Kryptographiefunktionen für LabVIEW. Ein Screenshot ist in Abbildung 7 dargestellt. Dieses Toolkit ist über das NI Tools Network oder direkt über LVS Tools erhältlich.

​Encryption Compendium unterstützt sowohl symmetrische als auch RSA-asymmetrische Verschlüsselung. Es unterstützt außerdem Hash-Funktionen und viele sichere Protokolle in LabVIEW wie TLS, DTLS und SSH. Es ermöglicht Ihnen nicht nur, Daten zu verschlüsseln und verschlüsselt zu speichern, sondern sie auch sicher in einem von mehreren Protokollen zu übertragen.

Palette LabVIEW mit Verschlüsselungskompendiumsfunktionen

​Abbildung 7: Palette „Encryption Compendium“

​Encryption Compendium bietet Funktionen, mit denen Sie die Aufgabe der Verschlüsselung auf ein VI reduzieren können. Das VI „Symmetrische Verschlüsselung“ verschlüsselt beispielsweise Daten mit Hilfe eines beliebigen Verschlüsselungsalgorithmus (siehe Abbildung 8).

LabVIEW-Diagramm zur symmetrischen Verschlüsselung mit dem Encryption Compendium

​Abbildung 8: Funktion zur symmetrischen Verschlüsselung im Encryption Compendium

​Eine einzelne Funktion unterstützt die Entschlüsselung (siehe Abbildung 9).

LabVIEW-Diagramm zur symmetrischen Entschlüsselung mit dem Encryption Compendium

​Abbildung 9: Funktion zur symmetrischen Verschlüsselung im Encryption Compendium

​Encryption Compendium unterstützt eine Reihe anderer kryptografischer Funktionen sowie sichere Protokolle. Das Beispiel in Abbildung 10 zeigt, wie X.509-Schlüssel in LabVIEW erzeugt werden.

LabVIEW-Diagramm zur Zertifikatserzeugung mit Encryption Compendium

​Abbildung 10: X.509-Zertifikatserzeugung im Encryption Compendium

​Das Encryption Compendium ist nicht FIPS-validiert, aber die FIPS-Kompatibilität ist für später im Jahr 2026 geplant.

​Weitere Informationen zum LVS Tools Encryption Compendium

​Option 4: Nicht-LabVIEW-Verschlüsselungsmodule aufrufen

​Für die allgemeine Programmierung stehen viele Kryptographiemodule zur Verfügung, die eine starke, moderne Kryptographie bieten. Sie können diese in LabVIEW mit Wrappern verwenden, die von der LabVIEW Community zur Verfügung gestellt wurden. Sie verwenden Verschlüsselungsalgorithmen, die nicht in den FIPS-140-Standards enthalten sind, aber genauso viel – oder mehr – Sicherheit bieten.

​Bouncy Castle ist eine Open-Source-Kryptographiebibliothek, die eine Reihe von kryptografischen Funktionen bereitstellt. Sie können Hashes erzeugen, Schlüssel und Zertifikate erstellen und Daten verschlüsseln (siehe Abbildung 11). LabVIEW-Benutzer haben Open-Source-Wrapper für Bouncy Castle-Funktionen erstellt. Zusätzlich gibt es eine Anleitung zur Verwendung dieser LabVIEW Wrapper.

LabVIEW Diagramme zur Ver- und Entschlüsselung mit Bouncy Castle Wrappern

​Abbildung 11: Verschlüsseln und Entschlüsseln mit Hilfe der Wrapper „Cannon Controls Bouncy Castle“

​Option 5: FIPS-validierte Verschlüsselungsmodule aufrufen

​Sie können FIPS-validierte Verschlüsselung nicht direkt in LabVIEW durchführen, aber es gibt mehrere Optionen, FIPS-validierte Module zu verwenden. Diese Module erfüllen die Anforderungen für den Umgang mit von der US-Regierung kontrollierten Informationen, die für die CMMC-Zertifizierung erforderlich sind.

​CryptProtectData (und CryptUnprotectData) befinden sich in der advapi32.dll. Mit diesen Funktionen können Sie Secrets wie Passwörter, Schlüssel und Konfigurationen speichern. Informationen zur Verwendung dieser Funktionen finden Sie in der Windows-Dokumentation. Ihre Daten müssen als Byte-Array übergeben werden. Vor dem Senden der Daten an die Funktion müssen Sie außerdem die DATA_BLOB-Struktur in Ihrer LabVIEW Anwendung definieren. Darüber hinaus müssen Sie mit dem Weiterleiten von Datenzeigern in LabVIEW vertraut sein, um diese Funktion aufzurufen.

​BCrypt-APIs sind Windows-APIs in bcrypt.dll. Dies ist die primäre moderne Kryptographie-API in Windows für allgemeine Verschlüsselungsaufgaben wie symmetrische AES-Verschlüsselung, Hashing und Schlüsselableitung.

​Bei korrektem Aufruf rufen diese Funktionen FIPS-validierte Algorithmen zur Einhaltung von Vorschriften auf. 

​Schlüsselverwaltung

​Schlüssel sind ein kritisches Element eines kryptografischen Systems. Wenn jemand Schlüssel hat, hat er Zugriff auf alles, was diese Schlüssel schützen. Das Teilen von Schlüsseln ist eine gängige Methode, um böswillige Akteure in ein geschütztes System zu lassen. Der Verlust von Schlüsseln ist eine gängige Methode, um den Zugriff auf Daten zu verlieren.

​Wenn Ihr LabVIEW Programm Informationen verschlüsseln oder entschlüsseln muss, müssen Sie Schlüssel verarbeiten. Vermeiden Sie es, Schlüssel fest im LabVIEW-VI zu codieren, da Hacker zu leicht Zugriff erhalten können. Speichern Sie Schlüssel nicht in einer Klartextdatei auf dem PC. Speichern Sie niemals kryptografische Schlüssel, Passwörter oder Zertifikate in Quellcode-Repositorys – auch nicht in privaten Repositorys.

​Verwalten von Schlüsseln mit Windows-Tools

​Windows bietet eine Möglichkeit, lokale Schlüssel in einer sicheren Umgebung zu speichern. Der Microsoft Secret Store ist eine Möglichkeit, Schlüssel mit PowerShell sicher auf einem lokalen Computer zu speichern und abzurufen. Eine Open-Source-Bibliothek für den Zugriff auf den Microsoft Secret Store von LabVIEW aus ist unter https://gitlab.com/cannontim/secret-store-api verfügbar.

​Mit Hilfe der Funktion „CryptProtectData“ können Sie Schlüssel auch mit Hilfe des Knotens zum Aufruf externer Bibliotheken in LabVIEW speichern.

​Hardwaresicherheitsmodul (HSM)

​In sicheren Umgebungen müssen Sie möglicherweise ein HSM in Betracht ziehen. Bei diesen Hardwaregeräten handelt es sich um dedizierte, manipulationssichere Geräte, die kryptografische Schlüssel sicher erzeugen, speichern und verwalten, während sie Verschlüsselungs-, Entschlüsselungs- und digitale Signierungsoperationen durchführen. HSMs können für kleinere Anwendungen überdimensioniert sein, aber für größere Anwendungen, die regulatorische Anforderungen erfüllen müssen, können diese Geräte erforderlich sein.

​HSMs reichen von großen, teuren Netzwerkgeräten, die Entwicklerteams unterstützen, bis hin zu kleinen, tragbaren USB-Geräten für einzelne Entwickler. Einige können im Inneren eines Computers installiert sein. Ein vertrauenswürdiges Plattformmodul (TPM) ist ein spezifischer HSM-Typ, der von PCs zur Schlüsselverwaltung für Operationen wie sicheren Start und Netzwerkauthentifizierung verwendet wird.

​HSMs verfügen in der Regel über eine API, mit der Anwendungen wie LabVIEW auf ihre Schlüsselverwaltungsfunktionen zugreifen können.

​Fazit

​Verschlüsselung ist eine grundlegende Fähigkeit zum Schutz moderner Test- und Messsysteme, aber nur effektiv, wenn sie als Teil einer vollständigen, gut konzipierten Sicherheitsarchitektur implementiert ist. In diesem Dokument haben wir uns nicht nur mit der Funktionsweise der Verschlüsselung befasst, sondern auch damit, wie diese in realen LabVIEW Systemen zum Schutz von Daten sowohl während der Übertragung als auch im Ruhezustand angewendet werden sollte.

​Im Kern beruht die Verschlüsselung auf einer Kombination von Algorithmen wie AES, RSA und SHA sowie Protokollen wie TLS, SSH und IPsec, Schlüsseln und Schlüsselverwaltungspraktiken. Jede dieser Komponenten spielt eine entscheidende Rolle, aber die Gesamtsicherheit eines Systems hängt in erster Linie davon ab, wie sie kombiniert und implementiert werden, und nicht von einer einzelnen Technologie isoliert.

​LabVIEW bietet Ingenieuren einen grafischen Ansatz, um ihren Code in funktionale Messanwendungen umzusetzen. Mit den Richtlinien in diesem Dokument können sie die in diesen Anwendungen erzeugten Daten schützen, um die Vertraulichkeit und Integrität ihres Testsystems sicherzustellen.

ABA+B
000
101
011
110

Windows und Bitlocker sind Marken der Microsoft-Unternehmensgruppe. Die eingetragene Marke Linux® wird gemäß einer Unterlizenz von LMI verwendet, dem exklusiven Lizenznehmer von Linus Torvalds, dem weltweiten Eigentümer der Marke.

​Funktion​Merkmale​Verschlüsselung
​TCP​Verlustarmer Handshake-Datenaustausch​Keine
​UDP​Hochgeschwindigkeitsdatenübertragung, verlustbehaftet​Keine
​Netzwerk-StreamsVerlustfreie Kommunikation auf höherer Ebene basierend auf TCP. Typsicher.​Keine
​Umgebungsvariablen​Kommunikation zwischen LabVIEW VIs auf übergeordneter Ebene​Keine
​DataSocket​​Veralteter Datenaustausch​Keine
​HTTP-Sicherheit​Sichere Kommunikation zwischen LabVIEW HTTP-Clients und NI-Webdiensten.​Signieren von Anforderungen zur Authentifizierung und Integrität; Daten werden nicht verschlüsselt
​WebDAV​Dateitransfer zu/von Real-Time-Systemen mit HTTP/HTTPS. Aktivieren Sie HTTPS für WebDAV für die Konfiguration des Zielsystems im NI-Hardwaremanager.​HTTPS (TLS)
​SFTP​Sichere FTP-Dateiübertragung über einen FTP-Server. Verschlüsselt über SSH-Protokoll.​Abhängig vom SFTP-Server
​SSH​SSH-Befehle für SSH-Sitzungen mit einem entfernten System öffnen​AES, ChaCha20, andere
​Webdienste​Bereitstellen von Daten über RESTful API, HTTP/HTTPS​HTTPS, SSL/TLS, Authentifizierung, Zugriffskontrolle
​gRPC​Leistungsstarker Kommunikationsdienst mit geringer Latenz​TLS-Verschlüsselung