[정보처리기사 실기] Ⅸ. 소프트웨어 개발 보안 구축 - 소프트웨어 개발 보안 설계

Ⅸ. 소프트웨어 개발 보안 구축 - 소프트웨어 개발 보안 설계.


1. 소프트웨어 개발 보안 설계

1.1. SW 개발 보안의 개념

  • 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동.
  • SW 개발 보안 생명주기
    • 요구사항 명세 : 요구사항 중 보안 항목 식별 / 요구사항 명세서.
    • 설계 : 위협원 도출을 위한 위협모델링 / 보안설계 검토 및 보안설계서 작성 / 보안통제수립.
    • 구현 : 표준 코딩 정의서 및 SW 개발 보안 가이드를 준수해 개발 / 소스 코드 보안 약점 진단 및 개선.
    • 테스트 : 모의침투 테스트 또는 동적분석을 통한 보안취약점 진단 및 개선.
    • 유지보수 : 지속적인 개선 / 보안패치.


1.2. SW 개발 보안의 구성요소

  • SW 개발 보안의 3대 요소 ( Tip. 기무가 )
    • 밀성(Confidentiality) : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성.
    • 결성(Integrity) : 정당한 방법을 따르지 않고선 데이터가 변경 될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 웨손 또는 파괴되지 않음을 보장하는 특성.
    • 용성(Availability) : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성.
  • SW 개발 보안 용어 ( Tip. 자위취위 )
    • 산(Assets) : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상 (ex. 서버의 하드웨어, 기업의 중요 데이터).
    • 협(Threat) : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위 (ex. 해킹, 삭제, 자산의 불법적인 유출, 위/변조, 파손).
    • 약점(Vulnerability) : 위협이 발생하기 위한 사전 조건에 따른 정황 (ex. 평문 전송, 입력값 미검증, 비밀번호를 공유).
    • 험(Risk) : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성.


1.3. SW 개발 보안을 위한 공격기법의 이해

1.3.1. Dos(Denial of Service) 공격

  • 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격.
  • 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상 이용 못하게 하거나, 서버의 TCP 연결을 소진시키는 등의 공격.
  • Dos 공격의 종류
    • 지역내 시스템 공격 : 실제 대상 시스템에 접근하여 서버 하드웨어에 직접 과부하를 주는 공격 (ex. 메모리 고갈, 프로세스 서비스 거부, 디스크 서비스 거부 등).
    • 원격 네트워크 공격 : 공격자가 목표 시스템에 접근하지 않고 원격지에서 인터넷 등을 이용한 공격 / 서비스를 제공받지 못하거나 실제 시스템에 영향.

1.3.2. DDos(Distributed Dos) 공격

  • Dos의 다른 형태로, 여러대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법.
  • 취약한 인터넷 시스템에 대한 액세스가 이루어지면, 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격 공격을 개시.
  • DDos 공격 구성요소 ( Tip. HAMAD(하마드) )
    • 핸들러(Handler) : 마스터 시스템의 역할을 수행하는 프로그램.
    • 에이전트(Agent) : 공격 대상에게 직접 공격을 가하는 시스템.
    • 마스터(Master) : 공격자에게서 직접 명령을 받는 시스템 / 여러 대의 에이전트를 관리하는 역할.
    • 공격자(Attacker) : 공격을 주도하는 해커의 컴퓨터.
    • 데몬(Daemon) 프로그램 : 에이전트 시스템의 역할을 수행하는 프로그램.
  • DDos 공격의 대응 방안
    • 차단 정책 업데이트 : 공격 규모를 확인하여 가용성이 침해될 수 있는 지점을 확인 및 데이터 기반 차단 정책 업데이트.
    • 좀비 PC IP 확보 : 공격자는 대부분 Source IP를 위조하므로 IP 위변조 여부를 확인하는 절차 필요.
    • 보안 솔루션 운영 : 방화벽, 침입 탐지시스템 등의 보안 솔루션 운영.
    • 홈페이지 보안 관리 : 홈페이지에 대한 모의 해킹 등을 수행하여 보안 유지.
    • 시스템 패치 : 시스템에 존재하는 취약점을 패치를 통해 해결.

