mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Teil eines C-Sourcecode schützen


Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
besteht eine möglichkeit, einen Teil des C-Sourcecode, bei weitergabe zu 
schützen, sodas dieser Teil von einem drittem nicht eingesehen werden 
kann?
Gruß Siegfried

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nicht wirklich...kannst höchstens den teil compilieren und als asm file 
dazulinken...nur wer sich auskennt..nunja

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
als lib compilieren.

Autor: Michael Lehr (Firma: Ingenieurbüro Lehr) (ml-net)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
library erzeugen

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst den Codetext verschlüsseln, aber das wäre völlig sinnlos. 
Entweder man braucht den Sourcecode im Klartext, oder man braucht ihn 
gar nicht.

Wenn möglich, bau aus den Teilen eine lib, und liefer die aus. Das 
Wissen, was da drin steht, lässt sich zwar durch Re-Engineering 
herausfinden, aber das ist zumindest mit Aufwand verbunden.

Oliver

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur wenn du eine Lib draus machst. Und selbst die kann mit 
entsprechendem Aufwand eingesehen werden - je nach Plattform fällt der 
Aufwand unterschiedlich groß aus (PC, AVR, 805x, ARM).

Ralf

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> einen Teil des C-Sourcecode, bei weitergabe zu schützen,
> sodas dieser Teil von einem drittem nicht eingesehen werden kann?
Schreib ihn so verwirrend, dass die Konkurrenz beim Reverse-Engineering 
um 10 Jahre zurückgeworfen wird...
Ein erster Ansatz wäre sowas wie im 
Beitrag "Re: Lookup table für Sinus funktioniert nicht"  ;-)

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es unbedingt als Source-Code weitergegeben muß, gibt es noch sowas 
hier:

http://www.stunnix.com/prod/cxxo/overview.shtml

Oliver

Autor: Bertram S. (bschall)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> um 10 Jahre zurückgeworfen wird...
> Ein erster Ansatz wäre sowas wie im
> Beitrag "Re: Lookup table für Sinus funktioniert nicht"  ;-)

Ich kann nicht mehr... zu geil diese Aussage!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Konzept der "Source Code Obfuscation" ist durchaus existent, aber 
nur bei größeren Projekten sinnvoll.

So wird beispielsweise Flexe-Lint von der Firma Gimpel im Quelltext 
ausgeliefert (das ist die nicht-PC-Variante von PC-Lint).

    FlexeLint is distributed as shrouded C source code, to
    make the capabilities of PC-lint available wherever there
    is a C compiler to compile it.

So steht's auf http://gimpel.com/

Je kleiner aber ein Projekt ist, desto lohnender ist der Versuch, den 
"verschleierten" Sourcecode zu rekonstruieren.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siegfried Saueressig schrieb:

> besteht eine möglichkeit, einen Teil des C-Sourcecode, bei weitergabe zu
> schützen, sodas dieser Teil von einem drittem nicht eingesehen werden
> kann?

Das ist ungefähr so, wie das Auslesen einer CD zum Zwecke des
Abspielens zu gestatten, aber das Auslesen einer CD zum Zwecke
des Kopierens verhindern zu wollen...

Du kannst das Problem eigentlich nur durch entsprechende Nutzungs-
bestimmungen lösen.  Wenn jemand deinen verschleierten C-Code
rekonstruiert, dann hast du gegen ihn letztlich gar keine Handhabe
mehr, da er ihn ja am Ende neu schreiben muss (mit seinen eigenen
Worten) und damit ein neues Werk zwangsweise schafft, für das er
selbst völlig legal der Inhaber des Copyright wird.  Für deinen
originale Code jedoch hälst du das Copyright und kannst festlegen,
wer damit was unter welchen Bedingungen darf.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das große Problem bei Lib-Funktionen ist, daß alle 
Hardwareabhängigkeiten danach in Stein gemeißelt sind.
Z.B. CPU-Takt, Timer, Portpins, ADC-Inputs, PWM-Outputs, UARTs, ...


Peter

Autor: Nick Müller (muellernick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier: http://www.ioccc.org/
gibt es durchaus brauchbare Ansätze! ;-)


Gruß,
Nick

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Atmel hat mit dem UC3L das sog. FlashVault eingeführt, wo man seine 
Library in einen bestimmten Bereich flashen kann, diesen dann aber vor 
dem Auslesen schützen kann. Wird eine FUnktion aus diesem Bereich 
aufgerufen, sieht es beim Debuggen so aus als wäre es eine laaange jmp 
und return Instruction.
Vielleicht ist das ein Ansatz, seine SW bereits geflasht mit einem uC 
weiterzugeben...

