위협 모델 (Threat Model)
본 장에서는 2FA Smart Door Lock 시스템의 보안 무결성을 확보하기 위해 수행된 위협 모델링 결과를 기술한다. 본 분석은 Microsoft의 STRIDE 방법론을 기반으로 하여, 시스템의 각 구성 요소에서 발생할 수 있는 잠재적 보안 위협을 체계적으로 식별하고 이에 대한 완화 전략을 수립하였다.
STRIDE 방법론 개요
| 구분 | 위협 유형 (Threat Type) | 설명 |
|---|---|---|
| S | Spoofing (속임수) | 타인의 NFC 카드, PIN 또는 안면 정보를 도용하여 인가된 사용자로 위장하는 행위 |
| T | Tampering (변조) | 시리얼 통신 데이터나 데이터베이스의 무단 수정, 하드웨어 회로의 물리적 변경 |
| R | Repudiation (부인) | 특정 사용자가 수행한 접근 기록을 부정하거나 시스템 로그를 조작하여 흔적을 지우는 행위 |
| I | Information Disclosure (정보 유출) | 사용자의 안면 데이터, 해시된 PIN, 접근 기록 등 민감 정보가 외부에 노출되는 행위 |
| D | Denial of Service (서비스 거부) | 전원 차단, 무차별 대입 공격 등을 통해 시스템의 정상적인 작동을 방해하는 행위 |
| E | Elevation of Privilege (권한 상승) | 일반 사용자 권한으로 시스템 설정에 접근하거나 관리자 기능을 탈취하는 행위 |
보안 매트릭스 (Security Matrix)
본 시스템의 주요 구성 요소에 대해 식별된 위협 시나리오와 대응 방안은 다음과 같다.
| 분류 (STRIDE) | 위협 시나리오 (Threat Scenario) | 위험도 | 완화 전략 (Mitigation Strategy) | 잔여 위험 (Remaining Risk) |
|---|---|---|---|---|
| Spoofing | 타인의 NFC 카드 또는 PIN 정보를 도용하여 1차 인증 시도 | 중 | 2단계 인증(2FA) 필수 적용. 1차 인증 성공 후 반드시 안면 인식 단계를 거치도록 설계함. | 유효한 카드와 PIN을 모두 탈취하고 안면 정보까지 위조할 경우 방어 불가. |
| Spoofing | 고해상도 사진이나 태블릿 화면을 이용한 안면 인식 우회 (Presentation Attack) | 고 | YOLOv8 모델의 신뢰도 임계값(Threshold) 최적화 및 비정상적인 매칭 결과에 대한 로깅. | 2D 카메라의 한계로 인해 정교한 위조(Liveness 탐지 부재)에 취약할 수 있음. |
| Tampering | Arduino와 서버 간 시리얼 통신에 임의의 UNLOCK 명령 주입 | 고 | 서버와 Arduino를 단일 폐쇄 케이스 내에 배치하여 물리적 접근 차단 (설계 가이드라인). | 물리적 보안이 뚫릴 경우 평문 시리얼 명령 탈취 및 주입 가능. |
| Tampering | 릴레이 출력 단자를 직접 단락(Short)시켜 도어락 강제 개방 | 치명 | 릴레이 및 도어락 구동부를 보안 구역(문 안쪽)에 설치하고 외함(Enclosure) 보호 적용. | 외부 노출형 설치 시 물리적 공격에 대한 소프트웨어적 방어 불가. |
| Information Disclosure | 데이터베이스(SQLite) 접근을 통한 사용자 정보 및 접근 로그 유출 | 중 | DB 파일 권한 설정(0o600) 및 PIN 정보의 Bcrypt 암호화(Hashed) 저장. | 서버 운영체제 권한(Root) 탈취 시 파일 직접 접근 위험 잔존. |
| Denial of Service | 고의적인 전원 차단 또는 시스템 과부하 유도 | 중 | Fail-Secure 하드웨어(정전 시 잠금 상태 유지) 사용 및 비정상 시도에 대한 속도 제한. | 정전 시 기계식 비상 열쇠가 없을 경우 정당한 사용자도 출입이 불가능함 (가용성 저해). |
| Elevation of Privilege | 일반 사용자 계정을 통해 웹 대시보드의 관리 설정에 접근 | 중 | 관리자 권한 분리 및 API 엔드포인트에 대한 접근 제어(Web App 단에서 처리). | API 인증 로직의 허점이 발견될 경우 권한 상승 위험 존재. |
안전 및 주의사항 (Safety and Precautions)
본 시스템은 전기적 신호를 통해 물리적인 잠금장치를 제어하므로, 제작 및 운영 시 다음과 같은 안전 지침을 반드시 준수해야 한다.
| 구분 | 지침 및 주의사항 |
|---|---|
| 전기적 안전 | 릴레이 모듈 연결 시 도어락의 전압(12V)과 제어부 전압(5V)이 혼용되지 않도록 분리된 전원을 사용한다. 결선 노출 부위는 수축 튜브나 절연 테이프로 마감하여 단락을 방지한다. |
| 하드웨어 보호 | Arduino와 서버(PC/SBC) 간의 USB 연결 시 과전류 방지를 위해 안정적인 포트를 사용한다. 정전기 방지를 위해 하드웨어 취급 전 접지를 수행한다. |
| Fail-Secure | 전원 공급 중단 시 문이 잠금 상태를 유지하는 'Fail-Secure' 하드웨어를 사용한다. 이는 화재 등 비상시 외부 침입을 막는 데 유리하지만, 내부 탈출을 위한 수동 개폐 장치(Manual Override)를 반드시 병행 설치해야 한다. |
| 유지보수 | 주기적으로 데이터베이스 백업을 수행하고, 안면 인식률 저하를 방지하기 위해 카메라 렌즈의 청결 상태를 유지한다. |
설계 철학 (Design Philosophy)
본 시스템은 **"신뢰할 수 없는 환경에서의 방어적 설계"**를 철학으로 한다.
- Fail-Secure 우선: 소프트웨어 예외, 하드웨어 통신 단절(카메라, 시리얼 포트), 또는 인증 서버 다운 시 시스템은 항상 '잠금(Locked)' 상태를 유지한다.
- 명시적 허용: 2단계 인증의 모든 조건이 명시적으로 충족되지 않는 한,
UNLOCK명령은 절대 생성되지 않는다. - 최소 권한 원칙: 각 모듈(Arduino, Backend, Database)은 기능 수행에 필요한 최소한의 데이터와 명령만을 교환하도록 설계되었다.