Frage zu "Open Source"

sonnenanbeter

Cadet 1st Year
Registriert
Sep. 2023
Beiträge
15
Guten Abend,

vorab ich kenne mich mit IT nicht besonders gut aus und würde es mit der Frage ins Gegenteilige anpassen wollen ;).

Mal angenommen ein Anbieter einer Software gibt sich als "Open Source" aus, sowohl das Programm als auch deren Serverarchitektur wird als solches beworben. Meine Frage ist, woher weiß man, dass was auf Github & Co. als Quellcode gepostet wird, auch wirklich der Quellcode des Programms ist - und dann auch der aktuelle?

Theoretisch könnte man doch jedes Programm als Open Source deklarieren und in Wahrheit läuft ein andere Code als angegeben
(über den Sinn oder Unsinn soll es an dieser Stelle nicht gehen).

Vielen Dank schon mal. 😎
 
Das ist durchaus ein bekanntes Problem.

Nun wird sich aber, sollte das nicht eine Software sein die quasi niemand verwendet, mit hoher Wahrscheinlichkeit jemand mal die Muehe gemacht haben, die Anwendung aus dem vorhanden Code selber zu bauen. Da wuerden grosse Unterschiede schnell auffallen.
Zudem ist es immer moeglich durch de-kompilieren zumindest gewisse Rueckschluesse auf den zugrundeliegenden Code fuehren zu koennen.

Letztendlich ist aber auch bei Open Source, genauso wie bei Closed Source, ein gewisses Vertrauen in den Anbieter der Software noetig.
 
Der Hashcode der Binary muss unter gleichen Bedingungen gleich sein. Gibt also der Entwickler des Open Source Programmes genau an wie und mit welchen Optionen die Binary entstanden ist sollte der Hashcode in den beiden Fällen gleich sein.

Allerdings genügen schon kleine Optionen beim Kompilieren die bei dem einen fehlen und beim anderen nicht und irgendwelche Optimierungen machen oder auslassen, dann kann es schon passieren, dass der Hash nicht mehr gleich ist. Daher muss es exakt sein.

So zumindest die Theorie dazu in meinem Kopf, tatsächlich habe ich mich damit noch nicht beschäftigt.
 
reproducible builds (sourcecode compilieren und binary mit der gleichen prüf summe raus bekommen) wird nicht überall unterstützt, aber es ist ein thema

ansonsten baut jede linux distribution, sich das zeugs selbst, und verteilt nur diese binaries hier kann man also darauf vertrauen das es dem source code entspricht. wenn die distribution irgend was daran ändert (patch) dann werden diese patches in den distri sourcen auch mit geliefert

wenn dir irgend jemand irgend was in die hand drückt dann hast du solche sicherheiten, leider nicht
 
  • Gefällt mir
Reaktionen: CoMo und klapproth
Wenn Software mit freier Lizenz auf Servern betrieben werden hat jeder das Recht, sie zu verändern - meistens den jeweiligen Umgebungen/CI entsprechend - falls nötig. Der Server-Code wird auch nicht Re-Distributiert. Im besten Fall werden Abänderungen zur Quell-Software angegeben. Dem Server-Betreiber mußt du quasi vertrauen ooder als Alternative selber den Server betreiben(mit Selbstvertrauen...), ist auch bei Azure nicht anders - dort hat sichs zb auch nicht ausgezahlt.
 
Das Stichwort Reproducible Build ist schon gefallen. Es ist ein relevantes Problem, dass vom Kompilat (die lauffähige Anwendung) idR nicht auf den Quellcode und vom Quellcode nicht zum identischen Kompilat referenziert werden kann.

Daran wird gearbeitet. Einer der Problemumschiffung ist z.B. gar keine Kompilate zu beziehen, sondern nur den Quellcode und diesen immer auf deiner Maschine zu erzeugen. Dann weißt du wenigstens von welchen Programmcode deine Software kommt.

Der Package Manager Nix setzt, neben anderen Themen, auf einen Source Build Prozess.
 
kieleich schrieb:
ansonsten baut jede linux distribution, sich das zeugs selbst
Die kompilieren die ganzen mitgelieferten Programme selbst? Und was ist mit Programmen, die noch nicht dabei sind, man sich aber über den Paketmanager der Distribution selbst installiert?
andy_0 schrieb:
Daran wird gearbeitet. Einer der Problemumschiffung ist z.B. gar keine Kompilate zu beziehen, sondern nur den Quellcode und diesen immer auf deiner Maschine zu erzeugen.
Das wäre aber nichts für jeden User.
 
