설계단계 보안설계기준-중요정보 전송
작성일: 230630
※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다.
정리 내용: 소프트웨어 보안약점 진단 가이드(159~163p)
유형 | 보안기능 |
설계항목 | 중요정보 전송 |
설명 | 중요정보(비밀번호, 개인정보, 쿠키 등)를 전송하는 방법이 안전하도록 설계한다. |
보안대책 | ① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다. ② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다. |
연관된 구현단계 |
- 암호화되지 않은 중요정보 https://cryptocurrencyclub.tistory.com/132 |
가. 취약점 개요
ㅇ 위 내용을 볼 때, 예상 가능한 보안 위협: 스니핑?
- 프로그램이 민감한 데이터를 평문으로 송수신할 경우, 통신채널 스니핑으로 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있다.
나. 설계시 고려사항
① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다.
ㅇ 중요정보를 네트워크로 전송해야 하는 경우 안전한 암호모듈로 암호화한 뒤 전송하거나 안전한 통신 채널을 사용하도록 설계한다. 안전한 암호화는 "암호연산" 설계항목을 충족시키는 암호 알고리즘이나 암호키를 사용한다.
ㅇ 웹 어플리케이션 설계 시 클라이언트에서 서버로 전달되는 데이터(hidden 필드, Ajax 변수, 쿠키, 헤더 등) 또는 서버에서 클라이언트로 전달되는 데이터(HTTP 응답헤더 등) 중 불필요하게 많은 데이터가 전송되지 않도록 설계한다.
② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다.
ㅇ 쿠키에는 중요정보가 포함되지 않도록 설계해야 하지만 부득이 쿠키에 중요정보가 포함되어야 하는 경우 반드시 세션쿠키로 설정되어야 하며, 전달되는 중요정보는 반드시 암호화해서 전송해야 한다.
다. 진단 세부사항
① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다. 중요정보를 네트워크로 외부와 송수신하는 경우 데이터 암호화 또는 통신 구간 암호화를 수행하도록 명시하고 있는지 확인한다.
ㅇ 암호화해야 하는 중요정보가 분류되어 있는지 확인
- 암호화 대상 중요 정보(개인/신용/인증정보 등)
- 개인정보보호법: 고유식별정보(주민/운전면허/여권), 바이오정보, 비밀번호
- 정보통신망법: 주민등록번호, 신용카드번호, 계좌번호
- 위치정보법: 위치정보
- 시스템 중요정보: 데이터베이스 및 연동시스템 계정 정보, 주요 설정 정보
- 기타 관련 법률 및 서비스 특성에 따른 주요 정보
ㅇ 중요정보 전송을 위해 안전한 암호화 정책(TLSv2, VPN 등)이 적용된 암호화 통신 구간을 사용하도록 설계되어 있는지 확인
ㅇ 암호화 통신 구간을 사용하지 않는 경우 중요정보를 안전한 암호 알고리즘을 사용하여 암호화해서 전송하도록 설계되어 있는지 확인
② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다. 쿠키에 포함되는 중요정보를 식별하고 암호화하도록 명시하고 있는지 확인한다.
ㅇ 암호화해야 하는 중요정보가 분류되어 있는지 확인
ㅇ 중요정보를 포함하는 쿠키 전송을 위해 안전한 암호화 정책(TLSv2, VPN 등)이 적용된 암호화 통신 구간을 사용하도록 설계되어 있는지 확인
ㅇ 암호화 통신 구간을 사용하지 않는 경우 중요정보를 안전한 암호 알고리즘을 사용하여 암호화해서 전송하도록 설계되어 있는지 확인
끝.