nochmal Frage zum Raspberry

Am 06.02.2019 um 18:49 schrieb Michael Schwingen:
On 2019-02-05, Stefan <df9bi@gmx.de> wrote:
Der Kunde kauft ein Gerät und damit auch eine Software. Ohne die
spezielle Hardware ist die Software eh sinnlos. Aber wenn er eine
SD-Karte aus einem Gerät in ein anderes steckt und die Software das
nicht merkt, haben wir ein Problem.

Wie kommuniziert der Raspi denn mit Deiner Hardware? Du hast damit doch
praktisch Dein eigenes Dongle (in Form der externen Hardware), an die man
die Konfiguration binden kann.

Das ist im Prinzip richtig. Meine Hardware soll Ăźber Uart mit dem Raspbi
kommunizieren. Die Software macht auch nur Sinn mit dieser Hardware.

Kopierschutz ist deshalb auch nicht das Thema. Es geht einfach darum,
Manipulationen zu verhindern.

Wenn ich Dich richtig verstehe, wäre es ja egal, wenn der Raspi getauscht
wird, die SD-Karte aber weiterhin am gleichen Exempler der externen Hardware
betrieben wird?

jein

Das wĂźrde ein Teil des Problems lĂśsen, aber eben nur ein Teil.

Es geht um Sicherheit gegenĂźber Manipulation und unberechtigte Zugriffe
und da kann ich die verschiedenen Konzepte hier leider nicht im Detail
Ăśffentlich diskutieren.
 
On 2/6/19 7:10 PM, Stefan wrote:
Am 06.02.2019 um 18:49 schrieb Michael Schwingen:
On 2019-02-05, Stefan <df9bi@gmx.de> wrote:
Der Kunde kauft ein Gerät und damit auch eine Software. Ohne die
spezielle Hardware ist die Software eh sinnlos. Aber wenn er eine
SD-Karte aus einem Gerät in ein anderes steckt und die Software das
nicht merkt, haben wir ein Problem.

Wie kommuniziert der Raspi denn mit Deiner Hardware? Du hast damit doch
praktisch Dein eigenes Dongle (in Form der externen Hardware), an die man
die Konfiguration binden kann.

Das ist im Prinzip richtig. Meine Hardware soll Ăźber Uart mit dem Raspbi
kommunizieren. Die Software macht auch nur Sinn mit dieser Hardware.

Kopierschutz ist deshalb auch nicht das Thema. Es geht einfach darum,
Manipulationen zu verhindern.

Dann kĂśnntest du doch einfach mit der Hardware via RS232 reden und wenn
die nicht die richtige Antwort liefert läuft die Software nicht.
Irgendein nicht allzu leichtes Challenge/Response-Verfahren.

Gerrit
 
Am 06.02.2019 um 19:12 schrieb Gerrit Heitsch:
On 2/6/19 7:10 PM, Stefan wrote:
Am 06.02.2019 um 18:49 schrieb Michael Schwingen:
On 2019-02-05, Stefan <df9bi@gmx.de> wrote:
Der Kunde kauft ein Gerät und damit auch eine Software. Ohne die
spezielle Hardware ist die Software eh sinnlos. Aber wenn er eine
SD-Karte aus einem Gerät in ein anderes steckt und die Software das
nicht merkt, haben wir ein Problem.

Wie kommuniziert der Raspi denn mit Deiner Hardware? Du hast damit doch
praktisch Dein eigenes Dongle (in Form der externen Hardware), an die
man
die Konfiguration binden kann.

Das ist im Prinzip richtig. Meine Hardware soll Ăźber Uart mit dem
Raspbi kommunizieren. Die Software macht auch nur Sinn mit dieser
Hardware.

Kopierschutz ist deshalb auch nicht das Thema. Es geht einfach darum,
Manipulationen zu verhindern.

Dann kĂśnntest du doch einfach mit der Hardware via RS232 reden und wenn
die nicht die richtige Antwort liefert läuft die Software nicht.
Irgendein nicht allzu leichtes Challenge/Response-Verfahren.

