# VBA Verschlüsseln -> SPS Entschlüsseln



## wackel_peter (29 Mai 2013)

Hallo Zusammen,
ich habe leider keinerlei Erfahrung was Kryptographie betrifft und stehe nun vor folgender Situation und erhoffe mir Hilfe und Tipps.


Situation bisher:
Aus Access heraus wird mittels VBA ein Barcode erzeugt.
Barcode wird auf Produkt gedruckt.
Automation liest Barcode ein und erkennt Produkt.


Um Produktpiraten das Leben schwerer zumachen soll es nun wie folgt ablaufen:
Access verschlüsselt mittels kundenspezifischen Passwort Informationen und
erstellt Barcode.
Barcode wird auf Produkt gedruckt.
Automation (SPS von EPIS bisher in AWL programmiert) entschlüsselt Barcode und erkennt Produkt.




Den String mittels VBA zu verschlüsseln ist nicht das größte Problem dort stehen Libs und Online-Tutorials zur Verfügung. Das Entschlüsseln auf der SPS scheint mir der Knackpunkt zu sein.


Bisher hätte ich eine XOR-Verschlüsselung für am einfachsten gehalten, jedoch sehe ich auch dort die Schwachpunkte durch den sich nicht-ändernen Key.
Gibt es einfache Alternative Verfahren oder könnte man die XOR-Geschichte sicher machen indem man den Quellcode auf der SPS schützt?


----------



## ducati (29 Mai 2013)

wackel_peter schrieb:


> indem man den Quellcode auf der SPS schützt?



Genau das ist das erste Problem. Finde eine SPS, bei der das Programm wirklich nicht auslesbar ist.

Bei S7 ist das herkömmliche "KNOW_HOW_PROTECT" schon lange für eigentlich jeden offen. Wies mit dem neuen "S7 Block Privacy" aussieht hab ich noch nicht nachgeforscht.

Dann müsstest Du einen Verschlüsselungsalgorithmus finden, welcher mit der doch etwas beschränkten Rechenleistung der SPS noch funktioniert. SPS-Code dafür hab ich bisher noch nirgends gesehen.

Gruß.


----------



## wackel_peter (29 Mai 2013)

In einem Anderen Forum wurde ich auf eine Digitale Signatur hingewiesen als Lösungsansatz.
Man berchnet also über den Barcode eine Prüfsumme mit einem geheimen Schlüssel. 
Beim Prüfen vom Barcode prüft man dann mit dem öffentlichen Schlüsseln ob die Barcode "echt" ist.
Das heißt nur der Öffentliche Schlüssel würde in der SPS ligen nur habe ich dort noch Probleme mir die Umsetzung vorzustellen.


----------



## ducati (29 Mai 2013)

Ich habe ein Problem mit dem Verständnis, was warum geschützt werden soll.

Wo sitzt denn das Access-System und die SPS? Irgendwo Zugänglich beim Kunden in China? Oder sind die beiden Dinge Sicher und es geht nur darum das die Produkte nicht kopiert werden (incl. einem echt aussehenden Barcode)?

Welche Daten werden über den Barcode übermittelt?

Gruß.


----------



## wackel_peter (29 Mai 2013)

Wir produzieren bei uns im Werk, die Anlagen(von uns) stehen beim Kunden.
Access und Barcode-Erzeugung bei uns. Auswertung Barcode beim Kunden. 
Um es Bildlich zu machen: Kaffepad herstellen bei uns. Unsere Kaffemaschinen sollen beim Kunden aber auch nur mit unseren Pads laufen.
Daher muss die Maschine erkennen, dass es sich um unsere echten Pads handelt.
Der Code enthält Menge und  Typ.


----------



## Ralle (29 Mai 2013)

Den aufgedruckten Barcode können ja Produktpiraten auch aufdrucken, es kann eigentlich nur um die Verarbeitungsmaschine selbst gehen.
Diese könnte z.Bsp. auch mit einer speziellen Speicherkarte von Siemens geschützt werden, deren Nummer mit der Software verbunden wird so dass die Software auf der SPS nur mit dieser speziellen Speicherkarte läuft. Näheres kann ich dazu nicht sagen, weil ich das noch nie eingesetzt habe, aber dazu finden sich Beiträge im Forum und auch bei Siemens selbst.


----------



## Ralle (29 Mai 2013)

@wackel_peter

