Programmieren mit C++: Wie man Strings in Binaries versteckt

Passwörter, API-Schlüssel, geheime Hinweise – mit C++ verstecken Sie Daten sowohl in Binaries als auch im Speicher ohne Komfortverlust beim Programmieren.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 38 Kommentare lesen
,

(Bild: Erstellt durch Midjourney / Bearbeitung: heise online)

Lesezeit: 14 Min.
Von
  • Oliver Lau
Inhaltsverzeichnis

Clientsoftware, die mit Diensten im Netz kommuniziert, sollte ihre Daten verschlüsseln. Und die Server sollten ihre Programmierschnittstelle (API) nur autorisierten Clients anbieten. Für beides benötigt man Geheimnisse, etwa API-Schlüssel, Passwörter oder Zertifikate. Die Clientsoftware muss diese Daten also enthalten – und zwar verschlüsselt, sodass sie möglichst kein User entdeckt. Aber auch so, dass die Software sie selbst entschlüsseln kann.

Sicherheitsprofis quieken jetzt: Igitt, das ist ja Security by Obscurity! – Stimmt. Sicherheit durch Verschleierung, auch Obfuskation genannt, ist kein Schutz vor ambitionierten Hackern. Aber sie ist trotzdem manchmal unumgänglich und die gewählte Methode sollte eine hohe Hürde für alle anderen sein.

Mehr zu Verschlüsselung und Security:

Allerdings sollte ein Verfahren, das diesen Schutz herstellt, keine Hürde für Programmierer sein. Komplizierte, fehleranfällige Schritte wie Vorverarbeitungen durch Skripte sind daher nur zweite Wahl. Im Idealfall landen die zu verbergenden Strings wie gewohnt im Quelltext. In C++ ist das möglich. Wir stellen im Folgenden eine Methode für C++14 vor, also für einen schon recht alten Standard, mit dem alle halbwegs modernen Compiler wie g++, clang und der Microsoft-Compiler (MSVC) klarkommen. Achtung: Für g++ und MSVC genügt es nicht, mit dem Aufrufparameter -std:c++14 die C++14-Unterstützung einzuschalten, beide brauchen C++20.

Das war die Leseprobe unseres heise-Plus-Artikels "Programmieren mit C++: Wie man Strings in Binaries versteckt". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.