Frage

Ich habe eine C ++ - Client/Server -Anwendung, bei der Client und Server meine ausführbare Datei sind. Jedes Mal, wenn eine Verbindung zwischen Client und Server hergestellt wird, generiere ich einen neuen Verschlüsselungsschlüssel für diese Sitzung und möchte diesen Sitzungsschlüssel übertragen und diesen Sitzungsschlüssel mit einem statischen Schlüssel verschlüsseln, der sowohl in den Client als auch in den Server integriert ist.

Das Ausführen von Strings auf meiner ausführbaren Datei zeigt jedoch den statischen Schlüssel.

Wie kann ich den eingebetteten statischen Schlüssel in meiner Client- und Serveranwendung verbergen, damit sie nicht einfach extrahieren können und so jemand meinen Sitzungsschlüssel dekodieren können.

War es hilfreich?

Lösung

Seine Methode zum Austausch von Schlüsseln "sorgt", der Kunde ist gültig und kein Betrüger. Nur sicher, dass die Schlüssel mit DH mit DH sicher austauschen, wird das nicht tun. Um die gleiche Funktionalität zu erhalten, muss er ein PKI -System implementieren. SSL/TLS wurde für diesen Zweck gebaut, der darunter das tut, was er braucht.

Sie müssen eine CA für Ihre Server- und Sign -Client -Zertifikate erstellen, um sicherzustellen, dass sie so sind, wie sie es sind.

Andere Tipps

Es gibt Lösungen für dieses Problem, bei denen es nicht darum geht, Schlüssel zu verbergen (was im Allgemeinen unmöglich ist). Zum Beispiel, Diffie-Hellman Key Exchange Ermöglicht dem Client und dem Server, einen neuen geheimen Sitzungsschlüssel auszuhandeln, ohne ihn jemals über das Kabel zu senden.

Sie planen also, Ihr Geheimnis (den Schlüssel in der ausführbaren Datei) mit einer besonders schwer zu rückgängigen Methode zu verbergen, die nur dann rückgängig gemacht werden kann, wenn Sie das Geheimnis der Methode kennen, die Sie auch mit einer neuen Supergeheimnis -Methode verstecken müssen Das kann nur rückgängig gemacht werden, wenn Sie das Geheimnis dieser Methode kennen, die wir uns mit einer anderen geheimen Methode verstecken müssen, die ein anderes Geheimnis erfordert, das wir uns verstecken müssen ...

Dies ist ein "Problemüberlauf". Ich hoffe, Sie können sehen, dass Sie es nicht so lösen werden. Generieren Sie die Schlüssel pro Computer (SSH/SSHD erledigt dies) und schützen Sie diese. Das gleiche Problem gilt tatsächlich, denn wenn ich diesen Schlüssel bekomme, ist es immer noch ein Spiel, aber auf diese Weise codieren Sie es nicht in Ihre Lösung, was bedeutet, dass die Behebung eines kompromittierten Schlüssels viel einfacher ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top