PanicLock - MacBook 덮개를 닫으면 Touch ID를 비활성화하고 비밀번호로만 잠금 해제하는 유틸리티
(github.com/paniclock)- macOS 메뉴 바 유틸리티로 동작하며, 클릭·단축키·노트북 덮개 닫기만으로 화면을 잠그고 Touch ID를 일시 비활성화해 비밀번호 입력을 강제함
- 잠금 해제 후에는 기존 Touch ID 설정 자동 복원이 이뤄지며, 세션 종료나 시스템 종료 없이 비밀번호 전용 잠금 상태 전환 가능
- Lock on Close 옵션을 켜면 Mac 뚜껑을 닫는 즉시 Touch ID 비활성화와 화면 잠금이 실행되고, 비밀번호로 다시 로그인할 때까지 상태 유지
- 내부적으로 SMJobBless privileged helper와
bioutil,pmset명령을 사용해 Touch ID 타임아웃 값을 바꾸고 화면 잠금을 수행하며, 최초 실행 시 관리자 비밀번호 입력 필요 - 네트워크 활동·텔레메트리·데이터 수집 없음, 오픈소스 공개, 최소 권한 원칙 적용으로 동작 범위와 검토 가능성이 분명한 도구임
프로젝트 개요
- macOS 메뉴 바 유틸리티 형태로, 한 번의 클릭이나 노트북 뚜껑 닫기로 화면을 잠그고 Touch ID 비활성화 수행
- macOS에 즉시 Touch ID를 끄는 내장 방식 부재 상황을 보완하며, 세션 종료나 시스템 종료 없이 비밀번호 전용 잠금 해제 상태 전환 가능
- 생체 인증의 편의성과 별개로, 특정 상황에서는 비밀번호 기반 보호가 필요한 경우를 전제로 동작
- 메뉴 바 버튼 1회 클릭
- 사용자 지정 단축키
- 뚜껑 닫기 시 자동 잠금
- 잠금 해제 이후에는 원래 Touch ID 설정 자동 복원
주요 기능
-
원클릭 패닉 잠금
- 메뉴 바 아이콘 클릭 또는 단축키 입력만으로 즉시 잠금 수행
-
Lock on Close
- 설정에서 활성화하면 Mac 뚜껑을 닫을 때 자동으로 화면 잠금과 Touch ID 비활성화 수행
-
Touch ID 임시 비활성화
- 잠금 해제 시 비밀번호 입력 강제
-
자동 복원
- 잠금 해제 후 기존 Touch ID 설정 복구
-
전역 키보드 단축키
- 예시로
⌃⌥⌘L제시
- 예시로
-
로그인 시 자동 실행
- 사용자가 로그인할 때 자동 시작
요구 사항
- macOS 14.0 Sonoma 이상 필요
- Touch ID 지원 Mac 필요
사용 방식
- 왼쪽 클릭 시 즉시 패닉 잠금 실행
- 오른쪽 클릭 시 메뉴 열기 동작
- Preferences
- Uninstall
- Quit
-
Lock on Close
- Preferences에서 활성화하면 Mac 뚜껑을 닫는 즉시 Touch ID 비활성화와 화면 잠금 수행
- 이 상태는 비밀번호로 다시 로그인할 때까지 유지
- 화면 보호기, 디스플레이 절전 등 다른 이유로 화면이 잠긴 경우에는 Touch ID가 평소처럼 계속 동작
-
최초 실행
- 처음 사용할 때 privileged helper 설치를 위해 관리자 비밀번호 입력 필요
- 해당 절차는 1회성 설정 형태
동작 방식
- SMJobBless로 설치한 privileged helper를 통해 Touch ID 타임아웃 설정 변경 수행
- 동작 순서
- 현재 타임아웃 값을
bioutil -r -s로 읽기 - 타임아웃 값을
bioutil -w -s -o 1로 1초로 설정 pmset displaysleepnow로 화면 잠금 수행- 약 2초 후 원래 타임아웃 값 복원
- 현재 타임아웃 값을
- 이 유틸리티는 Touch ID만 비활성화함
- Apple Watch 잠금 해제
- 보안 키
- 기타 다른 잠금 해제 수단
- 위 방식이 활성화되어 있으면 해당 수단으로 Mac 잠금 해제 가능
보안
- 최소 권한 원칙 적용
- helper는
bioutil,pmset의 하드코딩된 3개 명령만 실행
- helper는
- 코드 서명된 XPC 검증 사용
- helper가 연결하는 앱의 bundle ID, team ID, certificate 확인
-
네트워크 활동 없음
- 앱은 100% 오프라인으로 동작
- telemetry 및 analytics 미포함
-
데이터 수집 없음
- 저장 항목은 아이콘 스타일과 키보드 단축키 같은 환경설정만 해당
-
오픈소스
- 전체 코드 공개로 감사 가능
- Touch ID만 비활성화한다는 제한 다시 명시
- Apple Watch 잠금 해제, 보안 키 등 다른 방식이 켜져 있으면 계속 잠금 해제 가능
배포
- 릴리스 스크립트가 빌드, 서명, notarization, 패키징 처리
- 주요 특성
- Xcode 프로젝트에서 버전 자동 추출
- App Store 외부 배포용 Developer ID 서명
- Apple notarization 제출
- 배포용 notarized DMG 생성
- 버전별
build/release/<version>/디렉터리를 사용하는 병렬 notarization 지원
- 워크플로
- Xcode에서
MARKETING_VERSION증가 ./scripts/release.sh실행 후 빌드 및 notarization 제출- 이후 다시 실행해 상태 확인 및 승인 후 계속 진행
- 최종 산출물은
build/release/<version>/PanicLock-<version>.dmg
- Xcode에서
라이선스
- MIT License 적용
기여
- 기여 환영 명시
- issue 또는 pull request 개방
Hacker News 의견들
- Apple Silicon에서 lid sensor가 감지된 뒤 실제 sleep까지 시간이 얼마나 되는지 궁금함. 내가 M2용 메뉴바 앱을 몇 개 배포해봤는데
NSWorkspaceWillSleepNotification을 들어도 체감상 200ms 정도밖에 없어서, 그 짧은 창 안에 Secure Enclave 왕복까지 필요하면 사실상 레이스 컨디션처럼 보임 - 아이디어와 구현이 아주 좋다고 느낌. 굳이 앱을 설치하지 않아도
sudo bioutil -ws -u 0; sleep 1; sudo bioutil -ws -u 1이 원라이너로 같은 효과를 낼 수 있음. 거기에 화면 잠금까지 붙인 Shortcuts 링크도 만들어뒀고, 전역 단축키로 걸어두면 꽤 실용적임- 이걸 Crank에 연결해서 lid angle 30° 이하 트리거로 걸면, 뚜껑을 살짝 내리는 동작만으로 자동 실행되게 만들 수 있음
- Touch ID에 여러 손가락을 등록하고 손가락별로 동작을 다르게 스크립트할 수 있으면 좋겠다고 생각함. 예를 들어 중지는 일반 잠금 해제, 검지는 Touch ID 비활성화 후 비밀번호 강제 입력 같은 식이면 꽤 유용해 보임
- 손가락별로 아예 다른 계정에 매핑하는 건 가능함. 나는 예전에 그걸 이용해서 계정 간 fast user switch를 했던 기억이 있음
- iOS 쪽에서는 측면 버튼과 볼륨 버튼을 길게 눌러 전원 슬라이더를 띄운 다음 취소하면, 다음 잠금 해제에서 암호 입력이 강제됨. 측면 버튼 5번으로 Emergency SOS를 띄워도 같은 효과가 있음. 오래전부터 있던 기능인데 의외로 잘 알려지지 않았고, Mac에도 비슷한 흐름이 생겨서 반가움
- 내 기준에는 전원 버튼을 빠르게 5번 이상 누르는 쪽이 더 쉬움
- 발상이 멋지다고 느낌. 예전부터 강제 잠금 해제의 적법성 논쟁이 있었고, 내 기억엔 지문은 강제로 요구될 수 있지만 비밀번호 입력 강제는 더 어렵다고 알려져 있었음. 그래서 이 도구도 주된 목적이 그런 상황 대응인지, 아니면 다른 목표도 있는지 궁금했음
- 나는 Washington Post 기자 Hannah Natanson 사례를 보고 이걸 만들었음. 그 기자가 지문으로 컴퓨터 잠금 해제를 강요받았고, 그 결과 데스크톱 Signal까지 열려서 취재원과 대화가 노출됐음. 관련 기사는 Yahoo 기사에서 볼 수 있고, 법적 배경과 판례는 앱 소개 페이지에 더 정리해뒀음
- 이게 미국만의 문제인지 궁금함. 영국은 기억상, 합리적으로 알고 있을 법한 비밀번호는 제출을 강제할 수 있는 쪽에 더 가까웠던 것 같음
- 또 다른 문제는 기기 표면에 지문 흔적이 남는다는 점임. 선명한 지문 이미지를 만들 수 있으면 젤라틴 복제 같은 방식으로 많은 지문 센서를 속일 수 있었음. 예전에는 포토샵으로 정리한 뒤 OHP 필름에 레이저 프린트해서 몰드처럼 쓰는 기법도 자주 언급됐음
- 생체인식 대 비밀번호, 그리고 법적 상황에 대한 추가 설명은 paniclock 사이트에 더 있음
- 비밀번호 강제의 적법성이 불명확한 면은 있어도, 법원은 모욕죄(contest) 가 아니라 contempt를 통해 사실상 무기한 구금 압박으로 비밀번호 입력을 강제할 수 있다는 점도 같이 봐야 함
- 현실 사례로, 당국이 법적 강제나 이른바 rubber-hose cryptanalysis 없이도 컴퓨터 전체 접근을 원하면 어떻게 하는지 잘 보여주는 예가 있음. 대상이 로그인된 상태가 될 때까지 기다렸다가 근처에서 소동을 연출하고 열린 노트북을 그대로 낚아채는 방식이었음. DPR 체포 작전은 이 글에 정리돼 있음
- 이건 정말 좋다고 느낌. 보통은 생체인식이 비밀번호를 대체하면 안 된다는 보안 조언을 많이 보지만, 내 경우엔 공개된 장소에서 비밀번호를 칠 때 누군가에게 촬영되거나 엿보이는 위험이 더 크게 느껴짐. 그런 현실적인 상황까지 생각하면 이런 도구가 균형을 잘 맞춰줌
- Apple 플랫폼에는 크게 두 가지 빈틈이 있다고 봄. 하나는 Touch ID와 생체인식에 대한 세밀한 설정 프로필이고, 다른 하나는 iCloud 백업의 버전 관리임. 사람마다 요구하는 보안 수준이 전혀 다르니 one-size-fits-all은 맞지 않음. 평균 사용자에게 생체인식은 shoulder surfing을 줄이고 보안을 높여주는 좋은 선택이지만, 어떤 사용자는 Apple Watch 같은 2차 요소를 붙이거나, 비밀번호 강제까지의 시간을 짧게 하거나, 아예 생체인식+비밀번호 동시 요구를 원할 수도 있음. 지금보다 훨씬 세밀한 선택지가 필요하다고 느낌
- 여기서 진짜 필요한 건 멀티팩터라고 봄. 예를 들면 지문과 기기별 PIN을 둘 다 요구하는 식임. 안타깝게도 기반 기술은 이미 있는데도 이런 기능을 제품에서 잘 제공하지 않음
- Touch ID 버튼을 클릭했을 때 그 로그인 시도를 무효화하고 비밀번호를 요구하게 만들 수 있으면 좋겠다고 생각함. 평소엔 지문 로그인 편의성을 좋아하지만, 필요할 때 즉시 빠져나올 수 있는 출구 버튼 같은 감각이 있으면 더 좋겠음
- 맥에는 가속도계도 있으니, 뚜껑을 닫는 힘의 세기를 감지하거나 적당한 프록시 값을 추정할 수 있으면 정말 좋겠다고 생각함. 살짝 닫으면 아무 일도 없고, 좀 더 세게 닫으면 Touch ID 비활성화, 정말 다급하게 slam shut 하면 모든 생체인식 비활성화에 세션 상태 폐기, 가능하다면 RAM과 FileVault 키까지 날리는 식이면 이상적임
- 그건 거의 rage quitting machine 같음. 기업용 버전에서는 뚜껑을 전력으로 닫는 순간 현재 고용주에게 전문적인 사직서까지 자동 발송하면 완성일 것 같음
- 그런 마지막 단계가 합리적이라고 생각한다면 아마 고양이나 아이와 함께 살지 않는 사람일 가능성이 높다고 느낌
- “민감한 상황에서 많은 나라의 수사기관이나 국경 요원은 비밀번호와 달리 생체인식 해제를 강제할 수 있음”이라는 설명은 이해하지만, 위협 모델에 국가급 행위자가 포함된다면 생체인식만 꺼서는 물리 메모리의 데이터를 막지 못할 수 있음. 그럴수록 디스크 암호화를 켜고, RAM에 평문 데이터가 남지 않도록 컴퓨터를 즉시 전원 종료나 최대절전시키는 패닉 버튼이 더 현명해 보임. 사이트에서는 종료가 시간이 걸리고 세션을 죽인다고 하지만, 최대절전 버튼이라면 속도는 비슷하면서 세션은 보존할 수 있음
- 적어도 Apple Silicon은 이런 종류의 공격이 훨씬 더 어렵긴 함. 완전히 불가능하다고는 못 해도 예전보다는 방어력이 높아 보임
- 다만 경찰은 국가를 위해 일할 뿐이지, 보통 우리가 말하는 state-level actor와는 결이 다르다고 봄