Ich muss vertrauliche Informationen (einen symmetrischen Verschlüsselungsschlüssel, den ich privat halten möchte) in meiner C ++ - Anwendung speichern. Der einfache Ansatz besteht darin, dies zu tun:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
Wenn Sie die Anwendung jedoch durch den strings
Prozess ausführen (oder eine andere, die Zeichenfolgen aus einer binären App extrahiert), wird die obige Zeichenfolge angezeigt.
Welche Techniken sollten verwendet werden, um solche sensiblen Daten zu verschleiern?
Bearbeiten:
OK, so ziemlich alle von Ihnen haben gesagt "Ihre ausführbare Datei kann rückentwickelt werden" - natürlich! Dies ist ein Liebling von mir, also werde ich hier ein bisschen schimpfen:
Warum werden 99% (OK, vielleicht übertreibe ich ein wenig) aller sicherheitsrelevanten Fragen auf dieser Website mit dem Strom "Es gibt keine Möglichkeit, ein perfekt sicheres Programm zu erstellen" beantwortet - das ist nicht hilfreich Antworten! Sicherheit ist eine gleitende Skala zwischen perfekter Benutzerfreundlichkeit und keiner Sicherheit an einem Ende und perfekter Sicherheit, aber keiner Benutzerfreundlichkeit am anderen Ende.
Der Punkt ist, dass Sie Ihre Position auf dieser gleitenden Skala auswählen, je nachdem, was Sie versuchen und in welcher Umgebung Ihre Software ausgeführt wird. Ich schreibe keine App für eine militärische Installation, ich schreibe eine App für einen Heim-PC . Ich muss Daten über ein nicht vertrauenswürdiges Netzwerk mit einem bekannten Verschlüsselungsschlüssel verschlüsseln. In diesen Fällen ist "Sicherheit durch Dunkelheit" wahrscheinlich gut genug! Sicher, jemand mit genügend Zeit, Energie und Geschick könnte die Binärdatei rückentwickeln und das Passwort finden, aber wissen Sie was? Es ist mir egal:
Die Zeit, die ich für die Implementierung eines erstklassigen sicheren Systems benötige, ist teurer als der Umsatzverlust aufgrund der geknackten Versionen (nicht, dass ich das tatsächlich verkaufe, aber Sie verstehen, worum es geht). Dieser Trend des Programmierens unter den Programmierern unter neuen Programmierern ist, gelinde gesagt, dumm.
Vielen Dank, dass Sie sich die Zeit genommen haben, diese Frage zu beantworten - sie waren sehr hilfreich. Leider kann ich nur eine Antwort akzeptieren, aber ich habe alle nützlichen Antworten hochgestimmt.