1.3.3. 자원 고갈 공격

  • 서버 간 핸드셰이크(Handshake)를 통해 통신이 연결되는 정상 트래픽과 달리 Dos공격은 정상 접속을 시도하는 오픈된 소켓에 트래픽을 집중시킨다.
  • 공격이 임계치에 도달하면 사용자들은 네트워크에 전혀 접속 할 수 없게 된다.
  • 자원 고갈 공격 기법
    • SYN 플러딩 (SYN Flooding)
      • TCP 프로토콜의 구조적인 문제를 이용한 공격.
      • 서버의 동시 가용자 수를 SYN패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격.
      • 공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 자원이 고갈.
      • SYN 플러딩 대응 방안
        1. TCP연결 타임아웃을 짧게 가져가서 연결 요청 대기 시간을 줄인다.
        2. Backlog Queue를 늘려준다.
        3. Syncookie 기능을 활성화 시켜 준다.
        4. Anti-DDoS, 방화벽, 침입 차단시스템 등 보안 장비를 통해 침입 탐지 및 차단을 수행 한다.
        5. 최신 시스템 및 애플리케이션 패치 및 업데이트를 수행한다.
    • UDP 플러딩 (UDP Flooding)
      • 대량의 UDP 패킷을 만들어 임의의 포트번호로 전송하여 응답 메시지(ICMP Destination Unreachable)를 생성하게 하여 지속해서 자원을 고갈시키는 공격.
      • ICMP 패킷은 변조되어 공격자에게 전달되지 않아 대기함.
    • 스머프 (Smurf)
      • 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅(Directed Broadcasting)하여 마비시키는 공격.
      • 바운스(Bounce) 사이트라고 불리는 제 3의 사이트를 이용해 공격.
      • 스머프 대응 방안
        1. 다른 네트워크로부터 자신의 네트워크로 들어오는 직접 브로드캐스트(Directed Broadcast) 패킷을 허용하지 않도록 라우터를 설정.
        2. 브로드캐스트 주소로 전송된 ICMP Echo Request 메시지에 대해 응답하지 않도록 시스템을 설정.
    • PoD (Ping of Death)
      • 큰 사이즈의 패킷을 의도적으로 목표시스템으로 발생시켜 시스템이 서비스 할 수 없는 상태로 만드는 공격.
      • PoD 대응 방안
        1. 보통 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하도록 설정.
        2. 현재 시스템 대부분은 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정되어 있지만, 취약점을 가지고 있다면 패치가 필요.

1.3.4. 애플리케이션 공격

  • 애플리케이션 공격 기법
    • Slowloris (Slow HTTP Header DoS)
      • HTTP GET 메소드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n(Hex: 0d 0a 0d 0a)을 전송하지 않고, \r\n(Hex: 0d 0a)만 전송하여 대상 웹서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격.
    • RUDY (Slow HTTP POST DoS)
      • 요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격.
      • ex. Content-Length: 9999999 설정 이후 1바이트 씩 정송하여 연결 유지
    • HTTP GET 플러딩 (Flooding)
      • Cache Control Attack 공격.
      • Http 캐시 옵션을 조작하여 캐싱서버가 아닌 웹서버가 직접 처리하도록 유도, 웹서버 자원을 소진시키는 서비스 거부 공격.
  • 애플리케이션 공격 대응 방안
    • 동시연결에 대한 임계치(Threshold) 설정을 통해 차단.
    • 연결 타임아웃 설정을 통해 차단.
    • 읽기 타임아웃 설정을 통해 차단.

1.3.5. 네트워크 서비스 공격

  • 네트워크 서비스 공격 기법
    • 네트워크 스캐너(Scanner), 스니퍼(Sniffer)
      • 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 사용하는 공격 도구.
    • 패스워드 크래킹(Password Cracking)
      • 사전(Dictionary) 크래킹과 무차별(Brute Force) 크래킹 방법을 사용해 네트워크 패스워드를 탐색.
      • 대표적인 공격 도구로 John the Ripper 가 있음.
    • IP 스푸핑 (IP Spoofing)
      • 서버에 대한 인증되지 않은 액세스 권한을 입수하는데 사용하는 기법.
      • 침입자가 패킷 헤더 수정을 통해 인증된 호스트의 IP 어드레스를 위조.
      • 타깃 서버로 메시지를 발송한 이후 패킷은 해당 포트에서 유입되는것 처럼 표시.
    • 트로이 목마 (Trojan Horses)
      • 악성 루틴이 숨어있는 프로그램으로서 겉보기에는 정상적인 프로그램처럼 보이지만 실행하면 악성 코드를 실행.
  • 네트워크 서비스 공격 대응 방안
    • 방화벽, 침입 차단 시스템 등 네트워크 보안 장비를 통해 방어.
    • 네트워크 접속 차단 시스템을 통해 방어.
    • 내부 호스트 및 시스템의 악성 코드 감염방지를 위한 백신 설치 등을 통해 방어.

