Forum: Mikrocontroller und Digitale Elektronik PIN-Nr generieren.


von H.Joachim S. (crazyhorse)


Lesenswert?

Für ein Gerätchen (AVR + BTM112) würde ich gerne eine Pin-Nummer aus der 
Bluetooth-Adresse generieren und ins Modem schreiben. Nichts 
sicherheitsrelevantes, aber auch nicht so einfach wie Adresse + xx
BT- Adresse z.B. 00:12:27:D8:62 -> 4..8 ASCII-Zeichen. Das muss auch 
nicht eineindeutig sein, d.h. wenn der gleiche ASCII-PIN für mehrere 
BT-Adressen entstehen kann, wäre das nicht tragisch.
Anregungen, in welche Richtung ich da denken sollte?

von Cyblord -. (cyblord)


Lesenswert?

Such dir einen einfachen PRNG und nimm deine BT-Adresse als Seed.

Oder nimm die BT-Adresse als Eingabe für einen Hash-Algo (MD5, SHA1) und 
nimm die Ausgabe als Pin.

Am Ende machst ein Modulo so dass das Ergebnis die gewünschte Länge hat 
(z.B. Modulo 9999).

Ach ja, deine BT-Adresse nimmst du natürlich NICHT als Ascii sonders als 
das was sie ist: 5 Bytewerte.

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

H.Joachim Seifert schrieb:
> BT- Adresse z.B. 00:12:27:D8:62

Wie wärs mit 5 ASCII-Zeichen?
Dazu einfach so oft wie nötig auf jede der fünf 8bit-hexzahlen ^^ eine 
dezimale 10 addieren (mit absichtlichem Überlauf), bis sich eine 
ASCII-Ziffer '0' bis '9' ergibt.

Was hältste davon?

von H.Joachim S. (crazyhorse)


Lesenswert?

@Joachim: das ist zu einfach.
@cyblord: das ist ja schon echte Kryptografie... Na gut, warum nicht? 
Hast du eine ungefähre Vorstellung, wieviel Code das auf einem AVR 
erzeugt (es wird schon wieder eng :-) ), aber ich werde eh auf den 
Mega324 wechseln müssen...
Da fällt mir gerade ein: der Bootloader von HagenRe (der irgendwann auch 
noch reinkommt) benutzt doch auch sowas?
Was dann die Frage aufwirft: wie komme ich aus einem C-Programm an 
Assemblerroutinen aus dem Bootladerbereich? Ich glaub, die Idee lass ich 
lieber.

von Cyblord -. (cyblord)


Lesenswert?

H.Joachim Seifert schrieb:

> @cyblord: das ist ja schon echte Kryptografie... Na gut, warum nicht?

Naja nicht wirklich. Aber ich denke auch für dein Vorhaben oversized und 
unnötig.

Wenn du schon keine echte Sicherheit brauchst, dann verwurschelt die 
BT-Adresse einfach ein bisschen und fertig. Dann kannst du nämlich auch 
einfach die Ascii-Werte miteinander addieren (oder multiplizieren) und 
dann wieder Modulo rechnen.

Denn gegen was willst du dich hier schützen? Das sollte man erstmal 
wissen.

gruß cyblord

von H.Joachim S. (crazyhorse)


Lesenswert?

Es geht um Aquariencomputer, und ich möchte nicht, dass der Nachbar (es 
soll böswillige und gleichzeitig technisch begabte Nachbarn geben) 
einfach so die Pumpen stillegen kann. Aber angeblich verlangt der Markt, 
dass man sein Aquarium per App steuern kann...
Also nicht wirklich sicherheitsrelevant, aber sollte dennoch nicht offen 
wie ein Scheunentor sein.

von Cyblord -. (cyblord)


Lesenswert?

Ich würde das so lösen:

Jede Steuerung bekommt bei der Fertigung einen geheimen Schlüssel 
einprogrammiert (nicht zu lange da er Menschenlesbar sein sollte, also 
vielleicht in max. 10 Großbuchstaben darstellbar).
Aufkleber mit diesem Schlüssel ist auf der Steuerung drauf.

Um die Steuerung per App zu steuern muss man diesen Schlüssel in die App 
eingeben.

Nun gibt es 2 Möglichkeiten: Alle Kommunikation läuft jetzt mit diesem 
Schlüssel verschlüsselt ab (man benötigt dann aber AES implementiert).

Oder man macht ein einfaches Challenge-Response-Verfahren:

App schickt ein Kommando (X) an die Steuerung. Steuerung erzeugt eine 
Zufallszahl und schickt diese an die App. App nimmt die Zahl, addiert 
den geheimen Schlüssel, addiert das Kommando, bildet darüber einen 
Hashwert und schickt den zurück.
Die Steurung kann so einfach überprüfen ob die App im Besitz des 
geheimen Schlüssels ist, aber ein Lauscher auf der Leitung bekommt den 
Schlüssel nie zu sehen.
Die Zufallszahl verhindert Replay-Angriffe.

