[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 2 Jahren, 1 Monat von admin.
- AutorBeiträge
- 6. März 2022 um 09:16 Uhr #2945adminMitglied::
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üsseldef 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.
- AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.