Archiv der Kategorie: computer security

Blogs zum Thema IT-Sicherheit

LineageOS at Samsung Galaxy S7

In this blog I want to descripe my experience to flash a Samsung Galaxy S7 with a LineageOS. Why a old S7? Because you can get a lot of Accessories like bumber cases or armored display protections and the costs are reasonable in relation to technical specifications. And the main reason is that you can get fully developed mods like LineageOS. I’ve had more smartphones in the past e.g. the sony experia Z or the sony experia Z3 – all flashed with cyanogenmod you can compare nowadays to LineageOS. Sony supported in former times a innovative „open device“ program and installed a default recovery image. yes, you lost support but you got a possibility to flash Android without tricky preperations. Please read the computer news for this historical stuff.

I can say that all flash operations with former sony were tricky. No one time was flashing withouth problems. For example on experia Z i installed cyanogen – so far so good – and after this i crypted the internal store. finally, through the encryption, the system was not able to decrypt the file(s)  with provider data. I had a smartphone just only for data connections…  i had to make the decission to use a young and buggy „nightly“ version, that was the solution – and so on!

So i decided to use a samsung s7 for the next years. And because i got a lot of errors the last 2 weeks: here is the progress of flashing and a possible solution that worked for my devices.

Please understand this blog as a part or as addition-blog to the official sites of LineageOS. If you are localized in DACH and can not go on with english sites, just take a translational software like google… (Sollten Sie der engl. Sprache nicht mächtig sein, kopieren Sie den Text einfach in einen Online-Übersetzer wie google…)

I will take no warranty to steps you will do basically at this howto. See it like a additional summary of experience.

Requirements -what do you need?

  • Unboxed Samsung Galaxy S7 type G930F
  • The original USB-Cable of your box (so you can exclude test procedures)
  • Load the battery nearly full to 100% (some devices are just flashable with a high battery status)
  • Put in a large SD card with min 16 GB of size
  • 1 day of free time

First Todos

  • Switch on the S7, step through the starting procedure
  • go to Settings an switch the developer mode on with tabbing at lesat 7 times to the build number in the smartphones properties
  • now you can see the developer mode options in the settings
  • go there to the dev options
  • set OEM dislocking ON, USB Debugging ON
  • shut down the device

What does the common LineageOS say?

At first, go to the official site of LineageOS and read the manual steps. As a summary, you can say that there are three steps. Samsung provides the flashing of there devices. And this is the first step: there is a small part on your smartphone like a bootloader with name „Download mode“. This software package does have no really usable functions but you can start it if you press on the switched off device three keys together: VOL-DOWN, HOME-BUTTON and SWITCH-ON-BUTTON. After seconds you will reach the „Download mode“. Accept the warning and you will see a screen it seems to be waiting for a action from outside the smartphone. You can restart the download mode at every time: just hold the three buttons again and you will see that the device is rebooting – hold further on the buttons and you will land in the same screen again. Easy. But as I say, the „Download mode“ can nothing as download something. Here is the second step: you have to change this part of software with a software with more functions. I have used the flash custom recoery of the TWRP (called: Team WIN)  group.  This custom recovery software does have more functions as the default samsung part. LineageOS does descripe this step with Team Win too. And with the software we reach the third step: change the OS.

First problems – the connection with the device.

My first problem startet with step 1: to transfer the custom recovery flash to the waiting device was not doable. The LineageOS manual said: use the haimdall-Suite to install driver and transfer the image. Installing the driver should be possible with another software programm called zadiag.exe which is a part of the heimdall suite. In summary, that was the problem. The manual said: as a driver use the samsung usb composite device and if you will not find this one, try the gadged serial device in zadiag  to install the driver. For my part i took the gadged serial one because there was no stuff like samsung… After installing the driver, you can simple test the connection with the command heimdall device for detecting and then heimdall print-pit   to download the device specificatio (by the way: just use the –verbose parameter to ge a more detailed log). I got this errors and warnings: „ERROR: Failed to access device. libusb error -12“, „WARNING: Control transfer #1 failed -1“, „ERROR: libusb error -7 whilst receiving packet -7“. With the -7 error it came: „ERROR: Failed to receive PIT file size!“ and „ERROR: Failed to download PIT file!“. In my environment worked the libusb0-driver with the „best“ results: the s7 was detectable but print-pit said 6 warnings with control transfer failed. The other 2 drivers stopped working at „initializing“ status. I have tried more days and many hours to go find a solution. I have tried a virtualbox with a old windows xp and a windows 7 32bit and of course a windows 10 64bit, too. I read a lot of internet articles about thes three errors: -7, -1, -12. Many others had same problems but no finally solutions. The advices hang around: Change the cable, try to reboot several times, load up the battery. At the end, i did a really complex-structured trial-and-test day just find a solution. My opinion now go around the operating system. The main problem is: the device is findably with the „device“ parameter but you can get no transfer-connection the it. probably it should work if you have physical windows 7 with 32 bit with unlocked driver signature surveillance.

The solution – change the transfer software

In my case, through reading many sites i find the TWRP group. As i mentioned above, they developed a custom recovery suite to change the default of samsung and replace it with a more functional flash part. TWRP just not only give the image, they developed a transfer software called ODIN (like heimdall), too. I have downloaded the ODIN 3.12.3 and started it and plugged in the AP-Box the TWRP-Tar-Image file (you can find it here – btw: „herolte“ means the S7, like a developement project name)

thomas-zehrer-de_ODIN-Transfer-Herolte-TWRP-Image

As i said, the phone was with the default image in waiting status. Then START and without problems, i transfered the image to the smartphone. SIMPLE. READY. NO PROBLEMS! Why? The connection should be realized through the former installed Samsung Composite Drivers.

First Restart

After this, i restarted the device by holidng VOL-UP, HOME-BUTTON and SWITCH-ON-BUTTON and got to the new Image of TWRP. Here you can see a screenshot from ther HP.thomas-zehrer-de_twrp-software-image

There are a lot of functions to do. At first, you should make a backup with go to Backup-Tab and swipe a backup to the external card. Takes about 2 hours. At second, wipe the complete storage with Wipe and Advanced Wipe.  Choose “Davlik Cache”, “System , Data”, “Cache”, “Android Secure” and swipe the wipe button. Takes about 10 minutes. Now, you can start your phone in default Waiting Mode with VOL-DOWN + POWER + HOME and in the new TWRP recovery Image with VOL-UP + POWER + HOME. From here you can later start some nice features: backup a complete image, go to the encrypted store, copy files… – all possible with adb.

Last step: Transfer the LineageOS to the phone.

Go to Advanced and set the device to listening mode again. Its called sideload. With the sideload mode you can transfer from your pc or laptop a file for installing to the device, similar a waiting status. Now you need on the windows side a Android well knows software called „android debugging bridge“ or adb. Just download this part from google site and start the command line like this: adb sideload LineageOD.zip – you can see the transmission from windows to the S7 on booth sides. After this go to to restart and restart the device. The new Image will be rolled out.

Summary

Finally, it worked for me. You need a sum of software and todos, i try to list it. so i did not use the heimdall suite. (the links are working at Jan, 19, if you need the files: just contact me).

  • At first the Samsung Composite Drivers from here and install this ones at your windows system.
  • Then create a directory and download following files:
    • The herolte Image: the alternative custom image of TWRP as a tar-File
    • The ODIN-Software to transfer the herolte image-tar-File
    • The ADB Suite (called android plattform tools) for transfering the LineageOS to the device and unpack it.
    • The LineageOS package from the website and copy it in the same directory as the adb.

