Zugangsdaten mit mehreren Feldern
Zugangsdaten sind auch der integrierte Kartentyp credential.
Die generische Feldansicht ordnet nicht geheime Metadaten von Zugangsdaten gewöhnlichen Feldern und
geheime Felder des Bodys sensitive zu, ohne beim Lesen ältere Bytes umzuschreiben.
memories card field unterstützt dasselbe geordnete Schema; erfolgreiche Änderungen an Textfeldern
behalten den strukturierten Body der Zugangsdaten bei, den bestehende Verbraucher verwenden.
Binäre Zugangsdaten im älteren Format lehnen die Migration zu generischen Feldern ab, statt Bytes zu verlieren.
Ein Zugangsdaten-Eintrag kann mehrere unabhängige, optionale Felder enthalten. Alle können leer sein.
| Feld | Geheim | Speicherort |
|---|---|---|
username |
nein | Content.credential.username |
url |
nein | Content.credential.url |
notes |
nein | Content.credential.notes |
benutzerdefiniert, secret: false |
nein | Content.credential.custom[] |
password |
ja | verschlüsselter Body |
otp (Base32-Seed oder otpauth://-URI) |
ja | verschlüsselter Body; Seed-Parameter in Content.credential.otp |
api_key |
ja | verschlüsselter Body |
benutzerdefiniert, secret: true |
ja | verschlüsselter Body |
Content.credential (nicht geheim, kann sicher aufgelistet werden):
{
"username": "octo",
"url": "https://github.com",
"notes": "work account",
"custom": [{"name": "team", "value": "core"}],
"secret_fields": ["password", "otp", "api_key", "pin"],
"otp": {"digits": 6, "period": 30, "algorithm": "sha1"}
}
Strukturierter Body (mit dem Tresor verschlüsselt, als base64url in body):
{"memories.credential": 2, "password": "…", "otp": "…", "api_key": "…",
"custom": [{"name": "pin", "value": "…"}]}
Kompatibilität und Migration
- Zugangsdaten im älteren Format behalten ihre unverarbeiteten geheimen Bytes in
body. Sie werden unverändert gelesen: Einotpauth://-Wert oder ein Titel, der mitOTP:beginnt, wirdotpzugeordnet, Zugangsdaten mit HTTP-Authentifizierung oder erlaubten Hosts werdenapi_keyzugeordnet, alles andere wirdpasswordzugeordnet. Binäre Geheimnisse im älteren Format (Schlüssel, Zertifikate) funktionieren weiterhin unverändert; sie haben lediglich keine Textfelder. - Jeder bestehende Verbraucher eines einzelnen Geheimnisses (
credential copyohne--field, HTTP-Injektion, Run-Bindungen, Proxys, Login-Export) verwendet das primäre Geheimnis: die Bytes im älteren Format oder das erste nicht leere Feld aus password, api_key, otp und dem ersten geheimen benutzerdefinierten Feld. - Die Migration erfolgt bei Bedarf: Jeder
credential_set-Schreibvorgang auf Zugangsdaten im älteren Format schreibt sie im strukturierten Format neu und legt den bisherigen Wert im zugeordneten Feld ab.memories credential migrate VAULT ASSETführt dies ohne weitere Änderung aus. Die vorherige Revision bleibt im Verlauf erhalten, sodass keine Daten verloren gehen.
CLI
memories credential set VAULT [ASSET] [--title T] [--username U] [--url U] [--notes N]
[--password] [--api-key] [--otp [--otp-digits 6|8] [--otp-period 30|60] [--otp-algorithm sha1|sha256|sha512]]
[--field NAME=VALUE]... [--secret-field NAME]... [--remove NAME]...
memories credential show VAULT ASSET # non-secret fields + names of secret fields
memories credential get VAULT ASSET --field NAME [--reveal] # secret fields need --reveal
memories credential copy VAULT ASSET [--field NAME] # clipboard, never printed
memories credential otp VAULT ASSET # code from the otp field
memories credential migrate VAULT ASSET
Geheime Werte werden ausschließlich über Eingabeaufforderungen mit verdeckter Eingabe (--password,
--api-key, --otp, --secret-field) eingegeben, niemals als Argumente. Eine leere Eingabe
löscht den Feldinhalt.
Dienstanfragen
credential_set {vault, asset?, title?, fields: {username?, password?, otp?, otp_params?, api_key?, url?, notes?, custom: [{name, value, secret}], remove: [name]}}—nulloder ein fehlender Wert behält ein Feld bei,""leert es. Erfordert erhöhte Berechtigungen.credential_show {vault, asset}— Ansicht ohne geheime Werte; erfordert erhöhte Berechtigungen.credential_copy {vault, asset, label?, field?}— ein Feld (alscredential.field.copyprotokolliert); erfordert erhöhte Berechtigungen.otp_code {vault, asset}— akzeptiert auch Zugangsdaten mit einemotp-Feld.
Gehosteter Berechtigungsumfang: credential_show/credential_copy benötigen Leserechte, credential_set
benötigt Schreibrechte.
MCP
credential_fields(Lesefreigabe): nicht geheime Felder und die Namen geheimer Felder; niemals geheime Werte.credential_reveal(allow_all-Freigabe): ein Feld; erfordertintent: "reveal_plaintext"und eine kurze Begründung inreason. Wird alscredential.field.revealprotokolliert. Das Kopieren des gesamten Geheimnisses ist über MCP nicht verfügbar.sealed_revealakzeptiert ein optionalesfieldfür versiegelte strukturierte Zugangsdaten.
Gehostetes Center und Ende-zu-Ende-Synchronisierung
Das RPC des gehosteten Centers akzeptiert credential_show (Lesen) und credential_set (Schreiben). Bei Ende-zu-Ende-Zugangsdaten (e2e) darf die Kopie im Center ausschließlich Deskriptoren enthalten: credential_set weist jedes nicht leere geheime Feld zurück, und geheime Werte werden ausschließlich innerhalb von für Geräte versiegelten Umschlägen übertragen.
Der Klartext versiegelter strukturierter Zugangsdaten ist entweder der strukturierte Body selbst oder {"meta": <non-secret fields>, "body": "<structured body>"}. Auf einem gekoppelten Gerät:
memories device sealed-get --vault V --card C --field username
memories device sealed-get --vault V --card C --field password --reveal
memories device sealed-get --vault V --card C --otp
Ohne --reveal/--field/--otp werden nur Deskriptoren und Namen geheimer Felder ausgegeben. Umschläge mit einem einzelnen Geheimnis im älteren Format verhalten sich wie bisher.
Mobil
Neue Zugangsdaten öffnen ein in Abschnitte gegliedertes Formular (Anmeldung, Einmalcode, API, Weitere, benutzerdefinierte Felder mit einem Schalter für geheime Werte). Alle Felder sind optional; der Name wird standardmäßig aus dem Benutzernamen oder dem URL-Host übernommen und beim Speichern nur dann abgefragt, wenn er noch leer ist. Die Detailansicht kopiert nicht geheime Felder direkt; geheime Felder und der aktuelle OTP-Code (mit Countdown) erfordern bei aktiviertem biometrischem Schutz die Systemsperre.