Codierung: Wie sicher ist mein Passwort?

aus ZUM-Wiki, dem Wiki für Lehr- und Lerninhalte auf ZUM.de
Wechseln zu: Navigation, Suche

Herzlich Willkommen zu meiner Selbstlerneinheit

Wie oft hört man in den Nachrichten, dass wieder Internetaccounts gehackt wurden und man kontrollieren sollte, ob man selbst betroffen ist und ob das eigene Accountpasswort gewissen Sicherheitsrichtlinien entspricht?

Diese Meldungen nehmen immer mehr zu.

Eventuell hast du sogar selbst schon mal eine merkwürdige Nachricht von einem Freund - beispielsweise auf Facebook - erhalten. Erst später hast du dann erfahren, dass er sie gar nicht geschrieben hat und auch andere Freunde diese Nachricht erhalten haben.

Aus diesem Grund spielen Codierungsverfahren eine sehr große Rolle, da sie beispielsweise nicht für die Öffentlichkeit bestimmte Nachrichten verschlüsseln und somit einen wichtigen Sicherheitsmechanismus gegen das Ausspionieren von Daten darstellen.

Daher möchte ich mich mit dir zusammen mit der Codierung - insbesondere mit dem Huffman Code – und der Passwortsicherheit auseinandersetzen.

Ein kurzer Überblick: Was erwartet mich?

Inhaltsverzeichnis


Wie ist diese Selbstlerneinheit aufgebaut und was sind die Ziele?

  1. Zum grundliegenden Verständnis für die Huffman-Codierung sind die Begriffe Binäre Zahlen, Größeneinheit Bits und die Speicherkapazität eines Computers wichtig.
    → Wenn du bereits jetzt schon alle Bezeichnungen kennst und verstehst, kannst du auch gerne direkt mit dem darauffolgenden Punkt - der Codierung - weitermachen.
  2. Unter der Überschrift Codierung werde ich dir den Begriff erläutern und wir werden unser erstes Wort zusammen codieren.
  3. Im Anschluss kannst du dir ein konkretes Codierungsverfahren - den Huffman-Code - selbst erarbeiten.
  4. Damit du nicht von einem Spionageangriff betroffen wirst, möchte ich dir zum Schluss noch ein paar Risiken des Internets aufzeigen und dir einige Tipps zur Erstellung eines sicheren Passworts bzw. zur Überprüfung deiner Passwortsicherheit geben.

→ Dann mal los.

Binäre Zahlen und Bits

Eine Binärzahl ist eine Zahl, die nur aus Einsen und Nullen besteht → 11001 ist beispielsweise ein Binärzahl. Auf Grund dieser Einfachheit bilden Binärcodes meistens die Grundlage bei der Verarbeitung digitaler Informationen.

Als Beispiel: Wenn du programmierst wird dein Programmcode am Ende, ohne dass du es direkt sehen kannst, in den sogenannten Maschinencode übersetzt. Dieser besteht aus einem Binärcode und nur diesen kann der Prozessor ausführen.


Eine Stelle einer Binärzahl heißt Bit [aus dem englischen "Binary Digit" → binäre Stelle]. Somit kann ein Bit ebenfalls nur die Werte 1 oder 0 annehmen.

In der EDV stellt ein Bit die kleinstmögliche Informationseinheit dar.

Um zu erfahren, wie groß die oben angegebene Binärzahl (11001) ist, zählt man die 1er und 0er. In diesem Fall ist sie 5 Bits groß.


Wie bei unserem metrischen System, gibt es auch hier unterschiedliche Größeneinheiten: Bit → Byte → Kilobyte → Megabyte → Gigabyte → Terabyte → ...

Die Zusammenfassung von 8 Bits heißt ein Byte.


→ Wenn du noch mehr über Binäre Zahlen und Binärcodes erfahren möchtest, kann ich dir diese Selbstlerneinheit empfehlen.

Speicherkapazität