Then set your phone in listen mode, start ODIN, choose in AP-box the tar-file and send it. Then restart phone holding three buttons VOL-UP_POWER_HOME and the TWRP recovery is starting. Do a backup of your current system, format / wipe the storage and set the device in sideload mode. Do in your windows the adb sideload command and transfer the image to the device.

So flashing a device can make a lot of fun because you learn a lot of your device. What could be the next steps after flashing? Crypting the storage, loading apps from f-droid. You have a unbounded fresh Android with no needless apps you never use or need.

Have a nice day.

Virtuelle Maschinen für spezielle Aufgaben? Achtung: Langzeitgedächtnis!

Möchte man Aufgaben auf dem privaten PC trennen, so bieten sich virtuelle Maschinen unter VirtualBox oder vmware an. Es ist also möglich, dass für das Surfen im Web mehrere virtuelle Maschinen erstellt werden oder für Einzelaufgaben – z.B. Homebanking mit HBCI, die Facharbeit, Softwareentwicklung, Multimedia – verschiedene virtuelle Systeme in Betrieb genommen werden. Sicherlich gibt es für Laien einige Hürden zu Meistern: welches System soll verwendet werden? Auch Patches, Updates und nicht zuletzt die Sicherung der angefallenen Daten müssen durchdacht sein. Aber funktioniert das Biotop so hat man getrennte Systeme für spezielle Aufgaben.

Die Vorteile, die sich daraus ergeben: Am Internetzugang können die Daten einzelner Maschinen aufgrund z.B. der IP-Adresse unterschieden werden und geblockt werden: Die Perimeterserver von Microsoft dürfen nicht kontaktiert werden oder nur Webdaten Port HTTP/HTTPS dürfen passieren. Dann können die Maschinen einfach gesichert werden: Backup-Festplatte einschalten bzw. NAS verbinden und Files regelmäßig kopieren. Zudem können die virtuellen Maschinen auf Basis des Betriebssystems verschlüsselt werden. Linux bietet hier dm-crypt und für Windows gibt es VeraCrypt oder Bitlocker. So kann auch ein Transport über USB erfolgen. Es könnte der komplette Container mit samt virtuellen Festplatten in einem Archiv mit Kennwort gesichert werden – als Transportsicherung. Das Starten und Stoppen der Systeme dauert auf aktueller Hardware nur Sekunden. Letztlich verteilt man Sicherheit und das lokale, pyhsikalische System dient im Allgemeinen als Host. Trotz der vielen Vorteile muss das Langzeitgedächtnis virtueller Maschinen beachtet werden.

Virtuelle Maschinen unter VirtualBox

Wir legen uns also für verschiedene Aufgaben mehrer virtuelle Machinen an. Angenommen eine Maschine dient nur zum Surfen im Internet. Ein Linux-System wie Debian und Firefox reichen hier völlig aus.

thomas-zehrer_vbox_01Bild: VirtualBox mit mehreren virt. Maschinen

Mit der Virtualisierungssoftware VirtualBox kann das System nach wenigen Minuten betriebsbereit hergestellt werden. Dabei ist auch ein Webclient: surfen, Multimedia, youtube, AddOns – alles sofort verfügbar.

Achtung: Langzeitgedächtnis!

Wie steht es jetzt um die Sicherheit der Daten in dieser Maschine? Ein Test zeigt Potential zur Vorsicht! Startet man die Maschine, z.B. surfing und gibt im dortigen Firefox Zeichen ein, so versucht der Client denServer:

thomas-zehrer_vbox_03

Bild: VirtualBox und Firefox: Zugriff auf Server

Das klappt nicht da es die Adresse thomas-zehrer.de zwar gibt, jedoch nicht den Teil der URL trallalla – aber egal an dieser Stelle. Beendet man die Maschine durch Ruhezustand oder einen Shutdown und untersucht selbige in einem Hex-Editor (ich verwende den kostenlosen HxD von Mael Hoerz da dieser auch mit sehr großen Dateien umgehen kann) so kommen genau die eingegebenen Daten zum Vorschein:

thomas-zehrer_vbox_04

Bild: Die virt. Festplatte im HexEditor HxD

Die virtuelle Maschine hat also ein Gedächtnis. Exkurs: Funktioniert das auch mit Dateien? Extrapoliert man das Verhalten, so bekommt man einen guten Überblick über die Filehistorie: So könnte man mit OpenOffice eine test.docx erstellen und auf dem Desktop ablegen: Informationen dafür im HxD:

thomas-zehrer_vbox_05

Nach dem Löschen in den Trash: Informationen dafür im HxD:

thomas-zehrer_vbox_06

Nach dem Löschen aus dem Trash: Daten persistent:

thomas-zehrer_vbox_07

Nochmals Achtung: Daten persistent!

Verschiedene Tests mit den Daten im Client ergeben: Datei und Daten im Binärfile bleiben bestehen! Am Beispiel der Browserhistorie: Löschen der Browserhistorie mit samt Cookies, Reboot der Maschine, Update Client: nach allen Standardaktionen konnten die Daten nach einem Shutdown im Binärfile weiter festgestellt werden!

Abhilfe schaffen.

Abgesehend davon, dass bestimmte Daten mit besonderer Vorsicht zu behandeln sind (Patientendaten, Daten zu Krankheiten, religiöse Zugehörigkeiten, politische Meinungen) stellt sich die Frage, wie obiges Risiko minimiert werden kann? Gegen wen oder was sollen die Daten geschützt werden? Offensichtlich gegen physikalischen Zugriff auf die Maschinendaten oder eine Software „Schädling“, der über ein Speicherabbild Daten Dritten zur Verfügung stellt. Speicherabbild-Dateien werden während der Laufzeit erzeugt und geben ein Snapshot des laufenden Systems wieder – vergleichbar mit dem physikalischem File. Die Speicherabbilder können über den Taskmanager in Windows erzeugt werden.

Zunächst sollte der physikalische Zugriff auf das Host-System durch Verschlüsselung beschränkt werden. Wie oben angemerkt könnte das VeraCrypt oder dm-crypt sein. Dann sollten die virtuellen Maschinen ebenfalls durch Verschlüsselung abgesichert werden. Verschlüsselt man die hdd-Container unter dem virt. Linux bei der Installation mit dm-crypt bzw. Windows mit VeraCrypt so können diese Offline nicht mehr analysiert werden.

Es bleiben noch die Snapshots wenn das System lediglich in den Ruhezustand gefahren wird: Systeme dürfen nicht mehr in den Energiesparmodus oder den Ruhezustand versetzt werden. Die daraus folgenden Files sind wiederum lesbar! Werden trotzdem Dateien um das virtuelle System herum erstellt, so müssen diese über einen Eraser-Task regelmäßig geshreddert werden. Am Ende müssen lange Kennwörter vergeben werden. Es ist mittlerweile der Standard, sog. secret phrases zu setzen, d.h. unheimlich lange Passwörter, meist Wörter aneinander gereiht mit Sonderzeichen und Ziffern. Das gilt für die Verschlüsselung ebenso wie für das Userkonto in der virtuellen Maschine.

Als oberstes Gebot steht die Erstellung eines Backups: wenn die virtuelle Maschine beschädigt wird, sind die Daten weg. Und sind die Host-Festplatten oder die virtuellen Datenträger verschlüsselt, so kann man mit hoher Wahrscheinlichkeit die Daten schlicht abschreiben.

Homomorphe Verschlüsselung! Was? Wie?

Letztens gelesen: Cloud-Dienste können mit Werten rechnen, die homomorphe Merkmale aufweisen und gesicherte Daten müssen praktischerweise vor Benutzung nicht entschlüsselt werden? Und das soll gehen? Spannend! Ich war sofort neugierig auf das Verfahren und das Ergebnis.

