AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HMac-Funktion aus DEC nutzen

Ein Thema von EdAdvokat · begonnen am 19. Dez 2021 · letzter Beitrag vom 22. Dez 2021
Antwort Antwort
EdAdvokat

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

HMac-Funktion aus DEC nutzen

  Alt 19. Dez 2021, 18:37
Ich wollte die HMAC-Funktion von DEC testen und habe dazu folgendes eingegeben:

Delphi-Quellcode:
uses
  DECHashBase, DECHashAuthentication, DECHash;

procedure TForm1.btn1Click(Sender: TObject);
var Key, Text : RawByteString;
  x:TArray<Byte>;
begin
  Key := edtkey.text;
  Text:= edtText.text;

  x:= DECHashAuthentication.TDECHashAuthentication.HMAC(TEncoding.UTF8.GetBytes(Key),TEncoding.UTF8.GetBytes(Text)) ;
  edtoutput.text:= TEncoding.UTF8.GetString (x);
end;
Das Testprogramm läßt sich kompilieren, jedoch nach Aufruf des ButtonClick erhalte ich folgende Fehlermeldung:


Zitat:
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt pDerif1.exe ist eine Exception der Klasse EDECAbstractError mit der Meldung 'Abstract Error: TDECHashAuthentication is not implemented' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe

Kann ich überhaupt die class function HMAC(const Key, Text: RawByteString): TBytes; overload; aus der unit DECAuthentication so aufrufen oder
genauer wie muß ich die HMAC-Funktion aus DEC exakt nutzen? Es ist doch recht kompliziert gegenüber anderen HMAC-Funktionen.
Bin ich auch hinsichtlich meiner bescheidenen Versuche zur Konvertierung von string in System.TArray<System.Byte> und umgekehrt richtig?

Für eure Hilfe wäre ich dankbar.
Norbert
  Mit Zitat antworten Zitat
EdAdvokat

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

AW: HMac-Funktion aus DEC nutzen

  Alt 20. Dez 2021, 09:38
es hat mir keine Ruhe gelassen und daraufhin habe ich den Aufruf dahingehend verändert:

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var Key, Text : String;
    xByte:TArray<System.Byte>;

begin
  Key := (edtkey.text);
  Text:= (edtText.text);

  xByte:=THash_SHA224.HMAC(TEncoding.UTF8.GetBytes(Key),TEncoding.UTF8.GetBytes(Text));
  edtoutput.text:= StringToHex(TEncoding.ANSI.GetString (xByte));
end;
Es klappt nun und ich erhalte den gewünschten HMAC-Hash.
Geht das so, kann man das so machen? Oder ist das aus eurer Sicht Klamauck.
Die Umwandlung string to Hex habe ich mit einer gesonderten Methode durchgeführt. Da gibt es sicher
geschmeidigere Lösungen.
Für eure Meinungsäußerung wäre ich dankbar.
Norbert
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#3

AW: HMac-Funktion aus DEC nutzen

  Alt 22. Dez 2021, 16:07
Hallo,

hab' nur 'nen halben Bklick auf deunen Code geworfen aber ja:
du musst den HMAC an einer konkreten Hash-Klasse aufrufen, denn
der benutzt ja intern den entsprechenden Hash-Algorithmus und wenn ich's
richtig auswendig weiß ist die HMAC Methode auch eine class function.

Und ja, zum HMAC speziell ist glaube ich kein Beispiel drin, aber
in den Unit Tests zu den Hashes wirst du auch welche zum HMAC finden,
da könntest du evtl. auch "abkupfern"...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
EdAdvokat

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

AW: HMac-Funktion aus DEC nutzen

  Alt 22. Dez 2021, 19:00
Hallo TurboMagic,
vielen Dank für Deine Weihnachtsgrüsse und die Ankündigung von DEC 6.5. Ich habe zurückliegend immer mal reingeschaut und
mitverfolgt, an was Du gerade herumwerkelst. Mit der nun vorgenommenen Kategorisierung AES 128/192/256 bit wird AES erwachsen.
Aus den mir bekannten AES-Projekten (z.B Dr. Rathlev oder Jorlen Young, Alexander Ionov u.a.) ist mir diese Einteilung unabhängig
von der Schlüssellänge so auch bekannt.
Ich habe jedoch in der Literatur bisher keine Pflicht zur Kategorisierung 128/192/256 bit Schlüssellänge gefunden.
Bei Klaus Schmeh "Kryptographie" (S.138) wird gesagt: "Die Blocklänge des AES beträgt 128 Bit. Das Verfahren Rijndael unterstützt zwar
auch 192 und 256 Bit, doch diese Blocklängen wurden nicht in die AES-Standardisierung aufgenommen (genaugenommen muss man den AES
daher als Spezialfall von Rijdael bezeichnen). Die AES-Schlüssellänge kann - wie bei allen AES-Kandidaten - wahlweise auf 128, 192
oder 256 Bit festgelegt wrden."
Übrigens sei an dieser Stelle auch auf eine sehr interessante Vorlesungsreihe (auf youtube) von Prof. Paar zum Thema AES hingewiesen.
Jedenfalls gibt es bezüglich der Kategorisierung der Schlüssellängen wohl keine Vorgaben.
Egal, wer es so will oder bei der bisherigen Lösung bleiben möchte, sei jedem selbst überlassen.
Ich bin durchaus gespannt auf die neue Version von DEC 6.5.
Ich würde mich auch gern in diese Arbeit einbringen wollen, doch habe ich klar und deutlich meine Grenzen diesbezüglich erkannt.
Ich werkele so für mich allein, lediglich mit Untersützung der DP, Dr. Google und einigen anderen Veröffentlichungen herum und komme
zu sehr bescheidenen Ergebnissen.

So habe ich mit Hilfe der HMAC-Funktion aus DEC und drei anderen HMAC-Projekten einen Key-Generator erstellt, mit dem wahlweise Keys
für symetrische Chiffrieralgorithmen (z.B. AES) erstellt werden können, nachdem entsprechende Passwortphrasen und Keys mit Hilfe von
asymetrischen Chiffrierverfahren (hier konkret ECC) ausgetauscht wurden.
Das klappt durchaus gut und das asymetrische Verfahren ECC - basiert auf eliptischen Kurven mit einer vom BSI empfohlenen Sicherheit,
also sowohl sicherer und schneller als RSA.
Norbert
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:22 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