Hey NativeNetwork!
Ich hab hier mal wieder einen kleinen Beitrag aus aktuellem Anlass.
Vor ein paar Tagen habe ich wieder mit ein paar Leuten über die Vor- und Nachteile von OpenSource diskutiert und möchte dazu auch euch noch einmal was erzählen (*nerv*).
Ich versuche mich heute etwas kürzer zu halten, weil ich noch viel zu tun habe und die meisten irgendwann eh wieder abschalten (ja ich hab ein Problem mit der Länge meiner Texte, das ist bekannt).
Konkret geht es um das Argument:
Zitat"Wenn jeder meinen Code sehen kann, ist er ja nicht mehr sicher und jeder kann Bugs finden und nutzen."
Wo liegt das Problem?
Hierbei handelt es sich um eine der bekanntesten Ausreden warum Entwickler (auch von freier Software) ihren Code nicht teilen wollen. Klar, die meisten schämen sich nur zurecht für ihren Code und andere brauchen das Gefühl von Macht, das mit der Abhängigkeit anderer Leute einhergeht, aber manche glaube auch wirklich an diese Ausrede.
Das Problem ist nicht der Wahrheitsgehalt der Aussage, sondern, dass die Anwendung der betroffenen Leute meist eben wirklich durch OpenSource Code gefährdet wäre.
Beim Schaffen von Sicherheit gibt es immer zwei Ansätze:
- Man entwickelt etwas, das selbstständig sicher ist
- Oder man entwickelt etwas und sichert es durch Chaos und Umwege
Letzteres ist auch gemeinhin als "Security through Obscurity" bekannt und eine nicht gerade seltene Krankheit in der Sicherheitstechnik.
Wenn man als Entwickler auf diese oben genannte Ausrede zurück greifen muss, dann hat die eigene Anwendung genau diese Krankheit, denn sie ist schlichtweg schlecht! (Sorry but not sorry)
Doch wie löst man dieses Problem?
Es hilft ungemein, von Anfang an OpenSource zu entwickeln (oder so zu tun als ob).
Das bedeutet, man hält bei jeder Entscheidung den Gedanken im Kopf, dass jeder sehen kann was hier gemacht wird. Dadurch vermeidet man schon große Fehler. Secrets im SourceCode kann man sich so nicht leisten, Obscurity ist keine Option und auch die Code Quality kann dadurch schon gesteigert werden, man will eben nicht, dass jeder sieht wie schlampig alles ist .
Als Beispiel:
Ich arbeite selbst seit einiger Zeit mit Cluster Systemen (Docker, Kubernetes, Google Cloud etc...) und dabei verwendet man gemeinhin einen Ansatz der sich Infrastructure-As-Code nennt. Die gesamte Infrastruktur wird durch Code/Configs etc. beschrieben und man fasst die Systeme selbst nicht mehr an. Wenn ich diese Configs nun OpenSource stellen würde (was wir getan haben: https://git.play-net.org/playnet-public/cluster-2-config) muss ich mir einen Weg überlegen wie ich Secrets manage.
Der Rest ist dadurch aber nicht betroffen sondern profitiert davon. So kann ich zum Beispiel eben jene Config überall wieder verwenden und auf einem neuen Server X genau diese Config auch verwenden.
Kurze Abschweifung aber ich hoffe ihr versteht was ich damit meine.
Doch ich erzähle euch hier nicht nur Märchen, es gibt auch Beispiele aus der großen weiten Welt... Werft mal einen Blick auf OpenSSL, Open Source aber DAS System mit dem wir alle den Großteil unserer Sicherheit am Leben erhalten!
Wenn ihr also etwas entwickelt, versucht mal so zu arbeiten. Von mir aus bleibt closed source und denkt nur daran alles so zu machen als wäre es open (man kann trotzdem nicht alles Open Source machen, klar).
Ich verspreche euch, dass es hilft.
Wenn ihr nicht anders könnt, weil ihr keinen Weg findet ohne Obscurity zu arbeiten, dann macht entweder ihr etwas falsch oder die Technologie mit der ihr arbeitet.
(Ich kann mir vorstellen, dass es mit diesem SQF "Verschlüsseln" so in die Richtung geht, darum ist aber auch das Wort "Verschlüsseln" vermutlich falsch)...
Bei Fragen oder wenn ihr Unterstützung bei eurem Entwicklungsprozess sucht, meldet euch gerne bei uns.
Wenn sich die Entwickler Community nicht hilft, wie soll dann unsere Software besser werden!
Ein großer Teil des Konzepts bei PlayNet ist es, eben genau das zu tun und Entwicklern in der Gaming Welt zu helfen. Also scheut keine Fragen
Grüße,
Finch