Ansichten eines Informatikers

Security-Schrott am Beispiel cyrus-sasl

Hadmut
10.11.2011 15:56

Eigentlich muß man konstatieren, daß wir schon deshalb keine vernünftige IT-Sicherheit hinbekommen, weil die etablierte Software ein großer stinkender Haufen Mist und Besserung nicht in Sicht ist.

Ich habe gerade mehrere Stunden damit verbracht, einen Fehler im Thema Security zu finden. Situation: Es gibt einen IMAP-Server, der verschlüsselt IMAP anbietet. Von vier Rechnern aus soll darauf zugegriffen werden, insbesondere per Mail-Client mutt. Authentifikation auf die einfachste, dämlichste Weise, einfach Benutzernamen und Passwort im Klartext (aber natürlich SSL-verschlüsselt) rüberschieben. Eigentlich Schlabberkram, keinerlei Kryptographie oder so. Alle vier Rechner haben denselben Software-Stand (Ubuntu Oneiric, allerdings zwei 64 und zwei 32 Bit), und dieselben Konfigurationsdateien. Auf dreien funktioniert’s, auf dem vierten nicht. Zeigt nur ne schräge deutsche Fehlermeldung.

Woran liegt’s?

Die Ursache war, daß die vierte Maschine dem lokalen Nameserver nicht bekannt war und deshalb eine Namensauflösung ein negatives Ergebnis brachte, woran sich cyrus-sasl stört.

Mutt (und diverse andere Programme) verwenden zur Authentifikation den SASL-Layer und dazu die SASL-Bibliothek. SASL ist im Grunde eigentlich schlau, weil die Authentifikation völlig abstrahiert und in eine externe Bibliothek ausgelagert wird. Dadurch müssen sich der Client und der Server (bzw. deren Autoren) nicht selbst damit herumschlagen oder neue Authentifikationsverfahren implementieren, sondern sie spielen einfach das Spiel, daß der Server und der Client sich gegenseitig irgendwelche Datenpakete zuspielen, die sie nicht näher betrachten, sondern einfach an ihre jeweilige SASL-Bibliothek weitergeben. Das heißt, die Client/Server-Software führen die äußere Kommunikation durch. Die SASL-Bibliothek dagegen interessiert sich nicht dafür, was für ein Protokoll (IMAP, SMTP, LDAP,…) da gesprochen oder wie die Daten übertragen werden, sondern bekommt nur Datenpakete der Gegenseite hereingereicht und gibt Antworten heraus. Und irgendwann sagen die Bibliotheken zum Client/Server eben, jetzt reicht’s, wir sind fertig mit der Authentifikation, und das Ergebnis ist gut oder schlecht. Eigentlich eine feine Sache.

Aber höllenmäßig grottenschlecht implementiert. Jedenfalls was die Linux-Standard-Implementierung Cyrus-SASL angeht. Mit dem Scheiß ärgere ich mich schon seit Jahren herum. Und jetzt gerade mal wieder.

Obwohl das Ding ja explizit abstrakt sein und nur Datenpakete austauschen soll (und damit übrigens auch nicht wissen woll, wie diese Pakete eigentlich ausgetauscht werden, ob über Internet, Modem oder Brieftauben), und obwohl es hier nichts anderes als einfach ein Passwort im Klartext sagen soll, treibt dieses verdammte Ding eine DNS-Auflösung des Hostnamens, um seine eigene IP-Adresse aufzulösen, obwohl die hier gar nicht verwendet wird (im Testbetrieb z. B. Authentifikation gegenüber 127.0.0.1). Und geht die DNS-Auflösung schief, weigert sich dieser SASL-Kram, eine Authentifikation durchzuführen. Probiert es nicht einmal. Der IMAP-Server schickt seine initiale Grußmeldung, und der Client legt mit Fehlermeldung auf. Die Fehlermeldung kommt aber nicht vom SASL, sondern vom Client, der nur sieht, daß die Routine sasl_client_new() ein -1 zurückgibt. Sagt nur, daß es nicht OK ist, sonst nichts.

Dementsprechend hilflos fällt die Fehlermeldung von mutt aus, denn mehr als „es tut nicht” kann mutt ja auch nicht erkennen. Auf Deutsch heißt das dann

“Fehler beim Aufbau der SASL Verbindung”

Ah, ja.

Wobei man mit Linux ja schon mal einen großen Vorteil gegenüber Windows hat. Unter Linux gibt es nämlich nicht verschiedene Programme oder Betriebssyteme für die diversen Sprachen, sondern da gibt es nur eine Software, die (wenn sie denn mehrsprachig ist) die diversen Übersetzungen für die (normalerweise) englischen Originaltexte eingebaut hat. Das dumme an den deutschen Texten ist nämlich, daß man per Google kaum was dazu findet. Der größte Teil der Welt und nahezu alle Developer diskutieren Probleme nämlich in Englisch und mit den englischen Fehlermeldungen. Unter Linux ist das aber kein Problem, da stellt man einfach die Environment-Variablen LANG und LANGUAGE (bzw. die LC_…) auf Englisch und schon sieht man, wie das richtig heißt:

“Error allocating SASL connection”

Und damit kann man schon mal googlen, daß andere das Problem auch haben, aber keine Lösung.

