암호키 생성, 분배, 접근, 파기 등 안전하게 암호키 생명 주기별 암호키 관리방법을 안전하게 설계
(보안기능) 하드코드된 중요정보
(보안기능) 주석문 안에 포함된 시스템 주요 정보
공격자는 이 정보로 코드서명을 거쳐 악성 프로그램을 배포했다. 마치 실제 보안회사가 배포하는 것처럼 위장했다.
코드서명은 인터넷에 프로그램을 유포하기 위해 자사가 만든 것이 맞다는 것을 증명하기 위해 일종의 인감도장을 찍는 것과 같다. 이 과정에서 사용되는 것이 인증서와 개인키다. 이 사건의 경우 금융권 등 고객사에 제공하는 일부 보안모듈을 우리가 개발한 것이 맞다고 증명하는데 필요한 인감도장 정보(개인키)가 유출됐다.
① DB데이터 암호화에 사용되는 암호키는 한국인터넷진흥원의 「암호이용안내서」적용
② 설정파일(xml, Properties)내의 중요정보 암호화에 사용되는 암호키는 암호화해서 별도의 디렉터리에 보관
① 한국인터넷진흥원의 「암호 키 관리 안내서
(ㄱ) 암호키 관리 규칙 생성 시 고려사항
1. DB데이터 암호화에 사용되는 암호키는 데이터가 저장되는 데이터베이스와 물리적으로 분리된 장소에 별도로 보관
2. 암호키를 생성, 분배, 사용, 폐기하는 키의 생명주기관리를 위한 명시적인 암호화 정책을 적용
3. 패스워드나 암호화키는 메모리에 저장 제한
4. 패스워드나 암호키가 메모리에 저장되어야 하는 경우 사용종료 후 메모리를 0으로 초기화
5. 암호키 생성 및 변경 시 암호키에 대한 백업기능을 구현
6. 암호알고리즘에 사용되는 키 종류에 따라 사용 유효기한을 설정
(ㄴ) 조직의 보호 목적에 따라 암호키 관리 수준을 지정
높은 수록 강한 암호키관리 수준
FIPS 140‐2 레벨 분류
Level 1 • 암호모듈에 대한 기본적인 보안요구사항만을 충족하여 최소한의 보안을 제공
Level 2 • 침입자의 불법적인 접근을 방지하고, 침입 이후에 변조를 나타내는 증거를 제공함으로써 물리적인 보안메커니즘을 제공
Level 3 • 강력한 변조 탐지 및 대응의 일환으로 침입을 감지하면 저장된 키를 삭제
Level 4 • 암호모듈 외부의 전압이나 온도 등을 감지하여 슈퍼쿨링(Supercooling) 등 환경의 이상변화 시, 암호키를 삭제
(ㄷ) 키 생명주기 기준 암호화 키 관리 프로세스를 구축
키 생성
암호화 키와 패스워드를 생성, 사용, 관리하는 사람 등을 명시하고 키를 생성하는데 사용하는 프로그램 등 어떠한 방법으로 생성하는지에 대한 절차
키 사용
암호화 키와 패스워드를 어떠한 방법으로 사용하는지에 대한 절차, 생성한 키의 종류에 따른 변경주기, 인가된 사용자만 키에 접근할 수 있는 접근통제 방법 및 요구사항 등
키 폐기
키의 사용주기가 다 된 경우 및 사용 용도가 끝난 경우 등 생성한 키를 폐기하여야 하는 경우를 명시
암호화 키와 패스워드를 안전하게 폐기하는 절차 및 요구사항 등을 명시한다.
(ㄹ) 키 복구 방안
사용자 퇴사 등으로 인해 사용자 이외의 사람에게 키 복구가 필요한 경우 키 복구에 대한 방안을 마련
암호화 키는 정보보호 담당자의 관리 하에 암호화 키 관리대장 등에서 복구
패스워드는 정보보호담당자가 임시 패스워드를 발급하는 등
(ㅁ) 암호키 사용 유효기간
암·복호화 키의 사용이 일정시간을 넘은 경우 사용자 인터페이스로 키 사용기간이 경과했음을 알리고 새로운 키 생성을 권장하도록 설계
NIST에서 권고하는 암호키 사용 유효기간
암호키 사용 유효기간(NIST권고안)
대칭키 암호 알고리즘(비밀키)
송신자사용기간 : 최대 2년
수신자사용기간 : (송신자 사용기간+3년)이하
공개키 암호 알고리즘
암호화 공개키 : 최대 2년
복호화 개인키 : 최대 2년
서명용 개인키 : 1~3년
검증용 공개키 : 키 크기에 따라 다름
② 설정파일내의 중요 정보 암호화에 사용된 암호키는 마스터키를 이용하여 암호화하여 별도의 디렉터리에 보관
코드 내부에 암호화 키를 하드코딩하여 암호화를 수행하면 암호화된 정보가 유출될 가능성이 높아진다.
주석문 안에 암호키 또는 시스템 주요정보에 대한 설명이 포함되어 있는 경우, 공격자가 소스코드에 접근할 수 있다면 아주 쉽게 암호키가 노출