Jeder Computer, jede CD und jeder USB-Stick hat ein bestimmtes Fassungsvermögen. Dieser Speicherplatz wird meistens in Byte oder Gigabyte angegeben. Ist der Speicherplatz voll, musst du erst etwas löschen bevor du wieder etwas Neues sichern kannst. Ebenfalls lassen sich manche Dateien mit einer bestimmten Größe nicht mehr per Mail verschicken und du musst sie erst komprimieren ("verkleinern"), damit sie deinen Postausgang verlassen.

Codierung

Codierung

Codierung ist in der Informatik eine Art Nachrichtentechnik. Dabei wird ein Text aus Zeichen des einen Vorrats (z.B. Alphabet) mithilfe von Zuordnungsregeln (dem Code) in einen Text aus dem anderen Zeichenvorrat umgesetzt.

Codierung verwendet ihr zum Beispiel, wenn ihr eurem Freund oder Freundin eine geheime (verschlüsselte) Nachricht im Unterricht zu kommen lasst. Diese Nachricht kann dann auch nur jemand lesen, der den Code kennt. Damit dein Freund die Nachricht aber selbst lesen kann, muss er sie wieder entschlüsseln (in den Ursprung umformen). Das nennt man auch Dekodierung.

Allgemein begegnet dir Codierung unbewusst ganz oft im Alltag. Wie oben erwähnt wird dein Quelltext beim Programmieren ebenfalls automatisch für den Prozessor in die Maschinensprache (Binärcode) codiert.

Ein weiteres Beispiel gibt es beim Fernseher. Die vom Sender mit Hilfe eines Zeichenvorrats codierten und übertragenen Inhalte müssen vom Empfänger wieder decodiert werden.


Somit dient die Codierung unter anderem

  • einer sinnvollen Darstellung der zu übertragenden Information
  • einer Sicherung gegen Verfälschung (Fehlererkennnung/-korrektur)
  • der Geheimhaltung von Informationen (Verschlüsselung).

→ Aus diesem Grund versucht man insbesondere Codierungen zu finden, die robust gegenüber Fehlern oder Störungen bei der Datenübertragung sind.

Der Huffman-Code steht beispielsweise für ein solches Verfahren, da er - wie du später sehen wirst - eine vollständige und korrekte Decodierung ermöglicht.


Wenn wir das Wort Abrakadabra binär darstellen wollen, müssen wir zunächst einen Code festlegen. Da wir uns später das Verfahren des Huffman-Codes zusammen erarbeiten wollen und dieser jedem einzelnen Zeichen eines Wortes oder Textes eine Folge von Bits zuordnet, fangen hier ebenfalls direkt damit an.

In der folgenden Tabelle habe ich die vorkommenden Buchstaben binär durchnummeriert:

A B D K R
001 010 011 100 101

Verschlüsselt würde Abrakadabra nun so aussehen: 001010101001100001011001010101001 oder besser leserlich: 001 010 101 001 100 001 011 001 010 101 001


Zusammenfassung: Bei der Codierung wird ein klar lesbarer Text in eine spezielle, nicht leserliche Form mithilfe eines Codes umgesetzt.

Huffman-Code

Beim Huffman-Code handelt es sich um ein Verfahren zur verlustfreien Komprimierung von Daten. Er wurde 1952 von dem amerikanischen Mathematiker David Huffman (1925-1999) entwickelt.

Bei dem oben gegebenen Beispiel (→ Abrakadabra nach dem vorgegebenen Code: 001 010 101 001 100 001 011 001 010 101 001) haben wir 33 Bits benötigt. Mithilfe des Huffman-Codes werden wir am Ende nur noch 23 Bits verwenden und können somit viel Speicherplatz sparen.


Während wir zuvor nicht auf die Häufigkeit der Verwendung der einzelnen Buchstaben geachtet haben (ich habe jedem Buchstaben mit jeweils drei Bits verschlüsselt), so spielt dies bei der Huffman-Codierung eine wichtige Rolle:

Er ordnet jedem Zeichen oder Symbol nach der Wahrscheinlichkeit seines Auftretens eine Bitfolge zu. Dabei werden häufig auftretende Zeichen durch kurze Sequenzen und seltene Zeichen dafür durch längere repräsentiert.
→ dies führt zu der kürzestmöglichen Codelänge
→ Aus diesem Grund wird der Huffman-Code in vielen Komprimierungsprogrammen und Dateiformaten (JPEG) verwendet

Zur Veranschaulichung dient zum Beispiel das Morsealphabet. Während dem im Deutschen am häufigsten verwendeten Buchstaben e das kürzeste Morsezeichen · zugeordnet ist, wird der seltene Buchstabe q durch das lange Morsezeichen --·- dargestellt.


Folgende Tabelle verdeutlicht, welches Zeichen im Wort Abrakadabra wie oft vorkommt:

A B D K R
\frac{5} {11} \frac{2} {11} \frac{1} {11} \frac{1} {11} \frac{2} {11}
≈0,45 ≈0,2 ≈0,1 ≈0,1 ≈0,2


In der nachfolgenden Tabelle habe ich den öfters vorkommenden Buchstaben eine kürzere Bitfolge als den seltener vorkommenden Buchstaben zugeordnet.

Unser neuer Code:
A B D K R
0 1 0 01 0 001 0 010 0 10

Unser Wort würde nun als Code wie folgt aussehen: 1011010101001101101


Würdest du deinem Freund diesen Code mit der dazugehörigen Tabelle schicken, so würde er aber bei der Dekodierung nicht unbedingt auf das Wort Abrakadabra kommen. Probiere es doch selbst mal mit Freunden aus!

Aufgabe


Wie könnte der Code denn noch entschlüsselt werden?


Würde dein Freund deine verschlüsselte Nachricht nicht in Abrakadabra dekodieren, wäre das für dich ärgerlich. Würde allerdings dein Quelltext beim Programmieren falsch codiert bzw. decodiert werden, so könnte dies zu einem Festplattenabsturz führen, was schon bedeutend schlimmer wäre. Kurz gesagt können sich größere Firmen solche Fehler bei der Übertragung nicht leisten.


Was ist dann die Lösung?

Würde deine Nachricht so 1 01 10 1 010 1 001 1 01 10 1 statt so 1011010101001101101 übermittelt werden, könnte dein Freund die geheime Botschaft wieder einwandfrei entschlüsseln.

Um also diesen Code eindeutig verstehen zu können bräuchte man noch zusätzliche Trennzeichen zwischen den Zeichen. Zusätzliche Trennzeichen bedeuten jedoch eine größere Inanspruchnahme an Bits (man benötigt wieder mehr Speicherplatz) und somit wieder größere Kosten. Der Huffman-Code würde seinen Sinn - nämlich die Komprimierung von Daten - nicht mehr optimal erfüllen.

Und deswegen entwickelte Huffman ein Verfahren, welches ohne zusätzliche Trennzeichen auskommt und welches eine vollständige und vor allem korrekte Decodierung ermöglicht. Sein Verfahren führt dazu, dass kein Code für ein Zeichen der Anfang eines anderen Zeichens ist (Präfixcode). Das heißt das Ende einer Bitfolge kann ohne zusätzliche Informationen erkannt werden.


Zur Erarbeitung des von Huffman entwickelten Verfahrens werden wir mit einem Binärbaum arbeiten.

Binärbaum

Ein Binärbaum ist in der Graphentheorie eine spezielle Form eines Graphen.

  • Jeder Baum besitzt genau einen Knoten, der keine eingehenden Kanten hat - die Wurzel
  • Knoten ohne ausgehende Kanten heißen Blätter
  • Alle anderen Knoten heißen innere Knoten

graphische Erläuterung eines Binärbaumaufbaus

Ein Binärbaum ist ein Wurzelbaum, der an jedem inneren Knoten höchstens zwei Kindknoten besitzt.