FlashVault code protection
The AT32UC3L includes a brand new flash security technology named 
FlashVault. FlashVault allows the on-chip flash to be partially 
programmed and locked, creating secure on-chip storage for secret code, 
keys and software intellectual property. Code stored in the FlashVault 
will execute as normal, but cannot be read, copied or debugged. This 
allows a device with FlashVault code protection to carry a piece of 
valuable software such as a math library or an encryption algorithm from 
a trusted location to a potentially untrustworthy partner where the rest 
of the source code can be developed, debugged and programmed.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich seh das so:

Wer so eine Frage stellen muss, besitzt gar keinen Source Code der 
schützenswert wäre.
Wer Source Code hat, der tatsächlich schützenswert ist, hat genug 
Erfahrung in C, so dass er diese Frage gar nicht stellen muss.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Wer Source Code hat, der tatsächlich schützenswert ist, hat genug
> Erfahrung in C, so dass er diese Frage gar nicht stellen muss.

Vielleicht will er ja den Code schützen, damit andere die Fehler darin 
nicht sehen können.


Peter

Autor: Alter Sack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich seh das so:

Wenn die Moderatoren, sogar die arroganten und überflüssigen Kommentare 
übernehmen, braucht's auch keine Forenmitglieder.

MfG
Stephan

Autor: zaphod_beebelbrox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibt's ein paar Grundlagen, um den QUELLCODE unkenntlich(er) zu 
machen: http://en.wikipedia.org/wiki/Obfuscated_code

Viele Grüße,
Matthias

Autor: Daniel H. (Firma: keine) (commander)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Karl heinz Buchegger schrieb:
>> Wer Source Code hat, der tatsächlich schützenswert ist, hat genug
>> Erfahrung in C, so dass er diese Frage gar nicht stellen muss.
>
> Vielleicht will er ja den Code schützen, damit andere die Fehler darin
> nicht sehen können.
>
>
> Peter

Security by Obscurity, sehr gefährlich. Wenn Fehler vorhanden sind 
sollten sie auch ausgemerzt werden können.

Ansonsten sehe ich es so:

1. Es gibt die Möglichkeit, "obfuscated code" zu erzeugen, der schwer zu 
verstehen ist. Hier sehe ich allerdings das Problem, dass man zum einen 
Zeit investieren muss, wenn man seinen normalen Code in obfuscated code 
umschreiben möchte. Und von Anfang an obfuscated code zu entwickeln 
halte ich doch für etwas gewagt. Ausserdem lässt sich das 
Originalprogramm durch Beobachtung des Codes (Stichwort Debugger) usw. 
auch wieder rekonstruieren.

2. Library erzeugen mag Personen abhalten, die wenig Ahnung haben, 
Profis könnten versuchen den Code zu disassemblieren wodurch am Ende 
auch der (bzw. ein ähnlicher) Code erzeugt werden kann.

Insgesamt bin ich der Meinung, dass man abwägen muss, was man möchte. 
Soll niemand die Möglichkeit haben den Code zu sehen? Dann darf man ihn 
auch nicht veröffentlichen, weder im Original, noch obfuscated noch als 
library oder anderweitig kompiliert. Sollen nur Laien nicht darauf 
zugreifen können? Obfuscating oder Library. Ausser durch Verschlüsselung 
ist mir kein Weg bekannt, wie man auch Profis davon abhalten könnte, 
Reverse Engineering durchzuführen. Aber selbst das ist hier nicht 
möglich, da der Code zum entschlüsseln irgendwo unverschlüsselt 
hinterlegt sein muss.

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn die Moderatoren, sogar die arroganten und überflüssigen Kommentare
> übernehmen, braucht's auch keine Forenmitglieder.

Da muss ich sogar zustimmen.
Wieso sollte man die Erfahrung im Schutz von Code haben, wenn man 
gleichzeitig Erfahrung im C-Programmieren hat?
Könnte es nicht evtl. sein, dass sich jemand anders darum kümmert, was 
mit dem Code passiert? Wie es z.B. in etlichen Firmen der Fall ist?
A erstellt den Code nur und gibt ihn an B weiter.
B kümmert sich darum, was mit dem Code passiert und wie er zu schützen 
ist.
Da braucht a exakt 0% Wissen über Codeschutz (bzw. nur so viel, dass er 
ihn selbst nicht weitergibt)

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir Peters Code an... er kanns :-)

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es um veröffentlichen im Netz oder ähnlichen geht, lass einfach den 
entsprechenden Code weg.
Obfuscated code und library bringt nix. Wenn dir der Schutz in Form 
eines Copyrights / Lizenz nicht ausreicht, sollest du überlegen ob du 
den Code überhaupt weitergeben solltest..

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das sind ja viele Antworten.
Werde mal überlegen, wie ich es löse.
Danke
Gruß Siegfried

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.