Ⅸ. 소프트웨어 개발 보안 구축 - 알고가기!!
- SW 개발 보안의 3대 요소 ( Tip. 기무가 )
- 기밀성(Confidentiality) / 무결성(Integrity) / 가용성(Availability)
- SW 개발 보안 용어 ( Tip. 자위취위 )
- 자산(Assets) / 위협(Threat) / 취약점(Vulnerability) / 위험(Risk)
- DDos 공격 구성요소 ( Tip. HAMAD(하마드) )
- 핸들러(Handler) / 에이전트(Agent) / 마스터(Master) / 공격자(Attacker) / 데몬(Daemon) 프로그램
- DoS와 DDoS의 차이점
- DoS는 직접 공격하고, DDoS는 공격하도록 지시한다 / DoS는 한 사람에 의해 공격을 감행하는 반면, DDoS는 수많은 감염 호스트를 통해 공격을 감행.
- SYN 플러딩 대응 방안
- ① TCP연결 타임아웃을 짧게 가져가서 연결 요청 대기 시간을 줄인다.
- ② Backlog Queue를 늘려준다.
- ③ Syncookie 기능을 활성화 시켜 준다.
- ④ Anti-DDoS, 방화벽, 침입 차단시스템 등 보안 장비를 통해 침입 탐지 및 차단을 수행 한다.
- ⑤ 최신 시스템 및 애플리케이션 패치 및 업데이트를 수행한다.
- 스머프 대응 방안
- ① 다른 네트워크로부터 자신의 네트워크로 들어오는 직접 브로드캐스트(Directed Broadcast) 패킷을 허용하지 않도록 라우터를 설정.
- ② 브로드캐스트 주소로 전송된 ICMP Echo Request 메시지에 대해 응답하지 않도록 시스템을 설정.
- PoD 대응 방안
- ① 보통 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하도록 설정.
- ② 현재 시스템 대부분은 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정되어 있지만, 취약점을 가지고 있다면 패치가 필요.
- 애플리케이션 공격 대응 방안
- ① 동시연결에 대한 임계치(Threshold) 설정을 통해 차단.
- ② 연결 타임아웃 설정을 통해 차단.
- ③ 읽기 타임아웃 설정을 통해 차단.
- 네트워크 서비스 공격 대응 방안
- ① 방화벽, 침입 차단 시스템 등 네트워크 보안 장비를 통해 방어.
- ② 네트워크 접속 차단 시스템을 통해 방어.
- ③ 내부 호스트 및 시스템의 악성 코드 감염방지를 위한 백신 설치 등을 통해 방어.
- 랜드어택 대응 방안
- 수신되는 패킷 중 출발지 주소와 목적지 주소가 동일한 패킷들을 차단.
- 봉크 / 보잉크 / 티어드롭 대응 방안
- 과부하가 걸리거나 반복되는 패킷 재정송 요구를 하지 않고 버린다.
- DES [Data Encryption Standard]
- 56bit의 키를 이용, 64bit의 평문블록을 64bit의 암호문 블록으로 만드는 블록 암호 방식의 미국표준(NIST) 암호화 알고리즘.
- AES [Advanced Encryption Standard]
- DES를 대체한 암호 알고리즘이며, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 암호화 알고리즘.
- SEED
- KISA, ETRI에서 개발하고 TTA에서 인증한 안전성, 신뢰성이 우수(3DES보다)한 고속 블록단위의 128bit 대칭키 암호화 알고리즘.
- 디피-헬만(Diffie-Hellman)
- 암호 키를 교환하는 방법으로서 두사람이 암호화 되지 않은 통신망을 통해 공통의 비밀 키를 공유할 수 있도록 하는 방식.
- RSA(Rivest Shamir Adleman)
- 현재 비대칭키 암호 방식 중에서 가장 널리 쓰이고 있는 방식 / 소인수 분해의 어려움을 이용한 방식.
- SHA(Secure Hash Algorithm)
- 미국 국가 표준으로 지정된 해시 암호 알고리즘 / SHA-224, SHA-256, SHA-384, SHA-512등을 통칭해 SHA-2로 부름.
- MD5(Message-Digest Algorithm 5)
- RFC 1321로 지정되어 있으며, MD4를 대체하기 위해 고안한 128bit 해시암호화 알고리즘.
- 개인정보보보 관련 법령 ( Tip. 개망신 )
- 개인정보 보호법 / 정보통신망법 / 신용정보법
- 고유 식별정보의 종류 ( Tip. 주여운외 )
- 주민등록번호 / 여권번호 / 운전면허번호 / 외국인 등록번호
- 개인정보보호 법령 내 정보사고 ( Tip. 분도유변훼 )
- 분실 / 도난 / 유출 / 변조 / 훼손
- 일방향 암호화
- 암호화는 수행하지만 절대로 복호화가 불가능한 알고리즘.
- 암호화 알고리즘
- 국내 및 미국, 일본, 유럽 등의 국외 암호 연구 관련 기관에서 권고하는 암호 알고리즘을 의미.
- SSL (Secure Socket Layer)
- 응용계층과 TCP/IP 계층 사이에서 웹 데이터 암호화 및 전송시 기밀성을 보장하는 공개키 기반의 보안 프로토콜.
- 프로시저
- 절차형 SQL을 활용하여 특정 기능을 수행할 수 있는 트랜잭션 언어.
- LDAP [Lightweight Directory Access Protocol]
- TCP/IP 위에서 조직화되고 비슷한 특성을 가진 객체들의 모임인 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜.
- 솔트(Salt)
- 일방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열.
- 세션 하이재킹(Session Hijacking)
- TCP신뢰성 기반의 연결을 이용한 공격 방법으로, 통신 내용을 엿보거나, 세션을 가로채어 정상적인 인증과정을 무시하고 불법으로 시스템에 접근할 수 있는 공격.
- SW 개발 보안 방법론 ( Tip. MS 7 CLA )
- MS-SDL / Seven Touchpoints / CLASP
- 소프트웨어 개발 보안 설명
- 소스코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안활동.
- 정보자산 주요 용어
- 자산(Asset) : 조직에서 보유한 가치 있는 모든 것.
- 사용자(User) : 정보처리 기기 및 시스템을 활용해 자산을 사용하는 사람과 기관.
- 소유자(Owner) : 자산의 소유 권한 및 관리에 대한 최종 책임자 / 자산의 취득, 사용, 폐기 등 관리 권한 보유.
- 관리자(Admin) : 자산의 소유자로부터 관리위임을 받은 자 / 자산의 보관 및 운영 책임을 짐.
- 정보자산 분류 기준
- 소프트웨어 : 상용 또는 자체 개발된 소프트웨어 자산.
- 하드웨어 : 대외 서비스를 위해 사용되거나 개인이 사용하는 자산.
- 데이터 : 전자적 형태로 저장되는 데이터.
- 문서 : 종이 매체로 된 정보자산 업무 목적 문서, 기록물.
- 정보자산 식별을 위한 자산목록표 주요항목
- 자산번호 / 자산명 / OS / 위치 / 담당자(관리자) / IP / PORT / 중요 등급.
- 고유식별정보의 개념
- 개인을 고유하게 구별하기 위하여 부여된 식별정보로 주민번호, 여권번호, 외국인 등록번호, 운전면허번호 등이 있다.
- 일방향 암호화의 개념
- 암호화는 가능하지만 복호화가 불가능한 알고리즘 / MD5, SHA, SHA2 알고리즘이 있다.
- 랜드어택(Land Attack) - 서비스 거부(Dos) 공격기법
- 공격자가 출발지(Source) IP와 목적지(Destination) IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격 기법.
- MD5
- 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안.
- SHA (Secure Hash Algorithm)
- 미국 국가안보국이 1993년 처음 설계했으며 미국 국가표준으로 지정된 해시 암호화 알고리즘.
- 스머프 공격(Smurf Attack) 또는 스머핑 (Smurfing)
- 희생자의 스푸핑된 출발지 IP를 가진 수많은 ICMP 패킷들이 IP 주소를 사용해 네트워크 전체에 브로드캐스트하는 분산 서비스 거부 공격.
- 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격.
- 바운스(Bounce)사이트라고 불리는 제3의 사이트를 이용해 공격한다.
- 보안 취약점(Vulnerability)
- 해킹 등 외부 공격으로 시스템의 보안정책을 침해하느 ㄴ보안사고의 실제 원인이 되는 시스템상의 보안 허점.
- 보안 약점(Weakness)
- 보안 취약점의 근본적인 원인이 되는 SW의 결함, 실수, 버그 등의 오류.
- 시큐어 코딩 가이드 적용 대상 ( Tip. 입보시 에코캡아 )
- 입력데이터 검증 및 표현 / 보안 기능 / 시간 및 상태 / 에러 처리 / 코드 오류 / 캡슐화 / API 오용
- 직렬화 (serialization)
- 직렬화는 데이터 구조나 오브젝트 상태를 다른 컴퓨터 환경으로 저장하고 재구성할 수 있는 포맷으로 변환하는 과정.
- 사용자 정의함수
- 절차형 SQL을 활용하여 일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL.
- 트리거
- 특정 테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생하면 DBMS에서 자동적으로 실행되도록 구현한 프로그램.
- 트리거 종류
- 행트리거 / 문장트리거
- PreparedStatement
- MySQL, Oracle, SQL Server 등 에서 지원하는 쿼리 객체로 동일하거나 비슷한 데이터베이스문을 높은 효율성으로 반복적으로 실행하기위해 사용되는 기능.
- JSTL [JSP Standard Tag Library]
- JSP 표준 태그 라이브러리의 약어로, JSP에서 제공하는 태그등을 지원.
- 무차별 공격(Brute Force Attack)
- 특정 패스워드를 풀기위해 임의의 문자 조합을 하나씩 대입해 보는 공격기법.
- 반복된 인증시도 제한이 없을때 취약.
- 스니핑(Sniffing)
- 공격대상에게 직접공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법.
- 경쟁조건(Race Condition)
- 메모리가 공유되는 하나의 객체에 두개 이상의 스레드가 동시에 값을 변경하려고 할때에 발생되는 성능 저하의 문제점.
- Mutex [Mutual exclusion; 상호배제]
- 임계영역(프로그램상에서 동시에 실행될 경우 문제를 일으킬 수 있는 부분)을 가진 스레드들의 실행시간이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술.
- 집계함수
- 여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수.
- 그룹함수
- 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화 하여 그룹별로 결과를 출력하는 함수.
- ROLLUP
- 지정된 컬럼은 소계 등 중간 집계값을 산출하기 위해 사용.
- GROUPING SETS
- 집계대상 컬럼들에 대한 개별 집계를 구할 수 있으며, ROLLUP이나 CUBE와는 달리 컬럼간 순서와 무관한 결과를 얻을 수 있다.
- 윈도함수
- 데이터베이스를 사용한 온라인 분석 처리 용도.
- 순위함수
- 레코드의 순위를 계산하는 함수로 RANK, DENSE_RANK, ROW_NUMBER 함수가 존재.
- 행순서함수
- 레코드에서 가장 먼저 나오거나 가장 뒤에 나오는 값.
- 이전/이후의 값들을 출력하는 함수로 FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수가 존재.
- ROW_NUMBER
- 레코드의 순위를 계산하는 함수로 동일순위의 값이 존재해도 이와 무관하게 연속번호를 부여하는 함수.
- LAST_VALUE
- 파티션별 윈도에서 가장늦게 나오는 값을 찾는 함수로 집계 함수의 MAX와 동일한 결과 출력을 가지는 함수.
- LEAD
- 파티션별 윈도에서 이후 로우의 값을 반환하는 함수.
- RATIO_TO_REPORT
- 주어진 그룹에 대해 합을 기준으로 각 로우의 상대적 비율을 반환하는 함수 / 결과값은 0 ~ 1의 범위.
- DCL
- 데이터베이스 관리자가 데이터보안, 무결성 유지, 병행제어, 회복을 위해 관리자(DBA)가 사용하는 제어용 언어.
- GRANT
- 관리자(DBA)가 사용자에게 권한을 부여하기 위한 명령어.
- 세션(Session)
- 클라이언트와 서버의 논리적 연결.
- 싱클톤 패턴(Singleton Pattern)
- 전역변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조 할 수 있도록 하는 패턴.
- 그룹내 비율 함수
- 백분율을 보여주거나 행의 순서별 백분율 등 비율과 관련된 통계를 보여주는 함수.
- RATIO_TO_REPORT, PERCENT_RANK 함수가 존재.
- DENSE_RANK
- 레코드의 순위를 계산하는 함수로 동일 순위의 레코드 존재시에도 후순위를 넘어가지 않는 함수.
- DNS (Domain Name Service)
- DNS는 도메인 이름과 IP 주소를 서로 변환하는 역할을 수행하는 서비스.
- API (Application Programming Interface)
- 프로그램을 작성하기 위한 일련의 서브프로그램, 프로토콜 등을 정의하여 상호작용을 하기위한 인터페이스 사양을 뜻한다.
- 화이트박스 테스트
- 프로그램 내부 로직을 보면서 수행하는 테스트(구조테스트).
- 블랙박스 테스트
- 프로그램 외부 사용자의 요구사항명세를 보면서 수행하는 테스트(기능테스트).
- 모델 체킹(Model Checking) 도구
- 정형언어로 명세된 모델을 검증하고자 하는 특성을 만족하는지 입증하는 기법.
- 정형언어 : 소프트웨어와 하드웨어 시스템의 검증을 위한 수학적 기반 기술.
- 입력데이터 검증 및 표현
- 프로그램 입력값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 지정.
- 보안 기능
- 보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)의 부적절한 구현.
- 시간 및 상태
- 거의 동시에 수행 지원하는 병렬 시스템.
- 하나이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리.
- SQL 삽입(Injection)
- 사용자의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격.
- 웹 애플리케이션에서 입력데이터에대한 유효성 검증을 하지 않을 경우 공격자가 입력창 및 URL에 SQL문을 삽입하여 DB로부터 정보를 열람∙조작 할 수 있는 공격 기법.
- 크로스 사이트 스크립트(XSS)
- 검증되지 않은 외부 입력값에 의해 브라우저에서 악의적인 코드가 실행.
- 웹페이지에 악의적인 스크립트를 포함해 사용자 측에서 실행되게 유도할 수 있는 공격 기법.
- 암호화 보안약점 유형
- 취약 암호화 알고리즘 사용
- 부적절한 난수 사용
- 솔트(Salt)없는 일방향 해시함수 사용
- 하드코딩된 비밀번호
- 충분하지 않은 키 길이 사용
- 보안테스트 절차 ( Tip. 준실개관종 )
- ① 준비 단계 : 대상선정, 일정 수립
- ② 실행 단계 : 테스트 수행
- ③ 개선 단계 : 보고서 발행, 지적사항 해결
- ④ 관리 단계 : 결함 해결 사항 보고, 점검된 소스코드 관리
- ⑤ 종료 단계 : 보안 상황 보고
- 정보보안의 3요소
- 기밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성.
- 가용성 : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성.
- 무결성 : 정당한 방법에 의하지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성.
- SW 개발 보안 방법론 ( Tip. MS 7 CLA )
- MS-SDL
- 마이크로 소프트는 안전한 소프트웨어를 개발하기 위해 자체 수립한 SDL(Secure Development Lifecycle) 방법론을 적용.
- 적용 이후 이전 버전보다 50% 이상 취약점 감소.
- Seven Touchpoints
- 소프트웨어 보안의 모범사례를 소프트웨어 개발 라이프사이클에 통합.
- 객관적인 위험 분석 및 테스트를 거쳐 안전한 소프트웨어를 만드는 방법을 정의.
- 수행되는 소프트웨어 위험 요소에 대해 추적하고 모니터링.
- CLASP
- Comprehensive, Lightweight Application Security Process 의 약자.
- SDLC 초기 단계에 보안 강화를 목적으로 하는 정형화된 프로세스.
- 이미 운영중인 시스템에 적용하기가 용이.
- 정보자산의 분류 기준
- 소프트웨어 : 상용 또는 자체 개발된 소프트웨어 자산 / 애플리케이션, 개발도구, 유틸리티.
- 하드웨어 : 대외서비스를 위해 사용되거나 개인이 사용하는 자산 / 서버, PC, 노트북, 스위치.
- 데이터 : 전자적 형태로 저장되는 데이터 / 데이터베이스, 데이터 파일.
- 문서 : 종이매체로된 정보자산, 업무목적문서∙기록물 / 결재문서, 계약서, 합의서.
- 시설 : 시스템 설치, 운영 장소 등 물리적 공간 및 시설 / 사무실, 전산실, 통신실.
- 지원설비 : 정보시스템 운영을 지원하기 위한 설비 / UPS, 항온항습기, 발전기.
- 인력 : 시스템 운영 업무 수행 중인 인력 / 내부직원, 협력업체.
- 시큐어 코딩 개념
- 설계 및 구현 단계에서 해킹등의 공격을 유발할 수 있는 잠재적 보안취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법.
- 널포인트 역참조
- 널값을 고려하지 않은 코드에서 발생하는 보안 약점.
- 의도적으로 널 값을 유발해 예외 상황을 확인하고 추후 공격에 활용.
- 정보통신망법 6조 주요내용
- 비밀번호, 바이오정보는 복호화 되지 않도록 일방향 암호화하여 저장.
- 주민등록번호, 신용카드번호, 계좌번호에 대해 안전한 암호화 알고리즘으로 암호화 하여 저장.
- 서버는 SSL 인증서를 통해 암호화 하여 송∙수신.
- 개인정보 보호법 24조 주요내용
- 고유식별번호(주민등록번호, 여권번호, 운전면허번호, 외국인등록번호)를 처리하는 경우.
- 해당 정보가 분실, 도난, 유출, 변조, 훼손되지 않도록 암호화 등 안전성 확보에 필요한 조치 필요.
- 민감 정보의 개념
- 유전자 검사정보, 범죄경력정보 등 정보주체의 사생활을 현저하게 침해할 수 있는 정보.
- 정보처리기사 필기 합격 후 실기대비 정리 및 책없이 간단히 보기위해 작성하였습니다.
- 2020년 수제비 정보처리기사 책 기반으로 정리 하였습니다.
- 저작권 관련 문제가 있다면 hojunbbaek@gmail.com 으로 메일 주시면 바로 삭제 조치 하도록 하겠습니다.
[정보처리기사 실기] Ⅸ. 기사실기 요약 / 정리 / 단답 / Tip / 알고가기!! (feat.수제비)