Er besteht aus einer Wurzel mit einem linken und rechten Teilbaum, wobei die Teilbäume ebenfalls Binärbäume darstellen.


Verfahren

Die Huffman-Codierung werden wir uns Schritt für Schritt anschauen und erarbeiten:


Nachdem du dir das Verfahren am Beispiel von Abrakadabra selbst erarbeitet hast - hier nochmal die Schritte in Kurzform:

  1. ordne alle Symbole nach ihrer Häufigkeit in einer Reihe an
  2. suche das oder die beiden Symbole mit den geringsten Häufigkeiten.
    → Falls mehrere dieselbe Häufigkeit besitzen, wähle zuerst das frühere Zeichen im Alphabet.
  3. mache sie zu Blättern eines binären Teilbaumes
  4. addiere die Häufigkeiten der beiden Blätter und notiere sie als Wurzel
  5. füge nun den Teilbaum an Stelle der beiden zuvor gewählten Symbole wieder in die Tabelle ein (sie hat damit ein Element weniger)
  6. wiederhole die Schritte 2 bis 5 so lange bis nur noch ein Baum übrig bleibt
  7. Zum Schluss muss noch der Code „angebracht“ werden
    • hierfür markierst du alle Kanten links von einem Vater mit 0
    • und alle Kanten rechts von einem Vater mit 1
→ Das entsprechende Zeichen wird durch den Pfad von der Wurzel zum Blatt codiert.


Erstellen der neuen Codetabelle:

  • lies für jeden Buchstaben (Blatt im Baum) das Codewort aus
    • beginne an der Wurzel
    • die Codezeichen an den Kanten des Baumes von der Wurzel zum jeweiligen Blatt ergeben das zugehörige Codewort


Codieren mittels Huffman-Code:

  • ersetze jeden Buchstabe entsprechend der Codetabelle durch das zugehörige Codewort

Aufgabe


1. Lege unsere neue Codetabelle an


2. Wie sieht Abrakadabra mit dem neuen Code verschlüsselt aus?


3. Und wie würde das Wort Bar codiert aussehen?


4. Was ergibt 0110011 dekodiert?


Dieses Verfahren garantiert tatsächlich minimale Codelängen. Aus diesem Grund können mit der Huffman-Kodierung beliebige Daten komprimiert werden, z. B. Texte, Grafiken, Dokumente im World Wide Web (WWW).

Bei vielen Firmen, die enorm viel Speicherplatz bei ihrer Software benötigen, stellt dieser auch eine Kostenfrage dar. Mit Komprimierungsverfahren nimmt man geringeren Speicherplatz in Anspruch und kann auch erhebliche Kosten sparen.


Für die Huffman-Codierung können zwei verschiedene Verfahren verwendet werden:

  • Meist wird die Huffman-Codierung nach einer festen - also vorgegebenen - Wahrscheinlichkeitstabelle vorgenommen (statische Variante).
  • Wir haben allerdings die dynamische Variante gewählt: Wir hatten ein Wort gegeben und uns zur Codierung unsere eigene Wahrscheinlichkeitstabelle erstellt, indem wir die Häufigkeit der einzelnen Zeichen selbst berechnet haben.

Das Internet steht allen offen

Das Internet steht allen offen - das ist zum einen ein großer Vorteil, zum anderen bringt es aber auch große Gefahren mit sich. So gehört zu den besonderen Kennzeichen des Internets, dass einmal ins Netz gestellte Informationen

  • relativ schnell und unkompliziert für die Öffentlichkeit zugänglich sind
  • jederzeit aktualisiert werden können
  • von jedem Ort abrufbar sind


Man kann sich heutzutage die Welt ohne Internet kaum noch vorstellen. Wenn du für die Schule etwas recherchieren sollst, schaust du wahrscheinlich meistens kurz im World Wide Web nach und wirst mit eine Flut von Internetseiten überschüttet.

Für das Internet gibt es keine unabhängige Kontrollinstanz, die überprüft, ob die ins Netz gestellten Daten schlecht recherchiert oder gar falsch sind. Oft kann man zwischen seriösen Informationsquellen und ungeprüften Meinungsäußerungen nur schwer unterscheiden.

Aus diesem Grund ist es sehr wichtig, dass du immer genau hinsiehst und herausfindest von wem die Informationen zur Verfügung gestellt wurden und mit welcher Absicht.

Auf Grund der fehlenden Kontrolle lassen sich illegale und kriminelle Inhalte nur schwer effektiv bekämpfen. Daher kann das Internet relativ schnell und einfach als Plattform zur Verbreitung gezielter Desinformationen oder von Propaganda ausgenutzt werden.


Ein sicheres Passwort - aber wie?

Ein Passwort dient der Identifikation des Inhabers der Informationen und der eigenen Sicherheit.

Formal gesagt handelt es sich bei einem Passwort um eine Zeichenfolge, die der User zusätzlich zu seinem Benutzernamen eingeben muss, um auf ein System oder auf bestimmte Daten zugreifen zu können. Für deinen Facebook-Account, deinen Mailaccount oder Moodle benötigst du ebenfalls ein Passwort, das nur du kennst. Ansonsten könnte jeder in deinem Namen Kommentare schreiben, Mails verschicken usw..


Um unser Einstiegsthema nochmal aufzugreifen: Da mittlerweile sehr viele, zum Teil auch sehr persönliche und wertvolle Informationen (beispielsweise Onlinebanking) mit dem Internet geteilt werden, gibt es leider auch immer mehr Leute, die sich durch Diebstahl dieser Informationen auf Kosten Anderer bereichern wollen.

Es gibt mittlerweile spezielle Programme, die die Zugangsroutinen der Systeme mit Zahlen und Buchstabenkombinationen füttern oder die systematisch alle Wörterbucheinträge als Passwort ausprobieren und somit in der Lage sind Passwörter zu knacken und sich dadurch unberechtigt Zugang zu fremden Accounts zu verschaffen.

Mittels sogenanntem Hacking und diesen speziellen Programmen können beispielsweise Konteninformationen oder Daten staatlicher Organisationen ausgespäht werden. Es kam schon häufig zu elektronischen Einbrüchen in Software-Firmen (z. B. Microsoft) sowie zum Beispiel in das Weiße Haus und die CIA.

Manche Hacker zogen aus diesen Einbrüchen persönlichen Profit, andere wiederum veröffentlichten diese Sicherheitslücken, so dass die Software-Industrie gezwungen wurde bessere Sicherungs- und Verschlüsselungsverfahren (Datenverschlüsselung bzw. Codierung) zu entwickeln.

Aus diesem Grund werden Passwörter mittlerweile verschlüsselt gespeichert.

Hacker [engl. to hack = (zer)hacken] ist laut Brockhaus eine in den 1980er-Jahren entstandene Bezeichnung für eine Person, die sich Zutritt zu einem Computer oder in ein Netzwerk verschafft, für das sie keine Zugangsberechtigung besitzt. Mittlerweile hat sich diese Bezeichnung auf Personen erweitert, die rechtswidrig beliebige Schutzmaßnahmen (z. B. Ausspähen oder Kopieren von Daten in Netzwerken) umgehen.

Passwort

Um die oben beschriebenen Risiken zu verringern ist ein sicheres und „abwechslungsreiches“ Passwort wichtig. Denn Codierungsverfahren und Virenschutzprogramme alleine reichen nicht immer aus.

