본문 바로가기
정보처리기사

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

by 아마도개발자 2024. 4. 6.

소프트웨어 개발 보안 설계

(1) SW 개발 보안의 개념

  • 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동
  • 요구사항 명세, 설계, 구현, 테스트, 유지보수,

(2) SW 개발 보안의 구성요소

  • SW 개발 보안의 3대 요소
    • 기밀성: 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
    • 무결성: 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성을 보장
    • 가용성: 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
  • SW 개발 보안 용어
    • 자산, 위협, 취약점, 위험

(3) SW 개발 보안을 위한 공격기법의 이해

  • DoS 공격
    • 개념
      • 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 용도로 사용하지 못하게 함
    • 종류
공격기법 설명
SYN 플러딩 - TCP 프로토콜의 구조적인 문제를 이용한 공격
- 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 달느 사용자가 서버를 사용 불가능하게 하는 공격
UDP 플러딩 - 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지를 생성하게 하여 지속해서 자원을 고갈시키는 공격
스머프 / 스머핑 - 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격
죽음의 핑 - ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송하여 다수의 IP 단편화를 발생시켜 수신 측에 부하를 발생시킴
랜드 어택 - 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보내어 수시낮가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해
티어 드롭 - IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 DoS 공격
봉크 - 똑같은 번호로 전송돼서 오류를 일으킴
  • DDoS 공격
    • 개념
      • DoS의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격
  • 세션 하이재킹
    • 개념
      • TCP의 세션 관리 취약점을 이용한 공격기법
  • 애플리케이션 공격
    • 종류
      • HTTP GET 플러딩, Slowloris, RUDY Attack, Slow Read Attack, Hulk DoS
  • 네트워크 공격
공격기법 설명
스니핑 - 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법
네트워크 스캐너, 스니퍼 - 네트워크 하드웨어 및 소프트웨어 구성의 ㅟ약점을 파악하기 위해 공격자가 취약점을 탐색하는 공격 도구
패스워드 크래킹 - 사전 크래킹, 무차별 크래킹, 패스워드 하이브리드 공격, 레인보우 테이블 공격
IP 스푸핑 - 침입지가 인증된 컴퓨팅 시스템인 것처럼 속여 타겟 시스템의 정보를 빼니기 위해 본인의 패킷 헤더를 인증된 호스트의 IP어드레스로 위조하여 타깃에 전송하는 공격기법
ARP 스푸핑 - 공격자가 특정 호스트의 MAC주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 기법
ICMP Redirect - 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격 기법
트로이 목마 악성 루틴이 숨어 있는 프로그램으로 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그
  • 시스템 보안 위협
    • 버퍼 오버플로우: 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 이로 인해 프로세스의 흐름을 변경시켜 악성 코드를 실행
    • 백도어: 어떤 제품이나 컴퓨터 시스템, 암호시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 기법
    • 주요 시스템 보안 공격 기법: 포맷 스트링, 레이스 컨디션 공격, 키로거 공격, 루트킷
  • 보안 관련 용어
용어 설명
스피어 피싱 - 사회 공학의 한 기법, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속 발송하여 클릭을 유도한 뒤, 개인정보를 탈취
스미싱 - 스미싱은 SMS와 피싱의 합성어
- 신뢰할 수 있는 사람 또는 기업이 보낸 것처럼 가장하여 개인정보를 요구 혹은 휴대폰 소액 결제를 유도하는 피싱 공격
큐싱 - 큐알코드와 피싱의 합성어
봇넷 - 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태 
APT 공격 - 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격 기법
- 특목적의 조직이 하나의 표적에 대해 다양한 IT 기술을 이용하여 지속적으로 정부를 수집하고, 취약점을 분석하여 피해를 주는 공격 기법
공급망 공격 - 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 , 배포 파일 감염 등을 사용하는 기법
제로데이 공격 - 보안 취약점이 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격 기법
- 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램
악성 봇 - 스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드
랜섬웨어 - 악성 코드의 한 종류로 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고, 피해자에게 돈을 요구하는 악성 소프트웨어
이블 트윈 공격 - 무선 Wifi 피싱 기법으로 공격자는 합법적인 wIFI 제공자처럼 행세하며 노트북이나 휴대 전화로 핫스팟에 연결한 사용자들의 정보를 탈취
사회공학 - 사람의 심리와 행동 양식을 교모하게 이용하여 원하는 정보를 얻는 공격기법
트러스트존 - 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 보안 기술
타이포스쿼팅 - 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 유사한 도메인을 미리 등록하는 것

