[2020 정보처리기사 실기 - 소프트웨어 개발 보안 구축] 1. 소프트웨어 개발 보안 설계하기 (1)
* 소프트웨어 개발 보안
1) 소프트웨어의 보안 품질에 영향을 주는 요소
(1) 소프트웨어의 보안 품질에 영향을 주는 요소
- SW 보안 취약점
해킹 등 실제 침해사고에 이용될 수 있는 외부에 노출된 보안 약점
작동하는 시스템을 대상으로 수행하는 동적 검증을 통해 보안 취약점을 확인하는 보안품질 관리활동을 모의해킹이라 함
- SW 보안 약점
보안 취약점의 근본원인이 되는 SW의 결함이나 버그
모든 보안 취약점은 보안약점에 포함됨
SW 보안약점이 존재하지 않도록 개발하는 방법을 개발보안이라고 함
CWE(Common Weakness Enumeration)로 보안약점이 DB화 되이 관리 됨
(2)SW 개발보안
- 해킹 등 사이버 공격의 원인이 될 수 있는 보안약점을 SW 개발단계에서 사전에 제거하는 것을 목적으로 함
- SW 개발 생명주기의 각 단계별로 수행하는 일련의 보안활동을 통해 안전한 SW를 만들기 위한 개발 체계
- SW 개발 생명주기 중 소스코드 구현단계에서 보안약점을 제거하기 위한 방법
- 정부의 SW 개발보안가이드 기준상 7개 카테고리의 47개 보안약점 항목과 이에 대한 안전한 코딩 방법 정의 되어 있음
* 설계 단계의 보안 요구사항
1) 중요 정보 및 개인 정보에 대한 보안 요구사항
- 보안 5요소 : 기밀성, 무결성, 가용성
- 개인정보같은 중요정보에 대해 각종 법규에서 보호조치 기준을 제시
- 설계 단계에서는 이와 같은 법적, 기술적 요구사항을 식별하여 보안 요구사항으로 반영해야 함
2) 법규에 근거한 중요 정보 및 보호조치 기준
- 모든 유형의 개인정보는 전송 시 암호화 전송을 의무화 하고 있음
SSL인증서 기반의 보안 서버 구축을 보호조치 기준으로 제시하고 있음
- 개인 정보를 시스템에 저장할 때 암호화해야 하는 항목을 각 법규에서 정의하고 있음
암호화 저장 방법에 대해서도 기준을 제시하고 있음
- 암호화 저장이 필요한 개인 정보 중 비밀번호는 SHA-256 방식 이상의 보안 강도를 가지는 일방향 암호화 알고리즘 사용
- 비밀번호 제외한 나머지 개인정보는 AES, SEED, ARIA 등 보안성이 보증된 양방향 암호화 알고리즘 사용
128비트 이상 암호화키를 사용하도록 하고, 블록 암호화의 보안성 강화를 위해 CBC 모드 사용 권고
3) 기능상 보안 요구사항
(1) 정보보호 및 개인정보보호 관리체계 인증 기준
- 2.5 인증 및 권한 관리
사용자 인증 : 로그인 횟수 제한, 불법 로그인 시도 경고 등 비인가자 접근 통제방안을 수립, 이행
비밀번호 관리 : 정보시스템 사용자 등 정보주체가 사용하는 비밀번호 관리절차를 수립, 이행
- 2.6 접근 통제
응용 프로그램 접근 : 정보의 중요도에 따라 접근권한 제한, 불필요한 정보나 중요정보 노출을 최소화
- 2.7 암호화 적용
암호정책 적용 : 법적 요구사항을 반영한 암호화 대상, 암호강도, 암호사용정책을 수립하고 주요정보의 저장, 전송, 전달 시 암호화
- 2.8 정보시스템 도입 및 개발 보안
보안 요구사항 정의 : 정보시스템 도입, 개발, 변경 시 정보보호 및 개인정보 보호 관련 법적 요구사항, 최신 보안 취약점,
안전한 코딩방법 등 보안 요구사항을 정의하고 적용
(2) 소프트웨어 개발보안 가이드
- 입력값 검증 및 표현 관련 주요 보호대책 요구사항
DBMS 조회 및 결과 검증 : SQL 생성 시 사용되는 입력 값 과 조회 결과에 대한 검증방법 설계, 유효하지 않은 값 처리 방법 설계
시스템 자원 접근 및 명령어 수행 입력값 검증 : 입력값 유효성 검증방법과 유효하지 않은 값 처리방법 설계
웹 서비스 요청 및 결과 검증 : 요청과 응답 결과에 대한 검증방법과 적절하지 않은 데이터 처리방법 설계
웹기반 중요기능 수행 요청 유효성 검증 : 사용자 권한확인 이 필요한 중요기능에 대한 서비스 요청에 대한 유효성 검증
HTTP 프로토콜 유효성 검증 : 비정상적인 HTTP 헤더, 자동연결 URL 링크 등 유효성 검증방법과 유효하지 않은 값 처리방법 설계
보안 기능 동작에 사용되는 입력값 검증 : 보안기능 동작을 위한 입력값과 함수의 외부 입력값 및 수행결과에 대한 처리방법 설계
업로드 다운로드 파일 검증 : 파일의 무결성 실행권한 등에대한 유효성 검사방법과 검사 실패시 대응 방안 설계
- 보안 기능 관련 주요 대책 요구사항
인증대상 및 방식 : 중요정보 기능과 인증방식 정의, 인증 기능이 우회되지 않고 수행되도록 설계
인증 수행 제한 : 인증 반복시도 제한 및 인증실패 등에 대한 인증제한 기능 설계
비밀번호 관리 : 안전한 비밀번호 조합규칙 설정, 안전한 저장 정책, 재설정 및 변경 정책, 패스워드 관리 규칙이 적용되도록 설계
중요자원 접근통제 : 중요자원을 정의하고 접근을 통제하는 신뢰할 수 있는 방법 및 통제 실패시 대응방안 설계
암호키 관리 : 암호키 생성, 분배, 접근, 파기 등 안전하게 암호키 생명주기를 관리할 수 있는 방법 설계
암호연산 : 국제 표준 또는 검증될 프로토콜로 등재된 안전한 암호 알고리즘 선정
중요정보 저장, 중요정보 전송
- 에러처리 및 세션 통제 관련 주요 보호대책 요구사항
예외처리 : 오류메세지에 중요정보가 포함되어 출력되거나
에러 및 오류가 부적절하게 처리되어 의도치 않은 상황이 발생하는 것을 막기 위한 안전한 방안 설계
세션통제 : 다른 세션간 데이터 공유금지, 세션 ID 노출금지, 재로그인시 세션 ID 변경, 세션종료 처리 등 세션 안전하게 관리