###   Projekte und Informationen rund um den KC85   ### 

Kryptografie hat das Ziel, Informationen so zu verschlüsseln, dass Unbefugte sie nicht lesen können. Ob man so etwas auch mit einem KC85 zeitgemäß erledigen kann? Dirk Zelmanski hat diese Frage beantwortet, wie im folgenden Beitrag nachzulesen ist.

Ende letzten Jahres erhielt ich Post von Dirk Zelmanski. Er schrieb:

"Aus Neugier habe ich mich vor einiger Zeit mit dem AES und SHA Algorithmus beschäftigt und wollte wissen, wie kompakt und schnell die wohl auf einem KC85 sind. Da ich keine vergleichbaren Projekte für eine Z80 CPU fand, setzte ich mich daran, ein Programm und ein Skript zu schreiben. Ich sende Ihnen beides zu, vielleicht können Sie es für Ihre Seite verwenden."

Ich habe beides ausprobiert - es funktioniert!

AES und SHA

Der Advanced Encryption Standard AES ist nicht irgendein beliebiger Algorithmus für das Verschlüsseln von Daten, sondern zur Zeit DER Standard für die Verschlüsselung sensibler Informationen in vielen Branchen, angefangen von Regierungsbehörden über Finanzinstitute bis hin zu modernen technologieorientierten Unternehmen. AES ist frei verfügbar und darf ohne Lizenzgebühren eingesetzt sowie in Soft- und Hardware implementiert werden.

Die AES-Verschlüsselung wurde 2001 vom National Institute of Standards and Technology (NIST) als Nachfolger des älteren Data Encryption Standard DES eingeführt, der anfällig für moderne Angriffe geworden war. Nach einem umfassenden Evaluierungsprozess wurde der Rijndael-Algorithmus aufgrund seiner Stärke, Effizienz und Flexibilität für AES ausgewählt, da er sowohl eine hohe Sicherheit als auch Effizienz beim Verschlüsseln von Daten gewährleisten kann.

Zum Advanced Encryption Standard gibt es einen sehr ausführlichen Wikipedia-Beitrag, wo man die vielen Details bei Interesse nachlesen kann:

https://de.wikipedia.org/wiki/Advanced_Encryption_Standard

Neben der Verschlüsselung von Daten werden für die Gewährleistung der Sicherheit von verschlüsselten Daten weitere kryptografische Funktionen benötigt. Eine davon ist der Sichere Hash-Algorithmus SHA. Sie wandelt Daten in eine Zeichenkette fester Größe um, die zufällig erscheint. Sie wird häufig in digitalen Signaturen und Passwort-Hashing verwendet, um Daten vor Manipulationen und unbefugtem Zugriff zu schützen.

Je nach gewünschter Länge des Hash-Wertes gibt es verschiedene SHA-Varianten. SHA-256 erzeugt beispielsweise Hashwerte mit einer Länge von 256 Bit. SHA stellt sicher, dass selbst eine geringfügige Änderung der Eingabedaten einen völlig anderen Hash erzeugt, was es zu einem zuverlässigen Werkzeug für die Überprüfung der Datenintegrität und die Sicherung sensibler Informationen macht. Es gehört zur SHA-2 Familie und wurde von der National Security Agency (NSA) in den USA entwickelt.

Zu SHA gibt es ebenfalls einen sehr ausführlichen Wikipedia-Beitrag, wo man sich weiter informieren kann:

https://de.wikipedia.org/wiki/Secure_Hash_Algorithm

Mit AES und SHA kann man also kryptographische Anwendungen in Software umsetzen, welche Daten vor unbefugtem Zugriff schützen und deren Integrität und Authentizität im digitalen Raum gewährleisten.

Beispiele für kryptografische Anwendungen und Software:

