
2026/04/18 1:38
Show HN:PanicLock - MacBook のスリーブを閉じると Touch ID を無効にし、パスワード認証でロック解除を可能にします。
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
要約は、自動起動機能、ルーフスイッチロック機能、および具体的なインストール方法を追加して拡張する必要があります。これにより、「主要ポイントリスト」を完全に反映させることができますが、新たな情報を付加することはありません。
改善された要約
PanicLock は、法執行機関とのやり取りなど、機密状態の状況における即時防護のために設計された、本質的なオープンソースの macOS メニューバーユーティリティです。その主な機能は、シングルクリックまたはホットキー(例:⌃⌥⌘L)でタッチ ID を直ちに無効化し、画面をロックすることであり、オプションとしてラップトップのカバーを閉じたときに動作して、Apple の標準機能における重要なギャップを満たします。このアプリケーションは、アクティブなセッションを中断することなく、システムタイムアウト設定を安全に修正するための最小権限ヘルパーを offline で使用して安全に動作します。具体的には、3 つの特定のコマンドのみを実行します。技術的には、アプリの資格情報を検証して注入攻撃を防ぎ、ネットワーク上の活動やテレメトリーを維持しないことで安全性を確保しています。macOS 14.0 以降と互換性があり、インストールには初期の管理者パスワードが必要です(Homebrew または手動ダウンロードで入手可能)。ロック解除後、元のタッチ ID 設定を自動的に 2 秒以内に復元します。組織にとっては、無許可による指紋アクセスに対する迅速な安全網を提供し、現在のデータを保持しながら、オープンソースの性質によりコードベースの独立した監査が可能であり、隠されたデータ収集がないことを検証できます。さらに、ログイン時に起動するように設定でき、アイコンを右クリックして好みを設定またはアンインストールするオプションを選択できます。
本文
PanicLock は、ワンクリックまたはラップトップの Lid(カバー)を閉じるという単純な動作で、Touch ID を瞬時に無効化し画面をロックする macOS のメニューバーユーティリティです。PanicLock は、macOS が提供していない重要な機能を補完します:つまり、状況に応じて Touch ID を瞬時に無効化する方法が標準では存在しないという課題です。生体認証は日常的には利便性が高く、スピードが必要だったり、パスワードが見られるのを避けたい場合などは特に有利です。しかしながら、機密の多い状況下では、多くの国において法執行機関や国境警備当局は、パスワードとは異なる方法で Touch ID による解錠を強制させることができます。PanicLock は、ワンクリックのメニューバーボタン、カスタマイズ可能なホットキー、または Lid を閉じた際の自動ロック機能を提供し、Touch ID を即座に無効化して画面をロックします。これにより、セッションを終了させたりシステムをシャットダウンしたりすることなく、パスワードによる解錠のみを可能にする保護状態に戻すことができます。
主な特徴
- ワンクリックでパニックロック: メニューバーのアイコンをクリックするかホットキーを押すことで瞬時にロックできます。
- Lid 閉じ時のロック: Lid を閉じた際に Touch ID の無効化と共に自動でロックするオプションです。
- Touch ID の一時的な無効化: パスワードによる解錠のみを強制します。
- 自動復元: 解錠後、元の Touch ID の設定が自動的に回復します。
- キーボードショートカット: グローバルホットキーを設定できます(例:⌃⌥⌘L)。
- ログイン時起動: ログイン時に自動的に動作を開始します。
インストール
- Homebrew 経由:
brew install paniclock/tap/paniclock - 手動ダウンロード: リリースページの最新 DMG ファイルをダウンロードしてください。
要件
- macOS 14.0 (Sonoma) 以降
- Touch ID を搭載した Mac
使い方
| 動作 | 結果 |
|---|---|
| アイコンの左クリック | 直ちにパニックロックをトリガーします |
| アイコンの右クリック | メニューを開きます(環境設定、アンインストール、終了) |
| Lid 閉じ時のロック | 環境設定で有効にすると、Mac の Lid を閉じると自動的に Touch ID が無効化され画面がロックされます。Touch ID はパスワードでの再ログインまで無効化されたままです。他により一般的な理由(スクリーンセーバー、表示の休止など)で画面がロックされた場合でも、Touch ID は通常通り機能します。 |
| 最初の起動時 | 初めて使用する際には、特権ヘルパーをインストールするための管理者パスワードの入力を求められます。これは一回限りのセットアップです。 |
ソースからのビルド
- このリポジトリをクローンしてください。
- Xcode で
を開きます。PanicLock.xcodeproj - 両方のターゲット(
とPanicLock
)において、開発チームを設定します。PanicLockHelper
(SMPrivilegedExecutables 内)およびInfo.plist
(SMAuthorizedClients 内)のチーム ID を更新します。Info-Helper.plist- ビルドして実行します。
アンインストール
- Homebrew / アプリから: アイコンを右クリック →「PanicLock のアンインストール」を選択 → 管理者パスワードを入力
- 手動:
sudo launchctl bootout system/com.paniclock.helper sudo rm -f /Library/PrivilegedHelperTools/com.paniclock.helper sudo rm -f /Library/LaunchDaemons/com.paniclock.helper.plist rm -rf /Applications/PanicLock.app
動作原理
PanicLock は、SMJobBless を介してインストールされる特権ヘルパーを使用して、Touch ID のタイムアウト設定を変更します。その手順は以下の通りです。
コマンドで現在のタイムアウト値を取得bioutil -r -s
コマンドでタイムアウトを 1 秒に設定bioutil -w -s -o 1
コマンドで画面をロックpmset displaysleepnow- 約 2 秒後に元のタイムアウト値を回復
セキュリティ
- 最小限の特権: ヘルパーはハードコードされたコマンド(
、bioutil
)の 3 つのみを実行します。pmset - コマンドインジェクションの防止: タイムアウトパラメータは文字列ではなく Swift Int です。
- 署名付き XPC: ヘルパーは接続するアプリのバンドル ID、チーム ID、証明書を検証します。
- ネットワーク活動なし: アプリは完全にオフライン動作し、テレメトリやアナリティクスはありません。
- データ収集なし: 環境設定(アイコンスタイル、キーボードショートカットなど)のみを保存します。
- オープンソース: コード全体を監査に提供可能です。
リリース手順
リリーススクリプトはビルド、署名、Notarization、パッケージ化をすべて処理します。
- 機能:
- Xcode プロジェクトからバージョン情報を自動的に抽出します。
- App Store 外での配布のために Developer ID による署名を行います。
- Apple への Notarization 提出(所要時間は数分から数時間)を行います。
- 配布用の Notarized DMG を作成します。
- 並列 Notarization のサポートにより、各バージョンごとに独自の
ディレクトリが生成されます。build/release/<version>/
- ワークフロー:
- Xcode で
を更新します。MARKETING_VERSION
を実行してビルドと Notarization 提出を行います。./scripts/release.sh- 後に再度実行してステータスを確認し、承認を待つことができます。
- ファイナル出力:
build/release/<version>/PanicLock-<version>.dmg
- Xcode で
ライセンス
MIT ライセンスの詳細は LICENSE ファイルをご確認ください。
コントリビュート(貢献)
歓迎しています!問題報告やプルリクエストをオープンしてください。