Donnerstag, 19. November 2015

Die Forellen-Simulation

In den letzten Wochen haben wir stetig weiter simuliert und wiederholen jetzt eigentlich nur noch Dinge die wir schon oft gemacht haben, deswegen werden einige der folgenden Diagramme wahrscheinlich sehr vertraut aussehen. Ich werde jetzt eine Aufgabe vorstellen, in der es um einen Forellensee im Kosovo geht.

Im ersten Szenario werden 100 Forellen in dem See mit optimalen Bedingungen ausgesetzt. Wie man schnell erkennt, handelt es sich hierbei im exponentielles Wachstum, weil die Forellen mit wachsender Bevölkerung auch immer mehr Nachkommen bekommen, das Wirkungsdiagramm sieht folgendermaßen aus:


Das exponentielle Wachstum wird noch einmal durch das eskalierende Wirkungsdiagramm deutlich.

Aufbau des ersten Szenarios in Consideo

Exponentieller Kurvenverlauf des ersten Szenarios


Im zweiten Szenario stellt sich heraus, dass die Nahrung doch nicht für unendlich viele Fische reicht, außerdem sind einige Forellen bei Revierkämpfen gestorben. Hier wird also eine Kapazitätsgrenze eingeführt, ich simuliere sie einfach einmal bei 1000. Zu dieser Aufgabe erstelle ich jetzt nicht extra noch ein Wirkungsdiagramm, es würde aber bis zum Wendepunkt der logistischen Wachstumskurve die hier vorliegt genau so wie das oben gezeigte aussehen, danach wäre der Pfeil vom Bestand zum Wachstum gegensinnig, also minus. Die Simulation für Aufgabe zwei sieht in Consideo so aus:


Hinzugekommen sind der Flussfaktor "FreieKapazität" und der Informationsfaktor "Kapazität". Kapazität hat den feste wert 1000, Die Formel für "FreieKapazität" lautet:
 ([Kapazität]-[Bestand])/[Kapazität]
Dabei kommt eine Zahl zwischen 0 und 1 heraus, die mit dem Zuwachs verrechnet wird, so dass das Wachstum irgendwann abnimmt bis es nicht mehr vorhanden ist. Die Kurve für das logistische Wachstum in Aufgabe zwei sieht folgendermaßen aus:


Wie man deutlich sieht, steigt die Population zuerst exponentiell, ab dem Wendepunkt wird das Wachstum aber immer kleiner, bis sich die Population bei der Kapazitätsgrenze von 1000 stabilisiert.

Als allgemeine Formeln für exponentielles und logistisches Wachstum in Consideo kann man diese hier benutzen:


Exponentiell:    Bestand+(Bestand*Wachstumsfaktor)