1.3.6. 취약점 공격

  • 취약점 공격 기법
    • 랜드 어택 (Land Attack)
      • 출발지(Source) IP와 목적지(Destination) IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법.
      • 랜드어택 대응 방안
        • 수신되는 패킷 중 출발지 주소와 목적지 주소가 동일한 패킷들을 차단.
    • 봉크(Bonk) / 보잉크(Boink)
      • 프로토콜의 오류 제어를 이용한 공격기법으로서 시스템의 패킷 재정송과 재조립이 과부하를 유발.
      • ex. 봉크 : 같은 시퀀스 번호를 계속 보냄 / 보잉크 : 일정한 간격으로 시퀀스 번호에 빈 공간 생성.
    • 티어드롭 (Tear Drop)
      • IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 Dos 공격.
      • 공격자는 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 이를 수신한 시스템이 재조합하는 과정에서 오류가 발생, 시스템의 기능을 마비시키는 공격 방식.

✱ 봉크 / 보잉크 / 티어드롭 대응 방안 : 과부하가 걸리거나 반복되는 패킷 재정송 요구를 하지 않고 버린다.


1.4. SW 개발 보안을 위한 암호화 알고리즘

1.4.1. 암호 알고리즘(Encryption Algorithm) 개념

  • 데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법.

1.4.2. 암호 알고리즘 방식

  • 대칭키 암호 방식
    • 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호키를 쓰는 알고리즘.
    • 대칭 키는 블록 암호화와 스트림 암호화 알고리즘으로 나뉨.
    • 블록 암호 방식
      • 긴 평문을 암호화 하기 위해 고정 길이의 블록을 암호화 하는 블록 암호 알고리즘을 반복하는 방법.
      • ex. DES, AES, SEED
        ✱ DES [Data Encryption Standard] : 56bit의 키를 이용, 64bit의 평문블록을 64bit의 암호문 블록으로 만드는 블록 암호 방식의 미국표준(NIST) 암호화 알고리즘.    
        ✱ AES [Advanced Encryption Standard] : DES를 대체한 암호 알고리즘이며, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 암호화 알고리즘.    
        ✱ SEED : KISA, ETRI에서 개발하고 TTA에서 인증한 안전성, 신뢰성이 우수(3DES보다)한 고속 블록단위의 128bit 대칭키 암호화 알고리즘.    
        
    • 스트림 암호 방식
      • 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식.
      • ex. RC4
  • 비대칭키 암호 방식
    • 공개키를 이용해 암호화하고 공개 키에 해당하는 개인 키를 이용해 복호화하는 암호 방식.
    • 비대칭키 암호 방식에서는 공개 키와 개인 키가 존재하며, 공개 키는 누구나 알수 있지만 그에 대응하는 개인키는 키 소유자만이 알수 있어야함.
    • 비밀 키는 키의 소유자만이 알 수 있어야 한다. 공개 키는 보안 타협 없이 공개적으로 배포가 가능.
    • 비대칭키 암호를 구성하는 알고리즘은 대칭키 암호 방식과 비교하여 공개키 암호방식이라고 부름.
    • ex. 디피-헬만, RSA
      ✱ 디피-헬만(Diffie-Hellman) : 암호 키를 교환하는 방법으로서 두사람이 암호화 되지 않은 통신망을 통해 공통의 비밀 키를 공유할 수 있도록 하는 방식.    
      ✱ RSA(Rivest Shamir Adleman) : 현재 비대칭키 암호 방식 중에서 가장 널리 쓰이고 있는 방식 / 소인수 분해의 어려움을 이용한 방식.   
      
  • 해시 방식
    • 단방향 알고리즘으로서 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수.
    • 해시 함수의 결과로 원본 데이터를 유추하기 어려운 것을 이용.
    • 연산에 걸리는 시간이 빠른것이 장점, 동일한 결과를 갖는 값이 발생하는 해시 충돌 문제 발생 가능.
    • ex. SHA, MD5
      ✱ SHA(Secure Hash Algorithm) : 미국 국가 표준으로 지정된 해시 암호 알고리즘 / SHA-224, SHA-256, SHA-384, SHA-512등을 통칭해 SHA-2로 부름.   
      ✱ MD5(Message-Digest Algorithm 5) : RFC 1321로 지정되어 있으며, MD4를 대체하기 위해 고안한 128bit 해시암호화 알고리즘.   
      


