|
![]() |
|
Registriert seit: 8. Okt 2010 Ort: Frankfurt am Main 1.234 Beiträge |
#1
Zeit, Energie und am Ende sogar Geld in sowas zu verschwenden ist...nunja, Verschwendung. Wer Leute einstellt, denen er nicht vertrauen kann, macht an der Stelle bereits einen Fehler.
Bin da voll bei Sherlock. Erstens: wenn ich einen Entwickler an meinen Code ranlasse, dann vertraue ich ihm. Punkt. Gegenteilige Maßnahmen sind ähnlich "zielführend" (lies: bescheuert) wie einem Kunden nicht zu vertrauen, daher starke Kryptographie einzusetzen und dennoch alle Informationen auf dem Kundenrechner vorzuhalten (inkl. geheimer Schlüssel; anstatt bspw. "Wissen" - bspw. in Form eines Algorithmus - in einen Hardwaredongle auszulagern). Das ist in sich widersinnig. Entweder du vertraust, oder du vertraust nicht. Beides geht nicht. Und im Zweifel nervst du ohnehin nur die Kunden, bzw. in diesem Fall die Entwickler. Klar kann man das machen, aber es ist halt Schlangenöl. Aber technische Maßnahmen für soziale Probleme waren ohnehin noch nie eine Lösung. Und ohnehin frage ich mich was genau ein Dieb denn mit den Quellen machen kann. Bei 1:1-Nutzung würde er/sie sich jedenfalls strafbar machen. Das ist ungefähr wie das Argument ein Arbeitnehmer könne sich beim Verlassen der Firma den Quellcode mitnehmen:
Hier wird zwar nicht viel vom Themenersteller verraten, aber wenn es um Interop geht, ist RCE ohnehin in der EU legitim. Dem kommt man also nicht einmal mit rechtlichen Mitteln bei. In meinem Feld, den Medizinprodukten, ist das anspruchsvolle nicht die Entwicklung, sondern die Dokumentation, und Normkonformität. Und die beiden letzteren Punkte sind ohnehin in großen Teilen einsehbar.
![]() so als "kleine Hürde" kommt das dem von dir gesuchtem schon sehr nah ![]() Aber angenommen es handelt sich bei den besagten Cola-Rezepten um die endgeilsten 100 Codezeilen die jemals geschrieben wurden. Dann gibt es grob gesehen zwei Varianten:
In letzterem Fall hast du schon verloren. Denn inzwischen bietet wirklich jeder aktuelle Disassembler die Möglichkeit Prozessormodule zu schreiben (mithin also die "virtuelle Architektur" zu dekodieren). Klar, bedeutet etwas mehr Aufwand, aber wenn der Code so endgeil ist, dann sind das Peanuts im Vergleich zum Nutzen für die Konkurrenz. Aber zumeist wird es einfach ausreichen alles drumherum zu instrumentieren. Du würdest dich wundern was sich mit PIN, DynamoRIO, Wine oder auch mit Virtualisierung so alles herausbekommen läßt. Von DLL-Placement-Angriffen, die du mit einer Auftrennung in Module u.U. noch erleichterst, haben wir dabei noch nicht einmal geredet. Es scheint sowieso ein komplett falscher Eindruck von Rückentwicklung (RCE = Reverse Code Engineering) zu existieren. Die Schnittstellen zu einem solchen "geschützten" Modul wären ja dennoch recht einfach für einen Rückentwickler zu ermitteln. So, dann hab ich also eine Schnittstelle. Jede Menge "Geschäftscode" den ich - als "interessierter Konkurrent" - so oder so ähnlich ohnehin schon habe und/oder kenne. Aber dann habe ich da ein extra geschütztes Modul. Jetzt rate mal worauf genau sich meine Aufmerksamkeit konzentrieren wird?! Als Rückentwickler guckst du ja nicht nach dem ganzen Boilerplate-Code der überall 08/15 ist, sondern du guckst nach den wenigen Prozent oder gar Promille die interessant sind. Um das Arbeitsfeld einzugrenzen hilft so ein vermeintlicher Schutz also auch erst einmal. Und klar, diese Teile ala Themida sind echt nervig, aber sie sind nicht unknackbar. Wenn ich also das fertige Endprodukt erwerben kann und sich daraus ergibt, daß sich der Aufwand lohnt, dann ist der Schutz trotzdem allenfalls das was man von diesen ganzen Spieleschutztechniken kennt: ein paar Wochen oder Monate. Bei Spielen lohnt sich das häufig, weil die ganzen Spieler den Herstellern bei Veröffentlichung die Bude einrennen und das dann abebbt. Aber wie man schon der Tatsache, daß diese Schutzmechanismen in Spieleupdates oft wieder verschwinden, entnehmen kann, ist der Effekt zeitlich begrenzt. Wäre dies bei der hier avisierten Schutzmaßnahme auch der Fall? Klingt nicht danach. Echten Schutz bekommst du nur, wenn die eigentliche proprietäre Logik nicht für den, dem man nicht vertraut, zugreifbar ist. Also in einem "smarten" Hardwaredongle oder serverseitig. Was dann natürlich wieder andere Einschränkungen mit sich bringt. Und nein, diese Form von Sicherheit läßt sich nicht kaufen. Ich habe schon mehrere Hardwaredongle geknackt und das Problem lag immer in unzureichendem Schutz auf Seiten des PC. Im einen Fall wurde sogar nur ganz stupide ein Wert ausgelesen und an die Anwendung übergeben. Ohne den Code der Anwendung oder seine DLLs auch nur anzufassen, habe ich da einfach eine eigene DLL plaziert, die den Wert genauso zurückgab. Wunderbar. Problem (Parallel-Hardwaredongle "schützen", denn die waren sehr fragil) gelöst. Das Programm wurde dennoch nur entsprechend der Anzahl der Lizenzen eingesetzt und falls - was ich nie überprüft habe - diese Zahl mehr als eine Lizenz- oder Kundennummer war und bspw. die Features des Programms kodierte, habe ich das nicht ausgenutzt. Es ging ganz simpel darum, daß bei Ausfall des Dongles ("durchbrennen") oder anderen Unwägbarkeiten der Geschäftsbetrieb aufrechterhalten werden konnte. Und bei alledem kommt die Diskussion der Sinnhaftigkeit noch immer zu kurz, denn "mein" Entwickler, den ich anstelle, soll ja nicht etwa nur in der Lage sein Code zu entwickeln, sondern diesen auch zu debuggen. Ich schieße mir also mittelfristig damit selbst ins Knie. Von der desaströs demotivierenden Botschaft, die von derlei Verfahrensweise ausgeht, ganz zu schweigen. Da kann ich dir von diversen Kunden und sogar von ehemaligen eigenen Mitarbeitern
durchaus interessante Geschichten erzählen, aber garantiert nicht hier ... Es ist auch nicht so, das immer nur der unten in der Hierarchie das A...loch ist und mit seinem Know How abhaut, oft ist es auch ein Wechsel in der Geschäftsführung, die den Chefarchtekt hinter einer gesamten Softwarelösung in die Selbstständigkeit treiben und warum sollte dieser sein Branchen Know How nicht woanders einsetzen, verträge hin oder her .... Nicht selten werden Mitarbeiter, die über entsprechendes internes Wissen verfügen, genau deswegen von anderen Firmen oder Konzernen für viel Geld abgeworben.
![]() Wenn ich die Charakterstruktur von Programmierern bisher richtig kennen gelernt habe, dann ist dies ein unwiderstehlicher Anreiz, diese Abwehr zu knacken, auch für solche Leute, die ursprünglich gar kein Interesse am Geheimnis an sich hatten. Eine ganze Reihe der Maßnahmen kann man ohne Mühe durch einen einfachen Code-Formatierer wieder beseitigen. Dann noch ein paar kleine Helferlein geschrieben... Also, dieser Schuss könnte nach hinten losgehen.
Nochmal: wenn du deinen Entwicklern nicht vertrauen kannst, haste ein ganz dickes Problem. Wer den Feind eben bereits im eigenen Hause verortet, sollte sich mal echt Gedanken machen. Entweder bringst du deinen Entwicklern nicht die Wertschätzung entgegen, du bezahlst sie nicht entsprechend ihrer Qualifikation oder es gibt andere Gründe. Und ja: Programmierer != Entwickler (hier nochmal auf Delphi: Programmier <> Entwickler ![]()
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch) Geändert von Assarbad ( 8. Jun 2020 um 23:02 Uhr) |
![]() |
Registriert seit: 11. Apr 2009 570 Beiträge Delphi 12 Athens |
#2
Wenn du deinen Entwicklern nicht vertrauen kannst, haste ein ganz dickes Problem.
Ich habe mal den Fall erlebt, dass sich einer unserer Systembetreuer von zuhause aus ins System eingeloggt hat, um es komplett zu sabotieren. Das Ganze ohne erkennbaren Grund und ohne finanziellen Gewinn. Er hinterließ allerdings digitale Spuren, an die er hinterher nicht mehr herankam, so dass er nach dem Ausloggen zuhause saß und auf die Polizei wartete. Ich kannte den Mann auch. Alle waren platt; nie, nie hätte man dem das zugetraut. Ich meine auch, dass du unterschätzt, wie sehr die Existenz einer Firma von einem bestimmten, vielleicht sogar eng begrenzten Spezialwissen abhängen kann. In der Industrie sind das oft Verfahrenstechniken; wenn dein Schatz sich in einem Stück Software materialisiert, dann ist es existenziell, dass du das schützt. Ich persönlich würde dafür auch ein hohes Maß an Umbequemlichkeit in Kauf nehmen. Alles andere fände ich sehr naiv. |
![]() |
Registriert seit: 10. Jun 2002 Ort: Unterhaching 11.412 Beiträge Delphi 12 Athens |
#3
Sorry, da lach ich mich scheckig. Als Rückentwickler lernt man vor allem eins: daß Leute ihre tollen Firmengeheimnisse und ihren endgeilen Code total überschätzen.
Und zu glauben, dass solche Dinge nur bei den großen auftreten, das ist extrem naiv. Ich habe für kleine Unternehmen gearbeitet, denen das passiert ist, und ich kenne mehrere Firmen aus meinem alten Kundenkreis, welche dieses Problem ernsthaft hatten. Keiner hat erwartet, dass es 100% Schutz gibt, insbesondere bei Programmen, welche auch außer Haus installiert wurden (sehr oft). Aber keiner wollte es der Konkurrent dann auch zu leicht machen. Ein Wissensvorsprung, auch in Software, von nur ein paar Wochen kann Millionen Umsatz bedeuten. Und das sollte einem Entwickler mit Deiner Intelligenz eigentlich auch verständlich sein, oder? ... ![]()
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so |
![]() |
Online
Registriert seit: 24. Mai 2017 Ort: Wien, Österreich 1.241 Beiträge Delphi 12 Athens |
#4
Die Frage des Te war:
![]() Welche Möglichkeiten habe ich, bestimmte Units für andere Entwickler nicht sichtbar zu machen.
|
![]() |
Registriert seit: 11. Aug 2012 Ort: Essen 1.679 Beiträge Delphi 10.2 Tokyo Professional |
#5
Um das Ganze mal abzukürzen:
Thomas Mueller
|
![]() |
Registriert seit: 10. Jun 2002 Ort: Unterhaching 11.412 Beiträge Delphi 12 Athens |
#6
Wenn es eine in-house Anwendung ist, dann gäbe es noch die Möglichkeit, die Routinen ausschließlich über einen REST-Server anzubieten. Hier kommt es natürlich auf die Umstände an, wie diese Berechnungen benötigt werden.
In meinem Feld, den Medizinprodukten, ist das anspruchsvolle nicht die Entwicklung...
... ![]()
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so |
![]() |
Registriert seit: 8. Okt 2010 Ort: Frankfurt am Main 1.234 Beiträge |
#7
Und (fast) jeder hier weiß, dass für alles, was ein Computer ausführen kann, jemand auch mehrere Entwickler existieren, die das verstehen werden, egal wie komplex und verschleiert es ist. Aber das heißt nicht, dass man es der Konkurrenz zu leicht machen sollte. Im Gegenteil, bei diese Einstellung ist lächerlich.
Den Konkurrenten muß es niemand einfach machen. Aber nochmal: wer den Feind (sprich: den Konkurrenten) bereits im eigenen Hause verortet hat größere Probleme als das "Cola-Rezept" vor seinen Entwicklern zu schützen. Ohnehin ließe sich Schaden seitens eines Konkurrenten deutlich subtiler anrichten als durch den Klau von Firmengeheimnissen. Und zu glauben, dass solche Dinge nur bei den großen auftreten, das ist extrem naiv.
Ich habe für kleine Unternehmen gearbeitet, denen das passiert ist, und ich kenne mehrere Firmen aus meinem alten Kundenkreis, welche dieses Problem ernsthaft hatten.
Zumindest wenn der Konkurrent, anstatt jemanden einzuschleusen, einfach über RCE einen Klon erstellen, würde dies ebenfalls rechtliche Fragen aufwerfen und dem eigentlichen Urheber gewisse juristische Mittel an die Hand geben. Wenn du sagst dieses Thema sei extrem verbreitet auch bei kleineren Firmen, stellt sich die Frage warum die Rechtsmittel dann nicht ausgeschöpft werden? Wird die Schöpfungshöhe bei diesen "Cola-Rezepten" am Ende doch nicht erreicht? Oder ist das "Cola-Rezept" am Ende weniger wert als den Konkurrenten mit dem eigenen Werk ziehen zu lassen? Abgesehen davon stellt sich natürlich die Frage, ob man nicht eventuell die vielen Stunden, Tage oder Wochen, die für solche Schlangenölmaßnahmen aufgewendet werden in Qualitätssicherung und Weiterentwicklung der Software stecken sollte?! Da freuen sich die Kunden und man macht es dem Konkurrenten so auch schwer. Man stelle sich vor der Themenersteller "sichert" das alles mit einem tollen Drittanbieter-Schlangenöl-Werkzeug (was in sich schon Projektrisiken birgt) und der eigentliche Code landet (im Klartext) in einem separaten SCM. Wird denn HTTPS bzw. SSH im Firmennetz verwendet? Teilt man sich - auch mal aus Versehen - Paßwörter? Läuft der selbstgehostete Chatdienst auch mit Transportverschlüsselung? Wie ist denn so insgesamt die Sicherheit im Netzwerk? Kurzum: wir drehen uns im Kreis und landen wieder bei meiner Aussage von letzter Nacht, daß, wer den Feind im eigenen Haus verortet, größere Probleme hat als mit dieser Methode sich und anderen "Sicherheit" vorzugaukeln. Keiner hat erwartet, dass es 100% Schutz gibt, insbesondere bei Programmen, welche auch außer Haus installiert wurden (sehr oft). Aber keiner wollte es der Konkurrent dann auch zu leicht machen. Ein Wissensvorsprung, auch in Software, von nur ein paar Wochen kann Millionen Umsatz bedeuten. Und das sollte einem Entwickler mit Deiner Intelligenz eigentlich auch verständlich sein, oder?
Das andere Thema habe ich selbst aufgeworfen (zeitlicher Vorsprung) und stelle es somit nicht infrage. Die Schlußfolgerungen stelle ich hingegen sehr wohl infrage. Wir landen also nicht beim Konsenseinheitsbrei, sondern bei einem Dissens; und trotzdem haben alle etwas gelernt. Wenn es eine in-house Anwendung ist, dann gäbe es noch die Möglichkeit, die Routinen ausschließlich über einen REST-Server anzubieten. Hier kommt es natürlich auf die Umstände an, wie diese Berechnungen benötigt werden.
Echten Schutz bekommst du nur, wenn die eigentliche proprietäre Logik nicht für den, dem man nicht vertraut, zugreifbar ist. Also in einem "smarten" Hardwaredongle oder serverseitig. Was dann natürlich wieder andere Einschränkungen mit sich bringt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch) |
![]() |
Online
Registriert seit: 17. Feb 2005 Ort: Weitingen 684 Beiträge Delphi 12 Athens |
#8
Aber nochmal: wer den Feind (sprich: den Konkurrenten) bereits im eigenen Hause verortet hat größere Probleme als das "Cola-Rezept" vor seinen Entwicklern zu schützen. Ohnehin ließe sich Schaden seitens eines Konkurrenten deutlich subtiler anrichten als durch den Klau von Firmengeheimnissen.
Wenn die Mitarbeiter an gewisse Information nicht kommen, können diese sie auch nicht unabsichtlich weitergeben (und wenn es "bloß" Ausspähen durch Schadsoftware ist). Zur technischen Umsetzung: ist es für die Entwicklung wichtig, das richtige Rezept zu haben? Wenn nicht, Stichworte wie MockUp, Fake-Daten usw sind ja schon gefallen. Erst das endgültige Resultat nutzt eben die echte Unit. Damit schränkt man den Zugriff auf wenige Projekt Owner ein. |
![]() |
Registriert seit: 8. Okt 2010 Ort: Frankfurt am Main 1.234 Beiträge |
#9
87% aller Informationssicherheitsverletzungen gehen von den eigenen Mitarbeitern aus ... und von den Wenigsten wissentlich bzw absichtlich.
Ich finde es daher schon sinnvoll, dass man _jedem_ Benutzer nur die notwendigsten Zugriffsrechte gibt.
Und das sage ich ausdrücklich als ehemaliger Admin der jetzt nicht gerade die große Leuchte im Umgang mit Leuten (also keine "people person") ist, der aber gelernt hat, daß IT-Sicherheit durch technische Maßnahmen nur marginal verbessert wird, durch Wissenstransfer zu den "Anwendern" hingegen fundamental. Bin ein großer Verfechter des Zero-Trust-Ansatzes in internen Firmennetzen. Aber wenn für alle möglichen Autoritätspersonen innerhalb der Firmenhierarchie ohnehin Extrawürste gebraten werden (weil die ihre "Managerkarte" zücken), ist das eben kein Zero-Trust und fällt auseinander bevor es zusammengebaut ist. Oder anders ausgedrückt: du kannst zwar deine "Bodentruppen" (die Entwickler) mit Scheinsicherheit gängeln, aber wenn die sehen, daß das Scheunentor woanders offen gelassen wird, schwindet die Akzeptanz für solche Maßnahmen ganz schnell. Dazu haben die meisten Entwickler zu viel Einblick in die Materie ... und mindestens deutlich mehr als die Buchhalterin oder der Assistent des Geschäftsführers. Egal, wie sinnvoll Dir jetzt ein Cola-Rezept erscheint, aber die Firma hat es als schützenswert eingestuft und hier geht es darum, wie man es technisch umsetzen kann.
Wenn die Mitarbeiter an gewisse Information nicht kommen, können diese sie auch nicht unabsichtlich weitergeben (und wenn es "bloß" Ausspähen durch Schadsoftware ist).
Und klar, nix dagegen das zu trennen (separates Repo wurde ja schon genannt). Absolut nicht. Besonders wenn man Praktikanten/Werksstudenten im Hause hat, möchte man da sicher eine Abstufung des Zugriffs auf die "Kronjuwelen". Diese Abstufung klang im Beitrag eingangs aber nicht an. Und wenn der Zugriff auf das Repo mit dem "Cola-Rezept" eingeschränkt ist und ein Mock während der Entwicklung existiert braucht es eben keine Schlangenöllösung.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch) |
![]() |
Registriert seit: 15. Mär 2005 695 Beiträge FreePascal / Lazarus |
#10
Da kann ich dir von diversen Kunden und sogar von ehemaligen eigenen Mitarbeitern
durchaus interessante Geschichten erzählen, aber garantiert nicht hier ... Es ist auch nicht so, das immer nur der unten in der Hierarchie das A...loch ist und mit seinem Know How abhaut, oft ist es auch ein Wechsel in der Geschäftsführung, die den Chefarchtekt hinter einer gesamten Softwarelösung in die Selbstständigkeit treiben und warum sollte dieser sein Branchen Know How nicht woanders einsetzen, verträge hin oder her .... ohne jeden Zweifel zu beweisen. Wissen über Prozessdetails bzw Anklage des Mißbrauchs sind ohne umfassendes Patent nicht wirklich erfolgreich einklagbar. Und zumindest in Deutschland wirst nicht mit vertretbarem Aufwand ein Patent für deine Software bekommen. Jeden externen, der per reverse engineer deine Software komplett analysiert und sich dann auf deine Verfahren und apis drauf setzt, wirst du auch nur sehr begrenzt verklagen können, gpl etc. hin oder her, warum sollte er deine Sourcecodes benutzen. Vielleicht ist es ja auch deine Schuld, das deine API zu banal ist und schon ist da kein klarer Sieger mehr sichtbar. Da kannst du ansonsten sehr viel gutes Geld dem verlorenen schlechten Geld hinterher schmeißen und am meisten freuen sich die Anwälte, die am Ende im Vergleichsverfahren ihr volle Kohle von beiden Parteien bekommen und gewonnen hast du gar nichts. Recht haben und Recht bekommen sind zwei völlig verschiedene Baustellen.
Holger Klemt
![]() Oldenburger Str 233 - 26203 Wardenburg - Germany ![]() |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |