IT이론 정리노트/IT보안(CISSP)

CISSP IT보안이론 요약: 소프트웨어 개발 보안

G. Hong 2022. 2. 6. 22:31
728x90
반응형

1. 애플리케이션 이슈

로컬/비분산 컴퓨팅

바이러스

  • 악성코드의 오래된 형태

트로이목마

  • 유용한 프로그램으로 보이는 악성 프로그램

논리폭탄

  • 특정 조건을 만족 할 때 까지 잠복하는 악성코드
  • 주로 날짜를 기준으로 잠복

  • 자기 복제를 통한 전파. 메모리에 위치하고, 네트워크의 취약점을 악용.

 

분산 컴퓨팅

에이전트(bot)

  • 사용자의 명령을 받고 활동하는 지능적인 악성코드 객체
  • 웹봇(Web bot): 웹사이트를 크롤링하고 데이터를 처리

애플릿

  • 서버에서 클라이언트로 어떠한 작업을 수행하도록 하는 것
  • 처리부담을 클라이언트로 이전해 더 많은 사용자의 요청을 처리할 수 있음
  • 자바애플릿: 샌드박스를 통한 코드의 특권 제한
  • 액티브X컨트롤: MS사의 기술. 샌드박스는 없음

 

2. 데이터베이스와 데이터 웨어 하우징

DBMS(데이터베이스 관리 시스템) 구조

계층적 데이터 모델

  • 논리적 트리구조에 관련된 레코드와 필드를 합치는 것
  • 일대다(1:다) 데이터 모델

분산 데이터 모델

  • 하나 이상의 DB에 데이터 저장
  • DB들은 논리적으로 연결
  • 각 필드는 다수의 부모·자식을 가질 수 있음
  • 다대다(다:다) 데이터 모델

관계형 DB

  • 행열을 가진 2차원 테이블로 구성
  • 후보키: 레코드 식별에 사용되는 속성(열)의 부분집합
  • 기본키: 후보키 집합 중에 선택되는 1개의 키
  • 외래키: 두 테이블의 관계를 강제하기 위해 사용. 참조 무결성.

SQL(Structured Query Language)

  • DBMS 관리통제를 위한 인터페이스 언어
  • DDL(Data Definition Language): 스키마 생성 변경
  • DML(Data Manipulation Language): 스키마의 데이터와 사용자의 상호작용

 

DB 트랜젝션

데이터 무결성 보증을 위해 사용

트랜젝션 4가지 요구 특성(ACID)

  • 원자성(Atomicity)
    • All or nothing
    • 실패한다면 전체 트랜젝션은 발생하지 않은 것 처럼 원복 되어야 한다.
  • 일관성(Consistency)
    • DB의 모든 규칙과 일치하는 환경에서 작동하여야 한다.
  • 독립셩(Isolation)
    • 트랜젝션은 각각으로 부터 독립적으로 동작해야 한다.
  • 내구성(Durability)
    • 한 트랜젝션이 실행 되면 반드시 보존되어야 한다.

 

다중 DB 보안

동시성(편집통제)

  • DB의 정보가 정확하거나 무결성과 가용성이 보호 되는 지를 확인 하기 위한 예방적 보안 매커니즘.
  • Lock, Unlock 사용

기타 보안 매커니증

  • 의미적 무결성, 타임스탬프, 입자 객체통제, 세포억제(개별필드 숨김), 문맥의존적 접근통제, DB분할 등

 

ODBC(Open DB Connectivity)

상이한 유형의 DB들 간에도 통신 할 수 있도록 허용하는 DB 기능.

 

집성

유용한 정보를 산출하기 위해 하나 이상의 테이블로 부터 레코드를 통합하는 기능
 

데이터 마이닝

데이터 웨어하우스

  • 다양한 DB로 부터 많은 양의 정보를 보관하는 대규모 DB

데이터 사전

  • 데이타에 관한 중요 정보를 저장하고, DBMS가 접근권한을 측정하기 위해 읽어 들인다.

