Code verschlüssel / entschlüsseln "lesbar" unmöglich machen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
F05
User
Beiträge: 5
Registriert: Samstag 30. Juni 2018, 12:33

Guten Tag,

ich bin auf der Suche nach einer Möglichkeit Python-Code so zu verschlüsseln, dass man diesen nicht mehr entschlüsseln kann.

Kurz um was es mir geht:
Ich habe eine Geschäftsidee für ein noch zu gründentes Unternehmen und das Programm, die Software, muss erst noch programmiert werden.
Dafür dachte ich an Python.
Zum einen weil das Programm, um welches es mir geht, auf Windows, Linux, MacOS, Android und iOS läuffäig sein wird (sicherlich muss es für die einzelnen Plattformen entsprechend angepasst werden!) zum anderen weil Python "moderner" ist als eine andere Programmiersprache (für meinen Zweck).

Nun, da ich nicht möchte, dass der Programmcode entschlüsselt werden kann - es wird darin u.a. auf eine Datenbank eines Webservers zugegriffen (somit sind dort Zugangsdaten hinterlegt) - suche ich eben eine sehr gute Möglichkeit diesen so zu verschlüsseln (Stichwort ist wohl obfuscate), dass es kein Tool schafft diesen lesbar zu entschlüsseln!:wink:

Was ich noch kurz erwähnen nöchte:
Ich bin selbst kein Programmierer, würde also Personal einstellen.

Ich möchte hier weder die Geschäftsidee noch anderes, was nicht zur Frage/Debatte steht, diskutieren.
Danke!
Würde ich nämlich nur einen Ansatz davon hier schreiben, um was es genau geht, dann würde ich wohl große Diskussionen auslösen (schon genug gegoogelt und die Diskussionen gesehen).:roll:
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Nun, da ich nicht möchte, dass der Programmcode entschlüsselt werden kann - es wird darin u.a. auf eine Datenbank eines Webservers zugegriffen (somit sind dort Zugangsdaten hinterlegt) - suche ich eben eine sehr gute Möglichkeit diesen so zu verschlüsseln (Stichwort ist wohl obfuscate), dass es kein Tool schafft diesen lesbar zu entschlüsseln!:wink:
An den Quellcode kommt man immer irgendwie, egal wie sehr du dich anstrengst den zu verstecken. Der Obfuscator macht den Code nur unlesbar. Kompiliert man Python (nuitka, pyinstaller, etc...), wird meistens der Interpreter zusammen mit dem Quellcode gebundelt. Nuitka ist da eine Ausnahme, aber das würde jetzt zu sehr ins Detail gehen. Das wird auch nicht verhindern, dass man nicht mehr an den Quellcode kommt, denn man könnte dies auch durch einen decompiler jagen.

Den Quellcode zu verstecken, um sein Know-How zu schützen, ist legitim, sofern die Software das Endprodukt ist.
Wenn man eine Dienstleistung anbietet, kann man den kompletten Quellcode auch auf GIT Hub hochladen und kann immer noch seine Dienstleistung anbieten.
Viele Unternehmen machen das vor und sind erfolgreich damit.

Nun das wichtigste
Zugangsdaten im Quellcode zu verstecken, ist eine sehr schlechte Idee. Das haben schon einige feststellen müssen und kann sogar ein Unternehmen gegen die Wand fahren.
Zugänge zu irgendeinem System sind entweder öffentlich oder man verteilt z.B. über ein Webinterface Tokens, mit denen der Zugriff dann erfolgt.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
ich bin auf der Suche nach einer Möglichkeit Python-Code so zu verschlüsseln, dass man diesen nicht mehr entschlüsseln kann.
Kurzfassung: geht nicht. Es gibt immer Mittel und Weg. Wenn du deinen Code bzw. dessen Schöpfungshöhe schützen willst, dann wähle eine geeignete Lizenz und sei bereit, diese im Zweifelsfalls zur Verfügung stehenden Rechtsmitteln durchzusetzen.
Zugangsdaten im Quellcode zu verstecken, ist eine sehr schlechte Idee.
+1
Zum einen weil das Programm, um welches es mir geht, auf Windows, Linux, MacOS, Android und iOS
Python läuft ootb nicht auf Android und MacOS. Auf Android ist es über Umwege und mit ein paar Umständen möglich, aber IMHO kein gangbarer Weg für eine kommerzielle App. Auf MacOS geht es AFAIK gar nicht.