Logistisch:        Bestand+(Bestand*Wachstumsfaktor*((Kapazität-Bestand)/Kapazität)





Konkurrenz

In einer anderen Aufgabe haben wir die Konkurrenz zwischen zwei verschiedenen Arten oder Populationen kennengelernt. Diese Konkurrenz werde ich nun in diese Aufgabe einbauen und sie erklären.

Wir gehen nun davon aus, dass im See nicht nur 100 oder 10 Kosovo-Forellen, sondern auch 100 oder 10 Individuen einer anderen Forellen Art ausgesetzt wurden. Nun können sich nicht mehr beide Arten direkt bis zur Kapazitätsgrenze vermehren. Um die Angepasstheit der einzelnen Populationen zu bestimmen, wird für jede ein Nutzungsfaktor eingeführt. Sind beide Nutzungsfaktoren sowie das Wachstum gleich, wachsen beide Populationen bis auf die Hälfte der Kapazität an. Ist ein Nutzungsfaktor größer als der andere, wachsen zuerst beide Populationen, dann setzt sich jedoch die mit der besseren Angepasstheit durch und verdrängt die anderen Fische wieder, bis ihre Populationsgröße bei der Kapazität liegt. In Consideo sieht der Aufbau folgendermaßen aus:


Auf den ersten Blick sieht das ganze etwas verwirrend aus, aber eigentlich ist es sehr einfach. Die ganze Simulation besteht eigentlich aus zwei einzelnen, die miteinander verknüpft wurden. Auf der linken Seite Population 1, auf der rechten Population 2. Die beiden Seiten sind jeweils mit dem Flussfaktor FreieKapazität(1 oder2) verbunden. Denn um die Konkurrenz zwischen den beiden Populationen darzustellen muss der Nutzungsfaktor ja irgendwie mit dem Wachstum verknüpft werden. Die Formel für FreieKapazität1 sieht z.B. folgender maßen aus:

FreieKap1: ([Kapazität]-[Population1]-[Nutzungsfaktor1]*[Population2])/[Kapazität]

Auch diese Formel wirkt auf den ersten und vielleicht auch auf den zweiten Blick etwas verwirrend, deswegen werde ich ihre Funktionsweise kurz erklären. Genau genommen ist es eine leicht angepasste Form dieser Formel: (Kapazität-Population)/Kapazität. Diese hatte ich bereits vorher aufgeführt, sie ermittelt über dem Bruchstrich die Freie Kapazität und teilt diese dann durch die Kapazität, so kommt ein Faktor zwischen 0 und 1 heraus, der wunderbar mit dem Wachstum verrechnet werden kann. Den letzten Teil dieser Formel, nämlich die Kapazität, erkannt man auch in der langen Version wieder. Über dem Bruchstrich hat sich jedoch einiges verändert.

Ganz am Anfang der Formel steht auch wieder die Kapazität. Von ihr wird zuerst die Population1 abgezogen, was noch verständlich seien sollte, wenn man die Freie Kapazität ermitteln möchte. Anschließend subtrahiert man (Nutzungsfaktor1*Population2). Nun muss man sich in Erinnerung rufen, dass der Faktor, der am Ende dieser Formel herauskommt, umso größer ist, je kleiner die Zahl über dem Bruchstrich ist (z.B. 10/1000=0.01, 900/1000=0.9). Je höher also der Nutzungsfaktor ist, desto geringer ist der Faktor der freien Kapazität.

Beispiele: (1000-200-1.2*300)/1000=0.44    (1000-200-0.8*300)/1000=0.65


Diese Faktoren werden nun jeweils im Flussfaktor ÄnderungsratePop(1 und 2) mit der jeweiligen Population und dem Wachstumsfaktor verrechnet. Daraus folgt, dass die Population, die sich besser durchsetzten kann einen niedrigeren Nutzungsfaktor zugeschrieben bekommen muss. Dies klingt relativ verwirrend und könnte durch eine andere Anordnung verändert werden, dem werde ich mich eventuell im nächsten Post widmen.


Nun ist hoffentlich klar, wie man eine Konkurrenz verschiedener Populationen in Consideo modellieren kann. Die Kurve zur Konkurrenz der Kosovo-Forelle und der anderen Forellen Art sieht folgendermaßen aus:


Dienstag, 15. September 2015

15.09.2015: Wirkungsdiagramme 2 und lineares Wachstum

Wirkungsdiagramme 2


In der ersten Hälfte dieser Stunde haben wir uns noch einmal mit Wirkungsdiagrammen beschäftigt und dazu einen Zettel bearbeitet. Die Lösungen werde ich hier in möglichst einfacher Form darstellen. 

Unten befindet sich eine Grafik, die die vorhandenen Typen von Wirkungsdiagrammen in der gefragten Aufgabe darstellt. A und B sind die verschiedenen Faktoren, die ich nun in einer Liste aufzählen werde, man muss sie dann nur noch dem richtigen Diagramm zuordnen.

Aufgabe 14: 

  • a) Verzehr von Süßigkeiten (A), Übergewicht (B) --> (2)
  • b) Preis einer Ware (A), abgesetzte Menge (B) --> (1)
  • c) Übungszeit am Klavier (A), Spaß am Spiel (B) --> (1)
  • d) Grippeerkrankungen an einer Schule (A), anwesende Schüler (B) --> (1)
  • e) Anzahl Füchse (A), Anzahl Hasen(B) --> (1)
  • f) Luftwiderstand (A), Geschwindigkeit eines Radfahrers (B) --> (1)
  • g) Motorisierung in der Bundesrep. (A), Ausbau des Straßennetzes (B) --> (2)
  • h) Belastung der Umwelt (A), Touristen in einem Gebiet (B) --> (1)
  • i) = b), abgesetzte Menge (B)--(+)-->Ertrag
  • j) = a), Übergewicht (B) --(+)--> Gesundheitsbewusstsein--(-)-->Verzehr von Süßigkeiten (A), kein Pfeil von (B) zu (A)