Da war deine Antwort schneller als meine.
Wie wollt ihr denn verhindern, dass der Pirat euren Ident-Code einfach dupliziert?
Dazu muß er ihn ja nicht entziffern können!


----------



## ducati (29 Mai 2013)

Ok, mehrere Probleme...

1. SPS vor Auslesen des Programms schützen und vor Manipulation schützen
2. Barcode so verschlüsseln, das kein gültiger Code irgendwie anders generiert werden kann
3. Barcode muss irgendwie mit ner laufenden Nummer versehen sein, damit ein gültiger original Code nicht mehrfach kopiert werden kann.

2. muss evtl. garnicht so aufwendig sein, ist halt die Frage, wie viel Mühe sich jemand macht das zu entschlüsseln

1 und 3 sind da schon schwieriger umzusetzen.


----------



## wackel_peter (29 Mai 2013)

Der Code könnte nur einmal verwendbar sein (in RL geringer Stückzahlen als Kaffepads  )


----------



## ducati (29 Mai 2013)

Ralle schrieb:


> @wackel_peter
> 
> Da war deine Antwort schneller als meine.
> Wie wollt ihr denn verhindern, dass der Pirat euren Ident-Code einfach dupliziert?
> Dazu muß er ihn ja nicht entziffern können!



naja, es muss ne laufende Nummer im Barcode enthalten sein, und die Kaffemaschine jeden lfd. Nummer nur einmal akzeptiern...


----------



## wackel_peter (29 Mai 2013)

ducati schrieb:


> Ok, mehrere Probleme...
> 
> 1. SPS vor Auslesen des Programms schützen und vor Manipulation schützen
> 2. Barcode so verschlüsseln, das kein gültiger Code irgendwie anders generiert werden kann
> ...



Da war einer Schneller 
zu 1. Bei einer Signatur wäre das Auslesen doch möglich wenn cih das richtig verstehe, da der Key in der SPS ja Öffentlich ist.
zu 2. Es soll gar nicht unmöglich sein, nur sollte der Aufwand zu hoch sein, das eine Produktion nicht lohnt (wenn unsere Anlagen öfter Key ändern)
zu 3. Das ist schnell Machbar indem wir das Produktionsdatum bzw Ablaufdatum mitreinnehmen.


----------



## ducati (29 Mai 2013)

wackel_peter schrieb:


> zu 1. Bei einer Signatur wäre das Auslesen doch möglich wenn cih das richtig verstehe, da der Key in der SPS ja Öffentlich ist.



Hmm, dazu bin ich jetzt zu wenig Experte um zu sagen ob es mit Öffentlichem Schlüssel + Entschlüsselungsallgorithmus trotzdem *nicht* möglich ist, korrekte Keys zu erzeugen.

Aber auch das SPS-Progamm muss vor Veränderung geschützt werden, sonst löscht der Kunde einfach mal den Code aus dem SPS-Programm


----------



## Ralle (29 Mai 2013)

wackel_peter schrieb:


> Da war einer Schneller
> zu 1. Bei einer Signatur wäre das Auslesen doch möglich wenn cih das richtig verstehe, da der Key in der SPS ja Öffentlich ist.
> zu 2. Es soll gar nicht unmöglich sein, nur sollte der Aufwand zu hoch sein, das eine Produktion nicht lohnt (wenn unsere Anlagen öfter Key ändern)
> zu 3. Das ist schnell Machbar indem wir das Produktionsdatum bzw Ablaufdatum mitreinnehmen.



Ich weiß nicht, wenn das klappen soll, muß jede Kaffeemaschine sich die schon einmal eingelesenen Pad-Nummern merken und vielleicht zusätzlich eine Art Verfallsdatum, so daß Pads, älter als X Tage nach der Produktion abgelehnt werden. Die gemerkten Pad-Nummern, die dann irgendwann verfallen, könnte man dann löschen. Aber das ist ein enormer Aufwand, vielleicht wäre es tatsächlich einfacher einen RFID-Chip auf die Pads zu kleben und abzufragen, aber auch der ist irgendwie kopier- und nachbaubar. Die Verschlüsselung sollte schon halbwegs hochwertig sein, sonst ist die mit ein paar duzend Pads und entsprechender Rechentechnik vielleicht schneller geknackt, als die Maschinen beim Kunden stehen.


----------



## ducati (29 Mai 2013)

wackel_peter schrieb:


> zu 3. Das ist schnell Machbar indem wir das Produktionsdatum bzw Ablaufdatum mitreinnehmen.



