AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi MixColumn - Polynom-Multiplikation - wie?
Thema durchsuchen
Ansicht
Themen-Optionen

MixColumn - Polynom-Multiplikation - wie?

Ein Thema von geofranz01 · begonnen am 19. Apr 2008 · letzter Beitrag vom 19. Apr 2008
Antwort Antwort
geofranz01

Registriert seit: 17. Jun 2007
72 Beiträge
 
Delphi 2007 Enterprise
 
#1

MixColumn - Polynom-Multiplikation - wie?

  Alt 19. Apr 2008, 15:42
Hallo,
ich bin gerade dabei mir meine eigene kleine AES-Verschlüsselung zu bauen. Ich komme auch schon ganz gut vorran, allerdings stellt sich mir das Problem, dass ich MixColumn nicht ganz(oder garnicht) verstehe. Irgendwie werden da Polynom-Mulitplikation in GF(256) durchgeführt.

Ich habe jetzt also z.B. $D4 das ich mit 2 mulitplizieren muss. Rauskommen soll $B3.

Weitere Beispiele:
$BF * 3 -> $DA
$5D * 1 -> $5D
$30 * 1 -> $30

Mein Ansatz wäre etwa so: e = $D4 * 2 mod 255. Aber das liefert (natürlich) falsche Ergebnisse.

Wie mache ich das jetzt richtig ?

P.S. Aus Google und Wikipedia werd ich auch nicht schlau.

Grüße
geofranz
Max
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

Re: MixColumn - Polynom-Multiplikation - wie?

  Alt 19. Apr 2008, 19:12
Zitat von geofranz01:
Hallo,
ich bin gerade dabei mir meine eigene kleine AES-Verschlüsselung zu bauen. Ich komme auch schon ganz gut vorran, allerdings stellt sich mir das Problem, dass ich MixColumn nicht ganz(oder garnicht) verstehe. Irgendwie werden da Polynom-Mulitplikation in GF(256) durchgeführt.

Ich habe jetzt also z.B. $D4 das ich mit 2 mulitplizieren muss. Rauskommen soll $B3.

Weitere Beispiele:
$BF * 3 -> $DA
$5D * 1 -> $5D
$30 * 1 -> $30

Mein Ansatz wäre etwa so: e = $D4 * 2 mod 255. Aber das liefert (natürlich) falsche Ergebnisse. :cry:

Wie mache ich das jetzt richtig ?

P.S. Aus Google und Wikipedia werd ich auch nicht schlau.

Grüße
geofranz
Multiplikation in GF(2^8) ist eine Polynom-Multiplikation modulo einem geigneten Polynom (bei AES in Byteschreibweise $1B). Hier ein vollständiges Testprogramm mit Deinen nichtrivialen Beispielen:
Delphi-Quellcode:
program t_gf28;

{$apptype console}

uses sysutils;

{---------------------------------------------------------------------------}
function gf_mul(a,b: byte): byte;
  {-Return a*b in GF(2^8)}
const
  poly=$1b;
var
  t: byte;
begin
  if b=0 then gf_mul := 0
  else begin
    t := 0;
    while b<>0 do begin
      if odd(b) then t := t xor a;
      b := b shr 1;
      if a and $80 = 0 then a := a shl 1
      else a := (a shl 1) xor poly;
    end;
    gf_mul := t;
  end;
end;

begin
  writeln('GF(2^8): $D4 * $02 = $',IntToHex(gf_mul($D4,$02),2));
  writeln('GF(2^8): $BF * $03 = $',IntToHex(gf_mul($BF,$03),2));
end.
Um allerdings halbwegs auf Geschwindigleit zu kommen, benutzt man sinnvollerweise Power- und Logarithmentabellen. Ein Beispiel findest Du im Programm t_mkctab.pas in meinem AES-Archiv.

http://home.netsurf.de/wolfgang.ehrh...2008-01-12.zip
Gruß Gammatester
  Mit Zitat antworten Zitat
geofranz01

Registriert seit: 17. Jun 2007
72 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: MixColumn - Polynom-Multiplikation - wie?

  Alt 19. Apr 2008, 20:01
Hey Danke! Das funktioniert ja super! Vielen Dank für den Code.

PS: Meine nichttrivialen Beispiele stammen von der schrittweisen Doku über die Funktionsweise von AES
Max
  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 22:19 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