-
Notifications
You must be signed in to change notification settings - Fork 1
Security
Yu Jin edited this page Apr 4, 2026
·
3 revisions
┌──────────────────────────────────────────────┐
│ OS 키체인 (macOS Keychain / Windows CM) │
│ ┌────────────────────────────────────────┐ │
│ │ Fernet 암호화 (AES-128-CBC + HMAC) │ │
│ │ ├── {profile}:appkey │ │
│ │ ├── {profile}:secretkey │ │
│ │ ├── _salt (PBKDF2 솔트) │ │
│ │ └── _verify (비밀번호 검증) │ │
│ └────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────┐ │
│ │ 평문 (만료되는 값) │ │
│ │ └── {profile}:token │ │
│ └────────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
~/.kiwoom/config.toml (비민감 정보만)
├── domain
├── account
└── default_profile
| 항목 | 알고리즘 |
|---|---|
| 키 유도 | PBKDF2-HMAC-SHA256, 100,000 iterations |
| 암호화 | Fernet (AES-128-CBC + HMAC-SHA256) |
| 솔트 | 64자 랜덤 hex (secrets.token_hex(32)) |
| 라이브러리 |
cryptography (Python 표준 보안 라이브러리) |
| 항목 | 저장 위치 | 암호화 | 비밀번호 필요 |
|---|---|---|---|
| appkey / secretkey | OS 키체인 | Fernet | O |
| 토큰 | OS 키체인 | 평문 | X |
| domain / account | config.toml | 없음 | X |
| 캐시 (종목 리스트) | ~/.kiwoom/cache/ | 없음 | X |
모든 주문에 시스템 인증 필요:
| OS | 인증 방식 |
|---|---|
| macOS | Touch ID → 실패 시 시스템 비밀번호 (dscl) |
| Windows | LogonUser Win32 API |
| Linux | su (PAM) |
kiwoom config set dangerous-mode on시스템 인증을 비활성화합니다. --confirm 플래그로 프롬프트도 스킵 가능. 신뢰할 수 있는 환경에서만 사용하세요.
| 공격 | 방어 |
|---|---|
파일 읽기 (cat ~/.kiwoom/config.toml) |
키 없음, 도메인/계좌만 |
| AI 에이전트가 파일 Read | 키 없음 |
keyring.get_password() 직접 호출 |
암호화된 값만 반환 |
| 다른 앱이 키체인 접근 | OS가 권한 팝업 표시 |
| 토큰 탈취 | 만료되는 값, 재발급 가능 |
| 주문 시도 (기본 모드) | Touch ID / 시스템 비밀번호 필요 |
appkey/secretkey는 환경변수를 지원하지 않습니다. 환경변수는 /proc/*/environ이나 ps e로 노출될 수 있기 때문입니다.
지원되는 환경변수 (비민감 정보만):
KIWOOM_DOMAINKIWOOM_ACCOUNTKIWOOM_PROFILE
보안 취약점은 공개 이슈로 등록하지 말고 Security Advisories로 비공개 제보해 주세요.