Dein "Grundproblem", dass du beschreibst, ist übrigens nicht Python-spezifisch. Das gleiche Problem hättest du mit vielen anderen Programmiersprachen auch.

Gruß, noisefloor
F05
User
Beiträge: 5
Registriert: Samstag 30. Juni 2018, 12:33

Erstmal Danke für eine Antwort! :-)
DeaD_EyE hat geschrieben: Samstag 30. Juni 2018, 13:07 Den Quellcode zu verstecken, um sein Know-How zu schützen, ist legitim, sofern die Software das Endprodukt ist
Genau darum geht es mir ja!:wink:
noisefloor hat geschrieben: Samstag 30. Juni 2018, 13:13 Kurzfassung: geht nicht. Es gibt immer Mittel und Weg. Wenn du deinen Code bzw. dessen Schöpfungshöhe schützen willst, dann wähle eine geeignete Lizenz und sei bereit, diese im Zweifelsfalls zur Verfügung stehenden Rechtsmitteln durchzusetzen.
Nur eine Lizenz kann ich vergessen, der Code ist da das Wichtigste, sonst bauen dies andere nach.

Zum Schluss soll die Software ja für Ihre Zielplattform sein (Windows = .exe).
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@F05: Du schreibst von einer Datenbank im Web. Datenbanken sollten ja sowieso nie direkt erreichbar sein, andererseits heißt das ja, dass Du die komplette Geschäftslogik auf einem Server ausführen kannst. Dann brauchst Du nur eine Weboberfläche und all Deine Probleme mit unterschiedlichen Plattformen sind verschwunden.

@noisefloor: auf MacOS läuft natürlich ein ganz normales Python, was Du wahrscheinlich meinstest ist iOS.
F05
User
Beiträge: 5
Registriert: Samstag 30. Juni 2018, 12:33

Wie machen das dann CM-Systeme wie WordPress, Joomla, Drupal...? Die lesen ihre Beiträge ja auch aus der Datenbank.
So soll das auch bei meinem Vorhaben realisiert werden, nur in einem etwas anderen Kontext.

Die Logik nur auf dem Server ausführen zu lassen und mit einer Weboberfläche darauf zugreifen reicht leider nicht, da die Software nicht nur auf die Datenbank zugreift.
Jetzt geht das schon in die Richtung was meine Software sein wird, darauf wollte ich ja nicht kommen!
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

WordPress, Joomla, Drupal sind alles Serveranwendungen. Alles was geheim ist darf eben nicht Deinen Einflußbereich verlassen. Es gibt praktisch nichts, was sich nicht als Webapplication umsetzen ließe.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

F05 hat geschrieben: Samstag 30. Juni 2018, 13:29 Wie machen das dann CM-Systeme wie WordPress, Joomla, Drupal...? Die lesen ihre Beiträge ja auch aus der Datenbank.
Die Zugangsdaten der Datenbanken liegen auf deinem Server, den du verwaltest, auf dem deine Anwendungen laufen und auf dem nur du Zugriff haben solltest.

Die Logik nur auf dem Server ausführen zu lassen und mit einer Weboberfläche darauf zugreifen reicht leider nicht, da die Software nicht nur auf die Datenbank zugreift.
Jetzt geht das schon in die Richtung was meine Software sein wird, darauf wollte ich ja nicht kommen!
Du kannst es drehen und wenden wie du willst. Zugangsdaten gehören auf gar keinen Fall in die Anwendung.
Wenn du dann deine Anwendung verteilst, verteilst du die Zugangsdaten ja gleich mit. Das ist nicht sicher.