데이터 마이닝

  • 분석가가 데이터 웨어하우스를 통해 잠재적인 상관관계 정보를 찾게 하는 기술
  • 메타데이터를 생성하고, 이는 웨어하우스에 저장되는 데이터 벌크 보다 더 높은 가치·민감도를 가진다.
  • 데이터 마트라는 더 안전한 장치에 저장된다.

중요한 이유

  1. 추론과 집성공격에 취약한 대량의 데이터를 가지고 있다.
  2. 비정상 행위기반 침입탐지시스템(IDS)을 위한 보안도구로 활용 될 수 있다.

 

3. 데이터/정보 저장 장치

저장 장치의 유형

주 메모리

  • CPU가 직접적으로 사용가능한 메모리 자원
  • RAM(휘발성)

2차 저장장치

  • 장시간 사용을 위한 저렴한 비휘발성 저장 장치
  • CD, HDD, 플래시드라이브, 테이프 등

가상 메모리

  • 시스템이 2차 저장장치를 주 메모리 처럼 모방하는 것
  • 부족한 RAM을 보완

가상 저장장치

  • 주 저장장치를 2차 저장장치로 사용
  • 매우 빠른 파일시스템 제공

임의 접근 저장장치

  • OS가 매체의 어떤 지점이든 내용을 요청할 수 있는 것
  • RAM, HDD 등

순차적 접근장치

  • 특정 주소 도달을 위해 처음부터 탐색 해야하는 것
  • 테이프

휘발성 저장장치

  • 전원이 꺼지면 내용이 사라지는 저장장치
  • RAM

비휘발성 저장장치

  • 전원이 꺼져도 내용이 유지가 되는 저장장치
  • 자기·광 매체, 비휘발성 RAM

 

저장장치 위협

  1. 저장장치 리소스에 대한 불법적 접근 위험
  2. 은닉채널 공격 - 공유 저장장치에 조작을 통해 민감한 데이터의 전송을 허용하는 것

 

4. 지식기반 시스템

전문가 시스템

  • 특정 주제에 대해 축적된 지식을 통합하고, 이를 미래의 결정에 일관된 방법으로 적용하는 것
  • 구성요소
    • 지식기반: 지식축적
    • 추론엔진: 결정을 위한 정보 분석

 

신경망

  • 계산 단위의 체인이 인간의 사고 과정을 모방히기 위해 사용 됨.

 

결정 지원 시스템

  • 업무데이터를 분석하고, 사용자에게 더 쉽게 업무결정을 내릴 수 있게 하는 방법을 표시하는 지식 기반 어플리케이션

 

보안 어플리케이션

  • 전문가 시스템과 신경망을 활용하여 훌륭한 보안 어플리케이션을 개발 할 수 있음.

 

5. 시스템 개발 통제

소프트웨어 개발

- 보안은 개발 초기 단계 부터 고려해야 함.

보증

  • 보안통제 매커니즘이 시스템 생명주기 전반에 걸쳐 제대로 구현된다는 것을 보장하기 위해 '보증절차'를 사용한다.
  • TCSEC 오렌지 북에서 '생명주기 보증' 이라고 함.

시스템 오류 해결

  • 시스템 오류에 대한 계획
  • 임계값 점검: 데이터의 길이, 형태, 유형을 관리하기 위한 기술
  • Fail-secure: 장애 시에 정상이 될 때까지 높은 보안 생태를 유지하는 것.
    예: 장애시 완전히 비활성화. 블루스크린
  • Fail-open: 실패를 관대하게 허용함

프로그래밍 언어

  • 컴파일된 언어
    • 장점: 타인에 의한 조작이 어렵다.
    • 단점: 보안결함을 코드 내에 내장 시키고, 탐지를 우회하기 쉽다.
  • 인터프리트 코드
    • 코드의 점검이 가능해서 악성코드 삽입이 적음.
    • 누구든지 수정이 가능

객체지향 프로그래밍(OOP)

  • 상호작용에 관여된 객체에 중점이 있는 개념
  • C++, 자바, 닷넷

 

시스템 개발 생명주기

개념적 정의

  • 프로젝트 목적, 시스템 요구사항에 대한 합의된 진술문

기능적 요구사항 결정

  1. 시스템의 기능을 목록화
  2. 기능적 요구사항을 만족하기 위해 어떻게 시스템의 각 부분을 운영해야 하는지 생각

통제 사양 개발

  • 개발 초기 단계 부터 모든 시스템에 적절한 보안통제가 설계되어야 한다.

설계검토

  • 시스템의 각 부분들이 상호작용하는 방법 결정
  • 어떻게 모듈러 시스템 구조가 배치되는 지를 결정

코드 검토 점검

  • 개발자가 코드의 복사본을 가지고 검토
  • 논리적 흐름도의 문제를 찾는 것

시스템 테스트 검토

  1. 오류를 찾기 위한 초기 시험 수행
  2. 기능적 요구사항을 만족 하는지 베타 테스트 수행
  3. 향후 검토를 위한 시험계획·결과 복사본 유지

유지보수와 변경관리

  • 지속적인 운영을 보장하기 위해 필요

 

생명주기 모델(SDLC)

폭포수 모델

  • 7단계로 구성되고, 각 단계가 완료되면 프로젝트가 다음 단계로 진행
  • 다음 단계에서 발견된 결점을 보완하기 위해 이전 단계로 돌아가는 것을 허용(피드백 루프)
폭포수 모델

나선형 모델

  • 폭포수 모델의 반복 횟수를 캡슐화
  • 각 루프의 결과로 새로운 시제품(Prototype)이 개발 됨
나선형모델

애자일 소프트웨어 개발(Agile: 좋은 것을 빠르고 낭비없게)

- 애자일 매니페스토(선언) 12가지 원칙

  1. 가치가 있는 SW를 먼저·지속적으로 전달하여 고객 만족
  2. 개발 후반부에도 요구사항 변경을 환영
  3. 짧은 시간 단위로 주기적으로 작동하는 SW를 제공
  4. 관계자들과 개발자가 전체 프로젝트를 통해 함께 일함
  5. 각자가 프로젝트를 지원하고 신뢰함
  6. 가장 효과적인 정보전달법은 대면 대화
  7. 작동하는 SW가 중요한 척도
  8. 지속 가능한 개발을 촉진
  9. 우수한 기술과 좋은 설계에 대한 관심이 민첩성을 향상 시킴
  10. 단순성이 필수
  11. 최고의 구조·요구사항·설계는 스스로 조직한 팀에서 나옴
  12. 주기적으로 더 효과적인 방법을 생각하고, 팀의 행동을 조율·조정

- 애자일 변종: Scrum, Aup, DSDM, XP 등

소프트웨어 능력 성숙 모델(SW-CMM)

  • SW개발에 관계하는 모든 조직이 순차적 방식에서 다양한 완성 단계를 통해 이동해야 한다고 주장
  • SW품질은 개발 프로세스 품질에 의존
  • 단계:
    1. 초기: 조직화 되지 않은 방식으로 개발
    2. 반복가능: 코드 재사용이 중요하게 고려
    3. 정의: 정형화/문서화 된 SW 개발절차에 따라 운영
    4. 관리: SW과정 관리가 진행. 정량적 수단이 활용됨
    5. 최적화: 지속적인 향상 과정

이상적 모델(IDEAL 모델)

이상적모델 5단계

  • I(Initiating): 변경이유, 지원구축, 인프라 배치
  • D(Diagnosing): 현상태 분석, 권고 만듬
  • E(Establishing): 권고 실행. 구체적 계획 계발
  • A(Acting): 솔루션 개발, 테스트, 개량, 구현
  • L(Learning): 효과를 지속적으로 분석

*IDEAL과 SW-CMM 암기 : I Dr. Ed am lo

IInitiating(초기)
DRepeatable(반복가능)
EDefine(정의)
AManaged(관리)
LOptimized(최적화)

 

간트차트와 PERT

간트차트

  • 프로젝트와 스케쥴 사이의 시감흐름에 따른 관계성을 보여주는 막대형태의 차트
간트차트