Lineares Wachstum

Im zweiten Teil der Stunde haben wir zwei Aufgaben bekommen, die erste werde ich jetzt vorstellen, die zweite folgt im nächsten Post. Die Aufgabe lautete: Zwei Hasen bekommen jeden Monat zwei Babys, wie viele Babys haben sie nach 100 Monaten? Diese Aufgabe sollten wir zuerst in einem Wirkunsgdiagramm darstellen und dann in iModeler simulieren.

Das Wirkungsdiagramm ist sehr einfach, es besteht aus einem Block Geburten, der durch einen Pluspfeil mit dem Block Hasenbabys verbunden ist. Je mehr Geburten, desto mehr Hasenbabys. 

Auch der Aufbau in iModeler ist denkbar einfach:

Die Zeiteinheit wird auf Monate umgestellt, so werden exakt 2 Geburten pro Monat simuliert. hierbei entsteht wie erwartet eine lineare Funktion, wie sich auch in der Gerade der Hasenbabys zeigt.




Nach 100 Monaten haben die Haseneltern also genau 200 Babys. 

Donnerstag, 10. September 2015

8.09.2015: Die Kaffeetassen-Simulation und Wirkungsdiagramme

Die Kaffeetasse


In den letzten beiden Posts hatte ich bereits über unsere Kaffetassen-Simulation berichtet und im letzten Post außerdem eine eigene Grafik zur Veranschaulichung eingestellt. Auch hatte ich berichtet, dass wir noch Probleme hatten, da der Temperaturabfall nach der Formel deutlich zu gering war. In dieser Stunde haben wir uns noch einmal kurz damit beschäftigt und sind nun zu einer Lösung gekommen: Die Formel die wir von unserer Lehrerin bekommen hatten (siehe Grafik aus vorherigem Post), war tatsächlich nicht ganz richtig. Die Abkühlungsfaktor war dort nämlich mit 1 beschrieben, dabei muss er deutlich höher liegen. Wie hoch er liegt, ist allerdings bei jedem mal anders, basierend auf Faktoren wie: Starttemperatur, Raumtemperatur, Material und Form der Tasse usw. In unserem Beispiel haben wir 30 als Faktor benutzt. Diese Zahl, den Abkühlungsfaktor, weiß man nicht vorher, man kann ihn lediglich durch einen Versuch herausfinden. Bei unserem Versuch lag die durchschnittliche Abkühlung des Kaffees pro Minute bei etwa 0,3. Daraus ergibt sich der Faktor 30. Wäre unser Kaffee aber von Anfang an heißer gewesen, wäre auch die durchschnittliche Abkühlung und somit auch der Faktor ein anderer. Man kann diese Simulation also nur eingeschränkt für andere Szenarien einsetzten, weil wichtige Werte erst im Versuch herausgefunden werden müssen. 



Wirkungsdiagramme

In der zweiten Hälfte der Stunde haben wir uns mit sogenannten Wirkungsdiagrammen beschäftigt. Ein Wirkungsdiagramm ist eine Veranschaulichung eines Systems, in dem sich verschiedene Faktoren gegenseitig beeinflussen. Zur Erklärung hier ein einfaches Wirkungsdiagramm:


Hier sieht man Faktor A und B und zwischen den beiden einen Pfeil, der von A nach B zeigt. An dem Pfeil steht immer entweder + oder -, nie wie in diesem Beispiel, beides zusammen. Die Pfeilrichtung bestimmt, welcher Faktor welchen bestimmt, hier bestimmt A B, es wäre aber auch andersherum möglich, oder auch so, dass sich beide Faktoren gegenseitig beeinflussen. Das Vorzeichen bestimmt, in welcher Weise ein Faktor einen anderen bestimmt. 

+ = gleichsinnige Wirkung: Je mehr A, desto mehr B, je weniger A, desto weniger B.
- = gegensinnige Wirkung: Je mehr A, desto weniger B. Je weniger A, desto mehr B.

