정보처리기사 필기/정보시스템 구축관리

5-3. 소프트웨어 개발 보안 구축

훈꽁 2021. 8. 9. 02:32
2020 기출 ' ' 
2021 기출 ' ' 
수제비 데일리 ' ' 

소프트웨어 개발 보안 설계

(1) SW 개발 보안

소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동을 말한다.

 

SW 개발 보안의 구성요소

3대 요소 설명
기밀성
(Confidentiality)
인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
무결성
(Integrity)
정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
가용성
(Availability)
권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성

 

SW 개발 보안 용어

 


(2) Secure SLDC

참조 : https://it-huny.tistory.com/entry/5-2-IT-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%A0%95%EB%B3%B4%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EA%B4%80%EB%A6%AC

 


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

입력 데이터 검증 및 표현 취약점

 

XSS(Cross Site Script) 공격 유형

 

SQL 삽입 공격 유형

 

CSRF(Cross-Site Request Forgery)

 


(4) 보안 기능

보안 기능은 소프트웨어 개발 단계에서 인증, 접근제어, 기밀성, 암호화, 권한 관리 등을 적절하기 구현하기 위한 보안 점검 항목들이다.

 

보안 기능 취약점

 


(5) 에러 처리

에러 처리는 프로그램 실행 시 발생하는 에러를 예외 처리하지 못하거나, 에러 정보에 중요한 정보(프로그램 정보, 상세한 에러 내역 등)가 포함될 때 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들이다.

 

에러 처리 취약점

 


(6) 세션 통제(Session Control)

다른 세션 간 데이터 공유 금지 등 세션을 안전하게 관리 할 수 있도록 설계한다.

 

세션 통제 취약점

 


소프트웨어 개발 보안 구현

(1) 암호 알고리즘(Encryption Algorithm)

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

 

암호 알고리즘 방식

알고리즘 방식 알고리즘 방식 종류 기법
양방향 방식 대칭 키 암호 방식 블록 암호 방식 DES, SEED, AEX, ARIA, IDEA
스트림 암호 방식 RC4, LFSR
비대칭 키 암호 방식
(=공개키 암호 방식)
RSA, ECC, ELGamal, 디피-헬만(Diffie-Hellman)
단방향 암호 방식
(해시 암호 방식)
MAC HMAC, NMAC
MDC ND5, SHA

 

암호 알고리즘 기법 상세

방식 기법 설명
대칭 키 DES 블록 암호화 알고리즘, 블록 크기는 64bit, 키 길이는 56bit인 페이스텔(Feistel) 구조
RC4 로널드 라이베스트가 만든 스트림 암호
비대칭 키
(=공개키)
RSA 양방향, 비대칭 키(공개키)
1977년 3명의 MIT 수학교수 (Rivest, Shamir, Adleman)가 고안
소인수 분해 문제를 이용한 공개키 암호화 기법
ECC 양방향, 비대칭 키(공개키)
타원 곡선 암호(ECC)는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘

 

암호 시스템

구분 설명
PKI
(Public Key System)
공개키 암호 방식을 바탕으로 한 디지털 인증서를 활용하는 구조
PEM 암호화, 인증, 무결성 등의 이메일을 위한 보안 시스템

 


(2) 코드 오류

코드 오류는 소프트웨어 구현 단계에서 프로그램 변환 시 오류, 서버의 리소스 자원(메모리 등)의 부적절한 반환(버퍼 오버플로우) 등 개발자가 흔하게 실수하는 프로그램 오류를 예방하기 위한 보안 점검 항목들이다.

 

코드 오류 취약점

 

  • 널(null) 포인터 역참조
  • 정수를 문자로 변환
  • 부적절한 자원 해제
  • 초기화되지 않은 변수 사용

 

코드 오류 종류

종류 설명 예시
생략 오류
(Omission Error)
입력 시 한자리를 빼놓고 기록한 경우 1234 → 123
필사 오류
(Transcription Error)
입력 시 임의의 한 자리를 잘못 기록한 경우 1234 → 1235
전위 오류
(Transposition Error)
입력 시 좌우 자리를 바꾸어 기록한 경우 1234 → 1243
이중 오류
(Double Transposition Error)
전위 오류가 2가지 이상 발생한 경우 1234 → 2143
추가 오류
(Addition Error)
입력 시 한 자리 추가로 기록한 경우 1234 → 12345
임의 오류
(Random Error)
위의 오류가 2가지 이상 결합하여 발생한 경우 1234 → 12367

 

 


(3) 캡슐화

캡슐화는 외부에 은닉이 필요한 중요한 데이터와 필요한 기능성을 불충분하게 캡슐화했을 때 인가되지 않은 사용자에게 데이터 유출, 권한 문제 등이 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들이다.

 

캡슐화 취약점

 


(4) API 오용

API 오용은 서비스에서 제공되는 이용에 반하는 방법으로 API를 이용하거나 보안에 취약한 API를 오용하여 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들이다.

 

API 오용 취약점