(4) 서버 인증 및 접근 통제

  • 서버 인증의 개념
    • 서버 인증안 다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 절차
  • 서버 인증의 기능
    • 스니핑 방지, 피싱 방지, 데이터 변조 방지, 기업 신뢰도 향상
  • 서버 접근 통제
    • 유형
      • DAC: 주체나 그룹의 신분에 근거하여 객체 대한 접근을 제한(신분 기반 접근통제 정책)
      • MAC: 객체에 포함된 정보의 허용등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한(규칙 기반 접근통제 정책)
      • RBAC: 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한
  • 3A
    • 인증(Authentication): 접근을 시도하는 가입자 또는 단말에 대한 식별 및 신분 검증
    • 권한 부여(Authorization): 검증된 가입자나 단말에게 어떤 수준의 권한과 서비스를 허용
    • 계정 관리(Accounting): 리소스 사용에 대한 정보를 수집하고 관리하는 서비스
  • 인증 관련 기술
    • SSO: 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증 기술
    • 커버로스: 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜

(5) SW 개발 보안을 위한 알고리즘

  • 암호 알고리즘 방식
    • 양방향 방식
      • 대칭 키 암호 방식
        • 암호화와 복호화에 같은 암호 키를 사용
        • 비밀키 전달을 위한 키 교환이 필요하고, 암호화 및 복호화의 속도가 빠르다
        • 블록 암호 방식: 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법 (DES, AES, SEED)
        • 스트림 암호 방식: RC4
      • 비대칭 키 암호 방식(공개키 암호 방식)
        • 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식
        • 공개 키와 개인 키가 존재하며, 공개 키는 누구나 알 수 있지만, 그에 해당하는 개인 키는 키의 소유자만이 알 수 있어야 함
    • 단방향 방식(해시 암호 방식)
      • 복호화가 불가능
      • MAC: 키를 사용하는 메시지 인증 코드로 메시지의 정당성을 검증하기 위해 메시지와 함께 전송되는 값
      • MDC: 키를 사용하지 않는 변경 감지 코드
  • 암호 알고리즘 상세
    • 대칭 키 암호화 알고리즘
종류 설명
DES - 블록 크기는 64Bit, 16라운드 암호화 알고리즘
SEED - 한국인터넷진흥원이 개발한 블록 암호화 알고리즘
- 128bit 비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 128bit 암호문 블록으로 암호화하여 출력하는 방식
- 블록 크기는 128bit
AES - DES의 성능문제를 극복하기 위해 개발
- 블록 크기는 128bit
ARIA - 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘
- 블록 크기는 128bit
IDEA - DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘
- 128bit의 키를 사용하여 64bit의 평문을 8라운드에 걸쳐 64bit의 암호문을 만ㄷ
LFSR - 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
Skipjack - 미 국가안보에서 개발한 Clipper 칩에 내장된 블록 알고리즘 
  • 비대칭 키 암호화 알고리즘
종류 설명
디피-헬만 - 최초의 공개키 알고리즘
RSA - mit 수학교수들이 고안한 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘을 이용하는 공개키 암호화 알고리즘
ECC - 코블리치와 밀러가 RSA 암호 방식에 대한 대안으로 처음 제안
- PKI 기반의 RSA의 문제점인 속도와 안전성을 해결하기 위해 타원 기반 구조체의 안정성과 효율성을 기반으로 생성
ElGamal - T.ElGamal이 제안한 공개키 알고리즘
  • 해시 암호화 알고리즘
종류 설명
MD5 - MD4를 개선한 암호화 알고리즘
- 각각의 512비트짜리 입력 메시지 블록에 대해 차례로 동작하여 128비트의 해시값을 생성하는 해시 알고리즘
SHA-1 - NSA에서 미 정부 표준으로 지정
- 160비트의 해시값을 생성하는 해시 알고리즘
SHA-256/384/512 - SHA알고리즘의 한 종류로서 256비트의 해시값을 생성하는 해시함수
- AES의 키 길이인 128, 192, 256비트에 대응하도록 출력 길이를 늘

