본문 바로가기
IT 자격증/정보처리기사

정보처리기사 필기 5주차 Day-3 정리

by 펭귄스토리 2021. 8. 3.

Chapter 03. 소프트웨어 개발 보안 구축

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

(1) SW 개발 보안

SW 개발 보안의 3대 요소 = 기무가

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

 

SW 개발 보안 용어

자산(Assets)

위협(Threat)

취약점(Vulnerability)

위험(Risk)

 

(2) Secure SDLC

Secure SDLC(Software Development Life Cycle) 개념

개발 단계에서 발생하는 설계, 구현상의 보안 약점 극복을 위한 보안 개발 방법론이다. 

 

Secure SDLC 프로세스

계획 > 분석 > 설계 > 구현 > 테스트

 

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

입력 데이터 검증 및 표현 개념

입력 데이터 검증 및 표현은 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들이다. 

 

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

취약점 설명
XSS
(Cross Site Script)
검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
사이트간 요청 위조
(CSRF : Cross Site Request Forgery)
사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
SQL 삽입
(Injection)
응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법

 

XSS(Cross Site Script) 공격 유형

공격 유형 설명
Stored XSS 방문자들이 악성 스크립트가 포함된 페이지를 읽음과 동시에 악성 스크립트가 브라우저에서 실행되면서 감염되는 기법
Reflected XSS 공격용 악성 URL을 생성한 후 이메일로 전송 후 사용자가 URL 클릭시 즉시 공격 스크립트가 피해자로 반사되어 접속 사이트에 민감정보를 공격자에게 전송하는 기법
DOM(Document Object Model) XSS 공격자는  DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일을 통해 발송하고 피해자가 URL 클릭 시 공격 피해를 당하는 기법 

 

SQL 삽입(SQL Injection) 공격 유형

From SQL Injection

Union SQL Injection

Stored Procedure SQL Injection

Mass SQL Injection

Error-Based SQL Injection

Blind SQL Injection

 

CSRF(Cross-Site Request Forgery) 공격 방식

순서 공격 절차
1 CSRF 스크립트가 포함된 게시물 등록
2 CSRF 스크립트가 포함된 게시물 열람
3 CSRF 스크립트가 포함된 게시물 응답
4 CSRF 스크립트 실행(사용자 권환)

 

(4) 보안 기능

보안 기능 취약점

적절한 인증 없이 중요 기능 허용

부적절한 인가

취약점 암호화 알고리즘 사용

중요 정보 평문 저장 및 전송

하드 코드된 비밀 번호

 

(5) 에러 처리

에러 처리 취약점

취약한 패스워드 요구 조건

오류 메시지 통한 정보 노출

오류 상황 대응 부재

적절하지 않은 예외 처리

 

(6) 세션 통제

세션 통제(Session Control) 개념

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

 

2. 소프트웨어 개발 보안 구현

(1) 암호 알고리즘

① 양방향 방식

구분 대칭 키 암호 방식 비대칭 키 암호 방식
대칭 키(비밀 키) 비대칭 키(공개 키, 사설 키)
키의 관계 암호화 키=복호화 키 암호화 키 !=복호화 키
암호 알고리즘 공개 공개
장점 계산 속도가 빠름 암호화 키 사전 공유 불필요
관리해야 할 키 개수가 적음
단점 키 분배 및 관리의 어려움
기밀성만 보장
계산 속도 느림
알고리즘 블록 암호 방식(DES, AES, SEED)
스트림 암호 방식(RC4)
디피-헬만(Diffie-Helllman), RSA, ECC, Elgamal

 

② 일방향 암호 방식(해시 암호 방식)

종류 설명
MAC 키를 사용하는 메시지 인증 코드(Message Authentication Code)로 메시지의 무결성과 송신자의 인증 보장
HMAC, NMAC
MDC 키를 사용하지 않는 변경 감지 코드(Modification Detection Code)로 메시지의 무결성 보장
MD5, SHA

 

암호 알고리즘 상세

① 대칭 키 알호화 알고리즘

종류  설명
DES
(Data Encryption Standard)
블록 크기는 64bit, 키 길이는 56bit인 페이스텔 구조
SEED 128비트 비밀키로부터 생성된 16개의 64비트 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128비트의 평문 블록을 128비투 암호문 블록으로 암호화하여 출력하는 방식
블록 크기는 128bit, 키 길이에 따라 128bit, 256bit로 분류
AES
(Advanced Encryption Standard)
DES의 개인 키에 전사적 공격이 가능
블록 크기는 128bit, 키 길이에 따라 128bit, 192bit, 256bit로 분류
ARIA
(Academy Research Institute Agency)
경량 환경 및 하드웨어에서의 호율성 향상을 위해 개발되었으며, ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순한 바이트 단위 연산으로 구성
블록 크기는 128bit, 키 길이에 따라 128bit, 192bit, 256bit로 분류
IDEA
(International Data Encryption Algorithm)
DES를 대체하기 위해 스위스 연방기술 기관에서 개발
128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦
LFSR
(Linear Feedback Shift Register)
시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘

 

② 비대칭 키 암호화 알고리즘

종류  설명
디피-헬만
(Diffie-Helllman)
공개키 암호 방식의 개념을 이용하여 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법을 제시하였으며, 많은 키 분배 방식에 관한 연구의 기본이 됨(최초의 비밀키 교환 프로토콜)
RSA
(Rivest-Shamir-Adleman)
MIT 수학교수 3명이 만든 공개키 암호화 알고리즘
비밀키의 복호화가 어려운 RSA 안전성은 소인수 분해 문제의 어려움에 근거를 두고 있음
ECC
(Elliptic Curve Cryptography)
타원 기반 구조체의 안정성과 효율성을 기반으로 생성되었고 RSA보다 키의 비트 수를 적게 하면서 동일한 성능을 제공하는 것이 가장 큰 특징
ElGamal 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며, RSA와 유사하게 전자서명과 데이터 암복호화에 함께 사용 가능

 

③ 해시 암호화 알고리즘

종류 설명
MD5
(Message-Digest algorithm 5)
각각의 512비트짜리 입력 메시지 블록에 대해 차례로 동작하여 128비트의 해시값을 생성하는 해시 알고리즘
SHA-1
(Secure Hash Algorithm)
160비트의 해시값을 생성하는 해시 알고리즘
SHA-256/384/512 256비트의 해시값을 생성하는 해시함수
AES의 키 길이만 128, 192, 256비트에 대응하도록 출력 길이를 늘린 해시 알고리즘
HAS-160 MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘

 

(2) 코드 오류

코드 오류 취약점

널 포인터 역참조

정수를 문자로 변환

부적절한 자원 해제

초기화되지 않은 변수 사용

 

(3) 캡슐화

캡슐화 취약점

잘못된 세션에 의한 데이터 정보 노출

제거되지 않고 남은 디버그 코드

민감한 데이터를 가진 내부 클래스 사용

시스템 데이터 정보 노출

 

(4) API 오용

API 오용 취약점

DNS Lookup에 의존한 보안 결정

위험하다고 알려진 함수 사용

널(Null) 매개변수 미검사

 

https://book.naver.com/bookdb/book_detail.nhn?bid=15910265

 

수제비 정보처리기사 필기

NCS 모듈제작에 참여한 경험을 기반으로, 다양한 모듈에서 시험 출제 빈도를 분석하여 출제 비중이 높은 내용 위주로 구성했다. 출제 비중이 낮고 이해하기 어려운 개념들은 과감하게 제외함으

book.naver.com