Schon klar, aber es soll nicht mĂśglich sein, die SD-Karte zu kopieren,
diese in einen anderen Raspi zu stecken und schon kann der mit der k
Hardware kommunizieren.

Deshalb die Sache mit der Seriennummer des Raspi. Diese wird in meine
Hardware mit eingespielt und so ist dann der Raspi mit der einen Platine
fest verheiratet. Die Platine befindet sich in einem anderen Gehäuse, so
dass ein Angreifer nicht Ăźber den Raspi die Hardware ansteuern kann.

Das läßt sich natürlich auch lösen, indem man nicht den Raspi, sondern
nur einen HDMI Touchscreen in den angreifbaren Teil einbaut. Das wäre
dann eine zusätzliche Sicherheitsmaßnahme.


 Gerrit
 
Am 06/02/2019 um 8:24 PM schrieb Stefan:
Am 06.02.2019 um 19:12 schrieb Gerrit Heitsch:

Dann kĂśnntest du doch einfach mit der Hardware via RS232 reden und
wenn die nicht die richtige Antwort liefert läuft die Software nicht.
Irgendein nicht allzu leichtes Challenge/Response-Verfahren.

Schon klar, aber es soll nicht mĂśglich sein, die SD-Karte zu kopieren,
diese in einen anderen Raspi zu stecken und schon kann der mit der k
Hardware kommunizieren.

Dann nimmt der BĂśsewicht einfach den ganzen RasPi mit :-]

DoDi
 
Am 05.02.19 um 18:24 schrieb Manuel Reimer:
On 2/4/19 9:22 PM, Marcel Mueller wrote:
Das war nur als Beispiel gedacht. Man kann die API problemlos selber
aufrufen. Siehe
https://github.com/raspberrypi/firmware/blob/master/opt/vc/include/interface/vmcs_host/vcgencmd.h

https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
-> Get board serial (0x10004)

Und zusammen mit den Headern kann ich in kĂźrzester Zeit eine kompatible
*.so kompilieren die an das Original ankoppelt. Dann einmal alle Befehle
ans Original weitergeben bis auf die, die ich Ăźbersteuern will.

Ähm, die Header definieren im Wesentlichen nur das Message-Format. Die
Interpretation der Messages sowie die Bereitstellung der Antwort macht
nicht die ARM-CPU. Die Kommunikation erfolgt Ăźber Hardware-Register. Es
wird schwierig, da etwas zu Ăźberladen.


Marcel
 
Am 07.02.2019 um 03:26 schrieb Hans-Peter Diettrich:
Am 06/02/2019 um 8:24 PM schrieb Stefan:
Am 06.02.2019 um 19:12 schrieb Gerrit Heitsch:

Dann kĂśnntest du doch einfach mit der Hardware via RS232 reden und
wenn die nicht die richtige Antwort liefert läuft die Software nicht.
Irgendein nicht allzu leichtes Challenge/Response-Verfahren.

Schon klar, aber es soll nicht mĂśglich sein, die SD-Karte zu kopieren,
diese in einen anderen Raspi zu stecken und schon kann der mit der k
Hardware kommunizieren.

Dann nimmt der BĂśsewicht einfach den ganzen RasPi mit :-]

Das wäre noch nicht so schlimm.

Er soll nur nicht in der Lage sein, Konfigurationsdaten zu ändern.

Bestimmte Funktionen des Systems kĂśnnen nur bedient werden, wenn ein
Admin-Passwort bekannt ist. Wenn man nun die Datei, in der sich das
Passwort befindet einfach austauscht und damit Zugriff auf das System
bekäme, wäre das schlecht.

Deshalb sollte es auch nicht mĂśglich sein, dass jemand, der ein System
besitzt, dessen Admin Code er kennt, den dazugehĂśrigen Raspi in einem
fremden System ans Laufen bekommt und so mit seinem Admin Code Zugriff
auf das fremde System bekommt.
 