Es muss schon ne laufende Nummer für jedes Pad sein, sonst kauft der Fälscher einmal pro Monat bei Euch nen PAD und kopiert den Barcode dann für diesen Monat auf sein Pad.


----------



## wackel_peter (29 Mai 2013)

Um nochmal auf die Signatur zurückzukommen.
Die Idee gefällt mir ja gut.
http://www.youtube.com/watch?v=R2lZHYn24Ck
Nur die Umsetzung kann ich mir auf der Hardware schwer vorstellen.

Die Prüfsumme eines String mittels geheimen Key ermitteln.
Und mittels Öffentlichen Key überprüfen ob der Barcode echt ist?
Dazwischen fehlen mir ein paar Schritte.


----------



## ducati (29 Mai 2013)

Du brauchst halt die mathematische Formel/ den Berechnungsalgorithus... wenn das nicht zu viel ist, kann manns auch in der SPS umsetzen


----------



## wackel_peter (29 Mai 2013)

Das ganze scheint nicht einfach umsetzbar zu sein, gerade was ne SPS betrifft.

http://www.itwissen.info/definition/lexikon/Digitale-Signatur-DSig-digital-signature.html
http://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem

In VBA würde ichs evtl noch hinkriegen also das Schlüssel erzeugen und das Signieren aber SPS-Seitig... mmh


----------



## wackel_peter (29 Mai 2013)

Das ganze scheint nicht einfach umsetzbar zu sein, gerade was ne SPS betrifft.

http://www.itwissen.info/definition/lexikon/Digitale-Signatur-DSig-digital-signature.html
http://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem

In VBA würde ichs evtl noch hinkriegen also das Schlüssel erzeugen und das Signieren aber SPS-Seitig... mmh


----------



## ducati (29 Mai 2013)

wackel_peter schrieb:


> In VBA würde ichs evtl noch hinkriegen also das Schlüssel erzeugen und das Signieren aber SPS-Seitig... mmh



mit SCL / ST geht auch in ner SPS einiges, in AWL würd ichs jetzt auch nicht machen wollen...


----------



## Zottel (29 Mai 2013)

Ein paar Gedanken zu diesem Thema:

Den Algorithmus wird man sicher auf eine SPS bringen können, aber keine Ahnung, wie lange er dann braucht?
Wieviele Teile muß die SPS in welcher Zeit auf Echtheit prüfen?

Mir scheint, das Hauptproblem wäre, daß es im SPS-Programm einen Punkt geben muß, wo entschieden wird

U Kaffepad_echt
= A_Maschine_laeuft

Das muß man dann nur negieren.

Ich erinnere mich an alte Zeiten, als ich mich mit dem einen oder anderen Kopierschutz beschäftigt habe. Die hatten früher auch diesen Punkt.
Vielleicht bist du aber sicher, daß der Kunde das Programm niemals anfaßt, dann ist es eben kein Problem.

Bei der Asymetrischen Verschlüsselung signiert man ja mit einem privaten Schlüssel und der Empfänger hat einen öffentlichen Schlüssel, um die Echtheit zu prüfen. Wenn der Kunde das mitmacht und auf jeden Fall auch bei euch kauft, könntet ihr den Schlüssel ab und zu wechseln. Dann braucht die SPS auf der Kaffeemaschine euren neuen Schlüssel. Wenn ihr den per Fernwartung installiertet, hättet ihr Gelegenheit, die Integrität des Programms zu prüfen.

Zurück zum PC-Kopierschutz:
Manche haben versucht, mehr als einen Abfragepunkt einzubauen, aber das ist in einer SPS zu überschaubar.
Dann wurden Teile des Programms verschlüsselt, aber eine S7 kann (meines Wissens) nicht das eigene Programm manipulieren. 
Wenn es zudem im Ganzen entschlüsselt wird, kann man es dann zur Laufzeit auslesen. In kopiergeschützten Programmen wurden dann später immer nur Teile im Speicher gehalten.

Da könnte dann eine ganz andere Steuerung helfen, auf Basis von PC, Mikrocontroller, FPGA, etc. 

Wenn ihr ganz viel Zykluszeit übrig habt, könnte man eine virtuelle Maschine programmieren, deren Programm wäre für die S7 Daten, stünde in einem DB, ließe sich verschlüsseln und müßte halt irgendetwas Essentielles tun, was der Kunde nicht "mal eben" ersetzen kann.


----------

