Hallo,
unsere Anwendung auf dem RevPi Core3 nutzt Zertifikate um sich gegen einen Endpunkt in der Cloud zu authentifizieren. Für uns wäre interessant ob und inwieweit wir den eingebauten Crypto-Chip nutzen können um die Zertifikate und sonstige Secrets so ablegen zu können, dass sie nicht von dem RevPi gestohlen oder kompromittiert werden können (mit vertretbarem Aufwand ). Gibt es dafür Best Practices?
Verwendung des Crypto-Chips
Re: Verwendung des Crypto-Chips
Der Cryptochip ist das einzige nicht für die Allgemeinheit freigegebene Teil. Die Verwendung kann nur über eine Vereinbarung mit KUNBUS und eine NDA mit Atmel geregelt werden und setzt Volumenverträge voraus. Natürlich steht Dir offen, die Doku unter eigener Regie von Atmel zu beziehen und das zu verwenden, was Dir sinnvoll erscheint. Aber ob und in wie weit dann gewählte Wege auch bei künftigen Geräten noch genauso verwendbar sind, ist dann Dein Risiko. Aktuell behalten wir uns vor, alle Speicherzellen des Cryptochips für eigene Zwecke (bzw. für Großkunden) zu verwenden und auch entsprechend durch production side final writes für den weiteren Gebrauch zu schließen.
Bei Interesse bitte ebenfalls über sales@kunbus.de anfragen.
Bei Interesse bitte ebenfalls über sales@kunbus.de anfragen.
Unser RevPi Motto: Don't just claim it - make it!
Re: Verwendung des Crypto-Chips
Ich setze mich gerade intensiv mit dem Ding auseinander.
Der Chip heißt "ATECC508A" und ist über /dev/i2c-1 erreichbar.
Diverse Dokumentation gibt es hier: https://www.microchip.com/wwwproducts/en/ATECC508A
Das abgespeckte DataSheet gibt es hier: http://ww1.microchip.com/downloads/en/D ... 05928A.pdf
Ein (inzwischen veraltetes) DataSheet habe ich per NDA bekommen. Das aktuelle findet man per Google, lässt sich direkt beim Hersteller runterladen.
Software unter anderem:
- https://git.kernel.org/pub/scm/linux/ke ... tmel-ecc.c
- https://github.com/MicrochipTech/cryptoauthlib
- https://github.com/RevolutionPi/cryptoa ... ssl-engine
- strace piSerial -s
Der Chip unterstützt ausschließlich ECC mit P-256 sowie SHA-256 und MAC. Und sehr viele kleine Extra-Features und -Optionen die mich gerade wahnsinnig machen.
Das größte Problem das ich derzeit habe: Man muss den Chip konfigurieren. Das ist kompliziert. Dann muss man die Konfiguration locken und danach sind keine Änderungen mehr möglich.
Ein Fehler und der Chip ist Schrott. Dann müsste ich mir erstmal einen neuen besorgen und einen Kollegen mit ruhigen Händen bitten, den Lötkolben zu schwingen.
Wenn Kunbus den Chip selbst nutzen will für mehr als nur die Seriennummer auszulesen, muss Kunbus die Konfiguration auch definieren, die lässt sich dann nicht mehr ändern.
Das könnte man, soweit ich einschätzen kann, aber so gestalten, dass Kunbus einen Teil der 16 Key Slots selbst nutzt und die anderen so konfiguriert, dass die User (also wir) diese nutzen können.
Was mir persönlich gerade sehr weiterhelfen würde sind vollständige Beispielkonfigurationen. Und ich habe die Vermutung, dass Kunbus an demselben Punkt steht
> Für uns wäre interessant ob und inwieweit wir den eingebauten Crypto-Chip nutzen können um die Zertifikate und sonstige Secrets so ablegen zu können, dass sie nicht von dem RevPi gestohlen oder kompromittiert werden können (mit vertretbarem Aufwand ). Gibt es dafür Best Practices?
Private Keys kann man ablegen. Entweder selbst generieren und in den Chip hochladen, oder vom Chip generieren lassen. Laut Doku lässt sich der Private Key nicht mehr runterladen. Der Chip kann dann ECDSA und ECDH berechnen. Das dürfte für TLS ausreichen.
Zertifikate ist schwieriger, die können ja beliebig groß werden. Da ist scheinbar vorgesehen, dass man bestimmte Anteile vom Zertifikat in einem bestimmten Format in den Chip lädt. Das komplette Zertifikat müsste dann auf dem RevPi wieder zusammengesetzt werden. So ganz habe ich das Konzept noch nicht durchdrungen. Alternativ kann man das Zertifikat einfach ins Dateisystem oder auf einen Webserver im Internet legen. Zertifikate enthalten keine vertraulichen Informationen, bei jedem TLS-Verbindungsaufbau schiebt man das Zertifikat eh offen durch die Leitung.
Der Chip heißt "ATECC508A" und ist über /dev/i2c-1 erreichbar.
Diverse Dokumentation gibt es hier: https://www.microchip.com/wwwproducts/en/ATECC508A
Das abgespeckte DataSheet gibt es hier: http://ww1.microchip.com/downloads/en/D ... 05928A.pdf
Ein (inzwischen veraltetes) DataSheet habe ich per NDA bekommen. Das aktuelle findet man per Google, lässt sich direkt beim Hersteller runterladen.
Software unter anderem:
- https://git.kernel.org/pub/scm/linux/ke ... tmel-ecc.c
- https://github.com/MicrochipTech/cryptoauthlib
- https://github.com/RevolutionPi/cryptoa ... ssl-engine
- strace piSerial -s
Der Chip unterstützt ausschließlich ECC mit P-256 sowie SHA-256 und MAC. Und sehr viele kleine Extra-Features und -Optionen die mich gerade wahnsinnig machen.
Das größte Problem das ich derzeit habe: Man muss den Chip konfigurieren. Das ist kompliziert. Dann muss man die Konfiguration locken und danach sind keine Änderungen mehr möglich.
Ein Fehler und der Chip ist Schrott. Dann müsste ich mir erstmal einen neuen besorgen und einen Kollegen mit ruhigen Händen bitten, den Lötkolben zu schwingen.
Wenn Kunbus den Chip selbst nutzen will für mehr als nur die Seriennummer auszulesen, muss Kunbus die Konfiguration auch definieren, die lässt sich dann nicht mehr ändern.
Das könnte man, soweit ich einschätzen kann, aber so gestalten, dass Kunbus einen Teil der 16 Key Slots selbst nutzt und die anderen so konfiguriert, dass die User (also wir) diese nutzen können.
Was mir persönlich gerade sehr weiterhelfen würde sind vollständige Beispielkonfigurationen. Und ich habe die Vermutung, dass Kunbus an demselben Punkt steht
> Für uns wäre interessant ob und inwieweit wir den eingebauten Crypto-Chip nutzen können um die Zertifikate und sonstige Secrets so ablegen zu können, dass sie nicht von dem RevPi gestohlen oder kompromittiert werden können (mit vertretbarem Aufwand ). Gibt es dafür Best Practices?
Private Keys kann man ablegen. Entweder selbst generieren und in den Chip hochladen, oder vom Chip generieren lassen. Laut Doku lässt sich der Private Key nicht mehr runterladen. Der Chip kann dann ECDSA und ECDH berechnen. Das dürfte für TLS ausreichen.
Zertifikate ist schwieriger, die können ja beliebig groß werden. Da ist scheinbar vorgesehen, dass man bestimmte Anteile vom Zertifikat in einem bestimmten Format in den Chip lädt. Das komplette Zertifikat müsste dann auf dem RevPi wieder zusammengesetzt werden. So ganz habe ich das Konzept noch nicht durchdrungen. Alternativ kann man das Zertifikat einfach ins Dateisystem oder auf einen Webserver im Internet legen. Zertifikate enthalten keine vertraulichen Informationen, bei jedem TLS-Verbindungsaufbau schiebt man das Zertifikat eh offen durch die Leitung.
Re: Verwendung des Crypto-Chips
KUNBUS hat erst einmal ganz generell diesen Chip nicht zur freien Verwendung freigegeben und es ist die Einzige Komponente, die vom Open Source Konzept ausgenommen ist. Auch wir haben mit dem Hersteller eine NDA.
Unsere Kunden können mit uns eine NDA vereinbaren und dann mit uns diskutieren, ob und welche Teile des Chips dauerhaft verwendet werden können. Wir können dann mit dem Kunden eine entsprechende Vereinbarung treffen. Dies alles setzt aber einen Volumenabnahmevertrag voraus, insbesondere wenn dadurch ein kundespezifisches Image entsteht.
Unsere Kunden können mit uns eine NDA vereinbaren und dann mit uns diskutieren, ob und welche Teile des Chips dauerhaft verwendet werden können. Wir können dann mit dem Kunden eine entsprechende Vereinbarung treffen. Dies alles setzt aber einen Volumenabnahmevertrag voraus, insbesondere wenn dadurch ein kundespezifisches Image entsteht.
Unser RevPi Motto: Don't just claim it - make it!