Secruity Key

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
fiNYvo
User
Beiträge: 8
Registriert: Dienstag 25. August 2020, 06:14

Guten Morgen,
ich arbeite zur Zeit an einem dezentralen System an dem verschiedene Anwender teilnehmen. Jeder Anwender soll eine Gruppenzugehörigkeit erhalten. Mein Gedanke war es, jede Gruppe einen bestimmten Key zuzuweisen. Der Anwender erhält von mir, eine auf ihn angepasste Software mit dem entsprechenden Key(Der Key soll dem Anwender nicht bekannt sein). Dieser Key wird verwendet um Informationen zu verschlüsseln. Also wenn die Information das Programm verlässt, ist es nicht ersichtlich wie der Key lautet.

Nun zu meiner Frage.
Kann der Anwender aus seinem Programm diesen Key extrarieren? Wenn ja, gibt es eine Möglichkeit dieses zu verschleiern?

Vielen Dank im Voraus, ich bin gespannt wie die Antworten lauten.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Natürlich kann man den Key extrahieren. Die Frage ist nur, warum sollte das jemand tun?
Was willst du mit deiner Verschlüsselung erreichen? Warum sollte der Anwender das nicht wieder entschlüsseln können?
Was ist eigentlich das Problem, das du lösen willst?
fiNYvo
User
Beiträge: 8
Registriert: Dienstag 25. August 2020, 06:14

Sirius3 hat geschrieben: Freitag 23. Oktober 2020, 06:16 Natürlich kann man den Key extrahieren. Die Frage ist nur, warum sollte das jemand tun?
Was willst du mit deiner Verschlüsselung erreichen? Warum sollte der Anwender das nicht wieder entschlüsseln können?
Was ist eigentlich das Problem, das du lösen willst?
Es handelt sich hier um eine distributed ledger technologie. Der Key wird verwendet um einen Seed zu generieren um dann auf eine öffentliche Adresse(Die aus dem Seed generiert wird) Informationen und token zu senden. Der Anwender soll durch das Programm nur sehen können, welche öffentliche Adresse er verwenden darf. Der Prozess - Aufbewahrung des Keys, generierung des Seeds - soll verschleiert sein(Gekapselte Berechnung oder ähnliches).
Es soll später andere Parteien geben, die mit dem gleichen Key, den Seed reproduzieren können und somit den Token wieder versenden können. Damit der Anwender keinen unfug treibt soll er den Key und Seed nicht sehen dürfen.

Ich hoffe das ist verständlich.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Als erstes der ernst gemeinte Hinweis: alles was Du erfindest, ist sicherheitstechnisch höchst wahrscheinlich totaler Unfug. Damit bist Du nicht alleine. Es gibt etliche Firmen, die genau solche Produkte verkaufen, und mit Hochglanzbegriffen versehen, um dummen Anwendern irgendetwas aufzuschwatzen.
Eine Technik, die auf Verschleiern setzen muß, taugt nichts.

Ich will Dich nicht davon abhalten, ein schönes System zu schreiben, das kosmetisch auch Cryptographie einsetzt. Mit dem Anwenden der Technik kommt auch irgendwann die Erfahrung. Aber Du brauchst Dir keine Gedanken über das Verstecken von Schlüsseln machen.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn andere Parteien später den Key benutzen können, woher haben die den? Damit das möglich ist, muss doch irgendwer den Schlüssel zentral vorhalten?
fiNYvo
User
Beiträge: 8
Registriert: Dienstag 25. August 2020, 06:14

__deets__ hat geschrieben: Freitag 23. Oktober 2020, 07:20 Wenn andere Parteien später den Key benutzen können, woher haben die den? Damit das möglich ist, muss doch irgendwer den Schlüssel zentral vorhalten?
Ja dieser Schlüssel wird von mir verteilt und direkt in die Software(die ich bereitstelle) implementiert weil ich ein Lizenzgeber bin. Dieser Schlüssel wäre der Zugang zu meinem "Ökosystem". Im distributed ledger kann jeder Mensch teilnehmen. Da ich aber ein Ökosystem auf dem distributed ledger erstelle, ist es okay wenn ich anhand des Schlüssels erkennen kann, wer ein teil von meinem Ökosystem ist. Das verschleiern hilft mir dabei, verschiedene Berechtigkeitsstufen zu realisieren.
fiNYvo
User
Beiträge: 8
Registriert: Dienstag 25. August 2020, 06:14

