PanicLock - MacBook 덮개를 닫으면 Touch ID를 비활성화하고 비밀번호로만 잠금 해제하는 유틸리티

4 hours ago 1
  • 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개 명령만 실행
  • 코드 서명된 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

라이선스

  • MIT License 적용

기여

  • 기여 환영 명시
  • issue 또는 pull request 개방
Read Entire Article