Sichere Kommunikation SSL/TLS schützt Webseiten-Verbindungen (das Schloss-Symbol im Browser)
Messaging-Apps Ende-zu-Ende-Verschlüsselung in WhatsApp, Signal
Tools Plugins wie HTTPS Everywhere
Datenschutz & Speicherung Verschlüsselungs-Tools AxCrypt (einfache Dateiverschlüsselung), Blowfish Advanced CS, Aborange Crypter
Betriebssysteme integrierte Kryptografie-Dienste, API's, Tools und Zertifikatsdienste von Microsoft
Authentifizierung & Integrität Digitale Signaturen Sicherung von Software-Updates und Dokumenten
Zertifikate für sichere Identifikation und Berechtigungen
Lernen & Entwicklung CrypTool E-Learning-Software, um Verfahren zu testen und zu verstehen (CrypTool-Online)
Bibliotheken cryptography für Python, Bouncy Castle für Java/C#
Tools OpenSSL zur Implementierung kryptografischer Funktionen
Finanzwesen E-Banking Absicherung von Transaktionen
Kryptowährungen Basis der Sicherheit

 

KCAES.KCC

Ja und hier ist es - das erste Kryptografie-Tool für den KC85 !!!. Das Programm KCAES.KCC für den KC85/2-5 verschlüsselt und entschlüsselt Daten nach dem anerkannten AES-Algorithmus.

Dirk Zelmanski hat 2 funktionsgleiche Varianten des CAOS-Programmes erstellt, welche im Download-Bereich zu finden sind:

CAOS-Programm Startadresse KC85
KCAES2C.KCC 0x2C00H KC85/2, 3, 4, 5
KCAES6C.KCC 0x6C00H KC85/4, 5

 

Wenn KCAES6C.KCC auf einem KC85/2, 3 verwendet werden soll, muss vor dem Laden des Programmes auf Adresse 0x4000H zusätzlicher externer RAM vorhanden und eingeschaltet sein.

Nach dem Einladen des Programmes und erneutem Aufruf des CAOS-Menüs, sieht das dann so aus:

KCAES.KCC

Was kann man damit machen?

Mit den 4 Menübefehlen %AESX... von KCAES.KCC kann ein beliebiger Speicherbereich in unterschiedlichen Betriebsmodi bzw. Betriebsarten mit einem Passwort verschlüsselt und anschließend gespeichert werden, siehe auch: 

https://de.wikipedia.org/wiki/Betriebsmodus_(Kryptographie)

Der umgekehrte Weg ist ebenfalls möglich. Nach dem Verschlüsseln eines vorher verschlüsselten bzw. Einladen eines verschlüsselten und abgespeicherten Bereiches in den RAM des KC85 kann man mit dem Menübefehl %DECAES diesen Bereich auch wieder entschlüsseln, wenn man das verwendete Passwort für die Verschlüsselung kennt.

Im folgenden Beispiel wird der Speicherbereich von 1000H bis 1200H mit einer Schlüssellänge von 256 Bit und Passwort "PASSKC85" verschlüsselt:

AES-Passwort eingeben (Kleinschreibung aktiv !)
AES-Verschlüsselung abgeschlossen


Wenn der Verschlüsselungsvorgang beendet ist, werden die Anfangs- und Endadresse (1000 122F) des verschlüsselten Speicherbereiches ausgegeben. Der dritte Ausgabe-Parameter (1230) muss im CAOS-Kommando %SAVE als Endadresse verwendet werden, um diesen Bereich als Crypt-Datei abzuspeichern (entspricht Endadresse+1 des verschlüsselten RAM-Bereiches).

Das Kommando SHA256 dient dazu, um separat einen kryptografischen 256-Bit Hashwert für den eingegeben Speicherbereich zu erstellen und im unteren Bereich anzuzeigen. Für die Nutzung von KCAES.KCC ist der Punkt nicht notwendig. Das Kommando wurde mit aufgenommen, da die Funktion sowieso im Programm vorhanden ist und für die Erstellung des 128-, 192- oder 256-Bit Keys aus dem Passwort für AES benötigt wird:

Hashwert über RAM-Bereich

Eine Verschlüsselung im KC85 hat den Vorteil, dass in einem Singeltasksystem mit ROM-basierten Betriebssystem keine Trojaner, Keylogger oder sonstigen Programme im Hintergrund ihr Unwesen treiben können. Der 128-256 Key für die Verschlüsselung in AES wird vorab nach 24 Runden aus dem SHA256-Hash des Passworts, dem Salt und einer laufenden Nummer erzeugt. Zusätzliche rechenintensive Verfahren wie z.B. scrypt oder bcrypt werden hier nicht eingesetzt. Sie dienen nur dazu, auch bei kurzen Passwörtern eine gewisse Sicherheit zu gewährleisten. Daher sind ausreichend lange Passwörter hier Voraussetzung für eine sichere Verschlüsselung.

Was bedeutet aber "ein ausreichend sicheres Passwort" eigentlich? Eine meiner Meinung nach sehr schöne Erklärung dieser durchaus umstrittenen Problematik habe ich hier gefunden:

https://www.packetizer.com/security/pwgen/

Interessant war für mich - Sonderzeichen in Passwörtern erhöhen nicht deren Sicherheit, weil sie beim Cracken mit einem Computerprogramm dem Computer schlichtweg egal sind. Der geht mit einem festgelegten Algorithmus nach Schema F vor und interessiert sich nicht für die verwendeten Zeichencodes in Passwörtern. Für uns spielt das aber eine größere Rolle, wenn man sich solche (unleserlichen) Passwörter merken möchte bzw. muss. Ein sicheres Passwort sollte demzufolge eine ausreichende Länge (14 bis 16 Zeichen) aufweisen, kann aber durchaus nur aus Buchstaben und Ziffern bestehen, welche die Lesbarkeit erhalten. Passwörter ohne Sonderzeichen stellen kein Problem dar, sollten aber dann etwas länger sein, da der Schlüsselraum eingegrenzter ist.

Verschlüsselte Dateien sind Offline verfügbar und damit ohne zusätzlichen Aufwand unbegrenzt oft angreifbar, da es keine künstlichen Zugriffsbeschränkungen wie auf vielen Webseiten gibt. Daher sind sichere Passwörter beim Verschlüsseln entsprechend länger und sollten aus mehreren zufälligen Wörtern, also ganzen Sätzen bestehen, welche man nicht so leicht mit Hilfe von Wörterbüchern erraten kann, welche für das Cracken meist verwendet werden.

Bei der Passworteingabe kann mit der Cursor-UP Taste die Klarsichteingabe aktiviert werden. Dann ist nur eine einmalige Eingabe des Passwortes notwendig, sonst mit Wiederholung.

Bei der Passworteingabe ist ohne Shift-Taste !! Kleinschreibung !! eingestellt!

Zu beachten ist, dass bei der Entschlüsselung über den Crypt-Speicherbereich 'On the fly' geschrieben wird. Bei falschem Passwort kann der verschlüsselte Bereich nicht erneut entschlüsselt werden, da er zerstört ist. Die Crypt-Datei muss dann vor dem nächsten Versuch erneut geladen werden. Nur so kann auch fast der gesamte RAM verschlüsselt und entschlüsselt werden.

Der Variablenspeicher wird vor Beendigung des Programmes zur Sicherheit gelöscht.

Durch den Aufruf von %DECAES ohne Parameter wird der Speicher nach einem verschlüsselten Speicherblock durchsucht. Wenn einer gefunden wird, kann er durch Eingabe des Passwortes entschlüsselt oder mit BRK der Vorgang abgebrochen werden.

Nach Ver- und Entschlüsselung werden, wie oben bereits beschrieben, 3 Parameter ausgegeben:

  1. Anfangsadresse des ver- bzw. entschlüsselten RAM-Bereiches im KC85
  2. Endadresse des ver- bzw. entschlüsselten RAM-Bereiches im KC85
  3. Endadresse+1 des ver- bzw. entschlüsselten RAM-Bereiches im KC85, welche im %SAVE-Kommando zu verwenden ist, um den Bereich abzuspeichern.