Begriff: Homomorphe Verschlüsselung

Homo, aus dem Griechischem für „gleich“ oder „ähnlich“ und Morph ebenfalls griechisch für Form bedeutet, dass ein Symbol, z.B. eine Zahl bzw. mehrere Zahlen das Ergebnis eines Prozesses gleicher Schritte sind. Die Symbole sind sozusagen  vergleichbar, weil sie mit ähnlichen Ausgangswerten auf identische Art und Weise entstanden sind…. interessant. Und weiter noch: rechnet man mit den so entstandenen Ergebnissen, dann erhält man selbiges Resultat, das auch aus den Ur-Werten entstanden wäre. Dann liegt Homomorphismus vor. Dann die Verschlüsselung: es geht also um Retsultate von Operationen (z.B. der RSA-Verschlüsselung) die im Verhältnis zu den Ur-Werten identisch sind. OK!? Probieren wir es aus.

Ausgangssituation

Daten, die per asymetrischer Verschlüsselung (z.B. mit RSA) gesichert sind, sollen verschlüsselt werden. Dazu geht man in etwa so vor: Der Klartext t wird mit einer großen Primzahl p als Key und einer großen Zufallszahl r nach der Formel t‘ = t + p * r verschlüsselt.

Angenommen, der Klartext t sei 5 und 2. Die große Primzahl p sei für beide (!) Klartexte 1234567 und die Zufallszahl r ist 48. Die Primzahl p sollte an dieser Stelle wesentlich größer sein. Zudem ist r ebenfalls recht klein – sollte aber an dieser Stelle ausreichen. p und r müssen für beide Ur-Werte gleich sein da sonst die Ergebnisse nicht mehr „im Verhältnis“ identisch sind – es wäre kein Homomorph mehr.

Rechnung

t1′ für 5 wäre demnach t‘ = 5 + 1234567 * 48 = 59.259.221 und t2′ für 2 wäre t‘ 2 + 1234567 * 48 = 59.259.218.  Um es spannend zu machen, multiplizieren wir, um das (Achtung!: verschlüsselte) Ergebnis zu erhalten: 59.259.221 * 59.259.218 = 3.511.655.095.749.178 – wir definieren das Produkt weiter mit e.

Prüfung

Multiplizieren wir die Ur-Faktoren 2 und 5, erhalten wir das Produkt 10. Und ebenfalls sollen wir dieses Ergebnis 10 erhalten, wenn wir obiges Produkt per Modulo aufgreifen? Probieren wir es: wir kommen zurück mit Ergebnis t = e mod p.  Wenn wir keinen mod-fähigen Taschenrechner zur Hand haben, kommen wir mit e geteilt durch p, dann die Ganzzahl des Ergebnisses (ohne den Werten rechts vom Komma: 2.844.442.704) mal nehmen mit p 1234567 und wir bekommen einen um 10 verminderten Wert als wir mit obigen Verschlüsselten Werten erhalten haben.

Faszinierend

… und im Nachhinein verständlich. Aber: Passt. Prima. Anwendungsfälle bitte? Rechnen mit Geo-Koordinaten,  Umsatz- oder Budgetberechnungen für sensible Bereiche. Datum- und Zeitoperationen – Praktisch alle Berechnungen, wobei der Rechenweg selbst nicht geheim, wohl aber die Parameter oder den Bezug niemand kennen soll.

September 1983 – ein Computerfehler führte beinahe zum atomaren Erstschlag

September 1983.

Für die in Mitte der 70er geborenen Kids von damals ging es 1983 zur Ersteinschulung. Wir ABC-Schützen lernten anhand des Zahlenstrahls Mathematik von 1 bis 10. In Deutsch bauten wird mit dem Setzkasten erste sinnvolle (- oder freie) Sätze  und lernten unsere Klassenkameradinen- und kameraden kennen, viele Schulfreunde wandelten sich zu Freundschaften, die bis heute konstant sind.

Es war an einem Freitag, den 23.09.1983. In Deutschland bereitete man sich auf das Wochenende vor, plante die Einkäufe zum Samstag, und genoß letzten Sonnenstrahlen an diesem Spätsommertag. Die Wetterchronik zeigt, dass der September damals trüber als Durchschnitt, es aber auch nicht zu frisch war. In Deutschland also.

Die Tragik des Geschehens.

An einem anderen Ort am 23.09.1983, kurz nach Mitternacht, in einem Kommandostützpunkt nahe Sephukhov südlich von Moskau schrillten die Alarmanlagen. Ein russischer Kosmos-Satellit meldete den Start einer Rakete in Montana, USA.  Als „Kosmos“ bezeichnet Russland nahezu alle ihre Satellitentechnologien. So zum Beispiel Satelliten zur Luftdichtemessung „Kosmos 146“ oder Systeme zur Geomagnetischen Forschung „Kosmos 26“.  So gabe es – wie heute auch noch – militärische Satellitensysteme, die unter dem Kosmos-Programm betrieben wurden. Die Technik der Satelliten selbst beschreibe ich weiter unten näher.

Es ging also los, der Erstschlag wurde von USA durchgeführt – wie von den Russen befürchtet. Der an diesem Tag leitende Kommandeur Oberst Stanislav Petrow – der tragische Held dieser Geschichte – war lt. Protokoll dazu befehligt, militärische Gegenmaßnahmen einzuleiten.

Die Russischen Raketen müssen innerhalb von 30 Minuten auf den Weg gebracht werden, da sonst dem feindlichen Erstschlag des Westens nichts mehr entgegenzusetzen wäre. Einzig die im Nordmeer bei Murmansk stationierten U-Booten sollen mit mobil stationierten Kernwaffen die Zweitschlagsfähigkeit gewährleisten. Damals, im Jahre 1983 waren in der nördlichen Hemisphere über 10.000 Raketen startbereit. Alleine in Deutschland lagerten an über 100 Standorten über 4000 Atomraketen. Diese unvorstellbare Zahl massenvernichtender Waffen hätten im Ernstfall für uns unvorstellbare Folgen bedeutet. Eine Gegenprüfung des Vorfalls mit optischen Systemen war aufgrund des Sonnenstandes nicht möglich.

Wenige Minuten nach der Meldung des ersten Raketenstarts meldete das gleiche Frühwarn-Satellitensystem den Start einer zweiten Rakete im US-Bundesstaat Montana. Es waren also „nur“ zwei Raketen vom Nordamerikanischen Kontinent gestartet. An diesem Tag sollte sich der Vorfall wiederholen, 5 Starts wurden gemeldet.

Wieso leitete Petrow nicht den Gegenschlag ein? Intuitiv erkannte Oberstleutnant Petrov, dass der Westen nicht mit zwei oder fünf Raketen einen Angriff startete, der unkalkulierbare Folgen nach sich gezogen hätte. Er sagte bei einem Interview: „Mein Kopf war wie ein Computer, in dem viele Informationen dafür sprachen, dass der Start Teil eines bevorstehenden Angriffs war. Aber als ich die Entscheidung traf, verließ ich mich nur auf mein Gefühl.“ (Quelle: ZDF History – die Welt am Abgrund)

Das Kosmos-System und die Molniya-Bahn.

