[PSA] Trezor ist eine großartige Möglichkeit, Geheimnisse im Verborgenen zu halten

Home Foren Trezor Wallet [PSA] Trezor ist eine großartige Möglichkeit, Geheimnisse im Verborgenen zu halten

  • Dieses Thema hat 0 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 11 Monaten von admin.
Ansicht von 0 Antwort-Themen
  • Autor
    Beiträge
    • #2945
      admin
      Mitglied
      Up
      0
      Down
      ::

      Basierend auf dem Trezor github [encfs_aes_getpass.py](https://github.com/trezor/trezor-firmware/blob/master/python/tools/encfs_aes_getpass.py) habe ich begonnen, Trezor zu verwenden, um API-Schlüssel direkt im Code zu speichern. Normalerweise verwende ich GPG, um Geheimnisse zu verschlüsseln, die ich in meinem öffentlichen Code verwende, aber ich habe festgestellt, dass Trezor ein weiteres nettes Tool für diese Aufgabe ist.

      Natürlich werden diese Geheimnisse nur dann richtig entschlüsselt, wenn sie mit MEINEM Trezor verwendet werden. Oder genauer gesagt, mit einem Trezor mit meiner Seed-Mnemonik.

      ### Der Code für den Zugriff auf Trezor

      Ich habe eine Null-Passphrase fest codiert. Dies wurde (teilweise) vom Trezor-Passwort-Manager übernommen, der keine Passphrasen für die Schlüssel/Wert-Verschlüsselung verwendet (hat). Ich verwende auch „Base85“-Kodierung, weil ich sie mag, mich hasse.

      class NoPassphraseUi(ClickUI):
      def __init__(self):
      super().__init__(passphrase_on_host = True)
      def get_passphrase(self, available_on_device = False):
      return „“

      class TokenStore():
      def __init__(self, key, path):
      self.client = TrezorClient(transport=get_transport(), ui=NoPassphraseUi())
      self.path = parse_path(path)
      self.key = Schlüssel

      def encrypt(self, cleartext):
      return b85encode(self._crypt(enc_with_pad(cleartext))).decode()

      def decrypt(self, cipherB85):
      return self._crypt(b85decode(cipherB85), True).decode().strip()

      def _crypt(self, value, decrypt = False):
      method = decrypt_keyvalue if decrypt else encrypt_keyvalue
      return method(self.client, self.path, self.key, value, False)

      ### Entschlüsseln von Geheimnissen mit dem Code

      Hier werden einfach die Daten aus einer Hashtabelle (siehe unten) entnommen und entschlüsselt.

      store = TokenStore(token_store[‚key‘], token_store[‚path‘])
      apikey = store.decrypt(token_store[‚cipherB85‘])

      ### Geheimnisse für alles Notwendige verwenden

      Jetzt, wo ich meinen Github-API-Schlüssel habe, kann ich auf die REST-Schnittstelle mit einer besseren Ratenbegrenzung zugreifen

      head = {‚Autorisierung‘: f „token {apikey}“}
      req = get(„https://api.github.com/rate_limit“, headers=head)

      ### Geheimnis im Klartext speichern

      So sieht die Hashtabelle mit dem verschlüsselten Geheimnis aus.

      token_store = dict(
      key = „Github API Token“,
      path = „m/6’/9’/42’/0″, # HHGG path since 6 * 9 = 42 # lol“
      cipherB85 = „qWxi1+KR+C*fY=TI!SxL6UjY{dy;}pwvu66A64u^K1N9~(F}Dz>Yqf;%RCs?“
      )

      ### Erstellen eines verschlüsselten Geheimnisses zum Speichern im Klartext

      Wenn Sie Ihren API-Schlüssel aktualisieren, können Sie diese drei Zeilen ausführen, um das neue verschlüsselte Geheimnis zu erhalten

      print(„Bitte geben Sie Ihr Geheimnis zur Verschlüsselung in STDIN ein“)
      apikey = stdin.readline().strip()
      print(f „cipherB85: [{store.encrypt(apikey)}]“)

      Den vollständigen Code finden Sie in der Datei [trezor-github.py](https://github.com/brianddk/reddit/blob/master/python/trezor-github.py) in meinem reddit repo.

Ansicht von 0 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Zur Werkzeugleiste springen