Sirius3 hat geschrieben: Freitag 23. Oktober 2020, 06:16 Natürlich kann man den Key extrahieren. Die Frage ist nur, warum sollte das jemand tun?
Was willst du mit deiner Verschlüsselung erreichen? Warum sollte der Anwender das nicht wieder entschlüsseln können?
Was ist eigentlich das Problem, das du lösen willst?
Interessant für mich wäre es, wie kann man diesen Key aus der Ausführbaren Datei extrahieren?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Dann ist das, was du als Anwendung mit Python bauen kannst, das falsche Werkzeug für dein "Ökosystem".
Alles, was du dem Anwender gibst, kannst du als 'verloren' ansehen. In irgend einer Form muss der Schlüssel ja in deinem Programm sein. Und bevor du jetzt Handstand machst und verzweifelst versuchst durch "Verschleierung" dafür zu sorgen, dass die Extraktion dieser Information einen Augenblick länger dauert: Spar dir die Zeit.
Wenn du es durch Lizenzen nicht schaffst, das zu organisieren, oder diese Lizenzen durchzusetzen, dann solltest du darüber nachdenken, das als Webservice umzusetzen. Dann müsste sich der Benutzer gegenüber des Systems authentifizieren. Und das möchtest du ja mit deinem Schlüssel, so wie ich das verstehe, ja auch erreichen.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@fiNYvo: Du hast also nichts "distributed", sondern einen zentralen Ansatz. Du verwaltest alles, dann brauchst Du einen zentralen Server, der die Berechtigung verwalten kann, und das wird üblicherweise mit Username und Passwort gelöst.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe ehrlich gesagt nicht, wozu du auf der einen Seite auf BC Technologie setzt, wenn auf der anderen Seite doch eine zentrale, vertrauenswürdige Stelle - du - existieren muss. Da kann man sich die BC auch ganz sparen. Denn die bringt als einzigen technischen Vorteil, dass niemand wem anderes vertrauen muss.

Davon abgesehen: wenn du den Schlüssel in die hand des Nutzers gibst, ist er verloren. Es sind alle existente n Formen von Kopierschutz (und darum handelt es sich hier technisch) immer gecknackt worden. Nur eine Frage der Motivation. Es ist viel einfacher, und sicherer, deine Anwendung durch eine Server-seitige Komponente zu ergänzen, an der sich der Nutzer zb mit 2-Faktor-Authentifizierung anmelden muss. Das sind robuste, gut verstandene Verfahren. Das was du da probierst ist das Gegenteil davon.
fiNYvo
User
Beiträge: 8
Registriert: Dienstag 25. August 2020, 06:14

Mit der Annahme das es sich hier um Bitcoin handelt liegst du falsch, es wird Iota verwendet. Grundkonzept ist es, ein privaten Tangle zu erstellen um mit Permanodes eine dezentrale Datenbank zu erstellen. Es wird ein Konsortium von Hersteller geben die sich im Ökosystem befinden. Zu dem hat es noch andere Vorteile die mir von nutzen sind. Daher brauche ich verschiedene Berechtigungsstufen. Es ist nicht schlimm wenn ein teil des Systems zentral ist. Wichtig ist der erhalt der Daten und die Bestätigung, dass er zu meinem Ökosystem gehört.
Ich denke, wie und wofür ich das System einsetze ist ja erstmal nebensächlich, bezogen auf die eigentliche Frage.
"Kann der Anwender aus seinem Programm diesen Key extrarieren? Wenn ja, gibt es eine Möglichkeit dieses zu verschleiern?"
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@fuNYvo: Mit der Annahme, dass "BC" für "Bitcoin" steht, liegst du falsch :D

Ernsthaft: Deine Frage wurde ja schon beantwortet: Was du aus der Hand gibst, kannst du nicht mehr vertrauen.
Ja, man kann so einen Key extrahieren, wenn er im Programm ist.

In meinen Augen zeigt die Frage an sich schon, dass du mit deinem bisherigen Wissenstand nicht in der Lage bist, ein entsprechendes System zu bauen. Und da du hier von einem "Konsortium von Herstellern" sprichst, hoffe ich, dass da irgend jemand involviert ist, der weiß was er tut.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

fiNYvo hat geschrieben: Freitag 23. Oktober 2020, 10:55 Mit der Annahme das es sich hier um Bitcoin handelt liegst du falsch, es wird Iota verwendet.
BC steht fuer BlockChain.
fiNYvo hat geschrieben: Freitag 23. Oktober 2020, 10:55 "Kann der Anwender aus seinem Programm diesen Key extrarieren? Wenn ja, gibt es eine Möglichkeit dieses zu verschleiern?"
"Ja", und "nicht wirklich effektiv". Nochmal: wenn es eh eine zentrale Komponente gibt, dann lagere dieses Geheimnis auf dem Server, und verlange eine Anmeldung vom User. In dem Moment kann der User selbst den Schluessel NICHT extrahieren. Und eine andere Partei muss sich diese Anmeldung besorgen, weshalb man die mit 2-Faktor-Auth absichert.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

fiNYvo hat geschrieben: Freitag 23. Oktober 2020, 10:55 "Kann der Anwender aus seinem Programm diesen Key extrarieren? Wenn ja, gibt es eine Möglichkeit dieses zu verschleiern?"
Wenn du einem Anwender ein Programm gibst, hat der Anwender das Programm und damit auch alle darin enthaltenen Teile. Wenn dazu ein Key gehört hat ein Anwender auch den Key.

Verhindern dass ein Anwender diesen Key bekommst ist grundsätzlich unmöglich, du kannst natürlich versuchen den Aufwand den dass benötigt zu erhöhen. Der ist dann aber im besten Fall immer noch minimal und sobald ein Anwender anderen erklärt wie man an den Key kommt, ist der Aufwand 0 und deine Verschleierung komplett sinnlos.

Das dir dies nicht klar ist, zeigt übrigens dass dir die absoluten Grundlagen für ein Projekt wie du es beschreibst vollkommen fehlen. Wobei man so ein Projekt sowieso nicht starten würde hätte man sie, es sei den man möchte Betrug ausüben aber dass ist ja ohnehin die übliche Vorgehensweise im Blockchain Bereich.
Antworten