Was wurde über Kosmos gemeldet? Die Kosmos-Satelliten vom Typ „Oko“ z. dt. „Auge“ waren als Frühwarnsystem konzipiert und sollten den Startblitz von startenden Raketen erkennen.  Kontrolliert wurden die Systeme über Serphukhov-15, nahe Moskau für die westliche Hemisphäre und Komsomolsk am Amur im russischen Fernen Osten für die östliche Hemisphäre.  Die System umkreisten die Erde in einem hochelliptischen Orbit von 600 km bis 35000 km. Wie kommt eine solche Differenz zustande? Der Grund ist ein Kompromiss zwischen Dauer der Beobachtung eines speziellen Objektes und der Kommunikationsmöglichkeit mit einer Zentrale.

thomas-zehrer-de_molnija-orbit

Bild: die Molniya-Umlaufbahn mit Stundenmarkierung

Beobachtet werden sollte damals der nordamerikanische Kontinent über eine möglichst lange Zeitdauer. Kepler sagt mit seinem 2. Gesetz aus, dass sich Objekte langsamer bewegen, je weiter sie sich von einem Anziehungspunkt entfernen, d.h. wenn der Satellit von Süden in Richtung Nord-Ost zieht, verlangsamt sich seine Geschwindigkeit, so dass er – ergo – länger über der nördlichen Halbkugel verweilt. Die Rückkehr erfolgt 12 Stunden später auf den Breiten der um 180° gedrehten Erde – ergo – wieder im selben Längengradbereich als beim Verlassen.

Der Satellit entfernt sich also von der Erde und erreicht auch selbiges Areal wieder als es über der Nordhalbkugel im US-Staat Montana, nahe der Malstrom Air Force Base einen Raketenstart bemerkt. Dort waren damals wie heute Interkontinentalraketen vom Typ Minuteman III stationiert.  Die Minuteman III weisen eine Länge von 18,23 Meter sowie eine Dicke von 1,70 Meter auf. Die Reichweite beträgt ca. 13.000 km bei einer Geschwindigkeit von 29.000 km/h und einer Dienstgiphelhöhe von 1.300 km.  Der Start einer Interkontinentalrakete wie die Minuteman wird von Kosmos nicht bei Öffnen der Bunkerschächte oder des Starts registriert. Kosmos ist darauf angewiesen, dass der Startstrahl nach Abheben  kontrasttechnisch von der Schwärze des Weltalls bzw. vom Hintergrund unterscheidbar ist.

Überlegungen.

Gehen wir davon aus, dass die Minuteman III mit einer anfänglichen Beschleunigung von a = 16,5 m/s² das Silo verlässt: nach nur t = 60 Sekunden weist die Rakete eine Geschwindigkeit von v = a * t = 16,5 * 60 = 990 m/s * 3,6 = 3564 km/h und hat bereits eine Entfernung von s = a * t² / 2 = 16,5 * 60² / 2 = 29700/ 1000 = 29,7 km zurückgelegt.  Nach fünf Minuten sind beträgt die rechnerische Geschwindigkeit bereits 23.760 km/h bei einer zurückgelegten Distanz von 1.320 km wobei wir bei beiden Werten nach und nach die maximale Geschwindigkeit und die Dienstgipfelhöhe erreicht haben. Im Optimalfall ist die Rakete bereits höher gestiegen als Kosmos.

Der Fehler.

Kosmos erkannte nicht, dass es sich bei dem erkannten Abgasstrahl der Minuteman III eigentlich um reflektierendes Sonnenlicht in sogenannten high-altitude-clouds oder „high clouds“ handelt, die sich in der Troposphäre bei 5 bis 12 Kilometer bilden. Computerfehler?

Weitere Überlegungen.

Die Kernaussage, die ich Ihnen über diesen Beitrag näher bringen möchte ist, dass eine Fehlinterpretation eines Ereignisses – Wolke anstatt Raketenstrahl – die wohl weitreichendsten Folgen überhaupt hätte haben können. Und die Routinen liefen auf beiden Seiten Ost und West über Jahrzehnte hinweg 24/7 in mehreren Satellitensystemen (für die ständige Beobachtung setzten russische Streitkräfte bis zu vier Oka-Systeme ein)! Im vorliegenden Falle war eine Überprüfung über optische Systeme durch Kameratechnik nicht möglich, da die Tagezeit durch die Tag-Nacht-Schranke dafür suboptimal gewesen ist. Letztlich ist wieder der Mensch die beurteilende Instanz mit „Bauchgefühl“. Dient eine Maschine als Glied in einer Prozesskette, so muss man sich stets bewusst sein, dass zwar innherhalb dieses deterministisch agierenden Kettengliedes grundsätzlich vorausssagbare Informationen weitergegeben werden, die Summe an Aussagen oder die Tragweite bzw. die Auswirkung dieses – ich nenne es – Biotops überblickbar sein soll. Letztlich war Petrov ein Prüfglied in der Kausalkette, der – es hätte diese Stelle nicht geben müssen – die Informationen entgegennimmt, auswertet und daraus weitere Aktionen antriggert.

Mir kommen soeben Aussagen von Unternehmen in den Sinn, die selbständig-agierende Kraftfahrzeuge seit einigen Jahren im öffentlichen Verkehr testen. Es gab bereits mehrere Verkehrsunfälle. Hier war der Mensch eben nicht die letzte Instanz sondern die Situation wurde beurteilt durch Signale, die von Sensoren an Algorithmen übergeben wurden. Die Reaktion der Testfahren und der Unternehmen war in den meisten Fällen identisch: Der Computer hat den Unfall nicht verursacht. Es war der Mensch am Steuer des beteiligten anderen Fahrzeuges.

Erst in den frühen 2000ern lobte man Petrov in Ost und West für seine weitreichenden Entscheidungen.

Elster mit Smartcard erledigt

Nach wochenlangem Testen und Werken möchte ich hier die Details zu ElsterOnline – dem Portal zur elektronischen Steuererklärung – in Verbindung mit einer Smartcard beschreiben, um sozusagen „vorwärts“ zu kommen.

Was alles nicht funktioniert, hat definitiv einen hohen Unterhaltungswert. Ich möchte mich aber auf das „wie funktioniert es“ beschränken.

Vorab: die Sache ist nicht einfach und Elster wendet sich hier an die erfahrenen IT-User. Vermutlich für Firmen, deren Administratoren das erledigen können. Da ich sicherheitsinteressiert bin, schon eltiche Jahre Kartenleser einsetze, asymetrisch verschlüssle und mich (ja, meine Frau auch, sie hat auch viele Stunden mit Elster und dem Kartenleser verbracht) auf solche Herausforderungen einlasse, haben wir uns NICHT für den USB-Stick, sondern für die Karte entschieden. Der USB-Stick ist einfacher zu implementieren. Hier kenne ich aus eigener Erfahrung im Job Probleme mit dem 32bittigen JAVA auf 64-Bit-Maschinen. Gebastel. Hat aber funktioniert.

Also: hier zum Weg, wie ich eine Signaturkarte der Bundesdruckerei mit Elster zum Laufen bekommen habe.

1.) Bei einem Dienstleister – z.B. der Bundesdruckerei – eine Smartcard erwerben.