gruß cyblord

von H.Joachim S. (crazyhorse)


Lesenswert?

cyblord ---- schrieb:
> Jede Steuerung bekommt bei der Fertigung einen geheimen Schlüssel
> einprogrammiert

Genau das ist der Punkt, den ich vermeiden möchte. Die einzige Variable 
ist die BT-Adresse.

von Rowland (Gast)


Lesenswert?

Naja, dann verschlüssle einfach die BT-Adresse mittels AES und einem 
Gerneralschlüssel. Wenn es einfacher sein soll, dann könntest Du auch 
eine CRC-Summe der BT-Adresse bilden, was mit ein paar Zeile Code 
möglich sein sollte, um diese als PIN zu nutzen.

von Thomas E. (thomase)


Lesenswert?

Wie wäre es, das Bediener-Smartphone beim Aquariumcomputer einzubuchen?
Wie beim DECT-Telefon. Taste am Computer drücken, Einbuchfunktion auf 
Smartphone starten, Smartphone generiert einen Code und AVR schreibt den 
ins EEPROM. Wenn EEPROM leer(0xff) oder falscher Code, reagiert er auf 
gar nichts von aussen.
Der Code kann beliebig lang sein, weil sich den kein Mensch merken muss. 
Keine Aufkleber und der Controller wird minimal belastet, da die 
Codeerzeugung auf dem Gerät mit der grösseren Rechenleistung 
stattfindet.

mfg.

von Cyblord -. (cyblord)


Lesenswert?

Thomas Eckmann schrieb:
> Wie wäre es, das Bediener-Smartphone beim Aquariumcomputer einzubuchen?
> Wie beim DECT-Telefon. Taste am Computer drücken, Einbuchfunktion auf
> Smartphone starten, Smartphone generiert einen Code und AVR schreibt den
> ins EEPROM.
Und wie wird der Code übertragen? Den kann ja dann jeder mitlesen.

Und wie gehts danach weiter? Wie wird jetzt verhindert dass jemand 
unbefugtes Kommandos an die Steuerung absetzt?

Eine echte symmetrische Verschlüsselung zu implementieren braucht schon 
recht viel Ressourcen.

> Genau das ist der Punkt, den ich vermeiden möchte. Die einzige Variable
> ist die BT-Adresse.

Dann verwurste das halt mittels Hash oder einfacherer Funktion. Da 
beides unsicher ist, kommt es darauf nicht an.

von H.Joachim S. (crazyhorse)


Lesenswert?

Na, dann mal Danke für die ganzen Anregungen.
Ich werde dann mal 2 Varianten zur Diskussion stellen:

1. Geräte werden komplett ohne Pin ausgeliefert, der Endkunde kann dann 
selbst eine vergeben. Tut er es nicht, ist es eben möglich, dass andere 
rankommen. Tut er es, ist er selbst verantwortlich für die Aufbewahrung 
dieser (dürfte die Supportanfragen verringern, da der Hersteller eben 
keine Pin hat). Zur Not muss dann eben das Gerät eingeschickt werden, um 
den Kram zurückzusetzen.
2.
>Dann verwurste das halt mittels Hash oder einfacherer Funktion. Da
>beides unsicher ist, kommt es darauf nicht an.
Nachdem ich mich da mal ein bisschen eingelesen habe, sieht das 
vielversprechend aus. Pin wird mit festem Algorithmus im Gerät erzeugt 
und ins Modem geschrieben, Kunde bekommt ein Zettelchen mit. Falls Pin 
verloren, kann der Hersteller/Händler diese aus der BT-Adresse jederzeit 
rekonstruieren.

Wie gesagt, es soll nur dem Gelegenheitsspieltrieb einen leichten Riegel 
vorschieben, die Reichweite des BTM112 ist eh recht gering. Da muss man 
schon Wand an Wand wohnen.

von Karl H. (kbuchegg)


Lesenswert?

H.Joachim Seifert schrieb:
> Na, dann mal Danke für die ganzen Anregungen.
> Ich werde dann mal 2 Varianten zur Diskussion stellen:
>
> 1. Geräte werden komplett ohne Pin ausgeliefert, der Endkunde kann dann
> selbst eine vergeben. Tut er es nicht, ist es eben möglich, dass andere
> rankommen. Tut er es, ist er selbst verantwortlich für die Aufbewahrung
> dieser (dürfte die Supportanfragen verringern, da der Hersteller eben
> keine Pin hat). Zur Not muss dann eben das Gerät eingeschickt werden, um
> den Kram zurückzusetzen.


