Ich muss sensible Informationen (einen symmetrischen Verschlüsselungsschlüssel, den ich geheim halten möchte) in meiner C++-Anwendung speichern. Der einfache Ansatz ist dieser:
std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";
Wenn Sie die Anwendung jedoch über den strings
Prozess (oder jeder andere, der Zeichenketten aus einer binären Anwendung extrahiert) wird die obige Zeichenkette aufdecken.
Welche Techniken sollten verwendet werden, um solche sensiblen Daten zu verbergen?
Edita:
OK, also haben so ziemlich alle von Ihnen gesagt "Ihre ausführbare Datei kann zurückentwickelt werden" - natürlich! Das ist eines meiner Lieblingsärgernisse, also werde ich hier ein bisschen schimpfen:
Warum werden 99% (OK, vielleicht übertreibe ich ein wenig) aller sicherheitsrelevanten Fragen auf dieser Website mit einem Schwall von "es gibt keine Möglichkeit, ein perfekt sicheres Programm zu erstellen" beantwortet - das ist keine hilfreiche Antwort! Sicherheit ist eine gleitende Skala zwischen perfekter Benutzerfreundlichkeit und keiner Sicherheit am einen Ende und perfekter Sicherheit aber keiner Benutzerfreundlichkeit am anderen Ende.
Der Punkt ist, dass Sie Ihre Position auf dieser gleitenden Skala wählen, je nachdem, was Sie zu tun versuchen und die Umgebung, in der Ihre Software laufen wird. Ich schreibe keine Anwendung für eine Militäreinrichtung, sondern eine Anwendung für einen Heim-PC. . Ich muss Daten über ein nicht vertrauenswürdiges Netz mit einem bekannten Verschlüsselungscode verschlüsseln. In diesen Fällen ist "Sicherheit durch Unklarheit" wahrscheinlich gut genug! Sicher, jemand mit genügend Zeit, Energie und Geschick könnte das Binärprogramm zurückentwickeln und das Passwort herausfinden, aber was soll's? Es ist mir egal:
Die Zeit, die ich benötige, um ein erstklassiges sicheres System zu implementieren, ist teurer als die Umsatzeinbußen durch die geknackten Versionen (nicht dass ich das tatsächlich verkaufen würde, aber Sie verstehen, worauf ich hinaus will). Dieser blauäugige "Wir machen es auf die absolut bestmögliche Art und Weise"-Trend in der Programmierung unter neuen Programmierern ist gelinde gesagt töricht.
Vielen Dank, dass Sie sich die Zeit genommen haben, diese Fragen zu beantworten - sie waren sehr hilfreich. Leider kann ich nur eine Antwort akzeptieren, aber ich habe alle nützlichen Antworten hochgestuft.