Darüber hinaus gibt es stabilisierende und eskalierende Systeme. Ein stabilisierendes System besitzt mindestens zwei sich gegenseitig beeinflussende Faktoren und ist nicht rein gleichsinnig. Dadurch beeinflussen sich die Faktoren im System so, dass über längere Zeit gesehen stabil gleich bleibt. Dazu ein einfaches Beispiel:



In diesem Beispiel beeinflussen sich Katze und Maus. Je mehr Mäuse es gibt, desto mehr Katzen gibt es auch. Je mehr Katzen es wiederum gibt, desto weniger Mäuse gibt es. Zwischendurch werden mal die Mäuse mal die Katzen mehr, zeitweise dominiert also meistens ein Faktor, auch lange Sicht gesehen stabilisiert sich das System aber.

Eine weitere Möglichkeit ist ein eskalierendes System. Bei diesem System sind in der einfachsten Form alle Vorzeichen gleich, das heißt, dass sich das System immer mehr in eine Richtung entwickelt und keine stabilisierenden Faktoren besitzt.


Ein Beispiel dafür ist das sehr stark vereinfachte Bevölkerungswachstum. Je mehr Menschen es gibt, desto mehr Geburten gibt es. Je mehr Geburten es gibt, desto mehr Bevölkerung. Werden diesem System keine stabilisierenden Faktoren hinzugefügt, würde die Bevölkerungszahl immer weiter steigen. Das ist ein eskalierendes System.



Samstag, 5. September 2015

4.09.2015: Die Kaffee Simulation

Die Kaffeetasse

Wie bereits im letzten Blogpost berichtet, beschäftigen wir uns gerade mit der Simulation des Temperaturabfalls in einer Kaffeetasse. In Excel hatten wir den Abfall bereits simuliert, in dieser Stunde haben wir uns nun mit der Simulation in iModeler beschäftigt. Zu beginn haben wir den Temperaturabfall als linear simuliert, um eine erste, einfache Grundlage zu haben. Dies funktioniert sehr einfach, indem man in iModeler zwei "Kästchen" anlegt. Das eine nennt man z.B "Abkühlungfaktor", die Formel hierfür war in unserem Fall: 0,45. Das andere Kästchen haben wir "Kaffeetemperatur" genannt, hier lautet die Formel dann: valuebefore(65)-[Abkühlungsfaktor]. 0,45 ist die ungefähre Abkühlung pro Minute, 65 ist die Ausgangstemperatur in °C. Es werden also jede Minute 45% der Temperatur abgezogen. So lässt sich die Abkühlung sehr leicht als lineare Funktion darstellen. 

Da der Kaffee in der Tasse aber natürlich nicht linear, sondern in Form einer begrenzten Abnahme an Temperatur verliert, braucht man eine andere Herangehensweise. Wir haben recht lange an einer Lösung herumprobiert und zeitweise über eine komplizierte Mathematische Gleichung dritten Grades gedacht, die Lösung ist jedoch um einiges leichter. Unsere Lehrerin hat gegen Ende der Stunde den Aufbau an die Tafel geschrieben, den wir umsetzten müssen um den Temperaturabfall in deiner schönen, geschwungen Kurve simulieren zu können. Diese Lösung habe ich zum besseren Verständnis grafisch umgesetzt:



Die linke Spalte zeigt die Anordnung der "Kästchen" in iModeler, sowie deren Namen und Verbindungen, die auch über die Zu- und Abnahme entscheiden. In der rechten Spalte sieht man die jeweiligen Formeln, die im "Formula" Tab der "Kästchen" eingetragen werden müssen. Idealerweise kommt beim ausführen dieser Formel folgender Graph raus:


Hier wird deutlich, welche Anfangstemperatur der Kaffee hat, und wie er sich zuerst sehr schnell und dann immer langsamer der Raumtemperatur annähert. Wir hatten allerdings beim Verwenden der oben aufgeführten Anordnung das Problem, dass die Kaffeetemperatur extrem langsam gesunken ist, deswegen haben wir in der Formel für "Temperaturabnahme" die 1 versuchshalber durch eine 50 ersetzt, was der Realität deutlich nähert kommt, aber natürlich so trotzdem keine realistische Simulation darstellt. Eventuell liegt der Fehler auch bei uns, falls wir z.B. eine Klammer falls gesetzt haben. Diese Schwachstelle werden wir in der nächsten Stunde versuchen zu beheben, die Lösung werde ich natürlich auch wieder hier mitteilen. 