Die Bundesdruckerei ist ein Dienstleister rund um das Thema Identifikation und Authentisierung. Es ist eine staatliche GmbH und druckt auch Geldnoten. Zudem gibt es eine 100%ige Tochter, die D-Trust GmbH. Als ein von der Bundesnetzagentur akreditiertes Unternehmen bietet D-Trust Dienstleistungen rund um digitale Signaturen an. Dort bekommt man also eine Signaturkarte mit einer qualifizierten elektronischen Signatur. Mit dieser Art von Signatur kann man Geldgeschäfte erledigen, sie gilt gleichwertig mit der eigenen Unterschrift. Dafür sind einige Vorarbeiten notwendig. Zudem ist es nicht entscheidend, welches Trustcenter man sich aussucht. Auch die Sparkasse oder DATEV bieten ähnliche Dienstleistungen an. Es beginnt also mit dem Besuch der Bundesdruckerei per Webseite. Das Produkt nennt sich „D-Trust card“. Die Karte beinhaltet zwei Dateien: eine Datei – also ein Schlüssel – mit dem man Daten sicher verschlüsseln kann und eine Datei, mit der man Dokumente signieren, also unterschreiben kann. Die Beantragung erfolgt auf der Webseite. Anschließend  bekommt man über die Seite ein Dokument (ein Ausdruck, also z.B. ein PDF) mit Dokumenten, die man zu D-Trust nach Berlin senden muss, z.B. die Kopie des Personalausweises, etwaige Unterlagen über Titel, die auf der Karte geführt werden sollen. Das geschieht per Postident auf einem Postamt in Ihrer Nähe, damit zu einem Zeitpunkt sicher gestellt werden kann, dass der Antragsteller auch die Person ist, die letztlich auf der Karte hinterlegt ist. D-Trust informiert regelmäßig über den Stand des Antrages. Danach kommt die Karte und einige Tage später die PINs für die Karte.  Das ganze dauert ca. 2 Wochen. Eine Empfangsbestätigung muss umgehend zurückgesendet werden, da sonst nach 2 Wochen das Zertifikat als ungültig erklärt werden kann. Man kann sich nämlich auf der Homepage erkundigen, ob ein Zertifikatsinhaber ein gesperrtes oder gültiges Zertifikat besitzt. Bei der Bestellung sollte gleich die D-Trust Personalsuite mit erworben werden. Darauf befindet sich D-Trust nexus personal, eine Middleware zwischen Elster und dem Kartenleser. Trifft die Karte ein, muss sie mit einer Software in Betrieb genommen werden, die von D-Trust wenige Tage vorher per Mail-Link heruntergeladen worden ist (D-TRUST_Card_Assistant.exe). Die Beschreibung zu diesen Schritten ist klar von D-Trust vorgegeben.

2.) Elster vorbereiten

Derweilen kann über Elster (https://www.elsteronline.de/eportal/Oeffentlich.tax) die Registrierung eines Zugangs angestoßen werden. Das ganze nennt sich „Elster Plus“. Elster warnt bereits auf der Webseite, dass die Bedienung komplex ist. Man beginnt mit Schritt 1 „Angaben zur Person und Organisation“ und registriert sich mit einer persönlichen Registrierung mit Identifikationsnummer. Die Finanzverwaltung sendet darauf hin einen Aktivierungscode zu, der zusammen mit der bei der Registrierung erstellten Benutzerkennung später notwendig ist. Punk 4. Dauer ebenfalls ca. 1 bis 2 Wochen.

2.) Ein System vorbereiten (Stand 17.04.15)

Das war in der Tat der schwierigste Punkt. Bei mir funktioniert ein unter VMWare (per Player) installiertes Windows XP Pro Sp3, kann voll gepatchet sein. Darauf die Java Version 1.8.U45, ein Firefox Version 37 sowie ein Reiner Smartcard Leser mit für XP aktuellen Treibern von der Homepage. Ein anderer Unterbau hat nicht funktioniert. Windows 7 Home Premium 32 Bit, die Pro-Version mit 64 Bit – nichts. Nur XP hat funktioniert. Zudem muss die Middleware D-Trust nexus personal von der mitgelieferten CD (hier Version 4.24.2) installiert werden. Prinzipiell habe ich ein aktuelles XP oder besser: ein XP, das nicht aktueller sein kann (irgendwann läuft Java oder FF nicht mehr mit aktuellen Versionen) unter der Warnung, dass XP nicht mehr eingesetzt werden sollte. Vergessen Sie nicht den Virenscanner zu installieren und zu aktivieren. Zudem darf sonst nichts mit dem System gemacht werden. Arbeiten Sie NICHT mit diesem System im Produktiveinsatz. Öffnen Sie im Browser NUR Elster, sonst nichst. Wenn Sie sich einen Schädlich einfangen, weil das System nicht mehr supportet wird, dann bringt das ganze Sicherheitsgetue nichts. Die Daten gehen aus Ihrem System! Dauer: 1 bis 2 Stunden.

3.) Das System konfigurieren.

Die Signaturkarte wird zunächst in den Kartenleser eingelegt. Dann geht es um die Datei personal.dll, welche über die Middleware nexus personal auf die Platte kommt. Diese Datei managed zwischen Kartenleser, d.h. Zertifikat und der Webseite, d.h. dem Java Plugin auf der Elster-Webseite. Der Weg zu dieser Datei auf der Platte muss den path-Umgebungsvariablen hinzugfügt werden. (C:\Programme\Personal\bin\). Als zweiten Schritt muss die mit nexus installierte Datei Personal.cfg (C:\Dokumente und Einstellungen\<benutzername>\Anwendungsdaten\Personal\config) editiert werden. Im Notepad geöffnet, muss unter der Rubrik „[firefox.exe]“ das Flag „P11_ShowLoginDialogIfPinPad=1“ eingefügt werden. Dann muss der Firefox-Browser wissen, dass die personal.dll vermitteln kann. Die DLL stellt für den Firefox ein sogenanntes Kryptografie-Modul. Der Browser bringt per Default einige mit, um Webseiten sicher erreichen zu können. Über den Button „laden“ fügt man den Pfad zu der personal.dll hinzu. Dann wird der Firefox beendet und 1x als Administrator gestartet. Jetzt sollte ein Fenster erscheinen, dass ein Zertifikat der Karte in den Zertifikatsspeicher des Browsers hinzugefügt wird. Es werden Details zum Zertifikat angezeigt. Danach kann der Browser wieder beendet werden. Ab jetzt dauert ein Start von Firefox wesentlich länger, da der neue Kryptoprovider hochgefahren/eingebunden/gestartet etc. werden muss.

4.) Test der Konfiguration

Suchen Sie auf der Elster-Webseite „ElsterFit“ um Ihre Karte mit dem System testen zu können. Aus der Auswahlbox wählen Sie Ihren Typ der Signaturkarte und anschließend „Auswählen“, den grünen Button daneben. So. Und hier gab es laufend die Fehlermeldung: „Bitte legen Sie eine Signaturkarte in den Kartenleser ein.“ Freilich kam ich letztlich zu diesem Post und zu einer Lösung aber.  Der Weg führte über etliche Betriebssysteminstalltionen mittels VMWare und ich weiß nicht wie viele Stunden probierens ich damit verbraucht habe. Aber letztlich war die Fehlermeldung weg und mit dem

thomas-zehrer-de_elsterfit-01

Bild: Bitte legen Sie eine Signaturkarte in den Kartenleser ein.

Falls es funktioniert, wird eine entsprechende Meldung ausgegeben.

5.) Bestätigung des Aktivierungscodes mit der erstellten Benutzer-ID.

Danach kann über die Elsterseite zum Schritt zwei gesprungen werden: die Aktivierung des Codes mit der erstellten ID.

thomas-zehrer-de_elsterfit-02Bild: Stand 17.04.2015 der Webseiten, machen Sie jetzt Schritt 2.