1.5. 정보에 대한 보안 항목 식별

1.5.1. 법률적 검토

  • 소프트웨어 개발 보안 활동 관련 법규 및 규정
    • 개인정보보호법
      • 개인정보 처리 과정상의 정보 주체와 개인정보 처리자의 권리, 의무 등 규정.
    • 정보통신망 이용 촉진 및 정보보호 등에 관현 법률
      • 정보통신망을 통하여 수집, 처리, 보관, 이용되는 개인정보의 보호에 대한 규정.
    • 신용정보의 이용 및 보호에 관한 법률
      • 개인 신용정보의 취급 단계별 보호조치 및 의무사항에 관한 규정.
    • 위치정보의 보호 및 이용 등에 관한 법률
      • 개인 위치정보 수집, 이용, 제공 파기 및 정보 주체의 권리 등 규정.
    • 개인정보의 안전성 확보조치 기준
      • 개인정보 처리자가 개인정보를 처리함에 있어서 분실, 도난, 유출, 변조, 훼손되지 않도록 안전성을 확보하기 위해 취해야 하는 세부적인 기준 규정.
      • 개인정보 처리시스템의 보호수준을 진단, 암호화에 상응하는 조치필요 여부를 판단할 수 있는 기준을 규정.
  • 개인정보보보 관련 법령 ( Tip. 개망신 )
    • 인정보 보호법 / 정보통신법 / 용정보법

1.5.2. 개인정보 보호법 검토

  • 24조 고유 식별정보의 처리 제한
    • 고유 식별정보(주민등록번호, 여권번호, 운전면허번호, 외국인등록번호)를 처리 하는 경우.
    • 해당 정보가 분실, 도난, 유출, 변조, 훼손되지 않도록 암호화 등 안전성 확보에 필요한 조치 필요.
  • 29조 안전조치 의무화
    • 개인정보가 분실, 도난, 유출, 변조 또는 훼손되지 않도록 내부관리 계획 수립.
    • 접속기록보관 등 안전성 확보에 필요한 기술적, 관리적, 물리적 조치 수행.
  • 30조 개인정보의 안전성 확보조치
    • 개인정보를 안전하게 저장, 전송할 수 있는 암호화 기술의 적용 또는 이에 상응하는 조치 수행.
  • 고유 식별정보의 종류 ( Tip. 주여운외 )
    • 민등록번호 / 권번호 / 전면허번호 / 국인 등록번호
  • 개인정보보호 법령 내 정보사고 ( Tip. 분도유변훼 )
    • 실 / 난 / 출 / 조 /

1.5.3. 정보통신망 이용 촉진 및 정보보호 등에 관한 법률 검토

  • 15조 개인정보의 보호조치
    • 비밀번호 및 바이오정보 일방향 암호화 저장.
    • 주민번호, 계좌번호, 금융정보 암호화 저장.
    • 개인정보 및 인증정보 송수신시 보안 강화된 서버 인프라 구축.
  • 28조 개인정보의 보호조치
    • 개인정보 취급시 개인정보의 분실, 도난, 누출, 변조, 훼손 방지를 위해 기술적, 관리적 조치 수행.
    • 개인정보를 안전하게 전송, 저장 할수 있는 암호화 기술 등을 이용한 보안 조치 필요.
  • 6조 개인정보의 암호화
    • 비밀번호, 바이오 정보는 일방향 암호화하여 저장.
    • 주민번호, 신용카드번호, 계좌번호에 대해 안전한 암호화 알고리즘 으로 암호화 하여 저장.
    • 서버는 SSL 인증서를 통해 암호화하여 송수신.

✱ 일방향 암호화 : 암호화는 수행하지만 절대로 복호화가 불가능한 알고리즘. ✱ 암호화 알고리즘 : 국내 및 미국, 일본, 유럽 등의 국외 암호 연구 관련 기관에서 권고하는 암호 알고리즘을 의미. ✱ SSL (Secure Socket Layer) : 응용계층과 TCP/IP 계층 사이에서 웹 데이터 암호화 및 전송시 기밀성을 보장하는 공개키 기반의 보안 프로토콜.