Donnerstag, 3. September 2015

1.09.2015: Simulation in iModeler

Die Badewanne


Bereits im letzten Post hatte Ich erklärt, wie wir den Zulauf von Wasser in eine Badewanne in Ecxel simuliert hatten. In dieser Stunde haben wir uns daran gemacht, den gleichen Versuch in einem neuen Programm, iModeler, zu simulieren. iModeler ist ein sehr umfangreiches Programm, das hauptsächlich zur Veranschaulichung komplexer Inhalte konzipiert wurde, sich aber auch für unsere Simulation benutzen lässt. In iModeler geht man anders vor als in Excel, man gibt hier nicht für verschiedene Zeitintervalle die errechneten Werte ein, sondern legt am Anfang alles fest. In unserem Beispiel hatten wir drei "Bausteine", die miteinander agiert haben und so das richtige Ergebnis geliefert haben. 


Ratio bestimmt, wie weit der Wasserhahn aufgedreht ist, angegeben durch eine Zahl zwischen 0 und 1, also 0=0% und 1=100%. In dieser Simulation liegt der Wert bei 1. Wasserzulauf bestimmt, wie viel Wasser pro Minute in die Wanne läuft. In unserem Fall sollen es 5 Liter pro Minute sein, deswegen ist die Formel für Wasserzulauf: [Ratio]*5 , also 1*5=5l/min


Wasserstand beschreibt wie nicht anders zu erwarten den jeweiligen Wasserstand in der Wanne. Die Formel hierfür lautet: valuebefore(0)+[Wasserzulauf]. Es wird also am Anfang von einer leeren Wanne (0) ausgegangen und dann minütlich der Wasserzulauf, also 5 l addiert.

Sind alle diese Werte eingeben, kann man sich in der sogenannten Cockpit Ansicht einen Graphen ansehen, der den Wasserzufluss visualisiert. 


Das lineare Wachstum des Wassers in der Wanne ist klar zu erkennen, allerdings hatten wir das Problem, das die Simulation nicht bei 0 l, sondern bei 5 l begonnen hat. Dieses Problem konnten wir bis jetzt noch nicht lösen.

iModeler ist meiner Meinung nach zur Simulation besser geeignet als Excel, weil deutlich mehr Faktoren eingerechnet werden können, allerdings finde ich das Programm selber sehr schlecht gestaltet. Wir mussten uns die Simulation von der Lehrerin erklären lassen, weil das Tutorial zu nichts nützt, generell ist das Programm äußerst unübersichtlich und sehr kompliziert. 



Die Kaffeetasse

Unsere zweite Simulation beschäftigt sich mit der Temperaturveränderung von Kaffee. Wie warm ist mein Kaffee nachdem er 5/10/60 Minuten stand. Dazu haben wir schon in der letzten Stunde alle 5 Minuten Messungen an heißem Wasser durchgeführt und dazu eine Simulation in Excel erstellt. 



Die Funktionsweise von Excel Simulationen sollte inzwischen bekannt sein, die einzigen Unterschiede zur Badewannesimulation bestehen darin, dass es sich hier nicht um lineares, sonder um exponentielles Wachstum handelt und, dass wir es mit einer Ab-, statt einer Zunahme zu tun haben. Im nächsten Blogeintrag wird höchstwahrscheinlich diese Simulation in iModeler sowie ausführliche Erklärungen folgen.




Sonntag, 30. August 2015

28.08.2015: Semsterthema Simulation

Einführung in die Simulation

Unser neues Semesterthema für das S3 ist die Simulation. Simulationen kommen in vielen verschiedenen Gebieten zum Einsatz. So gibt es eine Vielzahl an Simulationen, die zur Unterhaltung dienen, wie Flug-, Bahn-, oder Landwirtschaftssimulationen. Darüber hinaus werden Simulationen aber auch zum wirtschaftlichen und wissenschaftlichen Nutzen eingesetzt. 

