정보처리기사

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

ppdha82 2025. 1. 9. 19:24
  1. Secure SDLC
    1. Secure SDLC
      1. Secure SDLC 
        1. Secure SDLC: 보안상 안전한 소프트웨어를 개발하기 위해 SDLC (소프트웨어 개발 생명주기, Software Development Life Cycle)에 보안 강화를 위한 프로세스를 포함한 것을 의미함
        2. Secure SDLC의 대표적인 방법론: CLASP, SDL, Seven Touchpoints
      2. SDLC 단계별 보안 활동: 요구사항 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 유지보수 단계
      3. 소프트웨어 개발 보안 요소: 기밀성 (Confidentiality), 무결성 (Integrity), 가용성 (Availability), 인증 (Authentication), 부인 방지 (NonRepudiation)
      4. 시큐어 코딩 (Secure Coding): 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위한 코딩 방법
    2. 입력 데이터 검증 및 표현
      1. 입력 데이터 검증 및 표현의 보안 약점: SQL 삽입 (Injection), 경로 조작 및 자원 삽입, 크로스사이트 스크립팅 (XSS), 운영체제 명령어 삽입, 위험한 형식 파일 업로드, 신뢰되지 않는 URL 주소로 자동접속 연결, 메모리 버퍼 오버플로
    3. 보안 기능
      1. 보안 기능의 보안 약점: 적절한 인증없이 중요기능 허용, 부적절한 인가, 중요한 자원에 대한 잘못된 구너한 설정, 취약한 암호화 알고리즘 사용, 중요정보 평문 저장 및 전송, 하드코드된 암호화 키
    4. 코드 오류
      1. 코드 오류
        1. 코드 오류의 보안 약점: 널 포인터 (Null Pointer) 역참조, 부적절한 자원 해제, 해제된 자원 사용, 초기화되지 않은 변수 사용
      2. 스택 가드 (Stack Guard): 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나
    5. 캡슐화 (Encapsulation)
      1. 캡슐화
        1. 캡슐화의 보안 약점: 잘못된 세션에 의한 정보 노출, 제거되지 않고 남은 디버그 코드, 시스템 데이터정보 노출, Public 메소드로부터 반환된 Private 배열, Private 배열에 Public 데이터 할당
      2. 접근 제어자
        1. 접근 제어자의 종류: Public, Protected, Default, Private
  2. 암호 알고리즘
    1. 암호 알고리즘
      1. 암호 알고리즘: 패스워드, 주민번호, 은행계좌와 같은 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법을 의미
      2. 해시 (Hash)를 사용하는 단방향 암호방식과 개인키 및 공개키로 분류되는 양방향 암호화 방식이 있음
    2. 개인키 암호화 (Private Key Encryption) 기법
      1. 개인키 암호화 기법: 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법
      2. 개인키 암호화 기법의 종류: 스트림 암호화 방식, 블록 암호화 방식
    3. 공개키 암호화 (Public Key Encryption) 기법: 데이터를 암호화할 때 사용하는 공개키 (Public Key)는 사용자에게 공개하고, 복호화할 때의 비밀키 (Secret Key)는 관리자가 비밀리에 관리하는 암호화 기법
    4. 양방향 알고리즘의 종류: SEED, ARIA, DES, AES, RSA, IDEA, Skipjack, TKIP
    5. 해시 (Hash)
      1. 해시: 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미
      2. 해시 함수의 종류: SHA 시리즈, MD5, N-NASH, SNEFRU
  3. 서비스 공격 유형
    1. 서비스 공격 유형
      1. 서비스 거부 (DoS: Denial of Service) 공격: 표적이 되는 서버의 자원을 고갈시킬 모거적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이 되는 서버의 정상적인 기능을 방해하는 것
      2. Ping of Death (죽음의 핑): Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격 방법
      3. SMURFING (스머핑): IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
      4. SYN Flooding: 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법
      5. TearDrop: 이 Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
      6. LAND Attack (Local Area Network Denial Attack): 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송하는 것
      7. DDoS (Distributed Denial of Service, 분산 서비스 거부) 공격: 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 서비스 거부 공격을 수행하는 것
      8. 네트워크 침해 공격 관련 요어: 세션 하이재킹 (Session Hijacking), ARP 스푸핑 (ARP Spoofing), 스미싱 (Smishing), 사회 공학 (Social Engineering), 다크 데이터 (Dark Data), 타이포스쿼팅 (Typosquatting), 스피어 피싱 (Spear Phishing)
      9. 정보 보안 침해 공격 관련 용어: 워터링홀 (Watering Hole), 좀비 (Zombie) PC, C&C 서버, 봇넷 (Botnet), 웜 (Worm), 제로 데이 공격 (Zero Day Attack)
    2. 서버 인증
      1. 보안 서버: 인터넷을 통해 개인정보 (로그인 시 사용하는 사용자ID와 패스워드, 회원가입 시 등록한 이름, 전화번호, 인터넷 뱅킹 이용 시 등록한 계좌번호, 계좌 비밀번호 등)를 암호화하여 송수신할 수 있는 기능을 갖춘 서버
      2. 인증 (Authentication)의 개념: 다중 사용자 컴퓨터 시스템이나 네트워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
      3. 지식 기반 인증 (Something You Know): 사용자가 기억하고 있는 정보를 기반으로 인증을 수행하는 것
      4. 소유 기반 인증 (Something You Have): 사용자가 소유하고 있는 것을 기반으로 인증을 수행하는 것
      5. 생체 기반 인증 (Something You Are): 사용자의 고유한 생체 정보를 기반으로 인증을 수행하는 것
      6. 기타 인증 방법: 행위 기반 인증 (Something You Do), 위치 기반 인증 (Something You Are)
    3. 보안 솔루션
      1. 보안 솔루션: 접근 통제, 침입 차단 및 탐지 등을 수행하여 외부로부터의 불법적인 침입을 막는 기술 및 시스템
      2. 주요 보안 솔루션: 방화벽 (Firewall), 침입 탕지 시스템 (IDS), 침입 방지 시스템 (IPS), 데이터 유출 방지 (DLP), 웹 방화벽 (Web Firewall), VPN, NAC, SIEM