Unter Windows bin ich an sowas schon verzweifelt. Da kann man nicht einfach mal so die Fehlermeldungen auf englisch umschalten. Bemerkenswerterweise gibt es nämlich in der Fehlerdatenbank von Microsoft ganz viele nützliche Hinweise zu vielen Problemen, die man aber nicht findet. Denn man hat nur die deutsche Fehlermeldung. In der Datenbank von Microsoft steht aber nicht die deutsche Fehlermeldung, wie sie in der Software verwendet wird, sondern das englische Original und eine maschinelle deutsche Übersetzung. Diese maschinelle deutsche Übersetzung sagt zwar meist das gleiche wie die in der Software, aber mit anderen Formulierungen und Begriffen. Findet man also nicht. Zudem habe ich es schon erlebt, daß die deutschen (menschgemachten) Übersetzungen richtig falsch waren, weil da irgendein Heini etwas falsch übersetzt hat, was er nicht verstanden und per Wörterbuch falsch eingedeutscht hat. Man versteht es erst, wenn man es unter Beachtung typischer Übersetzungsfehler zurück ins Englische übersetzt.

Naja, jedenfalls ist das unter Linux einfacher, zumal ich da wichtige Hilfswerkzeuge wie strace und den Quelltext einsetzen konnte, in den man einfach mal Debugmeldungen einbauen oder nachlesen kann, was das Ding da eigentlich macht. Unter Windows in der Regel chancenlos.

Es ändert aber nichts daran, daß die meisten Implementierungen von Security-Software hundsmiserabel schlecht sind. Damit meine ich noch nicht mal unsicher, sondern nicht zu gebrauchen, was das API und die Fehlersuche angeht. Und eben lausig und willkürlich implementiert. Ein anderer Fehler, den ich in den letzten Tagen gesucht habe, beruhte darauf, daß viele Programme die SSL-Parameter irgendwie unterschiedlich haben. Das eine sucht sich die Zertifikatschain selbst zusammen, das andere erwartet sie aufbereitet in einer Datei usw. Selbst wenn die Software kein Sicherheitsproblem im eigentlichen Sinne hat, macht es solcher Murks derartig aufwendig und kompliziert, sie einzusetzen, daß viele das erst gar nicht anpacken.

Ich hatte – wie gesagt – kürzlich einen Fehler in der SSL-Konfiguration des IMAP-Servers. In der Zertifikatschain hat ein Zertifikat gefehlt. Verblüffend, wieviele Client-Programm den IMAP-Server trotzdem akzeptiert haben. Daß der Benutzer einfach an seine Mail kommt ist wichtiger als knackige Security, also lieber gar nicht so genau nachprüfen, ob das alles stimmt. Und selbst wenn die Software findet, daß da was faul ist, dann teilen SSL-Implementierungen meistens sowas wie Fehler -4789 mit. Toll. Deshalb haben viele Programme dann einen Button, mit dem man die Prüfung abschalten kann, den dann viele Nutzer auch verwenden, um an ihre Daten zu kommen.

Diese ganze IT-Security ist derzeit überwiegend ein großer stinkender Haufen Bockmist.

Und eine Hauptursache dafür ist die Programmiersprache C. Wie ich schon öfters erläutert habe. Keine Exceptions, dafür Pufferüberläufe, keine richtigen Return-Werte usw. usw. usw. Schrott ohne Ende.

Dabei könnte man es durchaus verbessern. Unsere Regierung und die EU schmeißen jedes Jahr Millionen für lausige Forschung heraus, bei der grausige akademische Programmiersprachen mit hanebüchenen Designfehlern und nutzlose Security-Theorie entwickelt werden. Gleichzeitig schreien sie alle wie blöde wegen Terrorismus und Cyber-Krieg, daß wir nicht sicher wären und alle von den bösen Russen und Chinesen zu Tode gehackt werden. Und alles, was in der Industrie gefördert wird, muß gleich wieder gecopyrighted und kommerziell sein, Dienstleister-Umsatz-Prinzip.

Auf die Idee, daß man Forschungsgelder mal dafür vergibt, richtig gute Software zu schreiben, die man dann als Opensource kostenlos allen Bundes- oder EU-Bürgern zur Verfügung stellt, kommt da niemand.

Aber selbst wenn sie auf die Idee kämen, würde es nichts nutzen. Weil man die Sicherheitsforschungsinstitute der Universitäten mit Paper- und Antragsschreibern besetzt hat. Die, deren Aufgabe es eigentlich wäre, für Abhilfe zu sorgen, sind dazu nicht befähigt.

Und so ist der miserable Zustand der IT-Sicherheit letztlich auch eine Folge verfehlter Politik.

31 Kommentare (RSS-Feed)

HF
10.11.2011 16:30
Kommentarlink

Amen.
Einen Einwand gegen das Fazit habe ich aber doch:
Die allerlängste Zeit hat sich die Politik überhaupt nicht
um solche Fragen gekümmert. Erst seit sehr kurzer Zeit versucht sie
sich daran, mit lustigen Ergebnissen. Lange vorher ist klar geworden,
dass der “Markt” das Problem nicht lösen wird. Eine Zeitlang habe ich gehofft, dass das GNU helfen wird, aber der Jahrmarkt ist auch nicht
viel besser.

“Und eine Hauptursache dafür ist die Programmiersprache C.”
Das ist zwar richtig, klingt aber ein bisschen wie die Aussage
“Ursache des Alkoholismus ist der übermäßige Alkoholkonsum”.
Ich wäre schon zufrieden, wenn gesicherte Netzwerkverbindungen
zum Kernel gehören würden und nicht mit Bergen von Shared Libraries
und diversen Konfigurationsfiles alles im Userspace geschehen würde.
So wie in Plan 9. Die aktuellen Standards ( SSL )
laden allerdings nicht gerade zu so einem Umbau ein.