Sonderzeichen:

Die ausschließliche Nutzung im KC85 für ver- und entschlüsselte Speicherbereiche mit Sonderzeichen ist ohne Einschränkungen möglich.

Wenn aber im Austausch mit Hilfe von kcaes.sh und PC (siehe unten) und KC85 gearbeitet werden soll, ist aufgrund einiger Unterschiede in der ASCII-Zuordnung der Systeme Folgendes zu beachten:

Sonderzeichen mit identischer ASCII Zuordnung für KC85 und PC:  ! " $ % & ( ) = * + # ' ; , : . _ - ? < > / @ ^

 

Sonderzeichen mit unterschiedlicher ASCII Zuordung, welche eine Beachtung im Passwort erfordern:
KC85 PC ASCII-Code
[ 91
| \ 92
¬ ] 93
© ` 96
ä { 123
ö | 124
ü } 125
ß ~ 126


Obwohl der KC85/2 nur Großbuchstaben anzeigt, funktioniert es auch mit Kleinbuchstaben, da der richtige ASCII-Code übergeben wird. Das sollte aber vorher getestet werden!

Syntax:
    Beispiel:
Encrypt:    
AESX... Startadresse Endadresse Key [128 | 192 | 256]   AESXCTR 1000 1200 256
           
Decrypt:    
DECAES [Startadresse]       DECAES
           
Hash:    
SHA256 Startadresse Endadresse     SHA256 1000 2000

 

verschlüsselter Block im RAM:
Byte  
0 - 1 Kennung "IV"
2 - 17 16 Bytes IV-Block
18 Kennung "S" für Salt
19 - 26 8 Bytes Salt
27 - 28 Länge Crypt-Block
29 - 31

Art der Verschlüsselung, z.B:
CB8 = CB(C), (12)8
CT6 = CT(R), (25)6
CF2 = CF(B), (19)2

32 - ... Crypt-Daten

  

Damit wären die wichtigsten Informationen zu KCAES.KCC vorhanden. Das Programm kann RAM-Speicherbereiche auf dem KC85-System mit AES vor neugierigen und unbefugten Blicken verstecken. Die geheimen, also verschlüsselten Daten lassen sich als KCC-Datei speichern und auf dem gleichen oder auch einem anderen KC85 laden und wieder sichtbar machen.

So weit, so gut aber das war noch nicht alles. Es wäre ja auch ganz nützlich, wenn man diese verschlüsselten Daten mit anderen Systemen auch wieder lesbar machen könnte. Der KC85 ist ja nicht gerade mobil und einen KC85-Notebook gab es bekanntermaßen nicht. Damit kommen wir zum nächsten Abschnitt.

kcaes.sh

Zusätzlich zum CAOS-Programm hat Dirk auch noch das Bash-Skript kcaes.sh für einen Linux-PC erstellt, welches unter Linux das Pendant zu KCAES.KCC darstellt.

Mit Hilfe dieses Linux-Skripts kann man die auf dem KC85 gespeicherten KCC-Dateien entschlüsseln und die anschließend wieder lesbaren Daten in eine Datei schreiben lassen. Das Skript arbeitet also dateibasiert und sorgt dafür, dass sich die verschlüsselten Daten zwischen KC85 und einem linuxbasierten PC austauschen lassen.

Das funktioniert auch wieder in beide Richtungen, man kann mit dem Skript Dateien sowohl verschlüsseln als auch entschlüsseln, wobei der CAOS-Vorblock einer KCC-Datei automatisch berücksichtigt wird. Darum muss man sich auf dem Linux-PC nicht kümmern!

Damit das Skript unter Linux ausgeführt werden kann, muß vorher das Execute Bit gesetzt werden. 

Am Anfang des Bash-Skripts befindet sich auch eine Anleitung für die Handhabung unter Linux. Das Skript arbeitet mit den AES-Funktionen der OpenSSL-Bibliothek. Die verschlüsselten Crypt-Dateien sind zwischen Linux-PC und KC85 austauschbar. Hier sollte aber auch darauf geachtet werden, dass unter CAOS nur Dateibezeichnungen mit 8.3 - Format (auch SFN - Short File Name) verarbeitet werden können.

Dirk schreibt dazu:

"Das Script habe ich aus dem Grund geschrieben, falls der KC nicht zur Verfügung steht, man trotzdem an seine Daten kommt und um zu zeigen, dass KCAES.KCC dem Verschlüsselungsstandard AES entspricht und mit OpenSSL ver- und entschlüsselt werden kann."

Syntax:
Encrypt: kcaes.sh -e -in FN.FT -out FN.FT [-kcload HEX-Adresse] Key [-128 | -192 | -256] Mode [-CBC | -CTR | -CFB | -OFB]
               
Beispiel: kcaes.sh -e -in text.txt -out crypt.kcc -kcload 2A0 -192 -CBC
               
               
Decrypt: kcaes.sh [-d] -in FN.FT -out FN.FT      
               
Beispiel: kcaes.sh -d -in crypt.kcc -out text.txt

 

Anwendungsbeispiel

Wie oben bereits geschrieben, habe ich den kompletten Ablauf durchgespielt. Bei mir hat das alles funktioniert! Das soll nachfolgend mit einem bebilderten Beispiel auch demonstriert werden. Bei total unterschiedlichen Systemen macht der Austausch von verschlüsselten Textdaten am meisten Sinn, da man die entschlüsselten Daten direkt lesen und damit kontrollieren kann. Im Moment geht das auf dem KC85 unter CAOS nur über den RAM-Inhalt.

Da es keinen Texteditor für die Aus- oder Eingabe von verschlüsselten Texten mit AES gibt, könnte man für einen Test die vorhanden Monitorkommandos von CAOS verwenden. Mit %MODIFY oder %DISPLAY -> %MODIFY kann man auch Text im RAM "eingeben" aber das ist sehr mühselig und viel zu aufwendig für längere Texte.

Ich habe daher nach einer einfacheren Möglichkeit gesucht. Mit WordPro6 lässt sich das relativ elegant auf dem KC85/4 oder /5 umsetzen. Der Text wird dort im RAM ab Adresse 0x2000H gespeichert. Mit KCAES6C.KCC hat man dann einen freien RAM-Bereich von 0x2000H bis 0x6BFFH zur Verfügung. KCAES.KCC benötigt davon noch 48 Byte für das Verschlüsseln des Textes. Damit steht als freier Textspeicher ein RAM-Bereich von 0x2000H bis 0x6BCFH zur Verfügung. Dort kann man mit Hilfe von WordPro6 Texte per Kassette oder Diskette ab Zeile 0 laden, welche dann im genannten RAM-Bereich gespeichert werden.

Um den geladenen Text zu verschlüsseln, muss man die RAM-Adresse für das Textende manuell ermitteln. Dafür wird dann doch das CAOS-Kommando %DISPLAY benötigt.

Vor der Suche kann man die Endadresse überschlagen. Eine Zeile einer DIN-A4 Seite hat ca. 60 Zeichen bzw. Anschläge und pro Bildschirm zeigt WordPro6 30 Zeilen Text an, was einer Normseite DIN-A4 enspricht. Das ergibt dann mit den Zeilenwechseln etwa 1800 + 30 Bytes im WordPro6 - RAM pro Bildschirmseite, welche man schnell mal seitenweise durchblättern und zählen kann. Das wirkliche Textende wird immer kleiner als der Überschlag sein, da WordPro6 den Text wie eingegeben und auf dem Bildschirm dargestellt auch im RAM ablegt. Wenn eine Zeile nicht 60 Zeichen umfasst, reduziert sich auch die Endadresse des Textes im RAM entsprechend.

Für meinen AES-Test habe ich die Beschreibung der M052 Netzwerk-Software so gekürzt, dass ca. 10 kB Text ver- und entschlüsselt werden können. Nach dem Laden und Starten von WordPro6 wurde dieser verkürzte Text im I/O-Menü ab Zeile 0 geladen, siehe die 4 folgenden Screenshots:

Text am Anfang des WordPro6-Textspeichers ab Zeile 0
Text am Ende des WordPro6-Textspeichers bis Zeile 280
Text am Anfang des RAM-Bereiches ab Adresse 0x2000H
Text am Ende des RAM-Bereiches bis Adresse 0x468CH

Damit ist alles für den AES-Test bereit. Nun wurde KCAES6C.KCC in der Version 1.3 geladen. Es belegt im RAM des KC85 den Bereich von 0x6C00H bis 0x7E1EH. Dadurch wird weder der vorher geladene Text noch WordPro6 selbst gestört oder überschrieben. Nach dem Aufruf des CAOS Menüs kann mit einem der AES-Kommandos der RAM-Bereich mit dem Text verschlüsselt werden.

Im Test wird die erste Variante %AESXCBC mit einer Schlüssellänge von 256 Bit verwendet. Als Passwort wird "M052NET" eingegeben:

Der RAM-Bereich des geladenen Textes wird mit AES verschlüsselt

Die Verschlüsselung des Textes wurde erfolgreich beendet

Bevor man nun etwas anderes macht, sollte man den verschlüsselten Text erst einmal sichern. KCAES.KCC gibt den Anfang und das Ende des verschlüsselten RAM-Bereiches nach getaner Arbeit aus und zusätzlich als dritten bzw. letzten Parameter auch die korrekte Endadresse für das %SAVE - Kommando von CAOS, welche immer mit Endadresse+1 bezogen auf RAM-Bereiche anzugeben ist.

Das ist an dieser Stelle sehr wichtig. Wenn der verschlüsselte Bereich nicht vollständig gespeichert wird, wird auch die Entschlüsselung nicht fehlerfrei funktionieren. Bei Text fehlt dann vielleicht nur ein kleines Stück. Wenn man aber beispielsweise Programmcode verschlüsselt, wird diese Software bei Entschlüsselungsfehlern wahrscheinlich nicht mehr funktionieren und in der Regel verloren sein.

Also erst mal sichern:

Der verschlüsselte Text wird als Datei M052NET.AES im CAOS
KCC-Format gespeichert 

Während der Verschlüsselung zeigt KCAES.KCC einen Fortschrittsbalken am unteren Bildschirmrand an. Beim Verschlüsseln stellt der Z80 natürlich keine Geschwindigkeitsrekorde auf aber man muss auch nicht ewig warten. Der Vorgang läuft relativ gleichmäßig bis zum Ende durch. Die ca. 10 kB Text benötigen etwa 30s bis zum Abschluss auf dem KC85. Hier zahlt sich natürlich auch die Programmierung des AES-Algorithmus in Assembler aus!

Wie sieht eigentlich der mit AES verschlüsselte Text im RAM aus? Da gibt es nach der Verschlüsselung eigentlich nur noch "Datenmüll" zu sehen - mit Text hat das nicht mehr viel zu tun. Zum Vergleich zu oben vor der Verschlüsselung nun die beiden gleichen RAM-Bereiche nach der Verschlüsselung:

Verschlüsselter Text am Anfang des RAM-Bereiches
Verschlüsselter Text am Ende des RAM-Bereiches

Damit wäre die Verschlüsselung eines RAM-Bereiches mit dem anerkannten AES-Algorithmus auf einem KC85-System abgeschlossen.

Der interessantere zweite Teil - die Entschlüsselung - soll als Nächstes demonstriert werden. Dafür sollte das System in den Ausgangszustand versetzt werden. Also alles aus- und wieder einschalten oder mit den aktuelleren CAOS-Versionen auf dem KC85/4, 5 das Kommando %go F000 im CAOS-Menü eingeben und ausführen.

Danach ist der System-RAM komplett gelöscht, so dass zunächst unser AES-Werkzeug und der gesicherte verschlüsselte Text wieder geladen werden müssen:

Nach dem Neustart des Systems werden KCAES.KCC und
der verschlüsselte Text M052NET.AES in den RAM geladen. 

Für das Entschlüsseln des verschlüsselten Textes im System-RAM muss das AES-Kommando %DECAES aufgerufen werden. Es ist in der Lage, einen mit AES verschlüsselten RAM-Bereich anhand des definierten Blockaufbaues (siehe oben) selbständig zu finden. Man kann optional auch die Anfangsadresse des verschlüsselten Bereiches als Parameter übergeben. Die Ladekommandos von CAOS geben diese Anfangsadresse beim Einladen einer KCC-Datei aus, welche man dann auch so als Anfangsadresse verwenden kann.  

Nach dem Start des Kommandos %DECAES wird das Passwort angefordert, welches für die AES-Verschlüsselung verwendet wurde. Wenn man dieses Passwort nicht bzw. nicht mehr weiß, ist eine Entschlüsselung nicht mehr möglich! 

Die folgenden 4 Screenshots zeigen den gesamten Entschlüsselungsvorgang und den entschlüsselten WordPro6-Text im RAM an. Wie man sehen kann, hat das auf meinem KC85/5 mit AESXCBC der Version 1.3 mit 256 Bit Key alles funktioniert:

Der RAM-Bereich des geladenen verschlüsselten Textes wird mit
dem richtigen AES-Passwort wieder entschlüsselt
Die Entschlüsselung des Textes wurde erfolgreich beendet

Entschlüsselter Text am Anfang des RAM-Bereiches
Entschlüsselter Text am Ende des RAM-Bereiches

Nach der Entschlüsselung ist der originale Text aus WordPro6 nur als RAM-Bereich im Systemspeicher verfügbar und kann leider nicht direkt wieder mit dem Textprogramm bearbeitet werden. Auch ein erneutes Laden von WordPro6 löst dieses Problem nicht, weil die Initialisierung des WordPro6-Textspeichers entsprechend des entschlüsselten RAM-Bereiches fehlt. Hier fehlt jetzt noch ein kleines Stück Software, welches dieses Problem löst, so dass der anschließende Aufruf von WordPro6 aus dem CAOS-Menü und ein Start mit "Fortsetzen" aus dem Anfangsmenü von WordPro6 auch den entschlüsselten Text im RAM wieder in WordPro6 sichtbar macht.

Damit kommen wir zum optionalen 3. Teil des AES-Tests. Die gespeicherte Crypt-Datei M052NET.AES des KC85, kann nicht nur dort, sondern auch auf einem Linux-PC erfolgreich wieder entschlüsselt werden!

Dazu wurde der Netzwerkserver, auf dem diese Webseite läuft, als Testobjekt verwendet. Die OpenSSL-Bibliothek ist dort natürlich auch installiert, so dass die AES-Entschlüsselung der KCC-Datei vom KC85 kein Problem war. Jetzt kam das Bash-Skript von Dirk zum Einsatz, welches in den 3 folgenden Screenshots der Konsolenausgabe des Linux-Systems zu sehen ist:

Die Crypt-Datei des KC85 im KCC-Format wird mit dem Bash-Skript unter
Linux und dem richtigen AES-Passwort erfolgreich wieder entschlüsselt
Der WordPro6-Text am Anfang der entschlüsselten Textdatei in der Konsolenausgabe unter Linux
Der WordPro6-Text am Ende der entschlüsselten Textdatei in der Konsolenausgabe unter Linux

Die Ausgabe auf der Konsole erfolgte mit dem Systemkommando less. Unter Linux werden die Zeilenumbrüche (0DH) im Speicherabzug des originalen WordPro6-Textes als ^M angezeigt und nicht als Zeilenumbruch interpretiert. Daher sind alle Zeilen in der Konsolenausgabe des Textes aneinander gehängt. Das sieht etwas unschön aus, ist aber so vollkommen korrekt. Wenn man den Text unter Linux weiter verwenden möchte, müssten alle 0DH durch 0AH ersetzt werden, damit das passt.

Darum ging es hier aber nicht. Für eine Kontrolle der AES-Entschlüsselung mit dem Skript reicht das so vollkommen aus. Die KCC-Datei des KC85 wurde erfolgreich entschlüsselt. Der Textinhalt entspricht wieder dem Original, was mit Hilfe der Textausgabe über die Konsole demonstriert wurde.

Fazit

Sowohl das AES-Programm für den KC85, als auch das Linux Skript arbeiten auf beiden Systemen wie von Dirk beschrieben. Der komplette Ablauf der Ver- und Entschlüsselung mit dem AES-Algorithmus wurde erfolgreich durchgeführt.

Inzwischen gibt es die Version 1.3 der AES-Software im Downloadbereich für den Selbsttest auf dem eigenen KC85. Man muss bei den ganzen manuellen Vorgängen etwas aufpassen beim Handling der Parameter und beim Umgang mit der KC85-Systemsoftware. Hier ist die Beachtung aller Hinweise in den Beschreibungen notwendig und es muss sorgfältig gearbeitet werden. Genau deswegen gibt es auch diesen Beitrag mit dem ausführlichen Beispiel, welcher dabei unterstützen soll.

Funktional waren auch in den vorangegangenen Versionen keine Fehler enthalten aber es waren kleinere Stolperfallen bei der Bedienung zu beseitigen und eine genauere Beschreibung von Parametern notwendig, damit man bei der Bedienung der Software keine unbewussten Fehler macht. Die AES-Programme melden dann Fehler bei der Ver- bzw. Entschlüsselung und man muss dann erst einmal herausbekommen, woran es denn genau liegt.

Was Dirk hier geleistet hat, ist unglaublich! Ich war sehr beeindruckt von der AES-Software, als ich die erste fehlerfreie Ver- und Entschlüsselung von Text selbst nachvollziehen konnte. Ich lese ja mitunter auch in anderen Foren der Z80-Gemeinde mit, wie beispielsweise ZX81- oder CPC-Forum. Beim Thema Verschlüsselung oder gar AES mit einem Z80 wird in der Regel relativ schnell abgewunken. Die Begründungen sind meist "zu kompliziert", "zu langsam" oder "macht keinen Sinn mit einem 4MHz Z80".

Den Gegenbeweis hat Dirk mit seiner AES-Software erfolgreich angetreten - es funktioniert, es ist nicht zu langsam und es ist auch mit einem Z80 machbar. Besonders freut mich, dass das auf einem KC85-System umgesetzt wurde und das unter CAOS, wo ein Z80 mit ca. 1,75 MHz betrieben wird. Mir ist auch kein anderes derartiges Projekt bekannt, was den aktuellen AES-Algorithmus mit dem Z80 implementiert hätte.

Soviel dann für heute zum Thema Kryptografie mit der "Weltpremiere" 😉AES auf dem KC85! Hier trifft voll und ganz das Zitat eines berühmten Mannes zu, der es ja wissen muss: "Faszinierend !!!"

Ich wünsche viel Erfolg und Spaß beim Ausprobieren auf dem eigenen System und beachtet bitte unbedingt den folgenden Hinweis beim Experimentieren mit AES:


Wichtiger Hinweis !!!

Die Benutzung der Programme erfolgt auf eigene Gefahr !

Wenn das Passwort vergessen wird, ist eine Entschlüsselung nicht mehr möglich !!!