Alexander (HH): Wie sicher ist die Keydatei? (LUKS)

Beitrag lesen

Moin Moin!

Hi Alex,

die MAC kann man schon auslesen

Das hat niemand bestritten. Das Problem ist nicht das auslesen, sondern die Eindeutigkeit.

und müssten Unikate vom Schnittstellenbaustein sein ip link show dev eth0 | grep -oE 'link/ether ([a-f0-9]{2}:){5}[a-f0-9]{2}' | cut -d' ' -f2

Rate mal, was ip macht. Richtig, es fragt den Kernel. Der fragt den Treiber, der diskutiert das mit der Hardware aus. Nur: Woher kommt die MAC-Adresse in der Hardware? In den guten alten Zeiten hat man die tatsächlich in die Hardware gebrannt. Heute kommt die aus einem EEPROM, das ab Werk programmiert wurde, oder aber die Kombination ROM/BIOS + Bootloader + Betriebssystem schreibt eine irgendwo anders(!) gespeicherte MAC-Adresse beim Starten in die Hardware. Genau das passiert beim Raspi. Schreibe ich genau nach Anleitung smsc95xx.macaddr=B8:AA:BC:DE:F0:12 in die config.txt auf der SD-Karte, kopiere die 1000x, und stecke die in 1000 Raspis, haben alle 1000 Raspis die selbe MAC-Adresse.

Dein Stückchen Shell-Code bemüht drei verschiedene Programme, nur um die MAC-Adresse zu ermitteln. Schlimmer noch: Du benutzt keine absoluten Pfade für ip, grep und cut. Das macht Angriffe extrem einfach. Dabei reichen ein paar ioctl()-Aufrufe aus, um die MAC-Adresse zu ermitteln, viel schneller, viel weniger Speicherbedarf, und ohne externe, angreifbare Programme. Wenn Du in PHP bastelst, kannst Du Dir minimal grep und cut komplett sparen und die Ausgabe von ip link show dev eth0 in PHP zerlegen.

Nur hilft das alles nichts, weil auf dem Raspi die MAC-Adresse - wie bei allen anderen Systemen auch - zwar eindeutig sein soll, aber eben nicht eindeutig ist. Die MAC-Adresse kann nachträglich frei geändert werden. Jeder Schutz, der auf der MAC-Adresse aufbaut, kann so ausgehebelt werden.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".