Tralalah schrieb:
Die kompilieren die ganzen mitgelieferten Programme selbst? Und was ist mit Programmen, die noch nicht dabei sind, man sich aber über den Paketmanager der Distribution selbst installiert?
In der Regel beziehst du immer die binaries. Kompilieren würde bei aufwändigen Programmen viel zu lange dauern und ist teilweise sehr aufwändig (viele Abhängigkeiten, manchmal sogar mehrere Sprachen samt toolchain, ...). Beispiel Firefox. Kannst du ja mal zum Spaß selbst bauen ;)
Manche Leute machen das aber konsequent so.
 
Nee, ich meinte, ob die Distributionen es selbst kompilieren oder es schon kompiliert beziehen...
 
Ja, Debian, Ubuntu etc. pp. nehmen häufig die Sources und kompilieren selber. Und stellen DIR dann das Kompilat als Paket zur Verfügung.

Nix halte ich tatsächlich für ein Problemlöser, der sehr vieles bei den modernen Problemen mit der Linux Paketverwaltung sehr richtig angeht. Und: das ist IMHO schon für "jeden", da das Setup Script alles automatisch macht. Klar, nen Firefox Update macht kein Spaß, aber man muss ja nicht mit den ganz großen Kalibern anfangen ;-).

Arch mit seinem AUR kann man über Skripte automatisieren. Das läuft für einen erfahrenen Anwender ganz gut. Das halte ich, wenn auch deutlich komplizierter als Nix und weniger Umfang, für ein brauchbaren Prototyp. Die Idee ist ja nicht neu, ich glaube Gentoo war da der Vorläufer - und zwar für das gesamte Repository..
 
  • Gefällt mir
Reaktionen: Tralalah
Richtig, nicht alle Software liegt als Quellcode vor. Das betrifft vor allem proprietäre Treiber (z.B. Intel GPU Treiber). Da man sowas aber trotzdem anbieten möchte, integriert man das vom Hersteller bereitgestellte Binary.
 
Ich meinte jetzt eher opensource-Anwenderprogramme, die man über den Paketmanager installieren kann. Werden die alle von der Distribution selbst kompiliert?
 
Ich kann es dir nicht garantieren. Sollte aber.

Ist aber fast egal, da du das sowieso nicht kontrollieren kannst. Und schon gar nicht, welcher Stand es denn exakt ist - da sind wir wieder bei Reproducible Build.
 
Tralalah schrieb:
Ich meinte jetzt eher opensource-Anwenderprogramme, die man über den Paketmanager installieren kann. Werden die alle von der Distribution selbst kompiliert?
Ja so sollte es sein und idealerweise nicht mal vom Maintainer/Packager persönlich (das kann ja jeder sein... jede Distribution sucht händeringend Leute die helfen) sondern ein Build Server und der Packager liefert nur das KochRezept dazu und dadurch wird es, überprüfbar
 
andy_0 schrieb:
Richtig, nicht alle Software liegt als Quellcode vor. Das betrifft vor allem proprietäre Treiber (z.B. Intel GPU Treiber). Da man sowas aber trotzdem anbieten möchte, integriert man das vom Hersteller bereitgestellte Binary.

Ja. Bei Firmware und Treibern gibt es Distributionen und Linux-Anwender, die ein Auge zudrücken, weil sie hier die Funktionalität (dass die Hardware funktioniert) als wichtiger erachten, als dass jeder Treiber/Firmware unbedingt Open Source ist. Außerdem liegt mancher Treiber und Firmware NUR als Closed Source vor - weshalb man hier dann die Wahl hat: entweder man nutzt diese Hardware gar nicht unter Linux, oder eben mit Closed Source Treibern/Firmware. Und bei dieser Wahl treffen viele die pragmatische Entscheidung: lieber mit Nachteilen als gar nicht.

Ich würde aber empfehlen, wenn man es vorher schon WEIẞ, dass eine Hardware nur mit Closed Source lauffähig ist, dass man diese dann am besten gar nicht erst käuft, also stattdessen auf eine zurückgreift, die mit Open Source Treibern ähnlich gut funktioniert. Als Beispiel sei hier für Gaming/Normaluser erwähnt, dass die AMD Grafikkarten unter Linux mit Open Source Treibern sehr gut funktionieren, die NVidia-Grafikkarten mit Open Source Treibern aber eher schlecht bis gar nicht. Daher ist hier AMD zu bevorzugen, vorausgesetzt man ist nicht abhängig von NVidia-only Features.