Thomas
10.11.2011 16:36
Kommentarlink

Da stellen sich mir zwei Fragen:

1. Wenn Du erkannt hast, dass es Idioten sind, warum ärgerst Du Dich mit ihnen rum (Adele…)? Ich verstehe warum Du Dich aufregst und warum Du nicht locker lassen willst, bin auch so einer, aber es führt doch offensichtlich zu nichts in Deinem Sinne.

2. Wenn Du erkannt hast, wessen ich zustimme wenngleich meine IT-Kenntnisse eher allgemein und weniger tiefgehend und sicherheitsspezifisch sind, dass die Ursache der Sicherheitsprobleme Schrott-Sprachen und Schrott-Software ist, warum entwickelst Du dann nicht mal was richtig brauchbares? Sei es nun Sprache, Software, Verfahrensweise, Kryptoalgorithmus oder was auch immer. Ich wäre dabei.


Hadmut
10.11.2011 17:03
Kommentarlink

@Thomas:

zu 1.) Weil ich da noch „unfinished business“ habe, weil ich es für der Sache selbst wert halte, die Mängel aufzuzeigen, und weil ich – wenn man es genau betrachtet – mich hier nicht über Wissenschaftler, sondern über Politiker geärgert habe, die den Mist mit Geld verfeuern. Und weil ich a) Geschädigter des Softwaremangels und b) Steuerzahler bin. Weil mich der ganze Mist gerade mal wieder insgesamt anderthalb Tage Debugging und Fehlersuche (auch wegen anderen Sachen) gekostet hat. Lauter Arbeitszeit, die nicht sein müßte.

zu 2.) Würde ich sofort machen, wenn ich dafür bezahlt würde und ein Team hätte, das groß genug ist (es ist nämlich viel zu viel um das als einzelne Person zu machen). Leider jedoch bin ich noch immer weltlichen Bedürfnissen verhaftet und auf den schnöden Mammon angewiesen, um das Dach über dem Kopf und die Butter auf dem Brot zu bezahlen. Und noch mehr am Computer sitzen geht einfach nicht. Würde mir jemand die Millionen überschütten, könnte und würde ich sowas in Angriff nehmen.

Davon ganz abgesehen hatten wir sowas schon mal. Am EISS ist in den Neunzigern ziemlich gute Software entstanden (vgl. auch RFC 1824). Wir hatten sehr früh Firewalls, sowas wie ssh, sowas wie SSL usw., das ist aber in der universitären Reibach-Geilheit und der Dummheit der beteiligten Professoren zerrieben worden. Ich wollte damals allerhand auf den Webserver packen, ist mir aber verboten worden. Frei rausgeben geht gar nicht, und online wäre sowieso eine Schnapsidee, das Web hätte keine Zukunft und wäre bald wieder tot, hieß es von oben.

Und ein paar Jahre später habe ich RMX entwickelt, das war auch frei, konnte ich aber nicht durchsetzen, weil ich aus Deutschland/Europa keinerlei Rückhalt bekommen und auf eigene Kosten allein gegen eine Wand von amerikanischen Interessen angerannt bin. Am Ende hat’s Microsoft patentiert und damit getötet.

Als Einzelkämpfer schafft man das einfach nicht (mehr), schon gar nicht neben dem Broterwerb. Zumal ich auch nicht rund um die Uhr am Rechner sitzen und arbeiten kann.


HF
10.11.2011 19:01
Kommentarlink

Noch eine utopische Frage: Kannst Du Dir ein Szenario vorstellen,
wie die jetzige, unschöne Phase der Informatik einmal enden könnte?
Oder ist das eine ferne Zukunft, die wir nicht mehr erleben werden?
Die Nacht hat zwölf Stunden, dann kommt schon der Tag.


Hadmut
10.11.2011 19:15
Kommentarlink

Vorstellen schon, aber nicht sehr realistisch.

Abgesehen davon, daß Canonical mit Ubuntu gerade anfängt zu spinnen, wäre das Prinzip des Milliarden-Mäzens ein guter Ansatz. Wenn sich mal irgendwer fände, der – wie manche Milliardäre das machen – irgendwie mal so sein Vermögen hergibt um irgendwas gutes zu tun, könnte man das machen. Wenn man bedenkt, wieviel Arbeit in Linux steckt, ist das kaum noch mal zu wuppen.

Das Problem daran ist, daß man das eigentlich vor 10 Jahren hätte tun müssen. Derzeit stünde da ein Wahnsinnsaufwand dahinter. Außerdem müßte man das gesetzlich unterstützen, denn dieser ganze Patent-/Abmahnstreit ist da hinderlich. Zudem müßte man es gesetzlich durchsetzen, daß Hardware (verbaute Chips usw.) endlich mal richtig dokumentiert werden.

Das löst aber auch die Probleme nicht. Im kommerziellen Bereich gibt es zu viele, die einfach mit allen dreckigen Methoden abzocken wollen. Im Wissenschaftsbereich rennen zu viele Spinner und Hochstapler herum. Und im OpenSource/Linux-Bereich sind in letzter Zeit erschreckend viele Idioten, Diletanten und Ideologen unterwegs. Der ganze Linux-Desktop-Bereich beruht auf OpenSource/Freiwilligen, aber die produzieren seit Jahren fast nur noch Bockmist.

Es heißt gelegentlich, daß die Jüngeren das immer besser können, daß die „Digital Natives” da so super wären. Das stimmt aber nicht. Ich glaube, wir haben den Peak hinter uns, was die Qualität angeht.


