Keine Software ist 100% Open Source.
Angenommen, ich vertraue niemandem und möchte 100% Open Source Software verwenden, die ich selbst kompiliere (von Firmware mal abgesehen).
Um Open Source Software zu kompilieren, brauche ich einen Compiler. Aber ein Closed Source Compiler ist nicht vertrauenswürdig, da er Schadcode in meine kompilierte Open Source Software einfügen könnte. Ich brauche also einen Open Source Compiler, um Open Source Software zu kompilieren. Aber wie kompiliere ich einen Open Source Compiler?
Um einen Open Source Compiler zu kompilieren, brauche ich einen Compiler. Aber ein Closed Source Compiler ist nicht vertrauenswürdig, da er Schadcode in meinen kompilierten Open Source Compiler einfügen könnte. Ich brauche also einen Open Source Compiler, um einen Open Source Compiler zu kompilieren. Aber wie kompiliere ich einen Open Source Compiler?
Mist. Die Katze beißt sich in den eigenen Schwanz. 🤯
11 Antworten
GCC.
Die erste Version wurde von Stallman in Assembler geschrieben -> Open Source
Jede weitere Version wurde mit einer Version von GCC compiliert, von der die Abstammung klar ist. Du solltest also von der ersten Version ausgehend, jeweils die nächste Version compilieren können, und solltest damit das exakt gleiche Binary der aktuellen Version erzeugen können.
Compiler, lustig ;) du musst paar Stufen weiter unten anfangen.
Bereits das Betreibsystem ist Fremder Code. Also benötigst du ein eigenes Betriebssystem bevor du irgendwas anderes machst.
Open Source heißt nur das der Code einsehbar ist nicht mehr und nicht weniger. Im Übrigens nur so am Rande, nur weil etwas Open Source ist heißt das nicht das es kostenlos ist ;)
Tja dann musst du das wohl auch selber Programmieren. Ach und wenn wir dabei sind. Hardware kann auch Einfluss auf die Software nehmen also musst du auch deine eigene Hardware bauen um sicher zu sein.
Aber alles das hat nichts mit open Source zu tun. Es geht nur darum das der Code des Programm zugänglich und Veränderbar ist.
Und das ist auch mit einem nicht open source compiler
Ja, aber vertrauenswürdig ist es dann nicht mehr.
Und? Wer behauptet das Open dorce vertrauenswürdig ist?
Joa, willkommen in der Realität, irgendwem musst Du immer vertrauen.
Du könntest einen eigenen Compiler mit Assembler-Code entwickeln und dann im Maschinencode einen Assembler entwickeln, der deinen Compiler in Maschinencode übersetzt. Ggf. gibt es sowas auch schon, würde mich nicht wundern.
Dnach kannst Du diesen Compiler für alles weitere nutzen.
Aber auch dann musst Du irgendwem vertrauen, z.B. läuft alles durch dein Betriebssystem, das eingreifen könnte, oder die CPU manipuliert irgendwie. Es könnte auch sein, dass das Betriebssystem oder ein anderes Programm (das Betriebssystem besteht aus 100en Programmen) nachträglich dein Programm manipiliert.
Fakt ist:
Die gesamte Menschheit basiert seit Jahrtausenden auf Vertrauen.
Wer niemandem vertraut, hat effektiv verloren.
Viel eher solltest Du inhaltlich darüber nachdenken, wie vertrauenswürdig etwas ist, z.B. sind Videospiel-Trailer oder Cracking-Tools ziemlich sicher nicht vertrauenswürdig, in Notepad++ würde es mich aber sehr wundern, wenn darin ein Virus gefunden wird. Und in einem Compiler würde ich als letztes einen Virus vermuten - außer wenn die Person, wie mir ein Programm mit dem Quellcode als "sicher" verkaufen will, aber dazu schreibt, dass es ausschließlich mit den extra bereitgestellten Compiler-Binaries ohne Compiler-Sourcecode funktioniert - das klingt dann doch sehr fischig.
Mit Cracking Tools meinst du unseriöse Skriptkiddy Tools, oder? Wenn ich eine Software cracken muss, dann verwende ich dafür bekannte Open Source Software wie ghidra und gdb. Die ist meiner Meinung nach schon ziemlich vertrauenswürdig. ghidra wird sogar von der NSA, der nationalen Sicherheitsbehörde unserer amerikanischen Freunde, entwickelt. 🇺🇸🗽🦅
Ich meine damit z.B. Programme, die versprechen, ein kostenpflichtiges Spiel kostenlos nutzbar macht, oder eben generell alles, was für irgendwelche illegalen Aktivitäten gemacht wurde.
Ich meine damit nicht Reverse Engineering, das ist nicht problematisch (für manche auch täglicher Arbeitsalltag), aber es erfordert einiges an zusätzliches KnowHow, um sozusagen "zu Fuß" ein Spiel zu cracken. Wenn aber ein Programm sowas wie "Klick and Crack" verspricht, sollte man das immer mit sehr viel Vorsicht betrachten.
Also wenn du niemanden vertraust, dann liest du dir auch die zig oder hundert Millionen Zeilen an Code durch, die du da kompilieren willst und verstehst sie, bevor du das tust?
Das betrifft natürlich auch die Abhängigkeiten, denn heute setzt Software oft auf vorhandene Software auf und ist selten völlig self-contained.
Willst du ganz vorne anfangen, dann ist der erste Compiler eben in Assembler geschrieben und gut ist.
Aber um die Paranoia noch ein wenig zu erhöhen, du redest von Software, die du beeinflussen kannst. Was ist denn mit der Hardware. Ggf. hat ja jemand was ganz böses in die Architektur deines CPUs versteckt, mal davon ab dass Sicherheitslücken gerade in den letzten Jahren hier vermehrt aufgetreten sind.
Btw wenn wir weiter gehen zu Themen wie Absichten und co. und die Unterstützung der großen Konzerne, dann muss man sich natürlich auch noch vor Augen führen, dass das meiste Geld für OpenSource auch wieder von den großen Tech-Firmen kommt.
Compiler wie bspw. LLVM können sich selbst compilieren (über Clang). Daher wird LLVM mittels Open Source compiliert.
Um LLVM mit LLVM zu kompilieren, braucht man aber erst mal ein kompiliertes LLVM. Woher nimmt man das, wenn man niemandem vertraut?
Woher nimmt man das, wenn man niemandem vertraut?
Das ist dann aber eher ein persönliches als ein technisches Problem.
Schau dir die Versiongeschichte von LLVM an und sieh nach, ob irgendwann mal Closed Source involviert war.
Übrigens wieder die meiste Closed Source Software mit Open Source Compilern übersetzt.
Um ein Betriebssystem zu kompilieren, braucht man einen Compiler. Und da wären wir wieder beim alten Problem.