Grundsätzlich ist eine Simulation ein Abbild der Realität, in dem verschiedenste Szenarien durchgerechnet werden können. Durch eine Simulation lässt sich ein Ereignis in der Zukunft oft sehr genau vorhersagen, so können beispielsweise Kosten antizipiert, oder ein Sturm vorhergesagt werden. Darüber hinaus gibt es eine Vielzahl weiterer Gründe, die für die Verwendung einer Simulation sprechen. So ist es z.B. möglich Versuche durchzuführen, die nicht einmal im Mikroskop erkennbar sind oder solche, die unser gesamtes Universum betreffen. Außerdem ist es häufig günstiger ein Programm zu entwickeln, als ein echtes Modell zu bauen, oder einen komplizierten Versuch durchzuführen. Darüber hinaus ist ein weiterer wichtiger Faktor, dass bei einer Simulation niemand in Gefahr gerät, so können beispielsweise Auto- oder Zugunfälle sicher simuliert werden, um Sicherheitsvorrichtungen zu verbessern. 

Um eine möglichst realitätsgetreue Simulation zu erstellen, braucht man alle wichtigen Daten. So müssen bei einer Simulation der Statik eines Hauses Faktoren wie das Baumaterial, Wetterkonditionen, die Bodenqualität und vieles mehr eingerechnet werden. Je mehr Faktoren man mit einbezieht, desto genauer wird auch das Ergebnis. Um die Funktionsweise eines Simulationsprogramms aber tatsächlich festzustellen benötigt man fundierte Daten mit denen man die Simulationsergebnisse vergleichen kann. So bietet es sich beim Statik Simulator an, bei einem baugleichen Haus Messungen der Statik an möglichst vielen verschiedenen Stellen vorzunehmen und diese dann mit den Ergebnissen des Simulator zu vergleichen. Erst dann kann man mit ziemlicher Sicherheit Prognosen für weitere Häuser abgeben. 


Die erste Simulation

Unsere aller erste Simulation simuliert das Einlaufen von Wasser in eine 100l fassende Badewanne. Die Aufgabe war in Excel eine Tabelle und eine passende Grafik zu erstellen. Die Fließgeschwindigkeit sollte 5 l/min betragen.


Wir haben also eine Tabelle mit zwei Spalten, eine für die Minuten, die andere für den Füllstand in Liter, angelegt. Die Grafik rechts daneben veranschaulicht den ansteigenden Füllstand der Badewanne. Wie erwartet ist die Badewanne nach 20 Minuten vollgelaufen. 

Dies ist die wohl simpelste Form einer Simulation, ist jedoch trotzdem ein gutes Beispiel da es den Verlauf des Füllstands detailliert simuliert, solange die Fließgeschwindigkeit gleichmäßig ist, und zwischendurch kein Wasser aus der Wanne entnommen und keins hinzugefügt wird. Ab da macht Excel als Simulationsprogramm keinen großen Sinn mehr. Im nächsten Blogeintrag wird deshalb eine Simulation des gleichen Problems in einem anderen Programm gezeigt werden.

Samstag, 20. Juni 2015

Verschlüsselung mit RSA

Nachdem wir nun mit Caesar und Vigenere zwei verschiedene Verschlüsselungen kennen gelernt haben, haben wir uns über die Probleme unterhalten, die diese beiden mit sich bringen. Das gravierendste ist das sogenannte Schlüsselproblem. Um eine mit Caesar oder Vigenere verschlüsselte Nachricht wieder entschlüsseln zu können, braucht der Empfänger natürlich ebenfalls den Schlüssel, den der Absender zum Verschlüsseln benutzt hat. Da der Schlüssel also auch übermittelt werden kann, kann er z.B. von einem Hacker ganz einfach abgefangen werden, der dann ganz problemlos die Nachricht entschlüsseln kann. Die Art der Verschlüsselung, bei der man mit dem gleichen Schlüssel ver- und auch wieder entschlüsseln kann, wird symmetrische Verschlüsselung genannt.Eine andere Form ist die asymmetrische Verschlüsselung, bei der es einen Schlüssel zum ver- und einen anderen um entschlüsseln gibt. RSA ist solch eine Verschlüsselung.

Das RSA-Kryptosystem ist ein sogenanntes asymmetrisches kryptographisches Verschlüsselungsverfahren. Es wurde nach den Mathematikern Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt, die 1977 nach jahrelanger Forschung auf Basis einer Theorie zur "Public-Key-Kryptografie" RSA veröffentlichten.

