Problem bei AES-Verschlüsselung

Anfängerfragen zum Programmieren mit PureBasic.
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: Problem bei AES-Verschlüsselung

Beitrag von pureanfänger »

Eine Frage hätte ich noch:

Ist es möglich, dass Jemand den wie folgt in ein Programm eingebundenen Verschlüsselungskey, auslesen kann ?

Code: Alles auswählen

DataSection
  Key:
    Data.b $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06

  InitializationVector:
    Data.b $3d, $af, $ba, $42, $9d, $9e, $b4, $30, $b4, $22, $da, $80, $2c, $9f, $ac, $41
EndDataSection
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Problem bei AES-Verschlüsselung

Beitrag von NicTheQuick »

Ja.
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: Problem bei AES-Verschlüsselung

Beitrag von pureanfänger »

Und hat man Möglichkeiten diesen Schlüssel dann so zu hinterlegen, dass es nicht mehr möglich ist?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Problem bei AES-Verschlüsselung

Beitrag von NicTheQuick »

Nein.

Du kannst keinen Schlüssel in einem Programm hinterlegen. Selbst wenn du diesen Schlüssel wieder verschlüsselst, brauchst du dafür wieder einen Schlüssel, den man einfach so auslesen kann.

Der Sinn einer Verschlüsselung ist der, dass der dahinter liegende Algorithmus bekannt ist, das Passwort bzw. der Schlüssel aber eben nicht.

Sag lieber mal, was du genau vor hast, vielleicht bist du auf der falschen Fährte.
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: Problem bei AES-Verschlüsselung

Beitrag von pureanfänger »

Ich schreibe gerade an einer Client - Serververbindung.

Also der Client sendet die entsprechenden Daten per AES-Verschlüsselung an den Server. Da aber der Schlüssel im Client hinterlegt ist, könnte jemand die entsprechenden Daten abfangen und entschlüsseln. Richtig?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Problem bei AES-Verschlüsselung

Beitrag von NicTheQuick »

Ja. Deswegen nutzt man dafür fertige Protokolle wie SSL. Siehe Wikipedia. :wink:
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: Problem bei AES-Verschlüsselung

Beitrag von pureanfänger »

Ok ich glaube SSL übersteigt meine Kentnisse ;)

Werden denn auch Daten, z.b. von Gameservern so zu ihren Clients übertragen ?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Problem bei AES-Verschlüsselung

Beitrag von NicTheQuick »

Ich denke mal die Daten, die sicher sein sollen, wie zum Beispiel die Logins, schon. Aber bei Spielen kommt es meistens auf niedrige Latenzen an. Da nimmt man kein SSL über TCP, sondern eher etwas ganz einfach verschlüsseltes oder unverschlüsseltes über UDP.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Re: Problem bei AES-Verschlüsselung

Beitrag von Sunny »

Ansonsten könnte man ja den Server einen Zufallsschlüssel generieren lassen, mit dem die Daten verschlüsseln. Danach wird erst der Schlüssel und dann die verschlüsselten Daten verschickt. Dann kann der Client die Daten entschlüsseln und den Schlüssel wieder aus dem Speicher löschen.

Somit liegt der Schlüssel nirgends mehr vor und kann dementsprechend auch nicht ausgelesen werden.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Problem bei AES-Verschlüsselung

Beitrag von NicTheQuick »

Dann kann ein Angreifer aus der Mitte auch einfach den Schlüssel am Anfang abgreifen und die darauf folgenden Daten entschlüsseln.
Normalerweise geht das so:

1. Der Server generiert einen Zufallswert und einen Schlüssel.
2. Der Schlüssel wird mit dem Zufallswert ver-XOR-t und zum Client gesendet.
3. Der Client generiert ebenfalls einen Zufallswert und ver-XOR-t den Wert, den er vom Server bekommen hat, und schickt ihn zurück.
4. Der Server ver-XOR-t diesen Wert wieder mit seinem Zufallswert und schickt ihn zum Client.
5. Der Client ver-XOR-t den Wert mit seinem Zufallswert und hat daraufhin den Schlüssel.

So kann zwischendrin niemand den Schlüssel abgreifen und der Client hat den Schlüssel vom Server. Von da an kann man dann die gesamten folgenden Daten mit diesem Schlüssel und z.B. mit AES verschlüsseln.

Natürlich ist das nur eine der einfachsten Methoden sichere Verbindungen aufzubauen. Da gibt es noch wesentlich ausgereifteres Zeugs, aber da müsste ich selbst nochmal genauer in den Papern nachlesen und dir das dann noch erklären. :wink:
Antworten