AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Signieren von Nachrichten im RSA-Programm

Signieren von Nachrichten im RSA-Programm

Ein Thema von EdAdvokat · begonnen am 5. Mai 2020 · letzter Beitrag vom 6. Mai 2020
Antwort Antwort
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Signieren von Nachrichten im RSA-Programm

  Alt 5. Mai 2020, 13:10
Hallo liebe Delphifreunde,
nachdem ich einen Editor mit AES-Funktion erstellt habe, tauchte das Problem des Schlüsselaustausches auf und so kam ich auf die Idee,
dazu ein weiteres Projekt "RSA-Programm" in Angriff zu nehmen.
All diese "Projekte" sind nur für mich ohne tiefen Sinn. Ich wollte lediglich die Funktionalität, die Möglichkeiten und ggf. auch deren Grenzen erfahren.
Nun ist auch das RSA-Programm fertig und funktioniert wie gewollt. Zurückliegend habe ich frühe Entwicklungsschritte beider hier im Formum ausschnittsweise vorgestellt.
Nun habe ich gelesen und sehe das auch als wirkliches Erfordernis an, dass der Klartext des Absenders auch signiert werden sollte, um die Autentität des verfassten
Textes tatsächlich auch nachweisen zu können(den Text dem Absender tatsächlich sicher zuzuordnen).

Ich möchte nur kurz die Grundformeln des RSA-Algorithmus aufführen, ohne auf math. Grundlagen einzugehen:

KT - Klartext
GT - Geheimtext
e - öffentlicher Key (Exponent)
n - öffentlicher Key (Modulus)
d - privater Key (Exponent)
C - signierter GT
K - verifizierter KT

mit RSA Verschlüsseln GT = KT^e mod n
mit RSA entschlüsseln KT = GT^d mod n

Signieren mit RSA C = KT^d mod n
Verifizieren mit RSA K = C^e mod n

Soweit die Theorie.
Meine Fragen:

1. Wird beim Signieren tatsächlich der Klartext nach der obigen Formel nochmals "signiert-verschlüsselt"? Oder verwendet man dazu besser
einen gängigen Hash-Algorithmus, wie SHA-2 oder MD-5 für den Klartext und signiert diesen dann mit obiger Formel?

2. Werden also bei einer Signierung zwei Geheimtexte an den Empfänger übermittelt, der dann nach obiger Formel beide entschlüsselt und dann
den Klartext mit dem verifizierten Klartext vergleicht und nach Feststellung der Identität glücklich lächelt?

3. Wie wird das praktisch umgesetzt? Der Empfänger erhält also 2 verschlüsselte Texte und wie erkennt er welcher der signierte Text ist?
Gibt es möglicherweise andere Möglichkeiten, um die Autentität der Nachricht, also die Zuordnung dieser zum Autor festzustellen?

Liege ich überhaupt grundsätzlich richtig mit meinen Überlegungen?
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

AW: Signieren von Nachrichten im RSA-Programm

  Alt 5. Mai 2020, 14:36
Im Endefekt hast sogar 3 Varianten beim Signieren.
* nach dem Klartext hast noch die Signatur
* Signatur direkt aus Klartext generiert, dann ist der genau so lang, wie der Klartext (länger, da man sie noch Codieren müsste, Base64 oder so, um sie als Text anzuhängen)
* Signatur aus dem Hash des Klartextes
* Signatur aus dem Klartext und dann der Hash drüber (bei Beidem ist die Signatur nur noch so lang wie der Hash)

Ich würde dann aber eher Letzeres nehmen, denn hat mein keinen direkten Zusammenhang zwischen Signaturschlüssel und dem Klartext,
denn das andere erleichtert das entschlüsseln, denn da kann man bereits schon beim ersten Byte anfangen das knacken zu wollen und kann nicht erst ganz am Ende gegenprüfen.

[Achtung] bin nicht so der Experte und das ist mehr so nach meinem Gefühl (persönlichem Verständis der Matherie)

Wie schon beim Hashen kann es nicht schaden hier auch noch bissl Salz in die Wunde zu streuen. (Hash with Salt/InitVector)



Nja, wenn du verschlüsselst, dann ist der verschlüsselte Text seine eigene Signatur.
Signieren brauchst nur, wenn was als Klartext weg geht, aber man prüfen können möchte, ob das unverändert von einem bestimmten Absender stammt.
Also nur das Verschlüsselte oder Klartext+Signatur.