Alex
10.11.2011 19:15
Kommentarlink

Eigentlich müsste man in dem fall hier – da open source – eine änderung recht einfach anstoßen können;
Ansich sind ja auch die opensource entwickler nicht prinzipiell dumm, sondern machen auch einfach nur fehler.


Hadmut
10.11.2011 19:26
Kommentarlink

@Alex: Das hab ich inzwischen aufgegeben.

Viele OpenSourcler sind inzwischen irgendwelche Freaks, die da ihren persönlichen Trip durchziehen und wirklich nicht mehr durch Hinweise erreichbar sind. Bugreports, Beschwerden, Vorschläge, Kritik usw. werden immer öfter ignoriert und Fehler bewußt gebaut, weil das „so sein muß”. Aufgrund der immer höheren Komplexität haben die Leute immer weniger Überblick, was gebraucht wird, sondern hacken irgendwas nach gusto zusammen und lassen sich dann auch nichts mehr sagen.

Nur mal ein Beispiel von vielen:

Linux ist so gebaut, daß er auf einem IPv6 Interface nicht gleichzeitig routen und autokonfiguration machen kann. Das braucht man aber, wenn man beispielsweise einen Rechner als Tunnelrouter einsetzen will. Trotzdem macht der Kernel nur eins von beiden, aber nie beides zusammen. Ich hab mal gemeldet, daß das ein Fehler ist. Sogar einer der ganz hohen Kernel-Priester meinte, daß mein Ansinnen berechtigt ist, er es aber inzwischen aufgegeben hat, die Leute zu überzeugen, und ich mal selbst mein Glück versuchen sollte. Erfolglos. In irgendeinem RFC zu IPv6 steht so ein labbriger Satz, daß in einem IPv6-Netz Geräte teilnehmen, die entweder Router oder Rechner sind. Und wegen dieses einen Satz bauen sie das so, daß Linux nicht beides gleichzeitig zuläßt, obwohl es dafür keinen vernünftigen Grund gibt und das nur so nebenbei und unüberlegt in den RFC gelabert war. Es gibt aber Leute, die RFCs als unantastbare und unfehlbare Heiligtümer ansehen, also wird das gesperrt. Weil man aber in einem Heimnetz mit dynamisch zugewiesenen IPv6-Adressen ohne Autoconfiguration kaum auskommt, kann man da keine Tunnelrouter mit Linux betreiben. Reiner Unfug, aber die sind nicht zu überzeugen.

Oder ich hatte mal drauf hingewiesen, daß die Kernel-Sourcen fehlerhaft mit Schreibrechten für alle in die Archive gepackt werden. Wenn man sie auspackt und ein chmod vergißt, könnte einem ein Nutzer der Maschine eine Backdoor in die Kernelsourcen schmuggeln. Sehen sie nicht ein. Das bräuchte man, weil man die Kernel-Sourcen ja angeblich „aus Sicherheitsgründen” nicht als root, sondern als Benutzer kompilieren und mit sudo installieren soll, und es dabei bequemer wäre, wenn die für alle zum Schreiben offen sind. Als ob das irgendwie sicherer wäre.

Im OpenSource-Bereich sind inzwischen ziemlich viele Deppen unterwegs. Und das ist ein gewaltiges Problem.


HF
10.11.2011 20:35
Kommentarlink

“Linux ist so gebaut, daß er auf einem IPv6 Interface nicht gleichzeitig routen und autokonfiguration machen kann.”
Meinst Du das:
http://strugglers.net/~andy/blog/2011/09/04/linux-ipv6-router-advertisements-and-forwarding/
Da scheint sich jemand durchgewühlt zu haben:
“There is a valid argument that a router should not be autoconfiguring itself, and should have its addresses and routes configured statically. Linux has IP forwarding features for a reason though, and sometimes you want to forward packets with a Linux box while still enjoying autoconfiguration. In my case I have some hosts running virtual machines, with IPv6 prefixes routed to the virtual machines. I’d still like the hosts to learn their default route via SLAAC.

It’s taken me a long time to work out how to do this. It isn’t well-documented.”


Hadmut
10.11.2011 21:46
Kommentarlink

@HF: Ja, das meinte ich. Aber das ist schon etwas her, das war noch vor dem Kernel 2.6.37, den der da erwähnt. Könnte freilich sein, daß mein Vortrag doch erhört wurde oder zumindest beigetragen hat.

Das mit dem “valid argument” stimmt, solange man sich in einem Land wie den USA ohne Datenschutz bewegt, in dem die Netzwerk-Evangelisten predigen, daß NAT und dynamische Adressen ja alles nur provisorisches Teufelszeug ist, das es eigentlich nicht mehr geben dürfte. Da die es dort mit der Anonymisierung und dem Datenschutz nicht so haben, gehen die auch nicht davon aus, daß man dort als DSL-Kunde die IPv6-Adressen dynamisch, sondern statisch bekommt. Und dann kann man freilich (wie auch wenn man Rechner beim Hoster oder im Firmennetz) hat, alles statisch konfigurieren. Dann stimmt das auch, daß man nicht beides zusammen braucht.

Hier in Europa ist aber Datenschutz angesagt, zudem arbeite ich derzeit noch über 6to4, weshalb mein IPv6-Netz immer von der dynamisch zugewiesenen IPv4-Adresse abhängt. Und weil mein Router (Fritzbox) kein IPv6-DHCP kann (und ja eigentlich auch nicht braucht), muß ich die Rechner über die Autoconfiguration laufen lassen. Also war’s nix mit dem Einschalten des Routings. Wenn sie es nun doch implementiert haben, ist das schön. Aber damals wollten sie es partout nicht einsehen.