On 2/8/19 2:50 PM, Stefan wrote:
Am 07.02.2019 um 03:26 schrieb Hans-Peter Diettrich:
Am 06/02/2019 um 8:24 PM schrieb Stefan:
Am 06.02.2019 um 19:12 schrieb Gerrit Heitsch:

Dann kĂśnntest du doch einfach mit der Hardware via RS232 reden und
wenn die nicht die richtige Antwort liefert läuft die Software nicht.
Irgendein nicht allzu leichtes Challenge/Response-Verfahren.

Schon klar, aber es soll nicht mĂśglich sein, die SD-Karte zu kopieren,
diese in einen anderen Raspi zu stecken und schon kann der mit der k
Hardware kommunizieren.

Dann nimmt der BĂśsewicht einfach den ganzen RasPi mit :-]

Das wäre noch nicht so schlimm.

Er soll nur nicht in der Lage sein, Konfigurationsdaten zu ändern.

Bestimmte Funktionen des Systems kĂśnnen nur bedient werden, wenn ein
Admin-Passwort bekannt ist. Wenn man nun die Datei, in der sich das
Passwort befindet einfach austauscht und damit Zugriff auf das System
bekäme, wäre das schlecht.

Deshalb sollte es auch nicht mĂśglich sein, dass jemand, der ein System
besitzt, dessen Admin Code er kennt, den dazugehĂśrigen Raspi in einem
fremden System ans Laufen bekommt und so mit seinem Admin Code Zugriff
auf das fremde System bekommt.

Es ist allerdings kein Problem die SD-Karte aus dem Raspi zu entnehmen,
zu kopieren und dann den Inhalt in Ruhe zu analysieren.

Gerrit
 
Am 08.02.2019 um 14:50 schrieb Stefan:

Das wäre noch nicht so schlimm.

Er soll nur nicht in der Lage sein, Konfigurationsdaten zu ändern.

Dann verschlĂźssel die Dateien, oder berechne einen Hash um
Manipulationen zu erkennen.
 
Am 08.02.2019 um 17:37 schrieb Thorsten BĂśttcher:
Am 08.02.2019 um 14:50 schrieb Stefan:

Dann nimmt der BĂśsewicht einfach den ganzen RasPi mit :-]

Das wäre noch nicht so schlimm.

Er soll nur nicht in der Lage sein, Konfigurationsdaten zu ändern.

Dann verschlĂźssel die Dateien, oder berechne einen Hash um
Manipulationen zu erkennen.

Änderung der Konfigurationsdaten kann auch bedeuten, dass man
Konfigurationsdaten von einem System auf ein anderes kopiert.

Unterm Strich ist das alles kein Problem, wenn der Raspi eindeutig Ăźber
seine Seriennummer identifizierbar ist. Insofern wurde meine Frage
inzwischen beantwortet.
 
On 2019-02-07, Marcel Mueller <news.5.maazl@spamgourmet.org> wrote:
Ähm, die Header definieren im Wesentlichen nur das Message-Format. Die
Interpretation der Messages sowie die Bereitstellung der Antwort macht
nicht die ARM-CPU. Die Kommunikation erfolgt Ăźber Hardware-Register. Es
wird schwierig, da etwas zu Ăźberladen.

Bist Du im Kernel- oder im Userspace?

Wenn Du im userspace die Mailbox-Register mit mmap zugreifbar machen willst,
kann ich Dir mit einem passend gepatchten Kernel da auch Speicher mit einer
Mailbox-Emulation hinmappen. Wobei: per LD_PRELOAD geht das vermutlich sogar
ohne Kernelmanipulationen.

Auch, wenn es so aussehen mag: im userspace hast Du keinen direkten Zugriff
auf die Hardware.

cu
Michael
 
Am 08.02.19 um 21:11 schrieb Michael Schwingen:
On 2019-02-07, Marcel Mueller <news.5.maazl@spamgourmet.org> wrote:

Ähm, die Header definieren im Wesentlichen nur das Message-Format. Die
Interpretation der Messages sowie die Bereitstellung der Antwort macht
nicht die ARM-CPU. Die Kommunikation erfolgt Ăźber Hardware-Register. Es
wird schwierig, da etwas zu Ăźberladen.

Bist Du im Kernel- oder im Userspace?

Wenn Du im userspace die Mailbox-Register mit mmap zugreifbar machen willst,
kann ich Dir mit einem passend gepatchten Kernel da auch Speicher mit einer
Mailbox-Emulation hinmappen.

Viel Spaß beim Emulation schreiben. Das gibt viele Funktionen. Und da
liegen viele Register. Der Aufwand ist sicher hĂśher, als aus dem
betreffenden Programm die Abfrage raus zu patchen.

FĂźr den Hausgebrauch tut es wie schon gesagt cpuinfo, und fĂźr die eins
schwierigere Nummer reicht mutmaßlich IOCTL_MBOX_PROPERTY. Danach kommt
man schon in den Bereich, wo Anwendung patchen ins Spiel kommt.

Auch, wenn es so aussehen mag: im userspace hast Du keinen direkten Zugriff
auf die Hardware.

Das ist so, aber da du nur 4k-weise mappen kannst, musst du nahezu den
ganzen Raspi emulieren. Das wird bei der lahmen CPU sehr schnell
inpraktikabel. Selbst eine reine Mailbox-Emulation ist mutmaßlich schon
kritisch, da ja jeder einzelne Zugriff Ăźber eine Exception laufen muss.
Spätestens wenn in der Anwendung noch ein simples Timing-Limit enthalten
ist, ist die Sache mit der Emulation rum.


Marcel
 
On 2019-02-08, Marcel Mueller <news.5.maazl@spamgourmet.org> wrote:
Viel Spaß beim Emulation schreiben. Das gibt viele Funktionen. Und da
liegen viele Register. Der Aufwand ist sicher hĂśher, als aus dem
betreffenden Programm die Abfrage raus zu patchen.

BTDT (auf dem Milan fĂźr die Chips, die ein original-Atari halt so hatte).
Insbesondere, wenn das nicht mit beliebiger, sondern nur dieser einen
Software funktionieren soll, sollte es relativ einfach sein, alles bis auf
diede eine Funktion durchzureichen.

Im einfachsten Fall macht der Prozess nur diesen einen Request und man kann
sich die komplette restliche Emulation schenken ...

Das ist so, aber da du nur 4k-weise mappen kannst, musst du nahezu den
ganzen Raspi emulieren. Das wird bei der lahmen CPU sehr schnell
inpraktikabel. Selbst eine reine Mailbox-Emulation ist mutmaßlich schon
kritisch, da ja jeder einzelne Zugriff Ăźber eine Exception laufen muss.

Nur fĂźr die direkten Hardware-Zugriffe, die dieser Prozess macht. Der Kernel
hat eigene, direkte mappings ohne Emulation dazwischen.

cu
Michael
 
Stefan wrote:
Am 08.02.2019 um 17:37 schrieb Thorsten BĂśttcher:
Am 08.02.2019 um 14:50 schrieb Stefan:

Dann nimmt der BĂśsewicht einfach den ganzen RasPi mit :-]

Das wäre noch nicht so schlimm.

Er soll nur nicht in der Lage sein, Konfigurationsdaten zu ändern.

Dann verschlĂźssel die Dateien, oder berechne einen Hash um
Manipulationen zu erkennen.

Änderung der Konfigurationsdaten kann auch bedeuten, dass man
Konfigurationsdaten von einem System auf ein anderes kopiert.

Unterm Strich ist das alles kein Problem, wenn der Raspi eindeutig Ăźber
seine Seriennummer identifizierbar ist. Insofern wurde meine Frage
inzwischen beantwortet.
Bleibt noch die Frage wie man die Seriennummer ausliest ohne Umweg ueber
/proc/cpuinfo
 

Welcome to EDABoard.com

Sponsor

Back
Top