Download presentation
Презентация загружается. Пожалуйста, подождите
Veröffentlicht von:Karsten Hase Geändert vor über 9 Jahren
1
Sükün_Karatas Grundlagen der Codes Sükün_Karatas 3aFD
2
Geschichte der Codes Julius Cäsar 14. Jh. Verwendung Codes
Sükün_Karatas Geschichte der Codes Julius Cäsar 14. Jh. Verwendung Codes 19. Jh. Chiffren Hollerith-Lochkarten EBCDIC BCDIC-Code Public-key-kryptographie Julius Cäsar mit dem Cäsar Schlüssel Ab dem 14. Jahrhundert hatte sich die Verwendung von Codes im Alltag etabliert Ende des 19. Jahrhunderts: kommerzielle Chiffren (Marconi-Code, Edison-Code) für die Telegraphie Die ersten Kodierungen von Zeichen für Computer gehen auf die Hollerith-Lochkarten (benannt nach deren Entwickler Herman Hollerith) zurück, die zur Volkszählung in den USA 1890 entwickelt wurden. Auf diesen Code aufbauend entwickelte IBM den 6-Bit-BCDIC-Code (Binary Coded Decimal Interchange Code), der dann zum EBCDIC (Extended Binary Coded Decimal Interchange Code), einem 8-Bit-Code, erweitert wurde. In den 20er Jahre wurden die ersten Codierungsmaschinen erfunden. 1. und 2. Weltkrieg: Aufkommen der Kryptographie da die Entwicklung durch amerikanische Militärbehörden vorangetrieben wurde 1975 Erfindung der Public-Key-Kryptographie (Whitfield Diffie und Martin Hellman) Sükün_Karatas 3aFD
3
Sükün_Karatas ASCII-Aufbau Zeichen 0 bis 31 (1Fh):Steuerzeichen, wie z. B. Tabulatoren, Zeilen- und Seitenvorschub Zeichen 48 (30h) bis 57 (39h): Ziffern 0 bis 9 Zeichen 65 (41h) bis 90 (5Ah): Großbuchstaben A bis Z Zeichen 97 (61h) bis 122 (7Ah): Kleinbuchstaben a bis z Sonderzeichen fehlen Klammer, Dollarzeichen, usw. verteilen in Zwischenräumen Es gehört zu jedem möglichen Binärzeichen ein Zeichen. Die Groß- und die Kleinbuchstaben liegen jeweils in zusammenhängenden Bereichen, was für die Programmierung deutliche Vorteile hat, mit einem Pferdefuss: Werden Strings (Zeichenfolgen, wie etwa Wörter) nach ASCII sortiert, geraten die klein geschriebenen Wörter hinter alle groß beginnenden. Neben den alphabetischen Zeichen in Groß- und Kleinbuchstaben erhält der ASCII-Code noch eine Reihe von Sonderzeichen und Steuerzeichen, Zeichen, die ursprünglich dazu dienten, Drucker oder andere Ausgabegeräte zu steuern. Die 128 Zeichen des ASCII-Codes lassen sich grob so einteilen (in Klammern die hexadezimaler Notierung): * Zeichen 0 bis 31 (1Fh): Steuerzeichen, wie z. B. Tabulatoren, Zeilen- und Seitenvorschub * Zeichen 48 (30h) bis 57 (39h): Ziffern 0 bis 9 * Zeichen 65 (41h) bis 90 (5Ah): Großbuchstaben A bis Z * Zeichen 97 (61h) bis 122 (7Ah): Kleinbuchstaben a bis z Leer- und Interpunktionszeichen, Klammern, Dollarzeichen usw. verteilen sich in den Zwischenräumen. Bei diesem Standard fehlen allerdings Sonderzeichen wie beispielsweise die Umlaute. Sükün_Karatas 3aFD
4
ASCII-Aufbau IBM erweitert ASCII-Code 8 bit 128 Zeichen darstellbar
Sükün_Karatas ASCII-Aufbau IBM erweitert ASCII-Code 8 bit 128 Zeichen darstellbar MS-DOS 3.3 ==> Code Pages Zeichen von 128 bis 255 Problem: japanische od. chinesische Zeichen s + Umlaute Mit dem Erscheinen des PCs erweiterte IBM den ASCII-Code auf 8 Bit, so dass nun 128 weitere Zeichen darstellbar waren. Neben einigen Sonderzeichen besaß der "erweiterte ASCII-Code" auch eine Reihe von Zeichen zur Darstellung von Blockgrafiken. Mit MS-DOS 3.3 führte Microsoft die sogenannten "Code Pages" ein, die den Zeichen von 128 bis 255 eine flexible auf den jeweiligen Zeichensatz angepasst werden konnte. Damit konnte beispielsweise auch der griechische Zeichensatz dargestellt werden. Die Verwendung unterschiedlicher Codepages machte zwar die für die europäischen Sprachen benötigten Zeichen verfügbar, führt aber bis heute dazu, dass z. B. Umlaute in s nicht korrekt übertragen werden, falls das sendende Mail-Programm nicht korrekt konfiguriert oder fehlerhaft programmiert ist. Noch problematischer war, dass japanische oder chinesische Zeichen nicht dargestellt werden konnten, da ihre Anzahl die 256 möglichen Zeichen bei weitem überstieg. Dazu wurden DBCS (double byte character set) eingeführt, der den Zeichensatz auf 16 Bit erweitert, allerdings auch noch den 8 Bit ASCII-Zeichensatz unterstützt. Mit dem Unicode schließlich wurde ein Schlussstrich unter die Wirrungen in Folge der verschiedenen Erweiterungen gezogen und ein einheitlicher 16-Bit-Zeichensatz eingeführt. Mit Unicode ist es möglich, verschiedene Zeichen und sämtliche vorhandenene Sprachen in einem Zeichensatz darzustellen. Sükün_Karatas 3aFD
5
Unicode - Geschichte Unicode Consortium Unicode-Standard 1991
Sükün_Karatas Unicode - Geschichte Unicode Consortium Unicode-Standard 1991 V 1.1_1993 V 2.0_1996 V 3.0_2000 Das in Kalifornien ansässige "Unicode Consortium" hat den Unicode-Standard im Jahr 1991 veröffentlicht. Ist im Jahre 1996 von der "International Organization for Standardization" (ISO) als ISO angenommen worden Unicode-Version 1.0 kam im Jahr 1991 heraus Version 1.1 stammt aus dem Jahre 1993 Version 2.0 von 1996 Version 2.1 von 1998 Version 3.0 aus dem Jahr 2000 Sükün_Karatas 3aFD
6
Unicode Zeichensatz mit allen bekannten Zeichen Normiert als ISO 10646
Sükün_Karatas Unicode Zeichensatz mit allen bekannten Zeichen Normiert als ISO 10646 Ursprünglich 16-Bit pro Zeichen, jetzt 32-Bit Unicode 4.0 umfasst Zeichen Schreibweise: hexadezimal mit vorangestelltem „U+“ -y = U+ 0079, ö = U+ 00E4; € = U+ 20 AC Codierungen: UTF-8; UT 6 -16; UTF -32 Sükün_Karatas 3aFD
7
Unicode - UTF 8 8 Bit Unicode Transformation Format
Sükün_Karatas Unicode - UTF 8 8 Bit Unicode Transformation Format Codierungsvorschrift für Unicode Ein Zeichen wird mit 1 bis 4 Bytes codiert. Kann bis zu 70 Mrd. Zeichen codieren Alle Zeichen des ASCII-Codes werden unverändert übernommen. Alle Zeichen über 127 benötigen mehr als ein Byte zur Codierung Sükün_Karatas 3aFD
8
Huffman-Code meistverwendete Algorithmus
Sükün_Karatas Huffman-Code meistverwendete Algorithmus kodiert die Zeichen eines Textes Huffman – Coding – Trees Verwendung ==> Grafikverarbeitung JPEG, MPEG, LHA Einer der meistverwendeten Algorithmen der Datenkompression ist der so genannte Huffman-Code. Der Huffman-Algorithmus kodiert die Zeichen eines Textes entsprechend ihrer Häufigkeit und hat damit Ähnlichkeit mit dem Morsecode. Zentraler Bestandteil des Algorithmus ist der Huffman-Kodierbaum, dessen Hierarchie die Häufigkeit der Zeichen widerspiegelt. Huffman- Coding- Trees werden in der Praxis häufig eingesetzt. Vor allem in der Grafikverarbeitung wird die Technik der Huffman-Kodierung zur möglichst redundanzarmen Speicherung der Bilddaten verwendet. Beispiele für Anwendung der Huffman-Kodierung sind JPEG, MPEG, Wavelet, LHA. Sükün_Karatas 3aFD
9
Ausgangssituation des Huffman-Algorithmus
Sükün_Karatas Huffman-Code - Aufbau Huffman begann den Baum von unten aufwärts zu konstruieren. Er begann mit unverbundenen Knoten für alle vorkommenden Buchstaben der Quelle, jeweils markiert mit der Häufigkeit oder Wahrscheinlichkeit des Auftretens Ausgangssituation des Huffman-Algorithmus Sükün_Karatas 3aFD
10
Huffman-Code - Aufbau Sükün_Karatas 3aFD Sükün_Karatas
Jetzt werden immer wieder die zwei Knoten ohne Vorgänger ausgewählt, die die niedrigsten Markierungen haben. Es wird ein neuer Knoten erzeugt, der die beiden ausgewählten Knoten als Nachfolger hat und als Markierung die Summe der beiden Markierungen erhält. Dieser Schritt wird solange wiederholt, bis nur noch ein Knoten keinen Vorgänger hat; in jedem Schritt verringert sich die Anzahl solcher Knoten um eins; gibt es nur noch einen solchen Knoten, ist ein zusammenhängender Baum entstanden. Nach Zusammenfassen von E,F und dann C,D Die beiden Knoten ohne Vorgänger mit Häufigkeit 7 werden zusammengefasst Sükün_Karatas 3aFD
11
Huffman-Code - Aufbau Sükün_Karatas 3aFD Sükün_Karatas
Die Häufigkeiten 10 und 14 werden zu 24 zusammengefasst Der fertige Baum, A:0, B:111, C:100, .., F:1101 Bei dieser Konstruktion ist nicht immer eindeutig festgelegt, welche Knoten zusammengefasst werden müssen, wenn mehrere Knoten gleiche Markierungen haben. Verschiedene Wahlen führen hier zwar zu unterschiedlichen Kodes, aber immer zur gleichen Länge der kodierten Nachricht, im Beispiel 94 Bits. Wichtig ist dabei vor allem, dass Kodierungs- und Dekodierungsalgorithmus exakt denselben Baum konstruieren. Sükün_Karatas 3aFD
12
Huffman-Code - Aufbau Nachteile
Sükün_Karatas Huffman-Code - Aufbau Nachteile Umsetzung erfordert umständliche Bitoperationen Optimalität der Kompression Die Nachteile der Huffman-Kodierung sind zunächst dieselben wie bei allen Kodes, die einzelne Zeichen auf Bitfolgen mit unterschiedlichen Längen abbilden: Die Umsetzung erfordert Bitoperationen, die auf den meisten Systemen relativ umständlich sind. Ein weiterer, sehr viel wichtigerer Nachteil betrifft letztlich die Optimalität der Kompression an sich. Erweiterungen Sükün_Karatas 3aFD
13
Hamming - Code Richard Hamming Linearer Fehlerkorrigierender Blockcode
Sükün_Karatas Hamming - Code Richard Hamming Linearer Fehlerkorrigierender Blockcode Verwendung in NT und gesicherte Datenübertragung und Datenspeicherung Fehlererkennung + Fehlerkorrektur der übertragenen Datenbits Hamming-Code Der Hamming-Code ist ein von Richard Hamming entwickelter linearer fehlerkorrigierender Blockcode, der in der digitalen Signalverarbeitung und der Nachrichtentechnik zur gesicherten Datenübertragung oder Datenspeicherung verwendet wird. Beim Hamming-Code handelt es sich um eine Klasse von Blockcodes unterschiedlicher Länge, welche durch eine allgemeine Bildungsvorschrift gebildet werden. Die Besonderheit dieses Codes besteht in der Verwendung mehrerer Paritätsbits. Diese Bits ergänzen jeweils unterschiedlich gewählte Gruppen von den die Information tragenden Nutzdatenbits. Durch eine geschickte Wahl der Gruppierung, deren mathematische Grundlagen im folgenden beschrieben sind, ist nicht nur eine Fehlererkennung, sondern auch eine Fehlerkorrektur der übertragenden Datenbits möglich. Die einzelnen Codewörter des Hamming-Codes weisen einen Hamming-Abstand von drei auf. Durch diesen Unterschied von jeweils drei Bitstellen kann der Decoder einen Bitfehler in einem Datenblock immer erkennen und korrigieren, bei zwei oder mehr Bitfehlern wird der Datenblock allerdings falsch decodiert. Der erweiterte Hamming-Code mit einem Hamming-Abstand von vier kann durch eine zusätzliche Paritystelle auch zwei Bitfehler in einem Datenblock erkennen, aber nicht korrigieren. Sükün_Karatas 3aFD
14
Hamming-Code - Geschichte
Sükün_Karatas Hamming-Code - Geschichte 1940er Jahren Richard Hamming + Firma Bell Labs 1950: Hamming Code Anwendung im Bereich der Kanalcodierung In den 1940er Jahren arbeitete Richard Hamming in der Firma Bell Labs an einem Computer namens Bell Model V, welcher mit fehleranfälligen elektromechanischen Relais mit zwei Maschinenzyklen pro Sekunde ausgestattet war. Die zu Dateneingaben verwendeten Lochkarten konnten durch Abnutzung bei der Leseoperation Fehler aufweisen, die zu den normalen Bürozeiten durch Angestellte der Bell Labs von Hand korrigiert werden mussten. Zu den üblichen Arbeitszeiten von Richard Hamming, außerhalb der Bürozeiten und am Wochenende, führten diese Lesefehler dazu, dass der Computer die fehlerhaften Lochkarten übersprang und an anderen Lochkarten weiterarbeitete. Hamming, war durch diese Fehler und den mehrfachen Aufwand frustriert, entwickelte in Folge einen speziellen Code, durch den die Maschine Lesefehler von Lochkarten in bestimmten Umfang selbstständig erkennen und korrigieren konnte. Im Jahr 1950 publizierte er diesen Hamming-Code[1], der noch heute und in teilweise erweiterten Formen im Bereich der Kanalcodierung verbreitete Anwendung findet. Sükün_Karatas 3aFD
15
Hamming-Code - Aufbau n = 2k − k − 1 n… Datenblock umfasst n Bits
Sükün_Karatas Hamming-Code - Aufbau n = 2k − k − 1 n… Datenblock umfasst n Bits k… fixe Kontrollstellen N… Codewortlänge Binäre Hamming-Codes basieren auf Paritycodes über einem Datenblock fixer Länge. Der Datenblock, auch als „Datenwort“ oder „Nachrichtenwort“ bezeichnet, umfasst n Bits und enthält die eigentliche Nutzinformation. n kann bei dem Hamming-Code nur spezifische ganzzahlige Werte annehmen, welche sich aus der Bildungsvorgabe dieses Codes ergeben. Die Bitkombinationen in dem n Bit umfassenden Datenblock können grundsätzlich beliebig gewählt werden, das heißt es sind alle beliebigen Bitkombinationen zulässig. Das Codewort des Hamming-Codes wird aus dem Datenwort durch Integration zusätzlicher Kontrollstellen, den so genannten Parity-Bits, gewonnen. Dabei wird in jedes Datenwort von n Bit Länge eine fixe Anzahl k Kontrollstellen eingefügt. Daraus ergibt sich das Codewort mit einer Länge von N = n + k. Für ein Codewort sind, da die Kontrollstellen redundante, aus dem Datenblock abgeleitete Information tragen, nur noch bestimmte Bitkombinationen möglich. Auf diesen wesentlichen Umstand gründet sich sowohl die Fehlererkennung, als auch in weiterer Folge die Fehlerkorrektur des Datenwortes. Die Vorgabe zur Codebildung durch eine weitere Gleichung von N zu k ist in folgender Form beschrieben: n = 2k − 1 Dies bedeutet, dass wenn beispielsweise drei binäre Stellen für Kontrollbits (Parity-Bits) zur Verfügung stehen, das Codewort zwangsläufig eine Länge von N=7 aufweisen muss. Für das Datenwort ergibt sich dann eine Länge von n = 7-3 = 4 Bits pro Codewort oder allgemein: n = 2k − k − 1 Sükün_Karatas 3aFD
16
Hamming - Code - Aufbau Sükün_Karatas 3aFD Sükün_Karatas
In folgender Tabelle sind alle möglichen Hamming-Codes unterschiedlicher Codewortlängen bis zur Blockgröße von 255 Bits dargestellt Sükün_Karatas 3aFD
17
Fehlererkennung & Fehlerkorrektur
Sükün_Karatas Fehlererkennung & Fehlerkorrektur Fehlerkorrektur Vorwärts Fehlerkorrektur (FEC) Anforderung auf Wiederholung der Übertragung Mögliche Fehlerursachen Rauschen Kurzzeitstörungen Signalverformung Fehlererkennung Fehlerkorrekturverfahren (englisch: Error Correction Code), dienen dazu, Fehler bei der Speicherung und Übertragung von Daten zu erkennen und, wenn möglich, zu korrigieren. Fehlererkennungsverfahren beschränken sich auf eine reine Fehlererkennung. Dazu wird vor der Speicherung oder Übertragung den Nutzdaten zusätzliche Redundanz in Form zusätzlicher Bits hinzugefügt, die auf der Zielseite zur Bestimmung von Fehlern und Fehlerpositionen genutzt wird. Sükün_Karatas 3aFD 17
18
Mögliche Fehlerursachen
Sükün_Karatas Mögliche Fehlerursachen Rauschen Bitfehler Unabhängig von der Ursache Signalverformung Dämpfung und Phasengang eines Übertragunsgkanal Nebensprechen Kapazitive Kopplung Rauschen Rauschen kann unabhängig von der Ursache „hin und wieder“ Bitfehler verursachen. Die Wahrscheinlichkeit für einen Fehler hängt dabei nicht vom Auftreten früherer Fehler ab, sondern nur von der Stärke des Rauschens. Daher ist eine gleichmäßige Verteilung der Fehler in gleich langen Zeitintervallen zu erwarten. * Thermisches und elektronisches Rauschen → Verbreiterung der Entscheidungsschwellen im Augendiagramm → ab und zu wird die Fehlerschwelle überschritten * erzeugt weitgehend gleichmäßig verteilte Fehler (die keine speziellen Schutzmaßnahmen erfordern) Signalverformung Dämpfungs- und Phasengang eines Übertragungskanal Nebensprechen Unerwünschter Einfluss benachbarter Digitalkanäle zum Beispiel über kapazitive Kopplung Sükün_Karatas 3aFD 18
19
Fehlererkennung Parität ECC Hashs Sükün_Karatas 3aFD
20
Fehlererkennung _ Parität
Sükün_Karatas Fehlererkennung _ Parität Daten Even odd 0000 1 0001 1101 0011 1111 Paritätsbit bietet keinen hohen Schutz even oder odd Parity Man zählt alle 1er ==> ==> 1+1=2 gerade/even ==> ==> 1+1+1=3 ungerade/odd Zur Sicherung von Daten im Hauptspeicher oder bei der Übertragung von binären Code-Worten werden die Bytes mit Hilfe der Hardware mit einem zusätzlichen Kontroll-Bit (parity bit) versehen. Dies stellt die einfachste Form zur Erkennung eines Fehlers in einem Byte, Wort oder Block dar. Damit können nur Einfachfehler erkannt werden und eine Fehlerkorrektur ist aufgrund des parity bits nicht möglich. Die Fehlererkennung und Fehlerkorrektur ist bei Verwendung mehrerer Bits, die als Prüfstellen der Nutzinformation hinzugefügt werden, möglich. Es prüft, ob die übertragenen Daten korrekt sind und erkennt 1- bit- Fehler. Es gibt gerade /even/E Parität oder ungerade/odd/O Parität. Man zählt die gesetzten bits (bits die 1 sind) Inklusive des Paritätsbits muss sich die versprochene Parität ergeben. Sükün_Karatas 3aFD 20
21
CRC _ Cyclic Redundancy Check
Sükün_Karatas CRC _ Cyclic Redundancy Check zyklische Redudanzprüfung Verfahren aus der IT Vergleich der Prüfwerte Festplatten-Übertragungen geprüft Schreib/Leseoperationen geprüft Die zyklische Redundanzprüfung ist ein Verfahren aus der Informationstechnik zur Bestimmung eines Prüfwerts für Daten (z. B. Datenübertragung in Rechnernetzen oder eine Datei), um Fehler bei der Übertragung oder Duplizierung von Daten erkennen zu können. Vor Beginn der Übertragung bzw. Kopie eines Blocks der Daten wird ein CRC-Wert berechnet. Nach Abschluss der Transaktion wird der CRC-Wert erneut berechnet. Anschließend werden diese beiden Prüfwerte verglichen. CRC ist so ausgelegt, dass Fehler bei der Übertragung der Daten, wie sie beispielsweise durch Rauschen auf der Leitung verursacht werden könnten, fast immer entdeckt werden. Zum Beispiel werden die meisten Festplatten-Übertragungen und Schreib-/Leseoperationen mit CRC-Verfahren geprüft. Sükün_Karatas 3aFD
22
Hashs Komprimierung von Daten Eingabe: beliebige Länge
Sükün_Karatas Hashs Komprimierung von Daten Eingabe: beliebige Länge Ausgabe: feste Länge SHA-1 Hash-Wert ==> digitaler Fingerabdruck Anwendung: Datenbank, herunterladen einer Datei Hashs: Eine Hash-Funktion ist ein Verfahren zur Komprimierung von Daten mittels einer Einwegfunktion, so dass die ursprünglichen Daten nicht rückrechenbar sind. Die Hash-Funktion liefert für einen Eingabewert beliebiger Länge einen Ausgabewert fester Länge und ist so beschaffen, daß eine Änderung der Eingangsdaten mit sehr hoher Wahrscheinlichkeit Auswirkungen auf den berechneten Hash-Wert (d.h. den Ausgabewert) hat. Ein typischer Vertreter der Hash-Algorithmen ist der SHA-1. Das Ergebnis einer Hash-Funktion ist der Hash-Wert, der oft auch als digitaler Fingerabdruck bezeichnet wird. Praktische Anwendung ist z. B. das Herunterladen einer Datei, zu der der Autor den Hashwert angegeben hat: Um zu prüfen, ob es Übertragungsfehler gegeben hat, braucht nicht die gesamte Datei ein zweites Mal heruntergeladen zu werden, sondern es muss nur der Hashwert gebildet und mit der Angabe des Autors verglichen werden. Anwendungen: Datenbanken, Kryptologie, Prüfsummen Sükün_Karatas 3aFD
23
Quellen Sükün_Karatas 3aFD
24
Danke für eure Aufmerksamkeit
Sükün_Karatas 3aFD
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.