Alex
10.11.2011 21:01
Kommentarlink

Und vermutlich sind auch mehr fähige Leute als früher unterwegs.

Aber ich glaube ein wesentliches problem ist wirklich die Komplexität — wer will sich da schon noch hineinarbeiten.

Da zum ipv6 kernel Problem sehe ich nur als Lösung ausser es selber machen, zu versuchen eine Addition für die RFC vorzuschlagen, damit dieser Satz klar (in einem vernünftigen Sinne) wird.

Ein wichtiges Problem bei den Opensourclern ist denke ich, dass viele unter zwang stehen, dem Projekt “den eigenen Stempel” aufzudrücken;
das kann man ja besonders gut beobachten, wenn äusserst enthusiastisch irgendwelchen Nebensächlich keiten “diskutiert” werden (sprich dinge, bei denen jeder eine Meinung verbreiten kann)


Hadmut
10.11.2011 21:48
Kommentarlink

@Alex: Es sind – in absoluten Zahlen – mehr fähige Leute unterwegs als früher. Es gibt dazu aber überproportional mehr unfähige Leute und mehr Aufgabe, so daß der relative Anteil der fähigen Leute eher sinkt.

Ein anderes Problem ist, daß die Komplexität der Sache enorm angestiegen ist. Man muß heute viel mehr drauf haben als früher, um „fähig” zu sein.


yasar
11.11.2011 11:12
Kommentarlink

@hadmut “… weil mein Router (Fritzbox) kein IPv6-DHCP kann … ”

Welches Modell ist es denn? Es gibt Modelle, z.B. die 7390 oder 7270, die IPv&-Unterstützung eingebaut haben.

