> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 보안

> 여기의 모든 보안 주장은 마케팅이 아니라 ipmideck 자체의 백엔드 코드에 근거합니다.

ipmideck는 공급업체를 신뢰하는 대신 소스를 읽는 사람들을 위해 만들어졌습니다. 아래의 주장은
제품의 백엔드 코드에 근거합니다.

## 데이터 및 계정 보안

자격 증명은 저장 시 암호화되고, 로그인은 해시되며, 세션은 서명됩니다. 데이터베이스
하나만으로는 결코 침입하기에 충분하지 않습니다.

### AES-256-CBC 자격 증명 암호화

BMC 자격 증명은 비밀마다 무작위 IV를 사용한 AES-256-CBC로 저장 시 암호화됩니다.
암호화 키는 별도의 키 파일 (`data/encryption.key`, 32개의 무작위 바이트, 소유자 전용
권한)에 있으며, 데이터베이스에는 결코 없으므로, 도난당한 데이터베이스 하나만으로는 아무것도
복호화할 수 없습니다.

### bcrypt 로그인 + HMAC-SHA256 서명된 세션

로그인 비밀번호는 bcrypt로 해시됩니다 (비밀번호별 솔트, 상수 시간 검증). 세션 토큰은
HMAC-SHA256으로 서명되고, 모든 요청에서 재검증되며, 사용자 이름이 변경되면 무효화됩니다.
쿠키는 HttpOnly이고 SameSite=Lax입니다.

### 무차별 대입 잠금

다섯 번의 실패한 시도 후 지수 백오프가 적용되는 사용자 이름별 잠금 (최대 1시간), 그리고
타이밍 누출에 안전한 일반 오류로 공격자가 로그인이 어떻게 실패하는지에서 아무것도 배우지
못하게 합니다.

### 셸 없는 ipmitool, 완전 오프라인

ipmitool은 인수 목록 (`create_subprocess_exec`)을 통해 호출되며 셸을 거치는 일은 결코
없으므로, 명령 주입 표면이 없습니다. 전체 시스템은 완전히 오프라인으로 실행됩니다. 텔레메트리도,
클라우드도, 외부 호출도 없습니다.

## 하드웨어 보호

FanPilot는 안전하게 실패하도록 만들어졌습니다. 열 한계가 어떤 커브보다 이기며, 제어 루프는
당신이 보고 있지 않을 때도 계속 실행됩니다.

### 임계 온도에서의 안전 재정의

팬은 임계 온도 이상에서 100%로 강제됩니다 (기본값 85°C, 구성 가능). 어떤 팬 커브도
재정의를 무효화할 수 없습니다. 열 한계가 항상 이깁니다.

### 진동을 멈추는 히스테리시스

구성 가능한 히스테리시스 마진 (기본값 3°C)은 팬이 온도 한계 주변에서 빠르게 위아래로
진동하는 것을 방지하여, 속도 변화를 부드럽고 예측 가능하게 유지합니다.

### 자율 백그라운드 루프

팬 제어는 백그라운드 작업 (약 30초 폴링)에서 실행되며 대시보드가 닫혀 있어도 계속
작동합니다. 보호는 브라우저 탭이 열려 있는지에 의존하지 않습니다.

### 비정상 종료 복구 + 정상 종료

비정상 정지 (전원 손실 또는 `kill -9`) 후, ipmideck는 BMC 자체의 자동 모드를 복원하고,
서버 오프라인과 오래된 센서 감지 시 자동 복구합니다. 정상 종료는 팬을 BMC의 열 관리로
반환합니다.
