자격/SW보안약점진단원

설계단계 보안설계기준-중요정보 전송

Ignatius Heo 2023. 6. 30. 17:08

작성일: 230630

 

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

 

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

 

유형  보안기능
설계항목  중요정보 전송
설명
 중요정보(비밀번호, 개인정보, 쿠키 등)를 전송하는 방법이 안전하도록 설계한다.

보안대책
 ① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다.
 
 ② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다.

연관된
구현단계
- 암호화되지 않은 중요정보
https://cryptocurrencyclub.tistory.com/132

 

 

가. 취약점 개요

 

ㅇ 위 내용을 볼 때, 예상 가능한 보안 위협: 스니핑?

  1. 프로그램이 민감한 데이터를 평문으로 송수신할 경우, 통신채널 스니핑으로 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있다.

중요정보 평문전송 시 발생 가능 취약점(출처: 소프트웨어 보안약점 진단 가이드 2021, 행정안전부·KISA)

 

나. 설계시 고려사항

 

 ① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다.

  ㅇ 중요정보를 네트워크로 전송해야 하는 경우 안전한 암호모듈로 암호화한 뒤 전송하거나 안전한 통신 채널을 사용하도록 설계한다. 안전한 암호화는 "암호연산" 설계항목을 충족시키는 암호 알고리즘이나 암호키를 사용한다.

  ㅇ 웹 어플리케이션 설계 시 클라이언트에서 서버로 전달되는 데이터(hidden 필드, Ajax 변수, 쿠키, 헤더 등) 또는 서버에서 클라이언트로 전달되는 데이터(HTTP 응답헤더 등) 중 불필요하게 많은 데이터가 전송되지 않도록 설계한다.

 

 ② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다.

  ㅇ 쿠키에는 중요정보가 포함되지 않도록 설계해야 하지만 부득이 쿠키에 중요정보가 포함되어야 하는 경우 반드시 세션쿠키로 설정되어야 하며, 전달되는 중요정보는 반드시 암호화해서 전송해야 한다.

 

 

다. 진단 세부사항

 

 ① 인증정보와 같은 민감한 정보 전송 시 안전하게 암호화해서 전송해야 한다. 중요정보를 네트워크로 외부와 송수신하는 경우 데이터 암호화 또는 통신 구간 암호화를 수행하도록 명시하고 있는지 확인한다.

  ㅇ  암호화해야 하는 중요정보가 분류되어 있는지 확인

      - 암호화 대상 중요 정보(개인/신용/인증정보 등)

      - 개인정보보호법: 고유식별정보(주민/운전면허/여권), 바이오정보, 비밀번호

      - 정보통신망법: 주민등록번호, 신용카드번호, 계좌번호

      - 위치정보법: 위치정보

      - 시스템 중요정보: 데이터베이스 및 연동시스템 계정 정보, 주요 설정 정보

      - 기타 관련 법률 및 서비스 특성에 따른 주요 정보

  ㅇ  중요정보 전송을 위해 안전한 암호화 정책(TLSv2, VPN 등)이 적용된 암호화 통신 구간을 사용하도록 설계되어 있는지 확인

  ㅇ  암호화 통신 구간을 사용하지 않는 경우 중요정보를 안전한 암호 알고리즘을 사용하여 암호화해서 전송하도록 설계되어 있는지 확인

 

 

 ② 쿠키에 포함되는 중요정보는 암호화해서 전송해야 한다. 쿠키에 포함되는 중요정보를 식별하고 암호화하도록 명시하고 있는지 확인한다.

  ㅇ  암호화해야 하는 중요정보가 분류되어 있는지 확인

  ㅇ  중요정보를 포함하는 쿠키 전송을 위해 안전한 암호화 정책(TLSv2, VPN 등)이 적용된 암호화 통신 구간을 사용하도록 설계되어 있는지 확인

  ㅇ  암호화 통신 구간을 사용하지 않는 경우 중요정보를 안전한 암호 알고리즘을 사용하여 암호화해서 전송하도록 설계되어 있는지 확인

 

 

 

 

끝.