Hier gibt es einen sogenannten öffentlichen Schlüssel, der zum Verschlüsseln benutzt wird und einen Privaten Schlüssel, den man zum Entschlüsseln benötigt. Das Schlüsselproblem lässt sich mit dieser Verschlüsselung auf folgende Weise lösen:

Bob braucht einen neuen Computer. Er möchte ihn im Online-Shop von Alice kaufen. Deswegen schickt er Alice eine Nachricht und sagt ihr, dass er gerne einen bestimmten Rechner bei ihr erwerben möchte. Damit Bobs Bankdaten nicht für jeden abfangbar sind muss er sie Verschlüsseln, so dass nur noch Alice sie wieder entschlüsseln kann. Alice sendet Bob ihren öffentlichen Schlüssel, ihren Privaten behält sie sicher bei sich. Bob verschlüsselt nun seine wertvollen Bankdaten und schickt die Verschlüsselte Nachricht zurück an Alice. Diese braucht jetzt bloß noch mit ihrem Privaten Schlüssel die Nachricht wieder zu entschlüsseln und der Kauf kann abgewickelt werden. Bob ist glücklich, denn er hat einen neuen Computer und seine Bankdaten wurden nicht geklaut. Gleichzeitig sitzt Hacker Emil weinend im Keller seiner Eltern, denn er hat versucht Bobs Bankdaten zu klauen. Aber alles was er abgefangen hat war ein nichts sagender Schlüssel und eine Nachricht die er damit nicht entschlüsseln konnte.


So oder zumindest ähnlich funktioniert die Verschlüsselung wichtiger Daten im Internet tagtäglich. Jedes Mal wenn z.B. ein Kauf über PayPal getätigt wird, müssen sensible Informationen sicher übermittelt werden. Um das Ganze aber noch sicherer zu gestalten gibt es noch einige Anforderungen, die erfüllt werden müssen:

Verfügbarkeit, Authentizität, Vertraulichkeit und Integrität. Diese Begriffe klingen zuerst vielleicht etwas kompliziert, sie alle dienen aber ganz einfach dazu, ein wichtiges Problem, das zweite Schlüsselproblem, zu beheben. Es gibt nämlich für Emil doch eine Möglichkeit an Bobs Bankdaten zu kommen:

Bob ist zufrieden mit seinem neuen Computer, aber leider hat er vergessen sich einen passenden Monitor zu bestellen. Deshalb tritt er wieder mit seiner Lieblingshändlerin Alice in Kontakt. Emil hat davon Wind bekommen will einen Trick anwenden, um diesmal endlich an Bobs Daten zu kommen. Er fängt also Bobs Nachricht ab, in der dieser Alice dazu auffordert ihm ihren öffentlichen Schlüssel zu schicken. Emil leitet diese Nachricht an Alice weiter und fängt wiederum ihre Antwort und somit ihren öffentlichen Schlüssel ab. Dann beginnt Emils Plan erst richtig. Er lässt sich selber ein Schlüsselpaar generieren, gibt sich als Alice aus und schickt Bob dann seinen eigenen Schlüssel. Der ahnt davon nichts, verschlüsselt seine Bankdaten und schickt sie zurück an Alice, aber auch diese Nachricht fängt Emil natürlich ab. Er kann die Daten mit seinem privaten Schlüssel wieder entschlüsseln und hat nun freien Zugang zu Bobs Geld. Damit Alice davon aber nichts merkt, verschlüsselt er Bobs Daten mit ihrem öffentlichen Schlüssel, den er ja bereits abgefangen hatte und schickt diese Nachricht zurück an Alice, natürlich unter Bobs Namen. Diese entschlüsselt das Ganze wieder und wickelt unwissend den Kauf ab. So haben weder Alice noch Bob gemerkt, dass jemand sich zwischen sie geschalten und Bobs Daten geklaut hat. Emil ist stolz auf sich und kauft sich von Bobs Geld eine eigene Wohnung, damit er nicht mehr im Keller seine Eltern leben muss.

