보안
개요
Neotask은 보안을 핵심 원칙으로 구축되었습니다. 라이선스 활성화부터 데이터 저장, 네트워크 통신까지 모든 계층이 데이터를 보호하고 무단 접근을 방지하도록 설계되었습니다.
라이선스 보안
- 기기 바인딩: 각 라이선스는 SHA-256 지문을 통해 단일 기기에 암호학적으로 바인딩됩니다.
- HMAC-SHA256 요청 서명: 모든 API 요청은 기기별 비밀, 논스, 타임스탬프로 서명됩니다.
- 타이밍 안전 비교: 모든 비밀 비교는 타이밍 공격을 방지하기 위해 상수 시간 알고리즘을 사용합니다.
- 토큰 수명 주기: 접근 토큰과 갱신 토큰의 만료는 서명된 JWT 클레임을 통해 서버 측에서 제어되어 즉각적인 취소가 가능합니다.
- 자동 재검증: 라이선스는 6시간마다 확인됩니다.
- 오프라인 유예 기간: 재검증이 필요하기 전까지 72시간 동안 오프라인 접근이 가능합니다.
- 원격 취소: 라이선스는 서버 측에서 즉시 취소할 수 있습니다.
이중 인증 (TOTP)
Neotask은 대시보드 접근을 위한 선택적(하지만 권장) 이중 인증을 지원합니다.
- Google Authenticator, Authy, 1Password 및 모든 TOTP 호환 앱과 호환됩니다.
- 설정 중에 백업 코드가 제공됩니다. 이러한 코드는 SHA-256으로 해시되며 일회용입니다.
- TOTP는 대시보드 설정의 보안 섹션에서 언제든지 활성화하거나 비활성화할 수 있습니다.
암호화
저장 데이터
- AES-256-GCM: 모든 토큰, 비밀, API 키는 저장 시 암호화됩니다.
- 머신 기반 키: 암호화 키는 기기 ID로부터 scrypt를 통해 파생됩니다.
- 평문 저장 없음: 토큰은 평문으로 저장되지 않습니다.
전송 중 데이터
- TLS 1.3: 모든 API 통신은 HTTPS를 통해 이루어집니다.
- WebSocket Secure (WSS): 실시간 게이트웨이 통신이 암호화됩니다.
- HMAC 서명: 모든 요청에 논스와 타임스탬프 서명이 포함됩니다.
환경 비밀
- 이중 암호화: 빌드 타임 환경 암호화는 별도의 키를 사용합니다.
- 하드코딩된 비밀 없음: 소스 코드에 API 키나 토큰이 존재하지 않습니다.
- 로그 편집: 민감한 데이터는 로그에서 자동으로 제거됩니다.
데스크톱 앱 보안
Electron 강화
Neotask은 데스크톱 애플리케이션을 보호하기 위해 엄격한 Electron 보안 설정을 적용합니다:
sandbox: true, 렌더러 프로세스가 샌드박스 환경에서 실행됩니다.contextIsolation: true, UI에서 메인 프로세스에 직접 접근할 수 없습니다.nodeIntegration: false, UI에 Node.js API가 노출되지 않습니다.webSecurity: true, 동일 출처 정책이 적용됩니다.
콘텐츠 보안 정책 (CSP)
default-src 'self', 앱 자체의 리소스만 로드됩니다.script-src 'self', 외부 스크립트가 허용되지 않습니다.- 팝업 창이 차단됩니다.
- 리디렉션 공격을 방지하기 위해 내비게이션이 차단됩니다.
- 상태 조작을 방지하기 위해 페이지 새로 고침이 차단됩니다.
앱 무결성
- ASAR 무결성: 패키징된 앱의 SHA-256 해시 검증.
- 버전 증명: 킬 스위치 기능이 있는 서버 서명 매니페스트.
- 코드 난독화: 프로덕션 빌드에 JavaScript 난독화가 적용됩니다.
- 하드 실패 모드: 무결성 실패 시 앱이 완전히 차단됩니다.
네트워크 보안
게이트웨이 격리
- 게이트웨이는 루프백 전용(127.0.0.1)으로 실행되어 외부 네트워크 노출이 전혀 없습니다.
- 외부 머신에서 들어오는 연결은 허용되지 않습니다.
- 세션 부여는 10분 수명을 가지며, 기기에 바인딩되고 HMAC으로 서명됩니다.
3회 시도 잠금
- 게이트웨이 작업이 3회 연속 실패하면 모든 작업이 차단됩니다.
- 접근을 복원하려면 수동 재설정이 필요합니다.
- 이 메커니즘은 무차별 대입 시도를 방지합니다.
API 보안
인증 방법
| 방법 | 사용 대상 | 보안 수준 |
|---|---|---|
| JWT 베어러 토큰 | 웹 대시보드, API 호출 | 표준 (90일 만료) |
| 라이선스 HMAC | 데스크톱 앱 작업 | 높음 (기기별 비밀) |
| 세션 부여 | 게이트웨이 작업 | 매우 높음 (10분, HMAC 서명) |
| TOTP | 대시보드 로그인 | 추가 인증 요소 |
속도 제한
| 엔드포인트 | 제한 |
|---|---|
| 연락 양식 | 15분당 5건 |
| 로그인 시도 | 15분당 10건 |
| 분석/추적 | 60초당 30건 |
입력 유효성 검사
- 모든 IPC 매개변수는 처리 전에 검증됩니다.
- 모든 API 입력이 소독됩니다.
- SQL 인젝션, XSS, 명령 인젝션에 대한 보호가 적용됩니다.
제공업체 키 보안 (BYOK)
BYOK(자체 키 가져오기) 모드를 사용하는 경우, Neotask은 API 키에 추가적인 보안 조치를 적용합니다:
- API 키는 저장 전에 AES-256-GCM으로 암호화됩니다.
- 키는 로그나 오류 메시지에 기록되거나 노출되지 않습니다.
- 키는 대시보드에서 마스킹된 형태로 표시됩니다(마지막 4자만 표시).
- 키가 제거될 때 안전한 삭제가 수행됩니다.
안전 모드
Neotask에는 에이전트를 위한 실행 샌드박스를 제공하는 안전 모드 기능이 포함됩니다:
- 에이전트별 실행 샌드박스가 각 에이전트의 작업을 격리합니다.
- 민감한 작업은 진행 전에 명시적인 사용자 승인이 필요합니다.
- 마스터 토글로 안전 모드를 전체적으로 활성화하거나 비활성화할 수 있습니다.
- 일정에 따른 자동 재활성화로 임시 변경 후 안전 모드가 다시 활성화됩니다.
- 실시간 정책 동기화로 모든 연결에 걸쳐 설정이 일관되게 유지됩니다.
감사 및 규정 준수
- 모든 구성 변경은 타임스탬프와 함께 기록됩니다.
- 구성 해싱으로 무단 수정을 감지합니다.
- 사용 원격 측정(옵트인)으로 이상 탐지가 가능합니다.
- CORS는 승인된 도메인으로만 제한됩니다.
- 모든 웹 응답에 Helmet 보안 헤더가 적용됩니다.
모범 사례
- TOTP 활성화, 대시보드에서 이중 인증을 설정하세요.
- 백업 코드 다운로드, 안전한 곳에 보관하세요.
- 일일 예산 설정, 예상치 못한 비용을 방지하세요.
- BYOK 모드 사용, API 키에 대한 완전한 제어를 원하는 경우.
- 앱 최신 상태 유지, 자동 업데이트에는 보안 패치가 포함됩니다.
- 에이전트 권한 정기 검토, 안전 모드 설정에서 주기적으로 확인하세요.