Open Source ist generell zu bevorzugen. Auch wenn es wie in dem Thread hier erwähnt vorkommen kann, dass ein Kompilat nicht dem Source entspricht, oder die Sourcen vorher manipulitert wurden bevor das Kompilat erstellt wurde. Bei Open Source Software ist das zumindest nur eine theoretisch mögliche Gefahrenquelle ("Reproducible Builds" oder selbstständiges Kompilieren von Source sind Gegenmaßnahmen dagegen, oder auch einfach Vertrauen in die Distros... dass bspw. Community-Distros wie Arch oder Debian aus manipulierten Sources ihre Pakete erstellen, ist sehr unwahrscheinlich - sie hätten ja keinen Gegenwert davon), während man bei Closed Source Software nie eine Wahl hat und zwangsweise das fressen muss, was als Kompilat vorliegt (und hier ist auch die Wahrscheinlichtkeit hoch, dass bereits im Source (den niemand außer dem Entwickler sehen kann) diverser Schmutz oder Anti-Features vorhanden sind, die der Entwickler den Usern von vornherein vorenthalten möchte. Gerade bei kommerzieller Software ist hier auch ein finanzieller Incentive gegeben, denn mit dem Abgreifen von allen erdenklichen System- und Nutzungs-Daten lässt sich zusätzliches Geld scheffeln). Backdoors für Geheimdienste sind auch wesentlich wahrscheinlicher. Bei Open Source hat man halt zumindest die Wahl: nehme ich aus Einfachheitsgründen nur das Kompilat, was vielleicht nicht dem Source 100% entspricht oder wo der Build-Prozess nicht 100% reproduzierbar ist (was aber nicht mal ein Problem sein muss... es bedeutet erst mal nur, dass man halt die exakten Gegebenheiten des Builds nicht nachstellen kann, weshalb sich das entstandene Kompilat dann halt minimal unterscheidet. Das muss überhaupt nichts Bösartiges sein), oder baue ich es mir vom Source selbst, um 100% sicher zu gehen dass mein Kompilat dem Source entspricht. Wer diese Kategorie von potenziellem Problem generell umschiffen möchte, kann auch generell zu Source-basierten Distros oder Source-Paketen greifen, oder einfach alles selbst bauen auch wenn die Distri Binärpaket-basiert ist, anstatt die Binär-Pakete zu verwenden. Das ist natürlich etwas umständlicher und energie-ineffizienter, aber wie das halt so ist in der IT: zusätzliche Sicherheit ist immer etwas unbequemer, als mit weniger Sicherheit zu leben.
 
Tralalah schrieb:
Ich meinte jetzt eher opensource-Anwenderprogramme, die man über den Paketmanager installieren kann. Werden die alle von der Distribution selbst kompiliert?
Wenn du Gentoo verwendest, bekommst du mit 100%-iger Sicherheit das Compilat des auf Github gehosteten Quellcodes. Du compilierst das nämlich selbst.

Ausnahmen sind auch hier wieder die Firmware-Blobs (linux-firmware) und diverse Programme, die nur als Binary erhältlich sind, z.B. Vivaldi, Opera, ICAClient, Anydesk.
 
jenzen schrieb:
gar nicht erst käuft, also stattdessen auf eine zurückgreift, die mit Open Source Treibern ähnlich gut funktioniert. Als Beispiel sei hier für Gaming/Normaluser erwähnt, dass die AMD Grafikkarten unter Linux mit Open Source Treibern sehr gut funktionieren
Ja. Wobei man sagen muss - und dafür sind Grafikkarten auch ein gutes Beispiel - das immer mehr Software in Form von Firmware quasi in die Hardware wandert. Das Du zu der AMD-Karte einen Open-Source-Treiber hast ist schön, unterschlägt aber, das ein nicht zu unterschätzender Teil die Firmware ausmacht.
Die Situation ist sicherlich besser als z.B. bei nvidia. Aber von wirklich offen kann da keine Rede sein. Und die Problematik hast Du auch bei vielen anderen Hardwarekomponenten.
 

Ähnliche Themen

Zurück
Oben