All dies hätte verhindert werden können, wenn Alice' System ausgereifter gewesen wäre. Sie hätte Bob ihre Authentizität mit Hilfe ihren elektronischen Fingerabdrucks versichern sollen, dann hätte dieser nämlich gemerkt, dass sich jemand dazwischen geschaltet hat. Dann wäre auch die Vertraulichkeit und Integrität der Nachricht gesichert gewesen. Da das aber leider nicht der Fall war und Emil seine Spuren gut verwischt hat, muss Bob jetzt in die Privatinsolvenz gehen und seinen neuen Computer plus Monitor verpfänden. 


Schlüsselgenerierung in RSA

Wie wir bereits oben gelernt haben, operiert die asymmetrische Verschlüsselung RSA mit zwei Schlüsseln, einem öffentlichen und einem privaten. Im Folgenden werde ich nun erklären, wie ein solches Schlüsselpaar generiert wird. 

Es fängt damit an, dass man sich zwei Primzahlen p und q aussucht. Also z.B. 3 und 11.
Anschließend multipliziert man diese um N zu erhalten: 

N=p*q  3*11=N  N=33

N ist also 33, das ist der erste Teil des Schlüssels. Nun möchte man \varphi \,(N) herausfinden. Die Formel dazu lautet: \varphi \,(N)= (p-1)*(q-1)

(3-1)*(11-1)=\varphi \,(N)
            2*10=\varphi \,(N)
                20=\varphi \,(N)

Im nächsten Schritt muss man eine zu \varphi \,(N) teilerfremde Zahl e herausfinden. Das funktioniert so:

20=2*2*5   Die nächst größere Primzahl ist 7, also ist 7=e

Der öffentliche Schlüssel setzt sich folgendermaßen zusammen: (N, e). Folglich ist unser öffentlicher Schlüssen also (33, 7).

Für den Privaten Schlüssel benötigt man eine Tabelle:

   e            \varphi \,(N)         x           R           a            b

   7             20            0            7

Hier schreibt man in die erste Zeile seine Werte für e und \varphi \,(N) und teilt dann nach Grundschulmanieren mit Rest. Bei 7 durch 20 kommt 0 Rest 7 raus, das schreibt man bei x und R hin.

   e            \varphi \,(N)         x           R           a            b

   7             20            0            7                  
  20             7             2            6

Nun zieht man das \varphi \,(N) aus der ersten Zeile auf die Position des e und das R auf die Position von
 \varphi \,(N). Dann führt man die Division wieder durch. Dies setzt man so lange fort, bis man Rest 0 erhält.
Anschließend schreibt man in der untersten Zeile für a 0 und für B 1.

   e            \varphi \,(N)         x           R           a            b

   7             20            0            7                  
  20             7             2            6
   7              6             1            1
   6              1             6            0           0            1

Nun wendet man folgende Formel an: b=a-(x*b). Man nimmt das a und das b aus der letzten Zeile und das x, ganz wichtig, immer aus der Zeile darüber. Hier also: b=0-(1*1)    b=-1
Das schreibt man in der vorletzten Zeile für b auf, als a wird das b aus der darunter liegenden Zeile verwendet. Also:

   e            \varphi \,(N)         x           R           a            b

   7             20            0            7                  
  20             7             2            6
   7              6             1            1           1           -1
   6              1             6            0           0            1

Dieses Prinzip wird bis oben fortgesetzt, also: b=1-(2*(-1))  b=3


   e            \varphi \,(N)         x           R           a            b

   7             20            0            7                 
  20             7             2            6          -1            3
   7              6             1            1           1           -1
   6              1             6            0           0            1

Das b in der zweitobersten Zeile ist unser wert für d. Wir haben nun also d=3. Der private Schlüssel setzt sich folgendermaßen zusammen: (N, d). Folglich ist unser privater Schlüssel also (33, 3).

Nun wo wir beide Schlüssel, also ein vollständiges Schlüsselpaar haben, können wir auch ver- und entschlüsseln. Dazu gibt es die Formeln:

Zum Verschlüsseln: G=T^e  modN  (G=Geheimtext, T=Orginaltext)

Zum Entschlüsseln: T=G^d modN


Mit der kommenden Klausur werden wir dieses Thema wahrscheinlich abschließen und uns mit einem anderen Teil der Kryptologie beschäftigen.