Im Laufe Schritt 2 wird die Karte sowie verschiedene Parameter geprüft: ist die Karte auslesbar, ist die Karte gesperrt, d.h. hat das Trustcenter die Signatur der Karte deaktiviert (man kann bei D-Trust nachsehen, ob die Signatur auf der Karte sowie die dazugehörigen Daten mit den Informationen in einer signierten Datei z.B. PDF-Datei übereinstimmen). Auch Elster nimmt beim ersten Start Prüfungen vor, ob die Inhalte der Karte mit der Registrierung sowie den Daten bei D-Trust übereinstimmen. Verstreicht zwischen Beantratung der Daten über das Bayerische Landesamt für Steuern und erstmaliger Nutzung über Schritt 2 zu viel Zeit, erscheint die Fehlermeldung: „080090208: Die Verarbeitung des Requests wird aufgrund des aktuellen Status des
Benutzerkontos abgelehnt.“ Dann muss unkompliziert das ganze nochmals in Gang gesetzt werden.

6.) Verwenden.

Über Elster Online kann z.B. die Steuererklärung abgesendet werden. Bei nächster Gelegenheit werde ich hierzu mehr schreiben.

Hier noch ein paar Hiweise, wo Fehler liegen könnten: m.E. war der ausschalggebende Punkt letztlich die Path-Variable. Ich habe in Windows XP über die cmd.exe – die Kommandozeile – die Variable editiert. D-Trust gibt in seinen Beschreibungen vor, dass dies über die grafische Oberfläche in der Systemsteuerung zu erledigen ist. Ja, ich weiß: das sollte identisches Ergebnis folgen. Aber das war der einzige Punkt, den ich zwischen „Funktioniert nicht“ und „Jetzt funktioniert es“ erledigt habe. Andere Webseiten u.a. das Elster-Forum geben spezielle Java-Versionen an. Hierzu kann ich sagen, dass das für XP aktuellste Gespann aus Java und Firefox funktioniert hat. Windows 7 als 32 oder 64 Bit habe ich überhaupt nicht zum Laufen bekommen. Dann könnte der fehlende Start des FF als Admin eine Fehlerquelle sein. Dann habe ich auf diversen Webseiten gelesen, dass das oben beschriebene Flag „P11_ShowLoginDialogIfPinPad=1“ in der Rubrik „[iexplore.exe]“ eingefügt wurde, obwohl die Blogger Firefox verwendet haben. Dann muss nexus in Form laufen, ersichtlich über ein rot-weißes Icon im Try. Dieses arbeitet, wenn eine Signaturkarte im Leser eingelegt wird. Dann kommt das Elster-Plugin im Browser NICHT damit klar, wenn die virtuelle Maschine in den Suspend-Mode gesetzt wird – ist mir auch passiert. Plötzlich hätte ich eine falsche Java-Version, die von Elster-Online nicht unterstützt wird. Ein Neustart schaffte Abhilfe. Dann kann die virtuelle Maschinen NICHT den Kartenleser einbinden, wenn auf dem darunterliegenden Host-System die Middleware läuft bzw. das personal.dll-Modul in den Browser eingebunden ist: also entfernen.

Ich hoffe, dass ich dem einen oder anderen verzweifelten User helfen konnte. Jaja, ich rede mich leicht: Wieso funktionieren aktuelle Systeme nicht? Warum muss hier ein unsicheres Xp für die sichere Übertragung von Steuerdaten verwendet werden? Das Hauptproblem sehe ich mit 64bittigen Systemen, in denen 32-Bit-Kompoenten laufen sollen: Browser samt Authentifizierung, dann noch das Java dazu, dann die Kartentreiber, dann die Middleware. Wir haben hier eine Handvoll Komponenten, die aufgrund von Standards zusammenarbeiten müssten oder müssen. Das ist schwierig genug. Eine All-In-One-Lösung gibts nicht. Ich würde einen Elster-Thick-Client bevorzugen, wenn es einen gäbe, d.h. die Installationsversion.

Noch ein paar Worte für die Verwendung der Authentifizierung. Alles, was ich oben beschrieben habe, gehört zur Authentifizierung, also: um dem Finanzamt zu sagen, dass man die Daten über Karte absichern möchte.

Wurde die Registrierung so durchgeführt, folgt noch die eigentliche Aufgabe: die Übermittlung der Steuererklärung. Dafür muss Elster zusammen mit Nexus Personal auf einem PC installiert werden. Im eigenen Falle klappte das mit einem Windows-7-PC. Während der Übertragung musste einige male die personal.dll gewählt werden. Letztlich klappte aber der Prozess, wenn man sich an die Anweisungen in Elter gehalten hat. Viel Spaß damit.

So long.

Weitere Quellen:

https://www.d-trust.net/fileadmin/dokumente/Service-Dokumente/Elster-Online_Internet_Explorer_und_NexusPersonal_V1.0.pdf

https://www.elster.de/anwenderforum/showthread.php?41647-Elsterfit-Meldung-Bitte-legen-Sie-eine-Signaturkarte-in-den-Kartenleser-ein&highlight=legen

https://www.elster.de/anwenderforum/archive/index.php/t-40353.html

Software Engineering Ariane 5

Im Zuge einer Vorlesung im Fach Software Engineering an der HS Trier im Februar 2015 wurden in einigen Nebensätzen sozusagen prominente Fälle gescheiterter Projekte mit softwarelastigem Hintergrund besprochen.

Aufgrund technischem Interesse an Luft- und Raumfahrt ist mir der erwähnte Vorfall der Ariane 5 besonders nachhaltig in Erinnerung geblieben, der sich Mitte der 90er Jahre ereignet hat.

Was war geschehen? Das neuentwickelte Trägersystem „Ariane 5“ Startnummer V88 hob am 04. Juni 1996 um 12:34 Uhr GMT mit 1 Stunde Verzögerung zum ersten Mal vom Weltraumbahnhof Kuorou in französisch Guayana ab. Nach ca. 40 Sekunden explodierte das System. Außer einem Sachschaden in mehrstelliger Millionenhöhe wurden die vier an Bord transportierten Sateliten zerstört – also Know-How und Entwicklungsarbeit vernichtet – aber es gab keine menschlichen Opfer zu beklagen. Der Vorfall überwarf den Plan um über 3 Jahre in die Zukunft. Ein Testflug im Oktober 1997 fand nur mit Satelitenattrapen und dem von Studenten aus über 10 Ländern entwickelten YES-Sateliten statt. Der erste kommerzielle Flug fand 3 Jahre später statt. Die vier ursprünglichen Sateliten wurden vier Jahre (!) später von russischen Systemen in die Erdumlaufbahn befördert.

Hintergrund zum Trägersystem

Das Vorgänger-Trägersystem Ariane 4 wurde von 1982 bis 1988 entwickelt, d.h. die Entwicklungszeit nahm 6 Jahre (!) in Anspruch. Das System Ariane 5 wurde in 1988 zur Entwicklung freigegeben und im Jahre 1996 fertig gestellt – ein Jahr nach Plan, da der Erstflug bereits im Oktober 1995 hätte stattfinden sollen. Nur um es zu verdeutlichen: die Entwicklungszeit dieses Systems dauerte 8 Jahre! Betrachtet man diesen langen Zeitraum (in dieser Branche eine Ewigkeit) aus Sicht der Projektphasen Anforderung, Analyse, Entwicklung, Bau und Test möglicher Komponenten UND den Umstand, dass damals vermutlich das Verhältnis 50/50 oder 60/40 von Entwicklung zu Test einherging UND die Schwierigkeit dass ein einziges für dieses Großprojekt gegründete französische Unternehmen eine Vielzahl von Zulieferern organisieren musste sowie den kompletten technischen und wirtschaftlichen Part zu verantworten hatte, so werden 8 Jahre schlicht kurz. Dazu kommt, dass ein solch komplexes System nicht vollständig getestet werden kann. Es gab den Erstflug und der führte zu einem Fehlstart. Fertig.

Operanden-Fehler verursachte fehlerhafte Flugdaten

