RLCTF/Protokolle
Diese Seite behandelt Kommunikationsprotokolle (oder besser gesagt Protokollideen) zum RLCTF, bzw. Scannergame Projekt.
Ein paar Worte zur Krytographie
Asymmetrische Kryptographie ist insbesondere für offline Transfers von Vorteil, da man die Identität eines Spielers oder die Authenzität eines Ereignisses unmittelbar durch seine Signatur verifizieren kann. Leider ist asymmetrische Kryptographie auch immer sehr rechenintensiv und kann auf einem Microcontroller nicht ohne weiteres durchgeführt werden.
Selbst wenn ein ECC Verfahren zum Einsatz kommt, benötigt man eine Library, die es laubt mit großen Zahlen zu rechnen.
Im folgenden werden Protokolle diskutiert, die in akzeptabler Zeit auf einem Microcontroller ausgeführt werden können. Es ist zusätzlich auch möglich, diese Protokolle (in Teilen) offline auszuführen
Token Austausch
Tokens sind bestimmte (Punktbringende) Ereignisse, Virtuelle Objekte oder Eigenschaften die sich ein Spieler während des Spiels aneignen kann. Bei tokens ist es wichtig, das sie verifizierbar sind - auch ohne Kontakt zum Server zu haben.
Offline Token Protokoll
Zu Spielbeginn erhält das Gerät jedes Spielers eine Liste mit Hashsummen:
hashsum_1 hashsum_2 . . hashsum_n
Diese Hashtabellen sind Hashsummen der eigentlichen Tokens, die jeweils mit den Identitäten einer für jeden Token un Untergruppe von Spielern Kokateniert werden:
hashsum_k = hash ( token_k || ID_a || ID_b || ... || ID_m )
Wenn ein Spieler einen Token vom Server oder einem Gerät im Spiel erhält, so wird ihm vom Server eine Nachricht gesandt, die die Liste der Identitäten für den Token, sowie den token selber enthält. Mit diesem Wissen kann er nun anderen Spielern der Geräten gegenüber beweisen, das er diesen Token besitzt... (indem er genau diese Nachricht auf Anfrage raussendet).
"Wie jetzt? Dann kann doch jeder Spieler einfach die Nachricht einfach wiederholen und so tun, als besäße er den Token?!". Ja, natürlich kann er das! Dazu muss er einfach die Nachricht selbst aussenden... Aber halt: Nicht umsonst werden (für jeden Token unterschiedliche) Untergruppen von Spielern vom Server generiert. Diese beschränken zum einen schonmal für einen Betrügerischen Mitspieler die möglichen Tokens auf eine bestimmte Anzahl. Nicht jeder Spieler kann jeden beliebigen Token aussenden. Ferner ist es möglich, betrügerische Spieler eindeutig zu identifizieren: Sendet ein Spieler verschiedene falsche Tokens aus, so lässt sich der Betrüger in der Schnittmenge der Identitäten in den Tokens finden.