PERT(프로그램 평가 검토 기술)

  • 아래 내용들을 계산하는 프로젝트 일정 관리 도구
  • 개발 중인 SW의 크기를 결정
  • 위험평가에 대한 표준편차(SD)를 계산

 

변경과 설정 관리

  • 새 기능, 버그 수정, 코드 수정 등의 상황에서 변경을 관리하기 위한 절차
  • 요청 통제
    • 사용자의 변경요구
    • 관리자의 비용효과 분석 수행
    • 개발자가 작업의 우선순위를 매김
  • 변경 통제
    • 개발자가 사용자의 상황재현, 상황개선을 위한 변경 분석
  • 배포 통제
    • 이중점검: 변경 과정의 디버깅 코드 등이 배포전 제거 되었는지 점검
    • 동작을 보증하는 인수 시험

설정변경 통제 4가지 구성요소

  • 구성 식별: 관리자는 조직전체 SW 제품구성을 문서화
  • 구성 통제: 변경통제/구성관리 정책에 따라 이루어 짐을 보장
  • 구성 상태유지: 모든 인가된 변경을 추적하는데 사용
  • 구성 감사: 유지기록이 일치하고, 인가되지 않은 변경이 없음을 보증

 

소프트웨어 테스트

- 개발과정의 일부로 조직에서는 SW를 배포하기 전에 확실히 테스트를 하여야 한다.
- 개발자가 아닌 제3자가 테스트를 수행하여 편향/편견을 방지한다.

  • 화이트박스 테스트: 프로그램 코드 확인을 통한 오류 확인
  • 블랙박스 테스트
    • 다양한 시나리오를 입력하고 출력을 검사
    • 내부코드는 모름
  • 그레이박스 테스트: 위의 2개를 합친 것. 블랙박스 테스트를 하면서 소스코드 확인도 가능

SW보안평가를 위한 테스트

  • 정적 테스트
    • SW를 실행하지 않고, 코드나 컴파일된 SW를 분석.
    • 결함탐지 도구를 사용
    • 예: 오버플로우
  • 동적 테스트
    • 실행된 환경에서 보안을 평가
    • 예: XSS, SQL 인젝션

 

보안 통제구조

안전한 시스템을 위해서 구현 하여야 함

  • 프로세스 격리
    • 각 프로세스가 격리된 메모리 공간을 가지는 것을 보증
    • 하드웨어 분할은 하드웨어 수준에서 프로세스 격리를 구현
  • 보호링
    • Level 0: 운영체제 영역. 보안커널 포함. 프로세스들은 슈퍼바이저 모드에서 실행 됨.
    • Level 1~2: 장치 드라이버와 시스템 자원에 대한 인터페이스를 제공하는 다른 운영 서비스. 실제로 대부분의 OS는 이런 계층을 구현하지 않음
    • Level 3: 애플리케이션과 프로세스가 존재하는 계층. 사용자모드 또는 보호모드. 시스템 자원에 대한 직접적인 접근이 허용 안됨.
  •  추상화
    • 객체지향적 SW개발 모델에서의 모든 정보시스템 설계를 추론화 하는것
    • 시스템 동작에 대한 자세한 내용을 자세히 알 필요 없다.
  • 보안모드
    • 분리된 보안모드: 시스템이 두 개 이상의 분리된 정보를 처리하고, 사용자는 필요한 분리에만 접근 가능
    • 전용 보안모드: 한 번에 특정한 분류 등급의 처리만 허가
    • 다중 보안모드: 한 등급 이상의 정보처리가 허가됨
    • 고체계 보안모드: 명확히 알 필요성을 갖고, 읽을 수 있는 정보만 처리하도록 허가됨

 

서비스 수준 합의 (SLA)

- 내부/외부 고객에게 서비스를 제공하는 조직이 서비스 제공자/공급업체 모두에 의해 합의된 적절한 수준의 서비스를 제공하는 대중적인 방법
- 논점: 시스템 가동시간(백분율), 최대 연속 다운시간, 최대 순간 과부하, 평균 과부하, 진단에 대한 책임, 실패복구 시간.

728x90
반응형