1.5.4. 개인정보 등급 식별

  • 개인정보 등급 분류
    • 1등급
      • 고유식별정보 : 개인에게 부여된 식별 정보 / 주민번호, 여권번호, 운전면허번호, 외국인등록번호.
      • 민감정보 : 유전자 검사정보, 범죄경력정보 등… 사상/신념, 노동조합, 정치적 견해 등… 병력, 신체/정신적 장애, 성적 취향 등.
      • 인증정보 : 비밀번호, 바이오정보(지문,홍채,정맥 등).
      • 신용정보 : 신용정보, 신용카드번호, 계좌번호.
    • 2등급
      • 개인 식별정보 : 이름, 주소, 전화번호, 핸드폰번호, 이메일주소, 생년월일, 성별 등.
      • 개인 관련 정보 : 학력, 직업, 키, 몸무게, 혼인 여부, 가족 상황, 취미 등.
      • 기타 개인 정보 : 해당 사업의 특성에 따라 별도 정의.
    • 3등급
      • 자동생성정보 : IP정보, MAC 주소, 사이트 방문 기록, 쿠키 등.
      • 가공정보 : 통계 정보, 가입자 성향 등.
      • 제한적 본인 식별 정보 : 회원번호, 사번, 내부용 개인 식별정보 등.


1.6. 자산에 대한 보안 항목 식별

1.6.1. 정보자산 주요 용어

  • 자산(Asset) : 조직에서 보유한 갖치 있는 모든것.
  • 사용자(User) : 정보처리 기기 및 시스템을 활용해 자산을 사용하는 사람과 기관.
  • 소유자(Owner) : 자산의 소유 권한 및 관리에 대한 최종 책임자 / 자산의 취득,사용,폐기 등 관리 권한 보유.
  • 관리자(Admin) : 자산의 소유자로부터 관리위임을 받은 자 / 자산의 보관 및 운영 책임.

1.6.2. 정보자산의 식별

  • 기업이 가진 중요자산을 보호하기 위해 자산의 식별과 평가를 수행.
  • 위험을 분석하기 위해 적절한 분류기준에 따라 중복, 누락을 최소화하여 자산목록을 작성.

1.6.3. 정보자산의 분류 기준

  • 소프트웨어 : 상용 또는 자체 개발된 소프트웨어 자산 / 애플리케이션, 개발도구, 유틸리티.
  • 하드웨어 : 대외서비스를 위해 사용되거나 개인이 사용하는 자산 / 서버, PC, 노트북, 스위치.
  • 데이터 : 전자적 형태로 저장되는 데이터 / 데이터베이스, 데이터 파일.
  • 문서 : 종이매체로된 정보자산, 업무목적문서∙기록물 / 결재문서, 계약서, 합의서.
  • 시설 : 시스템 설치, 운영 장소 등 물리적 공간 및 시설 / 사무실, 전산실, 통신실.
  • 지원설비 : 정보시스템 운영을 지원하기 위한 설비 / UPS, 항온항습기, 발전기.
  • 인력 : 시스템 운영 업무 수행 중인 인력 / 내부직원, 협력업체.

1.6.4. 자산 목록 작성

  • 자산 목록은 반드시 포함되어야 할 항목을 명시하고 주기적으로 갱신되어 최신 상태를 유지.


1.7. 기능에 대한 보안항목 식별

1.7.1. 입력데이터 검증 및 표현

  • DBMS 조회∙결과 검증
    • SQL문 생성시 사용되는 입력값에 대한 검증 방법 설계.
  • XML 조회∙결과 검증
    • 디렉터리 서비스 조회(LDAP)시 사용되는 입력 값에 대한 검증 방법 설계.
  • 웹 서비스 요청∙결과 검증
    • 사용자 인증이 필요한 결제 등 웹서비스 요청에 대한 유효성 검증 방법 설계.
    • 유효하지 않은 요청에 대한 처리 방법 설계.
  • 허용된 범위내 메모리 접근 검증
    • 허용된 범위의 메모리 버퍼에만 접근하여 버퍼 오버플로우가 발생하지 않도록 처리 방법 설계.
  • 보안 기능 입력값 검증
    • 보안기능(인증∙인가, 권한 부여 등) 동작을 위해 사용되는 입력값 검증 방법 설계.
    • 함수의 외부 입력값 및 수행결과에 대한 처리 방법 설계.
  • 업로드∙다운로드 파일 검증
    • 업로드∙다운로드 파일의 무결성 실행 권한 등에 관현 유효성 검증 방법 설계.