Genau so würde ich das machen.
Nur mit einem Unterschied: einen Schalter oder Jumper irgendwo, mit dem 
man den Pin beim Anlegen der Spannung (sprich Einschalten) zurücksetzen 
kann. Zusätzlich noch ein Menüpunkt in den Einstellungen, wenn es sowas 
wie ein Menü auf einem lokalen LCD gibt.

Denn: wir reden hier von einem Aquariencomputer. Das der Nachbar da über 
BT nicht rein kommen soll ist verständlich. Man braucht aber auch nicht 
paranoid sein. Der Nachbar wird wohl kaum in die Wohnung einbrechen um 
den Pin des Aquariencomputers zurückzusetzen. Nichts gegen Sicherheit. 
Aber alles hat irgendwann die Grenze zum Absurden überschritten.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Display hat die Kiste nicht, Ansatz ist ja: Einstellungen und Anzeigen 
auf Computer, Tab oder Smartphone.
Einen einzigen Taster hat sie aber - Pumpenstop (für manuelle Fütterung, 
Reinigung oder was weiss ich). Den kann man natürlich fürs Zurücksetzen 
verwenden, gute Idee.

von sushi (Gast)


Lesenswert?

Hat(te?) Vodafone nicht Probleme, weil bei der EasyBox durchgehend WPS 
eingeschaltet ist und der Algorithmus zum Berechnen der PIN aus der MAC 
öffentlich geworden ist?

Wie teuer können so Fische fürs Aquarium sein, wenn man dafür schon 
einen Computer braucht?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Karl Heinz schrieb:
> Denn: wir reden hier von einem Aquariencomputer. Das der Nachbar da über
> BT nicht rein kommen soll ist verständlich

Müssen BT Geräte sich nicht "pairen" bevor man "reinkommt"?
http://www.internet-sicherheit.de/service/glossar/eintrag/eintrag-detail/bluetooth-pairing/

von H.Joachim S. (crazyhorse)


Lesenswert?

@Läubi:
Genau das tut man mit der im BTM112 hinterlegten Pin (Standard: 1234).
Und wenn man eben nicht will, dass das ein anderer tut, muss man die 
ändern.

von Icke ®. (49636b65)


Lesenswert?

H.Joachim Seifert schrieb:
> Falls Pin verloren, kann der Hersteller/Händler diese aus der BT-Adresse
> jederzeit rekonstruieren.

Und der böse Nachbar auch, wenn er den Algorithmus rausfindet. Variante 
#1 ist die einzig sinnvolle.

von Εrnst B. (ernst)


Lesenswert?

H.Joachim Seifert schrieb:
> @Läubi:
> Genau das tut man mit der im BTM112 hinterlegten Pin (Standard: 1234).
> Und wenn man eben nicht will, dass das ein anderer tut, muss man die
> ändern.

Aber ist das Gerät ständig in "Paarungsbereitschaft"?
Bzw: Muss es das sein?

Ich mein: Wenn jemand nah genug ans Aquarium rankommt, um den 
Paring-Knopf am Aquariencomputer zu drücken, dann ist er auch nah genug 
dran, um direkt sein Rotweinglas hinein zu entleeren...

Billigste BT-Headsets, Mäuse, Tastaturen haben eine PIN von 1234 oder 
0000, aber können immer nur mit einem einzigen Gerät gepairt sein, und 
das nur auf Knopfdruck.

=> trotzdem Sicher.
Selbst wenn in dem Moment, in dem du den Knopf drückst, jemand anders 
"schneller" mit der 1234-Pin ist: Du merkst es, weil es nicht 
funktioniert. Was machen sowohl Laie als auch Fachmann? Knopf nochmal 
drücken, Angreifer ist wieder rausgeschmissen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Im Normalfall läuft das Gerät ja völlig autonom, also ohne verbundenen 
Computer, und damit ist das BTM "paarungsbereit". Und wenn der 
Fischliebhaber abends entspannt vor seinem Glaskasten sitzt, dann will 
er ein bisschen spielen. Das Licht bitte ein bisschen blauer, der 
Wellenschlag könnte ein bisschen kräftiger sein, ich möchte jetzt mal 
einen ordentlichen Sturm machen etc. Also app gestartet und los gehts.

von R. M. (rmax)


Lesenswert?

Dafür muß das Gerät aber AFAIK nicht permanent paarungebereit sein. Die 
Paarungsbereitschaft ist nur für die erstmalige Verbindungsaufnahme 
nötig und wenn man den Partner wechseln will.

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

R. Max schrieb:
> Die Paarungsbereitschaft ist nur für die erstmalige Verbindungsaufnahme
> nötig und wenn man den Partner wechseln will.

Oh, das sieht meine Frau aber anders... =8P SCNR

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.