(정보처리기사 실기) 소프트웨어 개발 보안 구축
소프트웨어 개발 보안 설계
소프트웨어 개발 보안 : 보안 취약점을 제거하고 보안을 고려하여 기능 설계 및 구현
소프트웨어 보안의 구성요소
-기밀성 : 인가되지 개인이나 시스템에게 정보 공개 및 노출 차단
-가용성 : 권한을 가진 사용자나 애플리케이션이 서비스를 지속 사용할 수 있도록 보장
-무결성 : 정당한 방법이 아니면 데이터가 변경되지 않고 고의/악의로 데이터가 훼손되지 않음
소프트웨어 개발 보안 용어
- 자산 : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
-위협 : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
-취약점 : 위협이 발생하기 위한 사전 조건에 따른 상황
-위험 : 위협이 취약점을 이용하여 자산 손실 피해를 가져올 가능성
소프트웨어 개발 보안을 위한 공격 기법의 이해
DoS 공격
-시스템을 악의적으로 공격해 시스템의 자원을 부족하게 하여 사용하지 못하게 하는 것
-수많은 접속 시도를 만들어 자원을 부족하게 하여 사용하지 못하게 하는 것
DoS 공격 종류
-지역 시스템 공격
-원격 네트워크 공격
DDos공격 : 여러대의 공격자를 분산 배치하여 동시에 동작하게 하여 공격
DDos공격 구성요소
-Handler : 마스터 시스템 역할
-Agent : 공격 대상에게 직접 공격
-Master : 공격자에게 명령을 받는 시스템
-Attacker : 공격을 주도하는 해커의 컴퓨터
-Daemon 프로그램 : 에이전트 시스템의 역할 수행
DDos공격 대응 방안
-차단 정책 업데이트
-좀비 PC IP 확보
-보안 솔루션 운영
-홈페이지 보안 관리
-시스템 패치
자원 고갈 공격 : 공격이 임계치에 도달하면 사용자들은 네트워크에 접속 할 수 없다.
-SYN 플러딩 : SYN 패킷만 보내 점유하여 다른 사용자가 서버 사용 불가능하게 함
-UDP 플러딩 : 대량의 UDP 패킷을 만들어 자원 고갈 시킴
-스머프 : 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 브로드캐스트 하여 마비
-PoD : 큰 사이즈의 패킷을 의도적으로 발생시켜 서비스 마비
애플리케이션 공격
-HTTP GET 플러딩 : Http 캐시 옵션을 조작하여 캐싱 서비스가 아닌 웹 서버가 직접 처리하도록 하여 웹서버 자원 소진
-Slowloris : 헤더의 최종 끝을 알리는 개행문자열(\r\n\r\n)을 전송하지 않아서 웹서버와 연결 상태를 장시간 지속 시켜서 자원 소진
-RUDY : 요청 헤더의 Content-length를 비정상적으로 크게 설정하고 메시지 바디 부분을 매우 소량으로 보내 계속 연결 시키는 공격
네트워크 서비스 공격
-네트워크 스캐너 : 네트워크의 취약점을 파악하기 위해 공격하는 도구
-패스워드 크래킹 : 사전 크래킹, 무차별 크래킹을 이용하여 패스워드 탐색
-IP 스푸핑 : 서버에 대한 인증되지 않은 액세스 권한 입수
-트로이 목마 : 겉보기에는 정상 프로그램이지만 실행하면 악성 코드 실행
취약점 공격
-랜드 어택 : 출발지 IP 와 목적지 IP 를 같은 패킷 주소로 만들어 보냄으로서 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 기법
-봉크 / 보잉크 : 시스템의 패킷 재전송과 재조립의 과부하를 유발하는 공격
-티어 드롭 : IP패킷의 재조합 과정에서 Fragment Offset 정보로 인해 수신 시스템이 문제를 일으키게 하는 Dos공격
암호 알고리즘 방식
대칭키 방식 : 암호화와 복호화에 같은 암호키 사용
-블록 암호 방식 : 고정 길이의 블록을 암호화 - DES, AES, SEED
-스트림 암호 방식 : 난수열을 발생시켜 암호문 생성 - RC4
비대칭키 방식 : 암호키와 복호키가 서로 다름, 공개키를 사용해 암호화하고 개인키를 통해 복호화 - 디피헬만, RSA
해시 방식 : 단방향 알고리즘, 해시 함수를 사용해 원본 데이터 유추가 힘들다. -SHA, MD5
DES : 64bit의 평문 블록을 암호 블록으로 만드는 미국 표준 암호화 알고리즘
AES : DES를 대체한 알고리즘, 대칭키 알고리즘
SEED :ETRI에서 개발한 128bit 대칭키 암호화 알고리즘
디피헬만: 두 사람이 암호화 되지 않은 통신망을 통해 공통의 비밀키를 공유 하는 방식
RSA : 소인수 분해를 사용한 방식, 가장 널리 쓰인다
SHA : NASA가 설계한 미국 표준 해시 암호화 알고리즘
MD5 : MD4를 대체하기 위한 128bit 암호화 알고리즘
정보에 대한 보안 항목 식별
법규
-개인 정보 보호법
-정보통신망 법
-신용 정보법
개인 정보 보호법 주요 내용
-고유 식별 정보의 처리 제한 : 고유식별 번호(주민등록번호, 여권번호, 운전면허증번호, 외국인 등록번호)
-안전조치 의무화 : 개인정보가 분실, 도난, 유출, 변조, 훼손되지 않게 관리
-개인 정보의 안전성 확보 조치
정보통신망법 주요 내용
-개인정보의 보호조치 : 바이오 정보의 일방향 암호화, 개인정보 취급시 분실, 변조, 훼손 방지를 위해 기술적, 관리적 조치
-개인정보의 암호화 : 주민번호, 신용카드 번호, 계좌 번호에 대해 암호화 알고리즘사용, 서버는 SSL 인증서를 통해 송수신
SSL : 웹 데이터 암호화 및 전송시 기밀성을 보장하는 공개키 기반 보안 프로토콜
정보자산 주요 용어 : 자산, 사용자, 소유자, 관리자
정보자산 분류 기준
-소프트웨어
-하드웨어
-데이터
-문서
-시설
-지원설비
-인력
솔트 : 일방향 해시 함수에서 다이제스트를 생성할때 추가되는 바이트 단위의 임의의 문자열
세션 하이재킹 : 세션을 가로채어 정상적인 인증과정을 무시하고 불법적으로 시스템에 접근
소프트웨어 개발 보안 적용 사례
-MS-SDL
Seven Touchpoints
CLASP
무차별 공격 : 특정 패스워드를 풀기 위해 임의 문자 조합을 하나씩 대입
난수 발생 시드 : 컴퓨터가 정해진 알고리즘에 의해 마치 난수 처럼 보이는 수열을 생성
스니핑 : 직접 공격하지 않고 데이터만 몰래 들여다 보는 기법
경쟁 조건 : 메모리가 공유되는 하나의 객체에 두개 이상의 스레드가 동시에 값을 변경하려고 할때 발생하는 성능 저하
에러처리 보안 약점의 유형
-오류 메시지 정보 노출
-오류 메시지 대응 부재
-부적절한 예외 처리
코드 오류 보안 약점
- 널 포인터 역참조
-부적절한 자원 해제
-해제된 자원 사용
-초기화 되지 않은 변수 사용
캡슐화 보안 약점 유형
-잘못된 세션에 의한 정보 노출 -> 싱글톤 패턴 사용시 변수 적용 범위 주위
-제거 되지 않은 디버그 코드
-시스템 정보 노출
싱글톤 패턴 : 전역 변수를 사용하지 않고 객체를 생성하여 어디서든지 객체를 참조 할 수 있게 하는 패턴
API 오용
-DNS에 의존한 보안 결정
-취약한 API 사용