IgnatiusHeo

설계단계 보안설계기준-암호키 관리 본문

자격/SW보안약점진단원

설계단계 보안설계기준-암호키 관리

Ignatius Heo 2023. 6. 29. 04:59

작성일: 230628

 

※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.

 

정리 내용: 소프트웨어 보안약점 진단 가이드(138~144p)

 

유형  보안기능
설계항목  암호키 관리
설명
 암호키 생성, 분배, 접근, 파기 등 암호키 생명주기별 암호키 관리방법을 안전하게 설계한다.

보안대책
 ① DB데이터 암호화에 사용되는 암호키는 KISA의 암호이용안내서에서 정의하고 있는 방법을 적용해야 한다.
 
 ② 설정파일(xml, Properties) 내 중요정보 암호화에 사용되는 암호키는 암호화해서 별도의 디렉토리에 보관해야 한다.

연관된
구현단계
- 하드코드된 중요정보
https://cryptocurrencyclub.tistory.com/133
- 주석문안에 포함된 시스템 주요 정보
https://cryptocurrencyclub.tistory.com/140

 

 

가. 취약점 개요

 

ㅇ 위 내용을 볼 때, 예상 가능한 보안 위협: 암호키 유출?

  1. 하드코드된 암호키: 코드 내부에 암호화 키를 하드코딩하여 사용하여 암호화를 수행하면 암호화된 정보가 유출될 가능성이 높아진다.
  2. 주석문 안에 포함된 암호키: 공격자가 소스코드에 접근할 수 있다면 아주 쉽게 암호키가 노출될 수 있다.(이정도면 이미 뚫린거 아냐..?)

 

 

나. 설계시 고려사항

 

DB데이터 암호화에 사용되는 암호키는 한국인터넷진흥원의 「암호 키 관리 안내서」에서 정의하고 있는 관리 방법을 적용해야 한다.

  ㅇ 암호키 관리 규칙 생성 시 고려사항

  • 암호키는 데이터가 저장되는 DB와 물리적으로 분리된 장소에 별도로 보관
  • 암호키의 생성, 분배, 사용, 폐기하는 키의 생명주기관리를 위한 명시적인 암호화 정책 적용
  • 비밀번호나 암호화키는 메모리에 저장하지 않는다
  • 비밀번호나 암호키가 메모리에 저장되는 경우 사용종료 후 메모리를 0으로 초기화
  • 암호키 생성 및 변경 시 암호키에 대한 백업기능을 구현
  • 암호 알고리즘에 사용되는 키 종류에 따라 사용 유효기간 설정

  ㅇ 조직 보호 목적에 따른 암호키 관리 수준 지정

      - FIPS 140-2의 레벨의 조직 보호목적에 따라 적절히 채택

FIPS 140-2 레벨 분류(출처: 소프트웨어 보안약점 진단 가이드 2021, 행정안전부·KISA)

 

  ㅇ 키 생명주기 기준 암호화 키 관리 프로세스 구축

  • 키 생성: 암호키와 비밀번호를 생성, 사용, 관리하는 사람을 명시하고 키를 생성하는데 사용하는 프로그램 등 어떤 방법으로 생성하는지에 대한 절차 명시
  • 키 사용: 암호키와 비밀번호를 어떤 방법으로 사용하는지에 대한 절차, 생성 키 종류 별 변경 주기, 인가된 사용자만 키에 접근할 수 있는 접근통제 방법 및 요구사항 등을 명시
  • 키 폐기: 키의 사용주기가 다 된 경우, 사용 용도가 끝난 경우 등 생성한 키를 폐기하여야 하는 조건을 정하고 암호키와 비밀번호를 안전하게 폐기하는 절차 및 요구사항 등을 명시

 

  ㅇ 키 복구 방안

      - 사용자 이외의 사람에게 키 복구가 필요한 경우, 암호키는 정보보호 담당자 관리하에 암호화키 관리대장 등에서 복구하고, 비밀번호는 정보보호 담당자가 임시 비밀번호를 발급하는 등 키 복구에 대한 방안을 마련

 

  ㅇ 암호키 사용 유효기간

      - 암복호화키의 사용이 일정 기간을 넘은 경우 UI로 키 사용 기간 경과를 알린 후 새로운 키 생성을 권장

암호키 사용 유효기간 NIST 권고안(출처: 소프트웨어 보안약점 진단 가이드 2021, 행정안전부·KISA)

 

설정파일(xml, Properties)내의 중요정보 암호화에 사용되는 암호키는 암호화해서 별도의 디렉터리에 보관해야 한다.

  ㅇ 설정파일 내의 중요정보 암호화에 사용된 암호키는 마스터키를 이용해 암호화하여 별도 디렉토리에 보관

 

다. 진단 세부사항

 

 ① DB데이터 암호화에 사용되는 암호키는 KISA의 암호이용안내서에 정의하고 있는 방법을 적용해야 한다.

  ㅇ  설정파일에 저장되는 중요정보가 암호화되어 저장되도록 설계되어 있는지 확인

  ㅇ  설정파일에 저장된 중요정보의 암복호화에 사용되는 키는 설정파일과 별도의 위치에 저장되도록 설계 여부 확인

  ㅇ  암호키를 안전하게 관리하기 위한 암호키 관리수준의 정의 여부 확인

  ㅇ  암호키 생성 및 변경방법을 수립하고 암호키 백업정책의 정의 여부 확인

  ㅇ  암호키 사용기간을 정의하고 사용기간 경과 시 대응 방법을 정의하고 있는지 확인

      - 대칭키: 송신자2년, (송신자 사용기간 +3년) 이내

      - 비대칭키: 암호화 공개키 2년, 개인키 2년, 검증용 공개키 1~3년, 서명용 개인키 키 크기 별 상이

  ㅇ  암호키 사용 시 사용 종료 후 메모리를 0으로 초기화하도록 코딩 규칙의 정의 여부 확인

 

 ② 설정파일(xml, Properties)내의 중요정보 암호화에 사용되는 암호키는 암호화해서 별도의 디렉터리에 보관해야 한다.

  ㅇ  설정파일에 저장되는 중요정보가 암호화되어 저장되도록 설계되어 있는지 확인

  ㅇ  설정파일에 저장된 중요정보의 암복호화에 사용되는 키는 설정파일과 별도의 위치에 저장되도록 설계되어 있는지 확인

 

 

 

끝.