Kameraaufnahme, Anlernen über drei Posen, Fenster je Bildschirm auf Bildschirmschoner-Ebene, Passwortrückfall. **Das Anmeldepasswort wird nicht gespeichert.** Ein Spike hat den Weg freigeräumt: `ODRecord.verifyPassword` ist öffentliche API, die Eingabe geht direkt hinein, das Ergebnis ist ein `Bool`, danach ist die Zeichenkette wieder weg. Damit fällt der Grund weg, aus dem vergleichbare Programme sich das Passwort geben lassen und in die Keychain legen. Angelernt wird über drei Posen mit je fünf Aufnahmen. Der Merkmalsvektor ist ein allgemeiner Bildmerkmalsvektor und kein Gesichtsmerkmal — er reagiert auf Kopfhaltung und Beleuchtung mit. Eine einzige Aufnahme beschreibt genau eine Haltung bei genau einem Licht. Die Vektoren liegen in der Keychain, nicht in einer Datei: aus ihnen lässt sich kein Bild zurückgewinnen, aber wer sie hat, kann prüfen, ob eine bestimmte Person vor der Kamera stand. Die Einschränkung steht auf dem Sperrbildschirm selbst und nicht im Kleingedruckten: Bequemlichkeit, keine Sicherheitsgrenze; der Vergleich läuft über die Webcam und lässt sich mit einem Foto täuschen. Wer sich darauf verlässt, tut es dort. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
78 lines
3.4 KiB
XML
78 lines
3.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<!-- Bewusst KEIN com.apple.security.app-sandbox.
|
|
|
|
Die Calendarr-Integrationsanleitung fordert die Sandbox, aber sie ist
|
|
mit Onyx unvereinbar: eine sandboxed App kann keinen privilegierten
|
|
SMAppService-Daemon registrieren (kein Lüfter, kein Ladelimit), kommt
|
|
nicht an IOKit/IOReport (kein Hardware-Monitor) und kann /usr/bin/perl
|
|
nicht so starten, dass dessen MediaRemote-Entitlement noch greift.
|
|
|
|
Der App-Group-Container ist auf macOS unabhängig von der Sandbox, solange
|
|
beide Apps im selben Team signiert sind und die Group-ID mit dem
|
|
Team-Präfix beginnt. Nachgemessen in docs/spikes/D-appgroup.md. -->
|
|
|
|
<key>com.apple.security.application-groups</key>
|
|
<array>
|
|
<string>PP34X97WS3.group.com.scarriffleservices.calendarr</string>
|
|
</array>
|
|
|
|
<!-- Das mitgelieferte MediaRemoteAdapter.framework ist ad-hoc signiert,
|
|
der Host mit Team-Zertifikat. Ohne das wird es nicht geladen. -->
|
|
<key>com.apple.security.cs.disable-library-validation</key>
|
|
<true/>
|
|
|
|
<!-- Kamera für den Gesichtsvergleich. Ohne dieses Entitlement **und**
|
|
NSCameraUsageDescription erscheint der Dialog nicht: die Anfrage
|
|
kommt kommentarlos mit `false` zurück, und in den Systemeinstellungen
|
|
taucht Onyx nie auf. Derselbe Fallstrick wie beim Kalender, siehe
|
|
docs/spikes/E-tcc-hardened-runtime.md. -->
|
|
<key>com.apple.security.device.camera</key>
|
|
<true/>
|
|
|
|
<!-- Bei aktivierter Hardened Runtime verlangt TCC diese Entitlements —
|
|
auch ohne Sandbox. Das ist die verbreitete Fehlannahme: sie gelten
|
|
nicht nur für sandboxed Apps.
|
|
|
|
Fehlt eine davon, weigert sich macOS, den Berechtigungsdialog
|
|
überhaupt anzuzeigen. Die Anfrage kommt kommentarlos mit `false`
|
|
zurück, der Status bleibt `notDetermined`, und die App taucht in den
|
|
Systemeinstellungen nie auf — dort lässt sich auch nichts von Hand
|
|
nachtragen. Der Grund steht ausschließlich im Protokoll von tccd:
|
|
|
|
"Prompting policy for hardened runtime; service: kTCCServiceCalendar
|
|
requires entitlement com.apple.security.personal-information.calendars
|
|
but it is missing"
|
|
|
|
Nachgemessen mit einer minimalen Test-App: ohne die Entitlement kein
|
|
Dialog, mit ihr sofort. -->
|
|
|
|
<!-- Kalender-Widget (Phase 3) -->
|
|
<key>com.apple.security.personal-information.calendars</key>
|
|
<true/>
|
|
|
|
<!-- Wetter am aktuellen Standort (Phase 3) -->
|
|
<key>com.apple.security.personal-information.location</key>
|
|
<true/>
|
|
|
|
<!-- AppleScript-Rückfall für Spotify und Musik (Phase 4) -->
|
|
<key>com.apple.security.automation.apple-events</key>
|
|
<true/>
|
|
|
|
<!-- Per-App-Lautstärke über Core-Audio-Taps (Phase 7). Aufgezeichnet wird
|
|
nichts; die Berechtigung heißt nur so. -->
|
|
<key>com.apple.security.device.audio-input</key>
|
|
<true/>
|
|
|
|
<!-- Wetterdaten von Apple.
|
|
Anders als die Einträge darüber genügt hier die Entitlement allein
|
|
nicht: sie erzwingt ein echtes Provisioning-Profil, und die App-ID
|
|
com.scarriffleservices.onyx muss im Developer-Portal die
|
|
WeatherKit-Capability tragen. -->
|
|
<key>com.apple.developer.weatherkit</key>
|
|
<true/>
|
|
</dict>
|
|
</plist>
|