(6) 안전한 전송을 위한 데이터 암호화 전송

  • IPSec
    • 개념
      • IP계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜
    • 기능
      • 기밀성, 비 연결형 무결성, 인증, 재전송 공격 방지, 접근 제어
    • 프로토콜
      • 인증(AH) 프로토콜, 암호화(ESP) 프로토콜, 키 관리 프로토콜
  • SSL/TLS
    • 개념
      • SSL/TLS는 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
    • 특징
      • Netscape 사가 개발, 다양한 암호 통신 방법 활용, 특정 암호기술에 의존하지 않음
    • 보안 기능
      • 기밀성, 상호인증, 메시지 무결성
  • S-HTTP
    • 웹 상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송하는 기술

 

SW 개발 보안 구현

(7) 시큐어 코딩 가이드

  • 개념
    • 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거, 외부 공격으로부터 안전한 소프트웨어를 개발 하는 기법
  • 종류
    • 입력데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용

(8) 입력 데이터 검증 및 표현

  • 입력 데이터 검증 및 표현 취약점
    !!!테이블!!!

(9) 보안 솔루션

  • 네트워크 보안 솔루션

솔루션 설명
방화벽(Firewall) - 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템
웹 방화벽(WAF) - 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비
네트워크 접근 제어(NAC) - 단말기가 내부 네트워크에 접속을 시도할 때 이를 제ㅓㅇ하고 통제하는 기능을 제공하는 솔루션
침입 방지 시스템(IDS) - 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근과 보안정책 위반 행위를 실시간으로 탐지하는 시스템
침입 방지 시스템(IPS) - 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고, 유해트래픽에 대한 조치를 능동적으로 처리하는 시스템
무선 침입 방지 시스템(WIPS) - 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템
통합 보안 시스템(UTM) - 방화벽, 침입 탐지 시스템 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
가상사설망(VPN) - 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가진 보안 솔루션
SIEM - 다양한 장비와 서버로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 사고에 대응하는 보안 관제 솔루션

(10) 소프트웨어 개발 보안 테스트의 유형

구분 설명 특징
정적분석 SW를 실행하지 않고 보안 약점을 분석 취약점 초기 발견으로 수정비용 절감
동적분석 SW 실행환경에서 보안 약점 분석 소스 코드 필요 없음

(11) 비즈니스 연속성 계획 관련 주요 용어

주요 용어 설명
BIA(Business Impact Analysys) 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향 분석
RTO(Recovery Time Objective) - 업무중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간
- 재해 시 복구 목표 시간의 선정
RPO(Recovery Point Objective) - 업무중단 시점부터 데이터가 복구되어 다시 정상가동될 때 데이터의 손실 허용 시점
- 재해 시 복구 목표 지점의 선정
DRP(Disaster REcovery Plan) 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획
DRS(Disaster Recovery System) 재해복구계획의 원활한 수행을 지원하기 위해 평상시에 확보해 두는 인적, 물적 자원 및 이들에 대한 관리를 통합한 재해복구센

 

(12) 보안 공격 대응 관련 용어

주요 용어 설명
허니팟 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템으로 일부러 허술하게 만들어 해커에게 노출하는 유인시스템
OWASP Top 10 웹 애플리케이션 취약점 중 공격 빈도가 높으며, 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응 방안을 제공하는 웹 보안 기술 가이드
핑거프린팅 멀티미디어 콘텐츠에 저작권 정보와 구매한 사용자 정보를 삽입하여 콘텐츠 불법 배포자에 대한 위치 추적이 가능한 기술
워터마킹 디지털 콘텐츠에 저작권자 정보를 삽입하여, 불법 복제 시 워터마크를 추출, 원소유자를 증명하는 콘텐츠 보호 기술
이상금융거래탐지시스템 전자금융거래에 사용되는 단말기 정보, 접속 정보, 거래 정보 등을 종합적으로 분석하여 의심 거래를 탐지하고, 이상 거래를 차단하는 시스템
CC 정보기술의 보안 기능과 보증에 대한 평가 기준
사이버 위협정보 분석 공유시스템 사이버 위협정보를 체계적 수립해서 kisa주관으로 관계 기관과 자동화된 정보공유를 할 수 있는 침해 예방 대응 시스템
장착형 인증 모듈 리눅스 시스템 내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리
TKIP 임시 키 무결성 프로토콜