Außerdem kann man mit Hilfe von Projekten wie freetz seine eigenen Module in die Fritzbox einbauen, u.a. auch IPv6-unterstützung (noch mit Haken und Ösen, aber funktiniert anscheinend.

Allerdings:

Bei der AVM-Implementaion auf der 7270 gibt es anscheinend performance-Probleme, wenn ich IPv6 aktiviere. Manchmal sinkt der Druchsatz, manchmal bootet die Kiste durch ohne erkennbaren Grund. Kann ich aber noch nicht direkt den Finger drauflegen, ob das wirklich mit IPv6 Zusammenhängt. Zumindest funtkioniert die 7270 ohne IPv6 stabiler als mit.


Hadmut
11.11.2011 12:12
Kommentarlink

@Yasar: IPv6 läuft auf der Fritzbox prima. Nur erfolgt die Adressvergabe eben nicht per DHCP, sondern per Advertisements. Eigentlich reicht das, man braucht das DHCP für IPv6 nicht. Nur mit dieser dämlichen Kernel-Entweder-Oder-Konstellation geht’s eben nicht, liegt aber an Linux und nicht an der Fritzbox.


Thomas
12.11.2011 14:53
Kommentarlink

@Hadmut Sinnvolle Ipv6 Kernelimplementation hin oder her, der Sinn von IPv6 erschließt sich mir sowieso nicht. Der vorbegliche Grund ist doch ein ausgenutzer Adressraum von IPv4, oder?

Allein wenn man nicht bei 255 aufhören würde, wäre der Adressraum viel größer, von 0.0.0.0 bis 999.999.999.999 ist viel Platz. Und wenn ich sehe dass Class E immernoch für zukünftige Anwendungen reserviert ist, wann denn zukünftig wenn IPv4 abgeschafft wird? Wenn die Ziffern nicht nur Werte von 0-9 sondern auch von a-z annehmen können ist noch mehr Platz. Noch mal mehr wenn case-sensitive.

Selbst wenn der Platz aufgebraucht sein sollte könnte man sparsamer mit den IPs umgehen. Sowieso, oder, wenn man es erweitern will, indem man Providern eine IP gibt und alle dahinterliegenden Kundengeräte nicht über eigene IPs sondern über die Provider-IP + Hash anspricht. Das müsste man dem Webserver erklären, gut, aber das sollte doch weniger aufwendig machbar sein als eine neue IP-Version.


Hadmut
12.11.2011 16:20
Kommentarlink

@Thomas: Da verwechselst Du was, IPv4 beruht ja nicht auf Dezimalzahlen, sondern auf 32 Bit-Adressen, die man eben als vier getrennte Bytes schreibt. Deshalb geht jede der vier Zahlen nur von 0 bis 255 (2 hoch 8). Und weil ein Teil anderweitig verblpant ist, geht die erste sogar nur bis 223.

Und du kannst die Bits ja auch nicht besser ausnutzen, nur weil Du sie Dezimal (also in der für Menschen lesbaren Darstellung) schreibst. Denn um sie bis 999.999.999.999 schreiben zu können oder gar a-z + case-sensitive, bräuchtest Du ja statt 32=4*8 sogar 4*10=40 oder gar 4*24=96 Bit. Was Du vorschlägst, läuft also wieder darauf hinaus, ein neues Protokoll mit mehr Bits zu erzeugen. Und genau das haben sie ja mit IPv6 gemacht, nur daß es eben nicht wie in Deinen Vorschlängen von 32 auf 40 oder 96 sondern gleich auf 128 Bit erweitert wurde. Der Irrtum, dem Du unterliegst, ist anzunehmen, daß der Computer auch mit dieser Schreibweise xxx.xxx.xxx.xxx arbeiten würde. Tut er aber nicht. Er arbeitet mit 32 Bit und stellt sie nur so dar, wenn der Mensch sie lesen will. Und Provider+Hash ist auch nichts anderes als eine verlängerte Adresse, zumal es den „Hash” bei IP-Adressen nicht gibt, sowas gibt’s bei URLs.

Außerdem übersiehst Du, daß man IP-Adressräume nicht effizient ausnutzen kann, weil man sie nicht beliebig und vollständig vergeben kann. Die Vergabe von IP-Adressen beruht auf Prefixen, und die dürfen auch nicht zu komplex werden, um das Routing überschaubar zu halten. Deshalb geht es mit IPv4 nicht weiter.

Laß es mich mal so formulieren: Daß Du die Notwendigkeit von IPv6 nicht nachvollziehen kannst, liegt daran, daß Du schon bei IPv4 ein paar Dinge überhaupt nicht verstanden hast und falsch interpretierst. Laß Dir mal von jemandem, der sich damit gut auskennt, erklären, wie das läuft, und vor allem, was ein Dualsystem ist (oder generell was es mit Zahlensystemen zu beliebigen Basen auf sich hat) und warum man da nicht einfach 555.555.555.555 verwenden kann. Du mußt verstehen, daß ein Bit nur zwei, 8 Bit nur 256 (= 2 hoch 8) und 32 Bit nur 4294967296 (= 2 hoch 32) verschiedene Zahlen/Adressen darstellen können, also nur etwa 4 Millliarden und nicht 1 Billion oder mehr, wie Du unterstellst.


Thomas
12.11.2011 16:18
Kommentarlink

@Hadmut Nochwas spricht gegen IPv6. Die Überwachungsmöglichkeiten durch die Generierung der Adresse aus der Hardware, die ich gerade versucht habe auszuschalten (Privacy Extensions), funktionierte natürlich nicht, war ja klar.


Hadmut
12.11.2011 16:22
Kommentarlink

@Thomas: *Seufz* Daß das bei manchen Betriebssystemen nicht funktioniert, ist ein Problem der Implementierung und nicht von IPv6. Unter Linux funktioniert’s. Zudem wird die auch nur bei der Autoconfiguration verwendet, und die muß man ja nicht verwenden.


Alex
12.11.2011 16:39
Kommentarlink

@Hadmut
Meines wissens funktioniert die ipv6 Privacy Extensions mit ein/ausschalten unter windows, das ist allerdings in der netsh versteckt (und muss als admin ausgeführt werden)


Hadmut
12.11.2011 16:43
Kommentarlink

@Alex: Von Windows hat er ja nix gesagt. Gibt ja inzwischen alles mögliche, was IPv6 spricht, auch Tablets. Und die haben nicht alle die Privacy Extension.

Unter Windows hab ich es selbst noch nicht probiert, aber so irgendwo im Hinterkopf, daß es bei XP irgendwann mal nicht ging.

Hilft aber alles nichts wenn man die Sache mit den Bits und Bytes nicht verstanden hat. Das ist so ähnlich wie wenn man versucht Safer Sex zu treiben und die Sache mit den Bienen und den Blumen nicht verstanden hat.


kryptart
12.11.2011 17:22
Kommentarlink

Also kürzlich wurde mal irgendwo, ich habe leider keinen Link präsent, die Frage gestellt, welche IT-Entscheidung aus der Vergangenheit wohl bisher den gößten wirtschaftlichen Schaden angerichtet hat. Wobei z.B. Entscheidungen auf Programmier-Ebene im Blickwinkel standen, keine Management-Entscheidungen.
Entschieden hat man sich für die NUL_terminated strings in C.

Wenn man auf eine OpenSource-Konferenz geht und sieht, daß da gut die Hälfte der Typen mit ‘nem Macbook auf dem Schoß dasitzt, wundert man sich über manche Sachen nicht mehr!


Alex
12.11.2011 21:04
Kommentarlink

Wieso? Auf Macbooks kann man doch ganz passabel zB linux betreiben.
Ist ja nix anderes als ne normale x86er cpu


Hadmut
12.11.2011 21:08
Kommentarlink

@Alex: Also ich find die jetzt auch nicht so schlecht. Keine Ahnung, was kryptart damit meinte, aber der spinnt hier manchmal so rum um sich wichtig zu tun. Nimm’s als Trollerei.


Thomas
14.11.2011 14:19
Kommentarlink

@Hadmut Die Privacy Extension habe ich unter Linux versucht, Ubuntu (IPv6 vorhanden, zwangsweise aktiviert). Geht trotzdem nicht. Ob Autoconfig oder nicht, was weiß ich, meine Netzwerkkarte hat zusätzlich eine IPv6 IP, ich brauche den Mist nicht, er ist halt da und da ich ihn nicht deaktiviert bekomme habe ich zumindest versucht die Verbindung zu meiner Hardware rauszunehmen. Schlimm genug dass IPv6 das überhaupt erfordert.

Das mit IPv4 habe ich im Detail tatsächlich nicht verstanden, der Vorschlag rührte aber nicht ausschließlich von Unverständnis sondern auch von dem Umstand her, dass ich diesen Typen, der festgelegt hat dass ein byte acht bit sind gerne erwürgen würde. Das halte ich für ziemlichen Unsinn. Ein Computer würde durchaus 999.999.999.999 oder a9Z.3kv.008.v1j verstehen, wenn er nicht so an seinem althergebrachten, fachlich kaum sinnvoll begründbaren Zählsystem festhalten würde.

Was die von Dir angesprochene Komplexität betrifft, wie Du siehst habe ich nicht mal IPv4 komplett verstanden, IPv6 verstehe ich erstrecht nicht weil das ist vergleichsweise deutlich komplexer.

Wer sagt denn dass man Hashes nur bei URLs verwenden kann? Du bist doch sonst, berechtigterweise, so gegen Denkverbote, und verwendest sie selbst wo sie per definitionem nichts zu suchen haben, beim chiffrieren. Es sei denn ich habe auch Deine Dissertation in dieser Hinsicht nicht verstanden.


Hadmut
14.11.2011 14:25
Kommentarlink

@Thomas: Sorry, wenn ich Dir das mal so direkt sage, aber Du hast einige Sachen (wie das mit Zählsystemen usw., schon der Begriff liegt falsch) wirklich nicht verstanden.

Ich rate Dir da dringend, dich erstmal mit dem Verstehen zu beschäftigen oder an jemanden zu wenden, der sich damit auskennt.

Ich will Dir das mit dem „Hash” (was auch immer Du damit jetzt eigentlich meinst) auch nicht als Denkverbot auferlegen. Was auch immer Du als Adresserweiterung verwenden willst, ist nichts anderes als eine Verlängerung der IP-Adressen. Und genau das macht ja IPv6. Ich will’s Dir nicht verbieten, schon gar nicht zu denken. Aber Du mußt einfach begreifen, daß das, was Du vorschlägst (999…. , Hash) ja nichts anderes ist als das, weshalb Du IPv6 kritisierst – eine Verlängerung der IP-Adresse.

Und das mit der Privacy Extension hast Du vielleicht auch falsch verstanden, weil die sich nicht auf die Link Local-Adresse bezieht sondern auf die per Advertising zugeteilten Adressen. Da siehst Du womöglich einen Fehler, wo keiner ist.

Aber nochmal: Das bringt’s nicht, mit so lückenhaftem Wissensstand hier rumzudiskutieren oder auf IPv6 herumzuhacken. Schau erst mal, daß Du das mit den Bits und den Zahlen und das IPv4 verstehst.


Alex
14.11.2011 14:35
Kommentarlink

vieleicht noch um einen draufzusetzen:
Es ist _völlig_ egal, welches Zahlensystem man verwendet.
Ob nun 2, 3, 10, 60 oder 793 als Basis gewählt wird macht keinen Unterschied.


Hadmut
14.11.2011 14:51
Kommentarlink

@Alex: Technisch ist es völlig wurscht, das stimmt. Didaktisch ist es aber schon ein Unterschied. Denn daß es egal ist, muß man erst mal verstehen, und das hat Thomas eben nicht verstanden.

Und als Informatiker lege ich natürlich Wert darauf (und habe schon angedeutet), daß das Zahlensystem hier sowieso nur der Darstellung für den Menschen und nicht der internen Verarbeitung dient.

Natürlich können Computer so ziemlich jedes beliebige Zahlensystem verstehen und auch „a9Z.3kv.008.v1j” – das ändert aber alles nichts daran, daß man es intern speichern muß und daß es die Zahl der möglichen IP-Adressen vergrößert (was er ja gerade erreichen will), man also dazu mehr Speicherplatz benötigt. Thomas glaubt offenbar, daß der Computer daran festhält, im Schema „xxx.xxx.xxx.xxx” beliebige Textzeichen unterzubringen, weil er nicht verstanden hat, daß das nur die für den Menschen bekömmliche Darstellung ist, intern aber nicht mit 12 Zeichen und drei Punkten, sondern einfach mit 32 Bit gearbeitet wird, und man nicht darum herumkommt, mehr Bits zu verwenden. Wie man das dann darstellt, ist davon unabhängig und eigentlich irrelevant. Das ist für den Laien aber schwer zu verstehen.


Thomasf
15.11.2011 19:05
Kommentarlink

@Hadmut Dass ich bei der Darstellung einen Denkfehler hatte, habe ich verstanden. Solange Du aber an dem (mit welcher Begründung eigentlich?) Computern zugrunde liegenden Zahlensystem (was bei genauerer Betrachtung auch ein Zählsystem ist, dezimal zählt man nämlich anders, zumindest war das bei mir in der Grundschule noch so) festhältst, wirst Du nicht nachvollziehen können warum ich eine IPv4 basierte Erweiterung für sinnvoller halte. Meine Kritik bezog sich auch (Verständnisfehler meinerseits) auf die Darstellung, aber ebenso (da muss man vom Computerzahlensystem und den 32 Bit weg) auf die Grundlage der Problems.

Aber ich wollte, sei mein Teilweissen nun ausreichend oder nicht, gar nicht darüber diskutieren. Wenn ich mich auf eine Diskussion einlasse, dann nur zu Themen die ich 100% beherrsche. Insofern werde ich mich hüten zu IPs einen ernsthaften Vorschlag zu machen, dafür wäre das hier auch der falsche Ort. Ich wollte nur kommentieren, dass ich IPv6 aus verschiedenen Gründen (Komplexität vor allem in der Notation, zusätzliche Überwachungsmöglichkeit) schlecht finde und einen sparsameren Umgang mit IPv4 oder eine Erweiterung auf der Basis von IPv4 (unterschiedliche Werte wären ja schon ausreichend, so dass es Hashes nichtmal bedarf) besser gefunden hätte. IPv6 ist nämlich genau das, was Du schon indirekt angesprochen hast, eine Ausgeburt der Informatikerdenke, wie schon das zugrunde liegende Zahlensystem, und diesen Ansatz halte ich für falsch.


Hadmut
15.11.2011 19:39
Kommentarlink

@Thomas: Du nervst. Weil Du auf einem Irrtum beharrst und Dir partout nicht die Mühe machen willst Dich zu informieren, bevor du über irgendwas herumdiskutierst.

Und das bin auch nicht ich, der da am Binäradressen festhält, sondern das steht in der Definition von IPv4. RFC 791, siehe http://www.ietf.org/rfc/rfc791.txt Du kannst nicht andere Zahlen einführen, ohne den Header größer zu machen, weil der eben nur für 32 Bit Platz hat.

Und wenn Du ein anderes Zahlensystem verwendest, dann ist es eben nicht mehr IPv4, weil IPv4 auf Adressen mit 32 Bit beruht. Denk mal drüber nach, daß man mit 32 Bit nur 4 Milliarden verschiedene Adressen darstellen kann, wir aber inzwischen 7 Milliarden Menschen haben.

Du hast nur an einer einzigen Stelle Recht: Man muß von 32 Bit weg. Und genau das macht IPv6. Kapier doch endlich mal, daß IPv6 genau das macht, was Du die ganze Zeit als Alternative vorschlägst, nämlich mehr Platz im Header.

Und Binärzahlen bzw. Binärarithmetik sind Dezimalzahlen bzw. Dezimalarithmetik in diversen Hinsichten weit überlegen und sehr viel effizienter. Deshalb macht man es. Das Zehnersystem hat überhaupt keinen Vorteil, außer daß es einem intuitiv erscheint, weil man zufällig zehn Finger hat. Die gesamte Computertechnik läßt sich mit Binärsystemen viel einfacher und effizienter aufbauen. Dezimalsysteme brauchen nicht nur einen viel höheren Schaltungsaufwand, sondern sind auch unsinnig, weil man die Dezimalziffer doch wieder mit 4 Bit darstellen muß, dabei aber 6 von 16 Codierungen ungenutzt läßt.

Ich war übrigens auch mal auf der Grundschule und habe jahrelang dezimal gerechnet. Als Informatiker lernt man übrigens, mit jedem beliebigen Zahlensystem zu rechnen, nicht nur mit dem 2er oder dem 10er. Beispielsweise auch mit dem 37er Zahlensystem. Weil Informatiker sich mit sowas ganz dolle auskennen. Und weil sie sich damit so dolle auskennen, wissen sie, daß es mit dem Zweiersystem einfach am besten und einfachsten geht.

Da ich aber weder für IPv6 noch für Binärsysteme verantwortlich bin und diese auch nicht entschieden habe, bist Du bei mir an der falschen Adresse mit Deinen Beschwerden. Da mußt Du Dich an die IETF wenden, weil die das normiert haben. Schreib’s denen und nicht mir. Die IETF ist eine offene Organisation, da darf jeder, der Lust hat, Vorschläge einreichen und neue Protokolle entwickeln.

Für falsch halten darfst Du das gerne. Wir haben Meinungsfreiheit.


Alex
15.11.2011 23:21
Kommentarlink

Möglicherweise würde Thomas gerne auf eine dynamische und nicht fixe Größe hinaus, die dann etwa null-terminiert sein könnte.

Das wäre allerdings aus technischer Sicht sehr gefährlich (fehleranfällige Leitung)

@Thomas
“Zahlensystem (was bei genauerer Betrachtung auch ein Zählsystem”
Der Begriff ist nunmal Zahlensystem.
Und man verwendet Zahlensysteme um Zahlen darzustellen, und manchmal auch um damit dann zu zählen.
Aber es ist ein fixierter Fachbegriff, der noch nichtmals schlecht gewählt ist.


Hadmut
15.11.2011 23:34
Kommentarlink

@Alex: Ach, da könnte man noch mehr dran kritisieren. Ein Zahlensystem ist nicht „bei genauerer Betrachtung auch ein Zählsystem”, weil man bei genauerer Betrachtung erkennen würde, daß das nichts anderes ist. Zählen ist nämlich eine Abbildung auf eine geordnete Menge. Und Zahlen sind ja nichts anderes als geordnete Elemente.

Wobei ich als Tutor und in Vorlesungen immer größten Wert darauf gelegt habe, daß nicht die Zahl, sondern nur deren Darstellung aus einem Zahlensystem zur Basis x kommen kann. 5 ist 5, egal in welchem Zahlensystem. Erst die Darstellung der Zahl als Zeichenkette in dann Dual, Dezimal, Hexadezimal oder sowas. Bei Thomas sind zwar der gute Wille und im Prinzip auch die richtigen Überlegungen dar, aber es fehlt einfach so sehr am Grundwissen, daß er sich gerade heillos verirrt und verstolpert. Gerade weil er auch nicht zwischen Zahl und Darstellung unterscheiden kann.


datenwolf
16.11.2011 16:22
Kommentarlink

> [Hadmut] Der ganze Linux-Desktop-Bereich beruht auf OpenSource/Freiwilligen, aber die produzieren seit Jahren fast nur noch Bockmist.

Amen.

Leider sind die betreffenden Entwickler oft auch kaum zur Kritik faehig. Vor ein paar Wochen hatte ich mich koestlich amuesiert, als ein paar Desktop-Entwickler auf der LKML ordentlich auf was den Deckel bekommen haben, weil deren Wuensche so hahnebuechern waren und riesige Sicherheitsprobleme mit sich gebracht haetten, dass sich jedem der sich ein wenig mit den Details auskennt, die Zehennaegel aufrollten.