Damit du überprüfen kannst, wie sicher dein Passwort ist bzw. wie du es noch sicherer machen kannst, habe ich hier ein paar Hinweise:


  • dein Passwort sollte man nicht erraten können. D. h. du solltest keine Namen, Geburtstage, Modewörter und ebenfalls kein Wort aus dem Wörterbuch für dein Passwort auswählen
  • gezielt eingebaute Schreibfehler und die Verwendung von Groß- und Kleinschreibung machen dein Passwort sicherer
  • dein Passwort sollte nicht nur aus Buchstaben, sondern auch aus Ziffern und Sonderzeichen bestehen
  • du solltest eingängige Zeichen- oder Tastenfolgen, z. B. ABCDEF, 123456, QWERT (Tastatur) sowie Schnapszahlen und Muster vermeiden
  • dein Passwort sollte mindestens aus sechs Zeichen bestehen
  • das Passwort sollte am Besten nirgends auf dem Computer gespeichert oder in unmittelbarer Nähe eures Computers unverschlüsselt notiert werden
  • verwende dein eigenes Passwort. Ein automatisch zugewiesenes Passwort muss umgehend geändert werden
  • wechsle dein Passwort regelmäßig
  • vermeide trotz allem zu lange und verworrene Passwörter. Du vergisst sie schneller oder kommst dadurch doch in die Lage das Passwort irgendwo speichern oder notieren zu müssen

Abschlussquiz

→ Ich hoffe dir hat diese Selbstlerneinheit weitergeholfen. Und jetzt viel Erfolg beim Quiz.


Pluspunkt für eine richtige Antwort:  
Minuspunkte für eine falsche Antwort:
Ignoriere den Fragen-Koeffizienten:

1. Bei der Dekodierung wird ein Text verschlüsselt.

Richtig
Falsch

2. Bei der Codierung wird ein klar lesbarer Text mithilfe eines Codes in eine unleserliche Form umgesetzt.

Richtig
Falsch

3. Codierungsverfahren sind heutzutage überflüssig geworden

Richtig
Falsch

4. Alle Informationen im Internet werden überprüft und sind korrekt.

Richtig
Falsch

5. Ein Hacker verschafft sich legal Zugang zu einem fremden Account.

Richtig
Falsch

6. Codierungsverfahren dienen unserer Sicherheit.

Richtig
Falsch

7. Um die Passwortsicherheit zu erhöhen, sollte das Passwort

im Computer gespeichert sein, damit man es nicht vergisst
gezielt eingebaute Schreibfehler besitzen
immer das gleiche bleiben
aus mindestens 12 Zeichen bestehen
aus mindestens sechs Zeichen bestehen
nur aus Buchstaben sein

8. Ergänze die fehlenden Wörter!

Eine Binärzahl besteht nur aus Einsen und . Eine Stelle einer Binärzahl heißt . Ein Bit stellt die -mögliche Informationseinheit dar.
Die folgende 1001110101 besteht aus Bits.

9. Der Huffman-Code ermöglicht eine

vollständige, aber nicht korrekte Decodierung
keine vollständige Decodierung
eine vollständige und korrekte Decodierung

10. Bei der Huffman-Codierung braucht man nicht auf die Häufigkeit der Verwendung der einzelnen Buchstaben achten.

Richtig
Falsch

11. Die Huffman-Codierung garantiert minimale Codelänge.

Richtig
Falsch

12. Warum verwendet man mithilfe des Huffman-Codes weniger Bits, als ohne?

er beachtet die Häufigkeit der Verwendung der einzelnen Buchstaben der gegebenen Zeichenfolge
er beachtet seltenere Buchstaben wie beispielsweise das „q“ nicht
er verwendet für mehrere Buchstaben dasselbe Codewort

13. Ergänze die fehlenden Wörter!

Beim Verfahren des Huffman-Codes werden zusätzlichen Trennzeichen verwendet. Dieses Verfahren führt zu einer der Daten. Häufiger auftretende Zeichen werden durch und seltenere Zeichen werden dagegen durch Bitfolgen dargestellt.

Punkte: 0 / 0


Huffman-Baum


1. Erstelle den Codebaum gemäß des oben erarbeiteten Verfahrens nach folgender Tabelle:

A B C D E
15 0 7 0 6 0 6 0 5

3. Erstelle die Codetabelle anhand deines Codebaums.

Quellen