Die Flugdaten des Trägheitsnavigationssystems (auch „inertiales Navigationssystem“ genannt, inertial von lat. iner=träge) lieferten dem Hauptcomputer Daten, die an das Steuersystem weitergegeben und verarbeitet wurden. Genau genommen arbeitete alles gemäß der Softwareprogrammierung.

Hier eine vereinfachte Darstellung des Systems.

thomas-zehrer-de_sri-ocs-sensoren

Abb: einfaches UML über Abhängigkeiten OCS, SRI und Sensoren.

Der Hauptcomputer (OCS, Onboard Computer System) hat also zwei Navigationssysteme zur Verfügung. Das aktive SRI2 (Inertial Reference System, Trägeheits-Navigationssystem) hat die Aufgabe, über Gyroskope und Geschwindigkeitsmesser – also Sensoren, die an der Trägerrakete angebracht wurden – Navigationsdaten an den Hauptcomputer weiterzugeben, der diese Daten zur Berechnung und Anpassung der Flugbahn benötigt. Das im Hot-Standby befindliche Backupsystem SRI1 war als redundantes Hardwaresystem auch mit indentischer Software ausgestattet.

E_BH verursachte den Fehler

Der Code für das Trägheits-Navigationssystem SRI wurde der Ariane 4 entnommen. Eine nach der Bergung der Überreste gegründete Expertenkommission fand nach 4 Wochen den eigentlichen Fehler.

thomas-zehrer-de_ada-code-ariane5

Abb: Quellcode Programmiersprache ADA

Vereinfacht kann die Zeile so abgebildet werden:

PM_DERIVE(T_ALG.E_BH) =UC_16S_EN_16NS(E_ENTIER_16S ( (1 / C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH))

Mich würde brennend interessieren, was UC_16S_EN_16NS genau macht. Versucht die Funktion eine Konvertierung von 16S signed in EN 16 NS nonsigned oder kann diese beide Arten Signed und Unsigned verarbeiten? Dann vermute ich hinter der C_M_LSB_BH eine Konstante sowbei die Variable LSB ein Kürzel für „Large Super Booster“ – die Flüssiggas-Tanks mit Brenner – sein kann. Sicher ist, dass E_BH in die Berechnung ständig einfließt, siehe rechten Term, hinten. Es heisst auch, dass der E_BH aus 64-bittigen floating-Werten berechnet wird. Das kann dann nur die C_M_LSB_BH oder der Multiplikant G_M_INFO_DERIVE (kann G_M etwas mit Gyro-Blabla, also der Wert der Sensorenphalanx sein?) sein. Trotz mehrere Suchen im Internet fand ich hierzu nichts bedeutendes.

Der Wert für die horizontale Ausrichtung (BH, horizontal bias) war aufgrund der technischen Eigenschaften der Ariane 5 (u.a. höhere Schubkraft, höhere Horizontal- und Vertikalgeschwindigkeit) ab einem Zeitpunkt X höher als die Werte der Ariane 4.

Der fehlerhafte Wert in E_BH sorgte also für einen Absturz der Software im SRI2, lieferte vorher aber ein Fehlerwertmuster an den Hauptcomputer. Das in hotstandby befindliche SRI1 war wenige Millisekunden voher bereits down – aufgrund des gleichen Fehlers. Btw: hotstandby heißt in diesem Fall, dass eigentlich zwei Systeme ständig arbeiten so dass im Notfall der Hauptcomputer vom Backup-SRI mit einer Zeitverzögerung im Millisekundenbereich Daten erhalten kann.

Das vom SRI2 gelieferte Fehlwertmuster wurde vom OCS Hauptcomputer angenommen und ungeprüft verarbeitet. OCS führte wie befohlen aufgrund der Werte Richtungsänderungen durch wobei die Korrekturen die strukturelle Integrität der Rakete überlastete. Das Raumfahrzeug brach auseinander. Eigentlich wurde es voher von Sicherheitssystemen an Board zur Explosion gebracht bzw. wäre von der Bodenstation ausgehend gesprengt worden.

thomas-zehrer-de_ariane5-serie

Abb: Serie von Sek. 38 bis 44 nach Liftoff

An der obigen Bilderserie ist gut zu erkennen, dass es vor der Explosion einen Richtungswechsel gegeben hat, der eine Detonation zur Folge hatte.

Wie könnte man einen solchen Fehler verhindern?

In heutiger Zeit wendet man beispielsweise für binäre Programmmodule – Software, für die also der Quellcode nicht zur Verfügung steht – sogenannte Blackbox-Tests an.

Bei Black-Box-Tests stellt man sich zu Beginn anhand sog. Äquivalenzklassen einen Satz mit Testwerten zusammen. Verlangt eine Eingabe (könnte auch der Parameter einer Funktion bzw. über eine Sensorenphalanx geschehen) einen Zahlenwert, der nicht kleiner als 0 aber auch nicht größer als 100 ist, so wäre diese Variable zu definieren mit var < 0 < 100.  Dann definiert man einen Gut- und einen Schlechtwert. Ein Schlechtwert wäre hier -1 und ein Gutwert kann man als 51 definieren. Die Funktion oder die Eingabe wird nun mit diesen Werten getestet. Gibt es eine Vielzahl Eingabeparameter, so muss eigentlich eine jede Kombination getestet werden. Bei einem Eingabewert wäre das 2 (1 Gutwert und ein Schlechtwert). Bei zwei Eingabewerten wären es schon 2^2 und bei 3 zu prüfenden Werten wären es 2^3 = 8 Werte.  Wieder unter Annahme, es handle sich um 10 zu prüfende Zahlewerten mit jeweils einem Gut- und einem Schlechtwert, dann wären 2^10 = 1024 Möglichkeiten zu prüfen.  Im technischen Umfeld Maschinen- oder Anlagenbau sowie in der Elektrotechnik gibt es oft eine Vielzahl von Parametern. Dann sollte von der Testperson das Ergebnis interpretiert werden können.  Alles nicht so einfach.

Vorhandener Quellcode – also sog. Whiteboxes – kann dagegen mit Whitebox-Testverfahren getestet werden.

Dabei kann der Quellcode generellen Analysen unterzogen werden: z.B. mit der sog. „zyklomatischen Zahl“.  Der Code wird zunächst als sog. Programmablaufgraph abgebildet. Alle Kanten, d.h. alle if-else- und Schleifen-Anweisungen werden gezählt, genau so die Kanten von Anweisung zu Anweisung. Eine if-else ist eine Kante. Eine Schleife ist ebenso eine Kante. Ein Knoten kann eine Anweisung sein. Dann wird die Zahl berechnet mit Z = e – n  + 2.  Wobei: e = edges und n = nodes.

Beispiel anhand eines 5-Zeilers:

thomas-zehrer-de_programmablaufgraph

 Abb: Code und der Programmablaufgraph

Obiges Beispiel hat 10 Kanten und 9 Knoten (Start und Stop mit gezählt).  Die zyklomatische Zahl lautet hier: 10 – 9 + 2 = 3. Man liest: die Zahl sollte den Wert 10 nicht überschreiten.

Ist der Programmablaufgraph erstellt, kann anhand daran der Quellcode nachvollzogen werden und zwar mit mehreren verschiedenen Verfahren:

Anweisungsüberdeckende Tests, d.h. der Test sollte alle Konten abdecken. Im obigen Fall wäre das Testmenge i= 2 oder 3.

Zweigüberdeckende Tests, d.h. alle Kanten/Zweige sollten mind. 1 mal durchlaufen werden. Oben wären das bei Testmenge  i = 3 und 5;

Dann gibt es noch den pfadüberdeckenden Test, bei denen alle Prüfungen mind. 1x erfolgreich und 1x nicht erfolgreich sein sollen. Schleifen sollen zudem komplett durchlaufen werden. Die Testsätze vermehren sich entsprechend.

Abschließend ist wichtig zu wissen: Quellcode soll gut dokumentiert werden. Die Funktionsparameter sollen in Funktionsköpfen dokumentiert werden ebenso was die Funktion genau macht mit einem entsprechenden Rückgabewert.

Die Aussage „ich bin gleich fertig – ich muss nur noch Testen“ darf es so nicht geben. Ein Verhältnis Entwicklung/Test von 50/50 oder 60/40 ist nicht außergewöhnlich.

In der Flug- und Raumfahrttechnik gibt es bspw. Levels, die anhand Konsequenzen festgelegt werden: katastrophal (Level A), gefährlich/schwerwiegend (Level B), erheblich (Level C) und geringfügig (Level D) und unbedeutend (Level E).  Nach Standard DO-178B muss eine 100%-iger Überdeckungsnachweis anhand obiger drei Testverfahren gebracht werden.

Ob das auch eine Übernahme von funktionierendem Code aus alten Systemen einschließt?  „Normal scho…“

Asiatisches IT-Kungfu. Ooss!

Vor kurzem hatte ich die Möglichkeit, über einige Trainingseinheiten der asiatischen Kampfphilosophie „Karate“ bei Sensai Rainer Hieckmann zwei bedeutende Konzepte der Bewegung kennen zu lernen. Es handelt sich dabei um die Bewegung als Reaktion auf einen Angriff, der bereits stattgefunden hat oder in diesem Augenblick stattfindet.

An dieser Stelle muss zunächst gesagt werden, dass es innerhalb von Karate keine Angriffsszenarien gibt. Die Kampfkunst beruht auf Abwehrstrategien. Die Feststellung „in karate, there is no first strike“ gibt den Gedanken wieder, der darauf hinweist, dass der geschichtliche Ursprung von Karate dem Selbstverteidigungszweck diente.

Geschichtlicher Abriss

Okinawa als Insel im südchinesischen Meer um Japan und China war in früheren Zeiten um 1500 wirtschaftlich und militärisch interessant. Diese Umstände sorgten dafür, dass die Insel regelmäßig als Mittelpunkt militärischer Auseinandersetzungen heimgesucht wurde. Die Menschen wollten sich rüsten und verteidigen und somit erließen die dortigen Herrscher das Waffenverbot. Alles was als Hieb- und Stoßwaffe zu gebrauchen war, musste abgegeben werden. Es kam sogar soweit, dass in einem Dorf nur ein Messer für die Zubereitung von Speisen erlaubt war. Dieses wurde zentral gelagert und bewacht. Die Bevölkerung war also entwaffnet. Nun gab es im vorindustriellen Japan die der Kriegerkaste angehörigen Samurai. Diesen Samurai war die sogenannte „Schwertprobe“ erlaubt. Sie durften ihr Schwert an allem toten und lebenden Getier sowie an toten und auch lebenden Menschen „probieren“, was auch gemacht wurde. Die Menschen passten sich an und lehrten und lernten die Verteidigung mit der leeren Hand. In etwa entspricht das „Kara“ dem „leer sein“ und das „te“ ist die Hand – ähnlich der Karaoke, das als leeres Orchester übersetzt werden kann.

„Sen o Sen“ und „Go o sen“

Also weiter zu den besagten Bewegungs-Reaktionsphilosophien. Das Go o Sen wird im Karate typischerweise im Kumite angewandt. Der Angreifer – und ja, bei Kumite-Partnerübungen gibt es den klassischen Angriff – kündigt vorher sein Vorhaben an, der Angegriffene sieht den Angriff kommen und – hier ist der entscheidende Punkt zum Go o Sen, er nimmt den Angriff dadurch auf, dass er abwehrend zurückweicht, dem Angreifer die Technik vollenden lässt und im Anschluss entweder einen Gegenangriff unternimmt oder weitere Techniken des Angreifers abwehrt. Dabei muss sich der Abwehrende bereits während der Abwehr über den nächsten Schritt im Klaren sein, den er unternimmt, wenn wenige Milisekunden später der Angriff abgeschlossen ist. Und wiederum ja: das hört sich alles schön getaktet an. Soweit das Go o Sen.

Das Sen o Sen ist für den Abwehrenden sehr viel schwieriger umzusetzen aber immens effektiver. Der Angriff findet statt, dieser wird abgewehrt und ein umittelbarer Gegenangriff erfolgt. Wird das Sen o Sen korrekt umgesetzt, so gibt es für den Angreifer keine Möglichkeit mehr, mit einem weiteren Angriff zu folgen, denn: der Abwehrende blockt den Angriff regelrecht in Kombination mit einem Konter, der Angriff kommt nicht zur Vollendung. Man kann sich das so vorstellen, dass eine jede Abwehrtechnik zunächst als solche eingesetzt werden kann aber auch als Angriff nützlich ist.

Das Timing ist hier entscheidend. Der Angreifer wählt sich einen Zeitpunkt für eine Angriffstechnik. Er beginnt, diese auszuführen und während der Ausführung erkennt der Abwehrende das Vorhaben und unternimmt in diesem Augenblick mit einer vorsorglichen Abwehrtechnik einen Schritt in Richtung Angreifenden, der die Technik noch nicht vollendet hat, in Kombination mit z.B. einem Stoß. Unheimlich effektiv.

Parallelen in die IT.

Versucht man jetzt, direkte Parallelen in die IT zu ziehen, so funktioniert Sen o Sen auch hier: Viele Ereignisse, die letztlich in Downzeiten der Systeme oder Datenverlust enden, kündigen sich an. Am Beispiel eines einfachen Festplattenausfalles – unwichtig ob eine klassische Festplatte oder eine Solid State Disk – lässt sich an S.M.A.R.T.-Parametern im Vorfeld erkennen, dass z.B. ein Datenverlust drohen kann (z.B. über Monitoring mit Nagios). Serversysteme geben über eingebaute Überwachungssyteme (z.B. ILO bei HP) Auskunft über verschiedenste Systemparameter und kündigen somit Probleme im Vorfeld an. Oder Systemprotokolle in Serverbetriebssysteme (z.B. die Windows Ereignisanzeige) gibt Auskunft, wie oft ein Benutzername zur Anmeldung verwendet wird, dito am Gateway oder in Routersystemen. Der Systemadmin sollte sich Sen o Sen aneignen. Die Angriffe, d.h. bevorstehende Einschläge oder sich anbahnende Probleme, sollten im Augenblick des Angriffs abgewehrt werden. Kommt es zur Vollendung des selbigen, ist der Aufwand der Fehlerbehebung um ein Vielfaches größer. Zudem kann Datenverlust auftreten, d.h. Daten sind unwiderruflich weg!

IT-Probleme kennen keine Kumite-Partnerübungen. Sie kündigen sich im besten Falle mit genügend Reaktionszeit an und sind DA. Verantwortliche müssen das Viergestirn der Datensicherheit unbedingt im Auge behalten:

1.) Die Datenintegrität, die sicherstellt, dass Daten nicht unabsichtlich verändert oder unbrauchbar gemacht werden können. 2.) Die Datenverfügbarkeit, die dem Nutzer Datenverlust ersparen soll. 3.) Die Vertraulichkeit, die den berechtigten Zugriff gewährleisten soll und 4.) Die Authentizität, die den Urheber der Daten nachhaltig glaubhaft machen soll.

Also Admins: Sen o Sen. OoSS.