Wie das Konzept mit der Authentifizierung aussehen könnte, kannst du bei Google, Facebook und vielen anderen großen Plattformen sehen. Die machen es richtig.
Die verteilen die Anwendungen und der Kunde muss seine Zugangsdaten eingeben und wenn es sicher sein soll, dann halt mit 2-Faktor-Autentifizierung.
Will der Kunde nun mit seinem Account eine andere App nutzen, so muss er die Rechte gewähren. Dafür sind dann die Tokens.
  • Die Businesslogik auf dem Server implementieren
  • Keine direkten Zugriffe auf die Datenbank
  • Zugriffe z.B. über eine Rest API mit Authentifizierung/Token
Jede Wetterapp, ja sogar Cloud-Anbieter haben REST APis. Es kann nicht schaden zu gucken, was die anderen machen.
Wenn du dann dein Team mit Programmierern hast, werden die dir sicherlich auch noch mitteilen wo das ein oder andere falsch gedacht ist.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
F05
User
Beiträge: 5
Registriert: Samstag 30. Juni 2018, 12:33

Danke bis hierher für eure Antworten/Hilfe. :-)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Sirius3:
@noisefloor: auf MacOS läuft natürlich ein ganz normales Python, was Du wahrscheinlich meinstest ist iOS.
Richtig, so meinte ich das, sorry.

@F05;
Nur eine Lizenz kann ich vergessen, der Code ist da das Wichtigste, sonst bauen dies andere nach.
??? - nachbauen kann man doch immer, mit oder ohne Quellcode. Da geht es ja nur im die Idee / das Konzept bzw. das Ergebnis für den Anwender. Und zum Schützen von Code bzw. dessen Schopfungshöhe dient eine Lizenz.
Wie machen das dann CM-Systeme wie WordPress, Joomla, Drupal...? Die lesen ihre Beiträge ja auch aus der Datenbank.
Ja, und _serverseitig_ wird das HTML fertig erstellt. Was im Browser ankommt ist dann HTML+CSS+evtl. JavaScript, was der Browser nur darstellen muss. Der Browser kennt keine Zugangsdaten für die DB auf dem Server. Muss er auch nicht.

Gruß, noisefloor
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

@noisefloor ich schreibe hier auf einem iPad. Und darauf läuft “Pythonista”. Damit kann man sogar kleine Apps schreiben. Python auf iOS geht also durchaus. Ob’s für den TE die Rechte Wahl ist steht auf einem anderen Blatt. Da bin ich skeptisch.
F05
User
Beiträge: 5
Registriert: Samstag 30. Juni 2018, 12:33

Wie erwähnt, für die Zielplattform soll die Software das entsprechende Dateiformat haben.
Bei Windows z.B. .exe.
Also wird auf dem Zielsystem, z.B. auf Windows, kein Python benötigt und somit keine .py ausgeführt.
Sollte doch machbar sein!
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie erwähnt, Du hast eine falsche Vorstellung, wie Python-Programme funktionieren. Auch wenn das Python-Programm in einer exe-Datei versteckt ist, ist es kein Problem, dieses Programm wieder auszulesen. Das gleiche gilt für .NET oder Java-Programme und nur in leicht abgeschwächter Form auch für Programme, die direkt nach Maschinensprache übersetzt wurden.

Geschäftslogik, die geheim bleiben soll, darf Deinen Einflußbereich nicht verlassen.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wobei echt geheime Geschäftslogik ja auch eher ungewöhnlich ist. Unsere Software läuft zwangsweise auf den Rechnern der Kunden. Klar kann und wird die gecrackt. Aber wenn man ein Produkt hat, dass es wert ist, gekauft zu werden, dann passiert das ja auch.

Und natürlich kann die Software auch nach Hause telefonieren. Auch das tun wir. Sie sollte das natürlich mit den Credentials eines konkreten Kunden tun, und nicht mit einem generischen Account. Aber dann ist das auch kein echtes Problem. Wobei wir tatsächlich auch einen Token-Mechanismus haben, der Kunde also nur per Browser den Login tätigt, und die Software dann ein Token übergeholten bekommt per custom Protokoll.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ich glaube es war Dropbox die den Bytecode modifziert hatten damit man mit den gängigen Werkzeugen nicht so einfach an den Code kam.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten