Simple XOR-Bit Operation und die Grundlagen der Verschlüsselung mit dem MPR

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Simple XOR-Bit Operation und die Grundlagen der Verschlüsselung mit dem MPR

Post by Theo_Gottwald » 06. Apr 2019, 19:23

Mit dem letzten Update hat der MPR den neuen BIT\ - Befehl bekommen.
"Einfache logische Operationen". Das hört sich sehr unspektakulär an.

Jedoch kann man damit zum Beispiel Hacker effektiv ausschließen,
und eine unknackbare Verschlüsselung - das sogenannte OTP (One-Time-Pad) implementieren.

Das OTP ist die wohl einzige mathematisch unzweifelhaft erwiesene, heute und in Zukunft unknackbare Verschlüsselung.

Bevor wir das im nächsten Beitrag tun, hier die Grundlagen mit einem einfachen Skript.
Es soll zeigen, wie die BIT\ -Operationen derzeit beim MPR funktionieren.

Beim MPR sind alle BIT\-Operationen immer VALUE-based.
D.h. die zu berechnenden Zahlen werden als ZAHL angegeben.
Also zum Beispiel so:

Code: Select all

VAR\$$INA=5
VAR\$$INB=2
BIT\xor|$$INA|$$INB>$$INP
' Ergebnis von XOR anzeigen
MBX\$$INP
5 XOR 2 ergibt 7

Wieso ist das so?
Sehen wir uns das mal Binäer an, dazu dient das Unterprogramm ":ShowBits".
Dieses Unterprogramm zeigt eine Zahl im Zweiersystem - also "in Bits" an.

5 im Zweiersystem ergibt 0101
2 im Zweiersystem ergibt 0010
XOR >------------------------------------->
7 0111

XOR, besagt:
Wenn I1 ODER I2 jeweils 1 ist, dann ist das Ziel auch 1.
Sind beide 0 oder sind beide 1 dann ist das Ergebnis 0.


Was ist daran so großartig?
Nun, die Tatsache dass diese Operation offensichtlich umkehrbar ist!

Das bedeutet, wenn man nun die 7 noch Mal mit "2" XOR'ed dann bekommt man wieder seine "5" also den ursprünglichen Wert zurück. Jedoch wenn man einen anderen Wert als "2" verwendet kann man jedes andere der 256 Zeichen im ASC Code erzeugen!
Probieren wir das mal.

7 im Zweiersystem ergibt 0111
2 im Zweiersystem ergibt 0010
---------------------------------------------
5 0101

Oder Anders gesagt, das ist ideal um einen Text zu verschlüsseln. Denn es ist problemlos umkehrbar!
Und man kann den ursprünglichen Text nicht ohne Weiteres erraten!

Im nächsten Beitrag zeige ich ein Beispiel und erkläre Details.

VALUE-Based vs. Binär
Wie schon gesagt, sind derzeit beim MPR alle BIT-Operationen VALUE based.
D.h. die Werte werden als Zahlen angegeben. Und auch das Ergebnis ist eine ZAHL.

Zum Beispiel wenn wir 255 XOR 99 machen dann geben wir diese Werte als Zahlen an.

Zum Verschlüsseln funktioniert das so direkt nicht, denn dort haben wir die Zahlen "Binär" also als BYTES.

Der Buchstabe "A" hat da zum Beispiel den Zahlenwert 65. Und hat dabei nur ein Byte.

Um das umzuwandeln müssen wir beim MPR ein klein wenig Aufwand treiben, aber es ist jeweils nur ein Befehl.
Also wie machen wir aus einer Zahl ein Byte? Dazu gibt es den Befehl:

CHR\[Zahl 0-255]>[Single Byte]

und umgekehrt aus dem Byte wieder eine Zahl:

ASC\[Single Byte]>[Zahl 0-255]

Diese Befehle benötigen wir um die neuen BIT\-Befehle für Verschlüsselungen zu verwenden.

Das ist ein nicht lauffähiger Beispielcode:

Code: Select all

   ' Byte aus Pad nach Binär umwandeln
   ASC\$$COF>$$COI
   ' Byte aus Quelldatei nach Binär umwandeln
   ASC\$$LEA>$$LEB   
   ' Ver- ode Entschlüsseln
   BIT\xor|$$LEB|$$COI>$$RES
   ' Ergebnis aus Zahl nach Byte umwandeln
   CHR\$$RES>$$REA
Im nächsten Artikel sehen wir den Kompletten Code zur Verschlüsselung.

Hier das Unterprogramm "Showbits".
Es zeigt die Bits einer binaeren Zahl an.

Code: Select all

' Diese Nummer wird in Binärcode umgewandelt
VAR\$$INA=5
VAR\$$INB=2
BIT\xor|$$INA|$$INB>$$INP
' Ergebnis von XOR anzeigen
MBX\$$INP

' Bits anzeigen
GSB\ShowBits
MBX\$$ERG

@
'--------------------------------
' Show Bits
:ShowBits
VAR\$$ERG=
FOR\$$LOP|7|0|-1
   CAL\$$NUM=2^$$LOP
   IVV\$$NUM<=$$INP
      CAL\$$INP=$$INP-$$NUM
      VAR\$$ERG=1$$ERG
   ELSE
      VAR\$$ERG=0$$ERG   
   EVV\
NXT\
RET\
Wer sich für Verschlüsselungen interessiert kann Details in diesem Video hier sehen:
https://youtu.be/I58ZxIRN4h8

HINT für SPR-Anwender:
Der SPR hat bereits fix und fertig eingebaute OTP-Verschlüsselungen die maschinencode-optimiert sind.
Ab dem aktuellen Update bekommt der SPR dazu auch noch umfangreichere BIT-Befehle die direkt Value oder Binary verstehen von 8 bis 32 Bit. Zudem kann der SPR schon immer Binärzahlen direkt verstehen wenn man das "&B" davor schreibt. Also zum Beispiel: "&B10101".
Apropos SPR: Wer viele solche Dinge tun will dem ist daher der SPR zu empfehlen, weil der ein "Krypto-Construction Set" mit "Crypto-View"-Tool beinhaltet. Dazu der Hinweis, dass jeder der geschäftlich eine MPR Lizenz hat, für privat kostenfrei eine SPR Lizenz bei mir anfordern kann.

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 3 guests