본문 바로가기

정보처리기사 실기/06. 보안엔지니어링

[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 변경, 세션종료 처리 등 세션 안전하게 관리