✱ LDAP(Lightweight Directory Access Protocol) : 사용자 정보를 유지를 위한 질의 및 디렉터리 서비스를 수정하기 위한 인터넷 프로토콜을 가리킨다.

1.7.2. 보안 기능

  • 인증 관리
    • 인증대상 및 방식 : 중요정보∙기능과 인증방식을 정의 / 인증 기능이 우회되지 않고 수행될 수 있도록 설계.
    • 인증수행 제한 : 인증 반복시도 제한 및 인증실패에 대한 인증제한 기능 설계.
    • 비밀번호 관리 : 안전한 비밀번호 규칙(복잡도 만족)을 설정 / 패스워드의 주기적 변경이 적용되도록 설계.
  • 권한 관리
    • 중요자원 접근통제 : 중요자원(설정값, 민감데이터등)을 정의 / 접근통제 실패 시 대응 방안 설계.
  • 암호화
    • 암호키 관리 : 암호키 생성 분배 접근 파기 등 안전하게 암호키 생명주기를 관리 할 수 있는 방법 설계.
    • 암호연산 : 충분한 암호 키 길이, 솔트, 난수 값을 기반으로 암호연산 수행 방법 설계.
  • 중요정보 처리
    • 중요정보 저장 : 중요정보 비밀번호 개인정보 등 저장 시 안전한 저장 및 관리 방법 설계.
    • 중요정보 전송 : 중요정보 비밀번호 개인정보 등 전송시 안전한 전송방법 설계.

✱ 솔트(Salt) : 일방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열. ✱ 난수 : 범위 내에서 무작위로 추출된 수.

1.7.3. 에러 처리 및 세션 통제

  • 에러 또는 오류 상황을 처리하지 않고나 불충분하게 처리되어 중요정보 유출 등 보안 약점 발생하지 않도록 설계.
  • HTTP를 이용하여 연결을 유지하는 경우 세션을 안전하게 할당하고 관리하여 세션정보 노출이나 세션 하이재킹과 같은 침해사고 발생하지 않도록 설계.

✱ 세션 하이재킹(Session Hijacking) : TCP신뢰성 기반의 연결을 이용한 공격 방법으로, 통신 내용을 엿보거나, 세션을 가로채어 정상적인 인증과정을 무시하고 불법으로 시스템에 접근할 수 있는 공격.


1.8. SW 개발 보안 적용 사례

  • SW 개발 보안 방법론 ( Tip. MS 7 CLA )
    • MS-SDL
      • 마이크로 소프트는 안전한 소프트웨어를 개발하기 위해 자체 수립한 SDL(Secure Development Lifecycle) 방법론을 적용.
      • 적용 이후 이전 버전보다 50% 이상 취약점 감소.
    • Seven Touchpoints
      • 소프트웨어 보안의 모범사례를 소프트웨어 개발 라이프사이클에 통합.
      • 객관적인 위험 분석 및 테스트를 거쳐 안전한 소프트웨어를 만드는 방법을 정의.
      • 수행되는 소프트웨어 위험 요소에 대해 추적하고 모니터링.
    • CLASP
      • Comprehensive, Lightweight Application Security Process 의 약자.
      • SDLC 초기 단계에 보안 강화를 목적으로 하는 정형화된 프로세스.
      • 이미 운영중인 시스템에 적용하기가 용이.
  • SW 개발 보안 절차도 (MS-SDL)
    1. 송신시스템 : 소프트웨어 개발 보안 교육.
    2. 계획/분석 : 소프트웨어의 질과 버그 경계 정의 / 보안과 프라이버시 위험 분석.
    3. 설계 : 공격 영역 분석 / 위협 모델링.
    4. 구현 : 도구명세 / 금지된함수 사용제한 / 정적 분석.
    5. 시험/검증 : 동적∙퍼징 테스팅 / 공격영역∙위협 모델 검증.
    6. 배포/운영 : 사고대응계획 / 최종 보안 검토 / 기록 보관.
    7. 대응 : 사고 대응 수행.






  • 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
  • 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
  • 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.