Verschlüsseltes mit zusätzlicher Signatur, auch noch mit dem selben Schlüssel berechnet, dann lieferst du dem Angreifer auch gleich das Werkzeug mit, um deine Verschlüsselung "leichter" knacken zu können, da er die Signatur benutzen kann, um das Entschlüsselte zu verifizieren.


Zitat:
wie erkennt er welcher der signierte Text ist?
Der, den er nicht lesen kann?
Für Unwissende kannst die Signatur auch Signatur nennen, bzw. es davor schreiben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Mai 2020 um 14:43 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Signieren von Nachrichten im RSA-Programm

  Alt 5. Mai 2020, 17:25
Nja, wenn du verschlüsselst, dann ist der verschlüsselte Text seine eigene Signatur.
Signieren brauchst nur, wenn was als Klartext weg geht, aber man prüfen können möchte, ob das unverändert von einem bestimmten Absender stammt.
Also nur das Verschlüsselte oder Klartext+Signatur.
Einspruch euer Eheren

Der Verschlüsselte Text ist der verschlüsselte Text, keine Signatur. Die Signatur kann immer eingesetzt werden, denn damit kann man die Quelle der Nachricht verifizieren.
Hagen hat mir vor Urzeiten das ganze mal erklärt. Normalerweise läuft das, wenns wirklich sicher sein soll, wie folgt ab:


Wir haben zwei Stellen, die Nachrichten sicher austauschen wollen. Nennen wir sie Adam und Bertram (A und B klingt so abgedroschen).

Adam generiert sich nun ein Schlüsselpaar und gibt den öffentlichen Schlüssel an Bertram weiter.
Bertram macht das gleiche.


Adam möchte jetzt eine Nachricht schicken. Also erstellt er den Nachrichtentext und verschlüsselt ihn mit dem öffentlichen Schlüssel von Bertram. Zusätzlich erzeugt er noch eine Signatur. Diese verschlüsselt er mit seinem privaten Schlüssel. Beide Teile schickt er nun an Betram.

Dieser nimmt nun den öffentlichen Schlüssel von Adam und überprüft die Signatur. Dann nimmt er seinen privaten Schlüssel und entschlüsselt die Nachricht.

So hab ich das zumindest im Sinn.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Signieren von Nachrichten im RSA-Programm

  Alt 5. Mai 2020, 20:45
Zitat:
Adam möchte jetzt eine Nachricht schicken. Also erstellt er den Nachrichtentext und verschlüsselt ihn mit dem öffentlichen Schlüssel von Bertram. Zusätzlich erzeugt er noch eine Signatur. Diese verschlüsselt er mit seinem privaten Schlüssel. Beide Teile schickt er nun an Betram.

Dieser nimmt nun den öffentlichen Schlüssel von Adam und überprüft die Signatur. Dann nimmt er seinen privaten Schlüssel und entschlüsselt die Nachricht.
So habe ich das auch verstanden. Ich gehe doch richtig in der Annahme, dass das Erzeugen einer Signatur durch Anwendung von bsp. MD-5 auf den Klartext/die Klartextdatei geschieht, damit die Signatur nicht so groß wird wie der Klartext selbst, oder?
Allein die Tatsache, dass nun Bertram die Signatur entschlüsseln kann, spricht klar dafür dass die Nachricht wirklich von Adam kam.

Aktuell bin ich auf der Suche nach einem Codebeispiel Hash-Funktion für FMX. Ich möchte da nicht zu viele zur Auswahl stellen.
Was wird da aktuell als sicherer Hash-Code empfohlen und wer kennt da Quellen?
Habe soeben in DEC 6 Demos was gefunden. Werde mal schauen, ob das geht.
Norbert

Geändert von EdAdvokat ( 5. Mai 2020 um 20:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#5

AW: Signieren von Nachrichten im RSA-Programm

  Alt 5. Mai 2020, 22:27
Delphi-Referenz durchsuchenSystem.Hash

Ansonsten versteckt sich auch noch bissl was im Indy, welches ja auch bei liegt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Signieren von Nachrichten im RSA-Programm

  Alt 6. Mai 2020, 16:05
Hallo zusammen,
ich kann berichten, dass die zusätzliche Signierung/Verifizierung ausgezeichnet funktioniert und dass ebenso das Hash-Tool aus dem DEC 6 Ensemble
eine hilfreiche Bereicherung darstellt, denn die Signierung des Hash vom Klartext erscheint mir der gängigere Weg zu sein, als den gesamten Klartext
zu signieren. Wie es nun jeder handhaben will ist sicher seine Sache.
Norbert
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz