0_ch4n
기계쟁이\n개발자
0_ch4n
0chn.xxx@gmail.com @0ch._.n
전체 방문자
오늘
어제

공지사항

  • All (282)
    • 🖥 CS (21)
      • 네트워크 (12)
      • 운영체제 (3)
      • 자료구조 (2)
      • Web (4)
    • 🧠 Algorithm (185)
      • [C] BOJ (93)
      • [JAVA] Programmers (91)
    • 📚 Study (69)
      • HTML&CSS (19)
      • MySQL (11)
      • JAVA (22)
      • Servlet&JSP (8)
      • Thymeleaf (2)
      • Spring (5)
      • JPA (2)
    • 📖 Book (1)
    • 📃 Certification (6)
      • 정보처리기사 (6)

인기 글

최근 글

최근 댓글

태그

  • 카카오
  • til
  • 프로그래머스
  • 코테
  • java
  • 코딩테스트
  • Programmers
  • CSS
  • kakao
  • 자바

블로그 메뉴

  • 홈
  • 태그
  • 방명록

티스토리

hELLO · Designed By 정상우.
0_ch4n

기계쟁이\n개발자

[정보처리기사 필기] 5과목 정보시스템 구축 관리
📃 Certification/정보처리기사

[정보처리기사 필기] 5과목 정보시스템 구축 관리

2022. 4. 17. 23:33
반응형

◆ 5과목 정보시스템 구축 관리

 

∎1장 소프트웨어 개발 방법론 활용

 

∙소프트웨어 개발 방법론

 : 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는

   과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것이다

 - 목적은 소프트웨어의 생산성과 품질 향상이다

 - 종류에는 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반(CBD) 방법론, 애자일(Agile) 방법론,

   제품 계열 방법론 등이 있다

 

 1. 구조적 개발 방법론

  : 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론이다

  - 1960년대까지 가장 많이 적용되었던 소프트웨어 개발 방법론이다

  - 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적이다

  - 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용한다

  - 자료흐름도, 자료사전, 소단위명세서의 특징을 갖는다

  - 구조적 방법론의 절차

     타당성 검토 → 계획 → 요구사항 → 설계 → 구현 → 시험 → 운용/유지보수

 

 2. 정보공학 방법론

  : 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는

    자료(Data) 중심의 방법론이다

  - 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합하다

  - 정보공학 방법론의 절차

    정보 전략 계획 수립 → 업무 영역 분석 → 업무 시스템 설계 → 업무 시스템 구축

 

 3. 객체지향 개발 방법론

  : 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때 기계의

    부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론이다

  - 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되었다

  - 구성 요소에는 객체(Object), 클래스(Class), 메시지(Message) 등이 있다

  - 기본 원칙에는 캡슐화(Encapsulation), 정보 은닉(Information Hiding), 추상화(Abstraction),

    상속성(Inheritance), 다형성(Polymorphism) 등이 있다

  - 객체지향 방법론의 절차

    개발 준비 → 분석 → 설계 → 구현 → 테스트 → 전개 → 인도

 

 4. 컴포넌트 기반(CBD; Component Based Design) 방법론

  : 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론이다

  - 컴포넌트의 재사용(Reusability)이 가능하여 시간과 노력을 절감할 수 있다

  - 새로운 기능을 추가하는 것이 간단하여 확장성이 보장된다

  - 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있다

  - 독립적인 컴포넌트 단위의 관리로 복잡성을 최소화할 수 있다

  - 컴포넌트 기반 방법론의 절차

    개발 준비 → 분석 → 설계 → 구현 → 테스트 → 전개 → 인도

 

 5. 애자일(Agile) 방법론

  : ‘민첩한’, ‘기민한’이라는 의미로, 애자일 방법론은 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한

    주기를 반복하면서 개발 과정을 진행하는 방법론이다

  - 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합하다

  - 대표적인 종류에는 익스트림 프로그래밍(XP; eXtreme programming), 스크럼(Scrum), 칸반(kanban),

    크리스탈(Crystal) 등이 있다

  - 애자일 방법론의 절차

    사용자 스토리 → (계획 → 개발 → 승인 테스트) 반복

 

 6. 제품 계열 방법론

  : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론이다

  - 임베디드 소프트웨어를 만드는데 적합하다

  - 영역공학과 응용공학으로 구분된다

   ㄱ. 영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역이다

   ㄴ. 응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역이다

  - 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요하다

  - 제품 계열 방법론의 절차

 

∙S/W 공학의 발전적 추세

 1. 소프트웨어 재사용의 개요

  : 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것이다

  - 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법으로, 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운

    소프트웨어에 적용한다

  - 재사용의 이점

   ㄱ. 개발 시간과 비용을 단축시킨다

   ㄴ. 소프트웨어 품질을 향상시킨다

   ㄷ. 소프트웨어 개발의 생산성을 향상시킨다

   ㄹ. 프로젝트 실패의 위험을 감소시킨다

   ㅁ. 시스템 구축 방법에 대한 지식을 공유하게 된다

   ㅂ. 시스템 명세, 설계, 코드 등 문서를 공유하게 된다

 

 2. 소프트웨어 재사용 방법

합성 중심
(Composition-Based)
전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이라고도 한다
생성 중심
(Generation-Based)
추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 한다

 

 3. 소프트웨어 재공학의 개요

  : 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어

    성능을 향상시키는 것이다.

  - 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어 기존 소프트웨어의 데이터와

    기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상 시키려는 기술이다

  - 유지보수 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법이다

  - 기존 소프트웨어의 기능을 개조하거나 개선하므로, 예방(Preventive) 유지보수 측면에서 소프트웨어 위기를

    해결하는 방법이라고 할 수 있다

  - 소프트웨어 재공학도 자동화된 도구를 사용하여 소프트웨어를 분석하고 수정하는 과정을 포함한다

  - 소프트웨어의 수명이 연장되고, 소프트웨어 기술이 향상될 뿐만 아니라 소프트웨어의 개발 기간도 단축된다

  - 소프트웨어에서 발생할 수 있는 오류가 줄어들고, 비용이 절감된다

  - 시스템 명세의 오류가 억제되고 위험부담이 감소한다

 

 + 소프트웨어 재공학의 주요 활동

  - Analysis : 기존 소프트웨어를 분석하여 재공학 대상을 선정하는 것

  - Migration : 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 작업

  - Restructuring : 기존 소프트웨어를 향상시키기 위하여 코드를 재구성하는 작업 (기능과 외적 동작은 변함 없음)

  - Reverse Engineering : 기존 소프트웨어를 분석하여 소스코드를 얻어내는 작업 (소스코드로 소프트웨어를

    만드는 작업의 역작업)

 

 4. CASE의 개요

  : CASE(Computer Aided Software Engineering)는 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현,

    검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것이다

  - 1980년대에 소개되었으며, 객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활용되는 자동화

    도구(CASE Tool)이다

  - 소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합하여 소프트웨어를 개발하는 환경을 조성한다

  - 소프트웨어 생명 주기의 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해 주는 기술이다

  - CASE 도구를 통해 관리되는 공통 모듈을 사용할 수 있어 재사용성을 향상시킬 수 있다

  - CASE 도구가 모듈 관리를 자동으로 수행하므로 유지보수가 간편해진다

  - 작업 과정 및 데이터 공유를 통해 작업자간 커뮤니케이션을 증대한다

  - 소프트웨어 개발 도구와 방법론이 결합된 것으로, 정형화된 구조 및 방법(메커니즘)을 소프트웨어 개발에 적용하여

    생산성 향상을 구현하는 공학 기법이다

  - 소프트웨어 개발의 모든 단계에 걸쳐 일관된 방법론을 제공하는 자동화 도구들을 지원하고, 개발자들은 이 도구를

    사용하여 소프트웨어 개발의 표준화를 지향하며, 자동화된 기법을 통해 소프트웨어 품질이 향상된다

  - CASE 도구는 요구 분석, 설계 과정을 지원하는 상위 CASE 도구와 구현, 테스트 과정을 지원하는 하위 CASE

    도구로 구분할 수 있다

  - CASE의 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원,

    모델들의 모순 검사 및 오류검증, 자료흐름도 작성 등

  - CASE의 원천 기술 : 구조적 기법, 프로토타이핑, 자동 프로그래밍, 정보 저장소, 분산처리

 

∙비용 산정 기법 – 상향식

 : 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법이다

 

 1. LOC(원시 코드 라인 수, source Line Of Code) 기법

  : 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여

    비용을 산정하는 기법이다

  - 측정이 용이하고 이해하기 쉬워 가장 많이 사용된다

  - 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정한다

*EAI(Enterprise Application Integration)
 : 기업 응용 프로그램 통합으로 기업용 응용 프로그램의 구조적 통합 방안을 가리킴


*FEP(Front-End Processor)
 : 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 처리하는 시간을 줄여주는
   프로그램이나 하드웨어


*GPL(General Public License)
 : 자유 소프트웨어 재단(OSF)에서 만든 자유 소프트웨어 라이선스


*Duplexing
 : 이중화(데이터베이스의 회복 기법 중 가장 간단한 것

 

∙수학적 산정 기법

 : 상향식 비용 산정 기법으로, 경험적 추정 모형, 실험적 추정 모형이라고도 하며, 개발 비용 산정의 자동화를

   목표로 한다

 - 비용을 자동으로 산정하기 위해 사용되는 공식은 과거 유사한 프로젝트를 기반으로하여 경험적으로 유도된 것이다

 - 수학적 산정 기법에는 COCOMO 모형, Putnam 모형, 기능 점수(FP) 모형 등이 있으며 각 모형에서는 지정된

   공식을 사용하여 비용을 산정한다

 

 1. COCOMO(COnstructive COst MOdel) 모형 개요

  : 보헴(Boehm)이 제안한 것으로, 원시 프로그램의 규모인 LOC(원시 코드 라인 수)에 의한 비용 산정 기법이다

  - 개발할 소프트웨어의 규모(LOC)를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에

    대입하여 비용을 산정한다

  - 비용 견적의 강도 분석 및 비용 견적의 유연성이 높아 소프트웨어 개발비 견적에 널리 통용되고 있다

  - 같은 규모의 프로그램이라도 그 성격에 따라 비용이 다르게 산정된다

  - 비용 산정 결과는 프로젝트를 완성하는데 필요한 노력(Man-Month)으로 나타난다

 

 2. COCOMO의 소프트웨어 개발 유형

  : 소프트웨어의 복잡도 혹은 원시 프로그램의 규모에 따라 조직형(Organic Mode),

    반분리형(Semi-Detached Mode), 내장형(Embedded Mode)으로 분류할 수 있다

 

  - 조직형(Organic Mode)

   : 기관 내부에서 개발된 중·소 규모의 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스 자료 처리용으로

     5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형이다

   ㄱ. 사무 처리용, 업무용, 과학용 응용 소프트웨어 개발에 적합하다

   ㄴ. 비용을 산정하는 공식은 다음과 같다

  - 반분리형(Semi-Detached Mode)

   : 조직형과 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의

     30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형이다

   ㄱ. 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합하다

   ㄴ. 비용을 산정하는 공식은 다음과 같다

  - 내장형(Embedded Mode)

   : 초대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는

     유형이다

   ㄱ. 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합하다

   ㄴ. 비용을 산정하는 공식은 다음과 같다

 

 3. COCOMO 모형의 종류

  : 비용 산정 단계 및 적용 변수의 구체화 정도에 따라 기본(Basic), 중간(Intermediate), 발전(Detailed)형으로

   구분할 수 있다

 

  - 기본(Basic)형 COCOMO

   : 소프트웨어 크기(생산 코드 라인 수)와 개발 유형만을 이용하여 비용을 산정하는 모형이다

   ㄱ. 산정 공식

    - 개발 노력(Effort, MM, PM) = a * (KDSI)^b

    - 개발 기간(TDEV) = c * (MM)^d

    - 적정 투입 인원(FPS) = MM / TDEV

    - 인적 비용(COST) = MM * 1인당 월평균 급여

 

  - 중간(Intermediate)형 COCOMO

   : 기본형 COCOMO의 공식을 토대로 사용하나, 다음 4가지 특성의 15가지 요인에 의해 비용을 산정하는 모형이다

   ㄱ. 제품의 특성 : 요구되는 신뢰도, 데이터베이스 크기, 제품의 복잡도

   ㄴ. 컴퓨터의 특성 : 수행 시간의 제한, 기억장소의 제한, 가상 기계의 안정성, Turn Around Time

   ㄷ. 개발 요원의 특성 : 분석가의 능력, 개발 분야의 경험, 가상 기계의 경험, 프로그래머의 능력, 프로그래밍

        언어의 경험

   ㄹ. 프로젝트 특성 : 소프트웨어 도구의 이용, 프로젝트 개발 일정, 최신 프로그래밍 기법의 이용

   ㅁ. 산정 공식

    - 개발 노력(MM) = 기본 COCOMO의 MM * 요인별 노력 승수

    - 개발 기간(TDEV) = c * (MM)^d

    - 적정 투입 인원(FPS) = MM / TDEV

    - 인적 비용(COST) = MM * 1인당 월평균 급여

 

  - 발전(Detailed)형 COCOMO

   : 중간(Intermediate)형 COCOMO를 보완하여 만들어진 방법으로 개발 공정별로 보다 자세하고 정확하게 노력을

     산출하여 비용을 산정하는 모형이다

   ㄱ. 소프트웨어 환경과 구성 요소가 사전에 정의되어 있어야 하며, 개발 과정의 후반부에 주로 적용한다

   ㄴ. 산정 공식 : 중간형 COCOMO 산정 공식을 그대로 사용하되, 노력 승수를 다음과 같이 적용하여 산정한다

노력 승수 = 개발 공정별 노력 승수 * 개발 공정별 가중치

 

 4. Putnam 모형

  : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해 주는 모형이다

  - 푸트남(Putnam)이 제안한 것으로 생명 주기 예측 모형이라고도 한다

  - 시간에 따른 함수로 표현되는 Reyleigh-Norden 곡선의 노력 분포도를 기초로 한다

  - 대형 프로젝트의 노력 분포 산정에 이용되는 기법이다

  - 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소한다

  - 산정 공식

 

 5. 기능 점수(FP) 모형

  : 기능 점수(Function Point) 모형은 알브레히트(Albrecht)가 제안한 것으로, 소프트웨어의 기능을 중대시키는

   요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를

   이용하여 기능 점수(FP)를 구한 후 이를 이용해서 비용을 산정하는 기법이다

기능 점수(FP) = 총 기능 점수 * [0.65 + (0.1 * 총 영향도)]

  - 발표 초기에는 관심을 받지 못하였으나 최근에 그 유용성과 간편성으로 비용 산정 기법 가운데 최선의 평가를

    받고 있다

  - 기능별 가중치

소프트웨어 기능 증대 요인 가중치
단순 보통 복잡
자료 입력(입력 양식) 3 4 6
정보 출력(출력 보고서) 4 5 7
명령어(사용자 질의수) 3 4 5
데이터 파일 7 10 15
필요한 외부 루틴과 인터페이스 5 7 10

 

 + 자동화 추정 도구

  : 비용 산정의 자동화를 위해 개발된 도구로는 SLIM과 ESTIMACS가 있습니다

  - SLIM : Reyleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구입니다

  - ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP 모형을 기초로 하여 개발된 자동화 추정

    도구입니다

 

∙프로젝트 일정 계획

 : 프로젝트의 프로세스를 이루는 소작업을 파악하고 예측된 노력을 각 소작업에 분배하며, 소작업의 순서와 일정을

   정하는 것이다

 - 소프트웨어 개발 기간의 지연을 방지하고 프로젝트가 계획대로 진행되도록 일정을 계획한다

 - 계획된 일정은 프로젝트의 진행을 관리하는데 기초 자료가 된다

 - 계획된 일정과 프로젝트의 진행도를 비교하여 차질이 있을 경우 여러 조치를 통해 조정할 수 있다

 - 프로젝트 일정 계획을 위해서는 WBS, PERT/CPM, 간트 차트 등이 사용된다

 

 1. PERT(Program Evaluation and Review Technique, 프로그램 평가 및 검토 기술)

  : 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크로 각 작업별로 낙관적인 경우, 가능성이 있는

    경우, 비관적인 경우로 나누어 각 단계별 종료 시기를 결정하는 방법이다

  - 과거에 경험이 없어서 소요 기간 예측이 어려운 소프트웨어에서 사용한다

  - 노드와 간선으로 구성되며 원 노드에는 작업을, 간선(화살표)에는 낙관치, 기대치, 비관치를 표시한다

  - 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있다

  - 다음과 같은 PERT 공식을 이용하여 작업 예측치를 계산한다

 

 2. CPM(Critical Path Method, 임계 경로 기법)

  : 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법이다

  - 노드와 간선으로 구성된 네트워크로 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타낸다

  - 원형 노드는 각 작업을 의미하며 각 작업 이름과 소요 기간을 표시하고, 박스 노드는 이정표를 의미하며 박스

    노드 위에는 예상 완료 시간을 표시한다

  - 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료된 후 다음 작업을 진행할 수 있다

  - 각 작업의 순서와 의존 관계, 어느 작업이 동시에 수행될 수 있는지를 한눈에 볼 수 있다

  - 경영층의 과학적인 의사 결정을 지원하며, 효과적인 프로젝트의 통제를 가능하게 해 준다

  - 병행 작업이 가능하도록 계획할 수 있으며, 이를 위한 자원 할당도 가능하다

  - 임계 경로는 최장 경로를 의미한다

  - 일정 계획 순서

   ㄱ. 프로젝트의 규모를 추정한다

   ㄴ. 각 단계에서 필요한 작업들을 분할한다

   ㄷ. 각 작업의 상호 의존 관계를 CPM 네트워크로 나타낸다

   ㄹ. 일정 계획을 간트 차트로 나타낸다

 

 3. 간트 차트

  : 프로젝트의 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는

    프로젝트 일정표로, 시간선(Time-Line) 차트라고도 한다

  - 중간 목표 미달성 시 그 이유와 기간을 예측할 수 있게 한다

  - 프로젝트를 이루는 소작업 별로 언제 시작되고 언제 끝나야 하는지를 한 눈에 볼 수 있도록 도와준다

  - 사용자와의 문제점이나 예산의 초과 지출 등도 관리할 수 있게 한다

  - 자원 배치와 인원 계획에 유용하게 사용된다

  - 다양한 형태로 변경하여 사용할 수 있다

  - 작업 경로는 표시할 수 없으며, 계획의 변화에 대한 적응성이 약하다

  - 게획 수립 또는 수정 때 주관적 수치에 기울어지기 쉽다

  - 간트 차트는 이정표, 작업 일정, 작업 기간, 산출물로 구성되어 있다

  - 수평 막대의 길이는 각 작업(Task)의 기간을 나타낸다

  - CPM 네트워크로부터 만드는 것이 가능하다

 

∙소프트웨어 개발 방법론 결정

 : 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고, 확정된 소프트웨어 생명 주기와 개발 방법론에

  맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것이다

 

 + 프로젝트 관리

  : 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동입니다

일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
비용 관리 비용 산정, 비용 예산 편성, 비용 통제
인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

 

 1. 소프트웨어 개발 방법론 결정 절차

  - 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영한다

   ㄱ. 소프트웨어 개발 방법론에 프로젝트 관리와 재사용 현황을 반영하는 방법을 프로젝트 관련자들에게 설명한다

   ㄴ. 소프트웨어 개발 바업론에 프로젝트 관리와 재사용 현황을 반영하고 그 결과를 프로젝트 관련자들에게

       설명한 후 결정한다

  - 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립한다

   ㄱ. 소프트웨어의 기본 생명 주기, 지원 생명 주기, 조직 생명 주기별로 주요 프로세스를 확인한다

   ㄴ. 소프트웨어의 개발 프로세스, 개발 생명 주기, 프로세스 모형을 정리한다

  - 결정된 소프트웨어 개발 방법론의 개발 단계별 활동 목적, 작업 내용, 산출물에 대한 매뉴얼을 작성한다

 

∙소프트웨어 개발 표준

 : 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준을 의미한다

 

 1. ISO/IEC 9126

  - 소프트웨어의 품질 특성과 평가를 위한 표준 지침으로서 국제 표준으로 널리 사용된다

  - 소프트웨어의 품질에 대한 요구사항을 기술하거나 개발중인 또는 개발이 완료된 소프트웨어의 품질 평가 등에

    사용된다

 

 2. ISO/IEC 12119

  : 패키지 소프트웨어의 일반적인 제품 품질 요구사항 및 테스트를 위한 국제 표준

 

 3. ISO/IEC 12207

  : ISO(International Organization for Standardization, 국제표준화기구)에서 만든 표준 소프트웨어 생명 주기

   프로세스로, 소프트웨어의 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 생명 주기 표준을

   제공한다

기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스

 

 4. ISO/IEC 14598

  : 소프트웨어 품질의 측정과 평가에 필요한 절차를 규정한 표준으로, 개발자, 구매자, 평가자 별로 수행해야 할

제품 평가 활동을 규정함

 

 5. ISO/IEC 25000

  - ISO 9126, 14598, 12119의 여러 표준 문서를 통합하고 재구성하여 만든 소프트웨어 품질 평가를 위한

    소프트웨어 품질평가 통합모델 표준이다

  - System and Software Quality Requirements and Evaluation으로 줄여서 SQuaRE라고도 한다

  - 2500n, 2501n, 2502n, 2503n, 2504n의 다섯가지 분야와 확장 분야인 2505n으로 나눌 수 있다

   ㄱ. 2500n (9126-1, 품질 관리 지침) : SQuaRE에 대한 개요, 전체에 대한 계획과 관리

   ㄴ. 2501n (9126-2, 품질 모형) : 품질 모델 및 품질 사용 안내

   ㄷ. 2503n (9126-3, 품질 측정) : 매트릭을 통한 측정 방법 제시

   ㄹ. 2504n (9126-4, 품질 정의(요구사항)) : 품질 요구사항

   ㅁ. 2505n (9126-5, 품질 평가) : 품질 프로세스에 관한 개요, 관점들의 평가 프로세스

 

 6. CMMI(Capability Maturity Model Integration, 능력 성숙도 통합 모델)

  : 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델로, 미국 카네기멜론 대학교의 소프트웨어

   공학연구소(SEI)에서 개발하였다

  - 성숙도는 초기, 관리, 정의, 정량적 관리, 최적화의 5단계로 구분한다

단계 프로세스 특징
초기(initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
정량적 관리
(Quantitatively Managed)
예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
최적화(Optimizing) 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선

 

 7. SPICE(Software Process Improvement and Capability dEtermination)

  : SPICE(소프트웨어 처리 개선 및 능력 평가 기준)는 정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상을

   위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준으로, 공식 명칭은 ISO/IEC 15504이다

  - SPICE의 목적

   ㄱ. 프로세스 개선을 위해 개발 기관이 스스로 평가하는 것

   ㄴ. 기관에서 지정한 요구조건의 만족여부를 개발 조직이 스스로 평가하는 것

   ㄷ. 계약 체결을 위해 수탁 기관의 프로세스를 평가하는 것

  - SPICE는 5개의 프로세스 범주와 40개의 세부 프로세스로 구성된다

고객-공급자 프로세스
(Customer-Supplier)
소프트웨어를 개발하여 고객에게 전달하는 것을 지원하고, 소프트웨어의 정확한 운용 및 사용을 위한 프로세스로 구성된다
구성 요소 : 인수, 공급, 요구 도출, 운영
프로세스 수 : 10개
공학 프로세스
(Engineering)
시스템과 소프트웨어 제품의 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성된다
구성 요소 : 개발, 소프트웨어 유지보수
프로세스 수 : 9개
지원 프로세스
(Support)
소프트웨어 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성된다
구성 요소 : 문서화, 형상, 품질 보증, 검증, 확인, 리뷰, 감사, 품질 문제 해결
프로세스 수 : 8개
관리 프로세스
(Management)
소프트웨어 생명 주기에서 프로젝트 관리자에 의해 사용되는 프로세스로 구성된다
구성 요소 : 관리, 프로젝트 관리, 품질 및 위험 관리
프로세스 수 : 4개
조직 프로세스
(Organization)
조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성된다
구성 요소 : 조직 배치, 개선 활동 프로세스, 인력 관리, 기반 관리, 측정 도구,
재사용
프로세스 수 : 9개

  - SPICE는 프로세스 수행 능력 단계를 불완전, 수행, 관리, 확립, 예측, 최적화의 6단계로 구분한다

Level 0
불완전(Incomplete)
프로세스가 구현되지 않았거나 목적을 달성하지 못한 단계이다
Level 1
수행(Performed)
프로세스가 수행되고 목적이 달성된 단계이다
Level 2
관리(Managed)
정의된 자원의 한도 내에서 그 프로세스가 작업 산출물을 인도하는 단계이다
Level 3
확립(Established)
소프트웨어 공학 원칙에 기반하여 정의된 프로세스가 수행되는 단계이다
Level 4
예측(Predictable)
프로세스가 목적 달성을 위해 통제되고, 양적인 측정을 통해서 일관되게 수행되는 단계이다
Level 5
최적화(Optimizing)
프로세스 수행을 최적화하고

 

∙소프트웨어 개발 방법론 테일러링

 : 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업이다

 - 프로젝트에 최적화된 개발 방법론을 적용하기 위해 절차, 산출물 등을 적절히 변경하는 활동이다

 - 관리 측면에서의 목적 중 하나는 최단기간에 안정적인 프로젝트 진행을 위한 사전 위험을 식별하고 제거하는 것

 - 기술적 측면에서의 목적 중 하나는 프로젝트에 최적화된 기술 요소를 도입하여 프로젝트 특성에 맞는 최적의

   기법과 도구를 사용하는 것이다

 

 1. 소프트웨어 개발 방법론 테일러링 고려사항

  - 내부적 기준

   ㄱ. 목표 환경 : 시스템의 개발 환경과 유형이 서로 다른 경우 테일러링이 필요하다

   ㄴ. 요구사항 : 프로젝트의 생명 주기 활동에서 개발, 운영, 유지보수 등 프로젝트에서 우선적으로 고려할

        요구사항이 서로 다른 경우 테일러링이 필요하다

   ㄷ. 프로젝트 규모 : 비용, 인력, 기간 등 프로젝트의 규모가 서로 다른 경우 테일러링이 필요하다

   ㄹ. 보유 기술 : 프로세스, 개발 방법론, 산출물, 구성원의 능력 등이 서로 다른 경우 테일러링이 필요하다

  - 외부적 기준

   ㄱ. 법적 제약사항 : 프로젝트별로 적용될 IT Compliance가 서로 다른 경우 테일러링이 필요하다

   ㄴ. 표준 품질 기준 : 금융, 제도 등 분야별 표준 품질 기준이 서로 다른 경우 테일러링이 필요하다

 

 2. 소프트웨어 개발 방법론 테일러링 기법

  - 프로젝트 규모와 복잡도에 따른 테일러링 기법 : 가장 일반적인 기법으로, 프로젝트 규모를 프로젝트 기간,

    작업범위, 참여인원 등에 따라 대·중·소로 구분하고, 프로젝트 업무의 난이도에 따라 복잡도를 상·중·하로 구분하는

    기법이다

  - 프로젝트 구성원에 따른 테일러링 기법 : 프로젝트에 참여하는 구성원들의 기술적 숙련도와 방법론의 이해 정도를

    확인하여 테일러링 수준을 결정하는 기법이다

  - 팀내 방법론 지원에 따른 테일러링 기법 : 프로젝트 수행 시 각 팀별로 방법론 담당 인력을 배정하여 팀의 방법론

    교육과 프로젝트 전체의 방법론 운영을 위한 의사소통을 담당하도록 인력을 구성하는 기법이다

  - 자동화에 따른 테일러링 기법 : 프로젝트 수행 시 작업 부하를 줄이기 위해 중간 단계에서의 산출물을 자동화

    도구를 사용하여 산출할 수 있도록 지원하는 기법이다

 

•소프트웨어 개발 프레임워크

 : 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지

   기능들을 제공해주는 반제품 형태의 소프트웨어 시스템이다

  - 선행 사업자의 기술에 의존하지 않은 표준화된 개발 기반으로 인해 사업자 종속성이 해소된다

  - 프레임워크의 주요 기능에는 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스,

    로깅 서비스, 사용자 인증 서비스 등이 있다

  - 프레임워크의 특성

모듈화
(Modularity)
- 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을
최소화함으로써 소프트웨어의 품질을 향상시킵니다
- 프레임워크는 개발표준에 의한 모듈화로 인해 유지 보수가 용이합니다
재사용성
(Reusability)
프레임워크는 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능합니다
확장성
(Extensibility)
프레임워크는 다형성(Polymorphism)을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능합니다
제어의 역흐름
(Inversion of Control)
개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킵니다

 

 1. 스프링 프레임워크(Spring Framework)

  : 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크이다

  - 동적인 웹 사이트의 개발을 위해 다양한 서비스를 제공한다

  - 전자정부 표준 프레임워크의 기반 기술로 사용되고 있다

 

 2. 전자정부 프레임워크

  : 우리나라의 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍처를

    제공하는 프레임워크이다

  - 개발 프레임워크의 표준 정립으로 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상을 목적으로 한다

  - 오픈 소스 기반의 범용화가 되고 공개된 기술을 활용함으로써 특정 업체의 종속성을 배제하고 사업별 공통

    컴포넌트의 중복 개발을 방지한다

 

 3. 닷넷 프레임워크(.NET Framework)

  : Windows 프로그램의 개발 및 실행 환경을 제공하는 프레임워크로, Microsoft 사에서 통합 인터넷 전략을 위해

    개발하였다

  - 코드 실행을 관리하는 CLR(Common Language Runtime, 공용 언어 런타임)이라는 이름의 가상머신 상에서

    작동한다

  - 메모리 관리, 유형 및 메모리 안전성, 보안, 네트워크 작업 등 여러 가지 서비스를 제공한다

 

 4. Scrapy

  : Python 기반의 웹 크롤링(Web Crawling) 프레임워크이다


∎2장 IT프로젝트 정보시스템 구축 관리

 

∙네트워크 관련 신기술

 1. 지능형 초연결망

  : 과학기술정보통신부 주관으로 추진 중인 사업으로, 스마트 시티, 스마트 스테이션 등 4차 산업혁명 시대를 맞아

    새로운 변화에 따라 급격하게 증가하는 데이터 트래픽을 효과적으로 수용하기 위해 시행되는 정부 주관 사업이다

  - 국가 전체 망에 소프트웨어 정의 기술(SDE)을 적용하는 방법으로 네트워크의 데이터 트래픽 증가를 불러올 수

    있는 사물 인터넷(IoT), 클라우드, 빅데이터, 5G 등을 효율적으로 수용할 수 있도록 한다

  - 기존의 초고속정보통신망, 광대역통합망(BcN), 광대역융합망(UBcN)을 잇는 중장기 네트워크 발전 전략이다

 

 2. 소프트웨어 정의 기술(SDE, SDx; Software-Defined Everything)

  : 네트워크, 데이터 센터 등에서 소유한 자원을 가상화하여 개별 사용자에게 제공하고, 중앙에서는 통합적으로

    제어가 가능한 기술이다

소프트웨어 정의 네트워킹
(SDN, Software Defined Networking)
- 네트워크를 컴퓨터처럼 모델링하여 여러 사용자가 각각의 소프트웨어들로 네트워킹을 가상화하여 제어하고 관리하는 네트워크이다
- 네트워크 비용 및 복잡성을 해결할 수 있는 기술로 간주되어 기존 네트워킹 기술의 폐쇄형 하드웨어 및 소프트웨어 기술을 개방형으로 변화시키는 미래 인터넷 기술로 떠오르고 있다
소프트웨어 정의 데이터센터
(SDDC; Software Defined Data Center)
데이터 센터의 모든 자원을 가상화하여 인력의 개입없이 소프트웨어 조작만으로 관리 및 제어되는 데이터 센터이다
소프트웨어 정의 스토리지
(SDS, Software-Defined Storage)
물리적인 데이터 스토리지(Data Storage)를 가상화하여 여러 스토리지를 하나처럼 관리하거나, 하나의 스토리지를 여러 스토리지로 나눠 사용할 수 있는 기술이다

 

 3. IoT(Internet of Things, 사물 인터넷)

  : 정보 통신 기술을 기반으로 실세계(Physical World)와 가상 세계(Virtual World)의 다양한 사물들을 인터넷으로

    서로 연결하여 진보된 서비스를 제공하기 위한 서비스 기반 기술이다

  - 유비쿼터스 공간을 구현하기 위한 컴퓨팅 기기들이 환경과 사물에 심겨 환경이나 사물 그 자체가 지능화되는

    것부터 사람과 사물, 사물과 사물 간에 지능 통신을 할 수 있는 엠투엠(M2M; Machine to Machine)의 개념을

    인터넷으로 확장하여 사물은 물론, 현실과 가상 세계의 모든 정보와 상호 작용하는 IoT 개념으로 진화했다

  - 주요 기술로는 스마트 센싱 기술, 유무선 통신 및 네트워크 인프라 기술, 사물 인터넷 인터페이스 기술, 사물

    인터넷을 통한 서비스 기술 등이 있다

  - IoT 기반 서비스는 개방형 아키텍처를 필요로 하기 때문에 정보 공유에 대한 부작용을 최소화하기 위한 정보

    보안 기술의 적용이 중요하다

 

 4. IoT 관련 용어

M2M
(Machine to Machine,
사물 통신)
- 무선 통신을 이용한 기계와 기계 사이의 통신이다
- 변압기 원격 감시, 전기, 가스 등의 원격 검침, 무선 신용카드 조회기, 무선 보안 단말기, 버스 운행 시스템, 위치 추적 시스템, 시설물 관리 등을 무선으로 통합하여 상호 작용한다
메시 네트워크
(Mesh Network)
- 차세대 이동통신, 홈네트워킹, 공공 안전 등 특수 목적을 위한 네트워크이다
- 수십에서 수천 개의 디바이스를 유기적으로 연결하여 모든 구간을 동일한 무선망처럼 구성하여 사용자가 안정적인 네트워크를 사용할 수 있게 한다
와이선
(Wi-SUN)
- 스마트 그리드와 같은 장거리 무선 통신을 필요로 하는 사물 인터넷(IoT) 서비스를 위한 저전력 장거리(LPWA; Low-Power Wide Area) 통신 기술이다
- 낮은 지연 속도, 메시 네트워크 기반 확장성, 펌웨어 업그레이드 용이성 등으로 짧은 시간 동안 데이터 전송이 빈번한 검침 분야에 유용하다
UWB
(Ultra WideBand, 초광대역)
- 짧은 거리에서 많은 양의 디지털 데이터를 낮은 전력으로 전송하기 위한 무선 기술로 무선 디지털 펄스라고도 하며, 블루투스와 비교되는 기술이다
- 땅 속이나 벽면 뒤로도 전송이 가능하여 지진 등 재해가 일어났을 때 전파 탐지기 기능으로 인명 구조를 할 수 있는 등 응용 범위가 광범위하다
피코넷
(PICONET)
- 여러 개의 독립된 통신장치가 블루투스 기술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술이다
- 주로 수십 미터 이내의 좁은 공간에서 네트워크를 형성한다는 점, 정지 또는 이동 중에 있는 장치 모두를 포함한다는 특징이 있다
USN
(Ubiquitous Sensor Network,
유비쿼터스 센서 네트워크)
- 각종 센서로 다양한 정보를 무선으로 수집할 수 있도록 구성한 네트워크이다
- 필요한 모든 것(곳)에 RFID 태그를 부착하고, 이를 통하여 사물의 인식 정보는 물론 주변의 환경정보까지 탐지한 모든 데이터를 관리할 수 있다
SON
(Self Organizing Network,
자동 구성 네트워크)
- 주변 상황에 맞추어 스스로 망을 구성하는 네트워크를 말한다
- 갑작스러운 사용자의 증가나 감소 시에는 자동으로 주변 셀과의 협력을 통해 셀 용량을 변화시키며, 장애가 발생했을 때 자체적인 치유도 가능하다
저전력 블루투스 기술
(BLE; Bluetooth Low Energy)
- 일반 블루투스와 동일한 2.4GHz 주파수 대역을 사용하지만 연결되지 않은 대기 상태에서는 절전 모드를 유지하는 기술이다
- 주로 낮은 전력으로 저용량 데이터를 처리하는 시계, 장난감, 비컨(Beacon), 그리고 착용 컴퓨터 등의 극소형 사물 인터넷에 매우 적합하다
NFC
(Near Field Communication,
근거리 무선 통신)
- 고주파(HF)를 이용한 근거리 무선 통신 기술로, 아주 가까운 거리에서 양방향 통신을 지원하는 RFID 기술의 일종이다
- 13.56MHz 주파수를 이용해 10cm 내에서 최고 424Kbps의 속도로 데이터 전송을 지원하며, 모바일 기기를 통한 결제뿐만 아니라 여행 정보 전송, 교통, 출입 통제, 잠금장치 따위에 광범위하게 활용된다

 

 5. 클라우드 컴퓨팅(Cloud Computing)

  : 각종 컴퓨팅 자원을 중앙 컴퓨터에 두고 인터넷 기능을 갖는 단말기로 언제 어디서나 인터넷을 통해 컴퓨터

    작업을 수행할 수 있는 환경을 의미한다

  - 중앙 컴퓨터는 복수의 데이터 센터를 가상화 기술로 통합한 대형 데이터 센터로, 각종 소프트웨어, 데이터,

    보안 솔루션 기능 등 컴퓨팅 자원을 보유하고 있다

  - 사용자는 키보드와 모니터, 마우스를 갖추고 통신 포트만 연결하면 업무 수행이 가능하다

  - 클라우드 컴퓨팅이 그리드 컴퓨팅(Grid Computing)과 다른 점은 그리드 컴퓨팅이 수많은 컴퓨터를 하나의

    컴퓨터처럼 묶어 분산 처리하는 방식으로 기상 예측이나 우주 문제 등 대규모 연산에 사용된다면, 클라우드

    컴퓨팅은 중앙의 대형 데이터 센터의 컴퓨팅 자원을 필요한 이들에게 필요한 순간에 빌려주는 방식이다

  - 관련 용어

모바일 클라우드 컴퓨팅
(MCC; Mobile Cloud Computing)
클라우드 서비스를 이용하여 소비자와 소비자의 파트너가 모바일 기기로 클라우드 컴퓨팅 인프라를 구성하여 여러 가지 정보와 자원을 공유하는 기술이다
인터클라우드 컴퓨팅
(Inter-Cloud Computing)
- 각기 다른 클라우드 서비스를 연동하거나 컴퓨팅 자원의 동적 할당이 가능하도록 여러 클라우드 서비스 제공자들이 제공하는 클라우드 서비스나 자원을 연결하는 기술이다
- 인터클라우드 컴퓨팅의 서비스 형태
ㄱ. 대등 접속(Peering) : 클라우드 서비스 제공자 간 직접 연계하는 형태
ㄴ. 연합(Federation) : 자원 공유를 기본으로 사용 요구량에 따른 동적 자원 할당을 지원함으로써 논리적으로 하나의 서비스를 제공하는 형태
ㄷ. 중개(Intermediary) : 서비스 제공자 간의 직·간접적인 자원 연계 또는 단일 서비스 제공자를 통한 중개 서비스를 제공하는 형태
파스-타
(PaaS-TA)
- 소프트웨어 개발 환경을 제공하기 위해 개발한 개방형 클라우드 컴퓨팅 플랫폼이다
- 국내 IT 서비스 경쟁력 강화를 목표로 과학기술정보통신부와 한국정보화진흥원이 연구개발(R&D)을 지원하였으며, 인프라 제어 및 관리 환경, 실행 환경, 개발 환경, 서비스 환경, 운영 환경으로 구성되어 있다

 

 6. 기타 용어

모바일 컴퓨팅
(Mobile Computing)
휴대형 기기로 이동하면서 자유로이 네트워크에 접속하여 업무를 처리할 수 있는 환경을 말한다
NDN
(Named Data Networking)
- 콘텐츠 자체의 정보와 라우터 기능만으로 데이터 전송을 수행하는 기술이다
- 콘텐츠 중심 네트워킹(CCN; Content Centric Networking)과 같은 개념이며, 해시 테이블(Hash Table)에 기반을 두는 P2P(Peer-to-Peer) 시스템과 같이 콘텐츠에 담겨 있는 정보와 라우터 기능만으로 목적지를 확정한다
NGN
(Next Generation Network,
차세대 통신망)
- ITU-T에서 개발하고 있는 유선망 기반의 차세대 통신망이다
- 이동통신에서 제공하는 완전한 이동성(Full Mobility)과 하나의 망으로 모든 정보와 서비스(음성, 데이터, 비디오와 같은 모든 형식의 미디어)를 패킷으로 압축하여 전송하는 것을 목표로 한다
올(all)-IP 유선 전화망, 무선 망, 패킷 데이터 망 등 기존의 통신망을 모두 IP 기반의 망으로 통합한 차세대 네트워크이다
WBAN
Wireless Body Area Network)
웨어러블(Wearable) 또는 몸에 심는(Implant) 형태의 센서나 기기를 무선으로 연결하는 개인 영역 네트워킹 기술이다
GIS
(Geographic Information System,
지리 정보 시스템)
지리적인 자료를 수집·저장·분석·출력할 수 있는 컴퓨터 응용 시스템으로, 위성을 이용해 모든 사물의 위치 정보를 제공해 주는 것을 말한다
애드 혹 네트워크
(Ad-hoc Network)
- 재난 현장과 같이 별도의 고정된 유선망을 구축할 수 없는 장소에서 모바일 호스트(Mobile Host)만을 이용하여 구성한 네트워크이다
- 유선망과 기지국이 필요 없고 호스트의 이동에 제약이 없어 빠른 망 구성과 저렴한 비용이 장점이다
네트워크 슬라이싱
(Network Slicing)
5G(IMT-2020)의 핵심기술 중 하나로, 하나의 물리적인 네트워크를 다수의 가상 네트워크로 분리하여 각각의 네트워크를 통해 다양한 고객 맞춤형 서비스를 제공하는 것을 목적으로 하는 네트워크 기술이다
파장 분할 다중화
(WDM,
Wavelength Division Multiplexing)
광섬유를 이용한 통신 기술의 하나로, 파장이 다른 광선끼리는 서로 간섭을 일으키지 않는 성질을 이용하여 서로 다른 복수의 신호를 보냄으로써 여러 대의 단말기가 동시에 통신 회선을 사용할 수 있도록 하는 기술이다
개방형 링크드 데이터
(LOD, Linked Open Data)
- Linked Data와 Open Data의 합성어로, 누구나 사용할 수 있도록 웹상에 공개된 연계 데이터를 의미한다
- 웹상에 존재하는 데이터를 개별 URI로 식별하고, 각 URI에 링크 정보를 부여함으로써 상호 연결된 웹을 지향하는 모형이다
SSO
(Single Sign On)
- 한 번의 로그인으로 개인이 가입한 모든 사이트를 이용할 수 있게 해주는 시스템이다
- 개인정보를 각 사이트마다 일일이 기록해야 하던 불편함을 해소할 수 있다
- 기업에서는 회원에 대한 통합관리가 가능해 마케팅을 극대화시킬 수 있다
스마트 그리드
(Smart Grid)
- 정보 기술을 전력에 접목해 효율성을 높인 시스템으로, 전력 IT라고도 부른다
- 전력선을 기반으로 모든 통신, 정보, 관련 애플리케이션 인프라를 하나의 시스템으로 통합하여 관리함으로써 효율적인 에너지 관리가 가능하다
- 전력망을 지능화, 고도화함으로써 고품질의 전력서비스를 제공하고 에너지 이용효율을 극대화한다

 

•네트워크 구축

 1. 네트워크(Network) 설치 구조

  : 통신망(Communication Network)은 정보를 전달하기 위해서 통신 규약에 의해 연결한 통신 설비의 집합이다

    네트워크 설치 구조는 통신망을 구성하는 요소들을 공간적으로 배치하는 방법, 즉 장치들의 물리적 위치에 따라서

    성형, 링형, 버스형, 계층형, 망형으로 나누어진다

 

 1. 성형(Star, 중앙 집중형)

  : 중앙에 중앙 컴퓨터가 있고, 이를 중심으로 단말장치들이 연결되는 중앙 집중식의 네트워크 구성 형태이다

  - 포인트 투 포인트(Point-to-Point) 방식으로 회선을 연결한다

  - 각 단말장치들은 중앙 컴퓨터를 통하여 데이터를 교환한다

  - 단말장치의 추가와 제거가 쉽다

  - 하나의 단말장치가 고장나더라도 다른 단말장치에는 영향을 주지 않지만, 중앙 컴퓨터가 고장나면 전체 통신망의

    기능이 정지된다

  - 중앙 집중식이므로 교환 노드의 수가 가장 적다

 

 2. 링형(Ring, 루프형)

  : 컴퓨터와 단말장치들을 서로 이웃하는 것끼리 포인트 투 포인트(Point-to-Point) 방식으로 연결시킨 형태이다

  - 분산 및 집중 제어 모두 가능하다

  - 단말장치의 추가/제거 및 기밀 보호가 어렵다

  - 각 단말장치에서 전송 지연이 발생할 수 있다

  - 중계기의 수가 많아진다

  - 데이터는 단방향 또는 양방향응로 전송할 수 있으며, 단방향 링의 경우 컴퓨터, 단말장치, 통신 회선 중 어느

    하나라도 고장나면 전체 통신망에 영향을 미치며, 양방향 링은 노드에 이상이 생겼을 경우 다른 방향으로 우회할

    수 있어 정상적인 노드들끼리는 통신이 가능하다

 

 3. 버스형(Bus)

  : 한 개의 통신 회선에 여러 대의 단말장치가 연결되어 있는 형태이다

  - 물리적 구조가 간단하고, 단말장치의 추가와 제거가 용이하다

  - 단말장치가 고장나더라도 통신망 전체의 영향을 주지 않기 때문에 신뢰성을 높일 수 있다

  - 기밀 보장이 어렵고, 통신 회선의 길이에 제한이 있다

 

 4. 계층형(Tree, 분산형)

  : 중앙 컴퓨터와 일정 지역의 단말장치까지는 하나의 통신 회선으로 연결시키고, 이웃하는 단말장치는 일정 지역

    내에 설치된 중간 단말장치로부터 다시 연결시키는 형태이다

  - 분산 처리 시스템을 구성하는 방식이다

 

 5. 망형(Mesh)

  : 모든 지점의 컴퓨터와 단말장치를 서로 연결한 형태로, 노드의 연결성이 높다

  - 많은 단말장치로부터 많은 양의 통신을 필요로 하는 경우에 유리하다

  - 보통 공중 데이터 통신망에서 사용되며, 통신 회선의 총 경로가 가장 길다

  - 통신 회선 장애 시 다른 경로를 통하여 데이터를 전송할 수 있다

  - 모든 노드를 망형으로 연결하려면 노드의 수가 n개일 때, n(n-1)/2개의 회선이 필요하고 노드당 n-1개의 포트가

    필요하다

 

 6. 네트워크 분류

근거리 통신망
(LAN, Local Area Network)
- 회사, 학교, 연구소 등에서 비교적 가까운 거리에 있는 컴퓨터, 프린터, 테이프 등과 같은 자원을 연결하여 구성한다
- 주로 자원 공유를 목적으로 사용한다
- 사이트 간의 거리가 짧아 데이터의 전송 속도가 빠르고, 에러 발생율이 낮다
- 근거리 통신망에서는 주로 버스형이나 링형 구조를 사용한다
광대역 통신망
(WAN, Wide Area Network)
- 국가와 국가 혹은 대륙과 대륙 등과 같이 멀리 떨어진 사이트들을 연결하여 구성한다
- 사이트 간의 거리가 멀기 때문에 통신 속도가 느리고, 에러 발생률이 높다
- 일정한 지역에 있는 사이트들을 근거리 통신망으로 연결한 후 각 근거리 통신망을 연결하는 방식을 사용한다
VLAN
(Virtual Local Area Network)
- LAN의 물리적인 배치와 상관없이 논리적으로 분리하는 기술로, 접속된 장비들의 성능 및 보안성을 향상시킬 수 있다
- Broadcast Domain을 구분할 수 있게 해주는 기술이다

 

 7. LAN의 표준안

  - IEEE 802의 주요 표준 규격

802.1 전체의 구성, OSI 참조 모델과의 관계, 통신망 관리 등에 관한 규약이다
802.2 논리 링크 제어(LLC) 계층에 관한 규약이다
802.3 CSMA/CD 방식의 매체 접근 제어 계층에 관한 규약이다
802.4 토큰 버스 방식의 매체 접근 제어 계층에 관한 규약이다
802.5 토큰 링 방식의 매체 접근 제어 계층에 관한 규약이다
802.6 도시형 통신망(MAN)에 관한 규약이다
802.9 종합 음성/데이터 네트워크에 관한 규약이다
802.11 무선 LAN에 관한 규약이다

  - 802.11의 버전

802.11(초기 버전) 2,4GHz 대역 전파와 CSMA/CA 기술을 사용해 최고 2Mbps까지의 전송 속도를 지원한다
802.11a 5GHz 대역의 전파를 사용하며, OFDM 기술을 사용해 최고 54Mbps까지의 전송 속도를 지원한다
802.11b 802.11 초기 버전의 개선안으로 등장하였으며, 초기 버전의 대역 전파와 기술을 사용해 최고 11Mbps의 전송 속도로 기존에 비해 5배 이상 빠르게 개선되었다
802.11e 802.11의 부가 기능 표준으로, QoS 기능이 지원되도록 하기 위해 매체 접근 제어(MAC) 계층에 해당하는 부분을 수정하였다
802.11g 2.4GHz 대역의 전파를 사용하지만 5GHz 대역의 전파를 사용하는 802.11a와 동일한 최고 54Mbps까지의 전송 속도를 지원한다
802.11n 2.4GHz 대역과 5GHz 대역을 사용하는 규격으로, 최고 600Mbps까지의 전송 속도를 지원한다

 

 + CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance)

  : 무선 랜에서 데이터 전송 시 매체가 비어있음을 확인한 뒤 충돌을 피하기 위해 일정한 시간을 기다린 후 데이터를

    전송하는 방법이다

  - 회선을 사용하지 않는 경우에도 확인 신호를 전송하여 동시 전송에 의한 충돌을 예방한다

 

 + CSMA/CD (Carrier Sense Multiple Access/Collision Detection)

  : LAN에서 하나의 통신 회선을 여러 단말장치들이 원활하게 공유할 수 있도록 해주는 통신 회선에 대한 접근 방식

    중 하나로, 각 노드가 데이터 프레임을 송신하기 전에 통신 회선을 조사하여 사용중이면 대기하고, 그렇지 않으면

    데이터 프레임을 송신하는 방식이다

 

•경로 제어 / 트래픽 제어

 1. 경로 제어(Routing)의 개요

  : 송·수신 측 간의 전송 경로 중에서 최적 패킷 교환 경로를 결정하는 기능이다

  - 최적 패킷 교환 경로란 어느 한 경로에 데이터의 양이 집중하는 것을 피하면서, 최저의 비용으로 최단 시간에

    송신할 수 있는 경로를 의미한다

  - 경로 제어는 경로 제어표(Routing Table)를 참조해서 이루어지며, 라우터에 의해 수행된다

  - 경로 제어 요소 : 성능 기준, 경로의 결정 시간과 장소, 정보 발생지, 경로 정보의 갱신 시간

 

 2. 경로 제어 프로토콜(Routing Protocol)

  : 효율적인 경로 제어를 위해 네트워크 정보를 생성, 교환, 제어하는 프로토콜을 총칭한다

IGP
(Interior Gateway Protocol,
내부 게이트웨이 프로토콜)
- 하나의 자율 시스템(AS) 내의 라우팅에 사용되는 프로토콜이다

- RIP(Routing Information Protocol)
ㄱ. 현재 가장 널리 사용되는 라우팅 프로토콜로 거리 벡터 라우팅
프로토콜이라고도 불리며, 최단 경로 탐색에 Bellman-Ford 알고리즘이
사용된다
ㄴ. 소규모 동종의 네트워크(자율 시스템, AS) 내에서 효율적인 방법이다
ㄷ. 최대 홉(Hop) 수를 15로 제한하므로 15를 초과하는 경우는 도달할 수 없는
네트워크를 의미하는데 이것은 대규모 네트워크에서는 RIP를 사용할 수
없음을 의미한다
ㄹ. 라우팅 정보를 30초마다 네트워크 내의 모든 라우터에 알리며, 180초 이내에
새로운 라우팅 정보가 수신되지 않으면 해당 경로를 이상 상태로 간주한다

- OSPF(Open Shortest Path First Protocol)
ㄱ. RIP의 단점을 해결하여 새로운 기능을 지원하는 인터넷 프로토콜로, 대규모
네트워크에서 많이 사용된다
ㄴ. 인터넷 망에서 이용자가 최단 경로를 선정할 수 있도록 라우팅 정보에
노드 간의 거리 정보, 링크 상태 정보를 실시간으로 반영하여 네트워크
변화에 신속하게 대처하며 최단 경로로 라우팅을 지원한다
ㄷ. 최단 경로 탐색에 다익스트라(Dijkstra) 알고리즘을 사용한다
ㄹ. 라우팅 정보에 변화가 생길 경우 변화된 정보만 네트워크 내의 모든 라우터에
알린다
ㅁ. 하나의 자율 시스템(AS)에서 동작하면서 내부 라우팅 프로토콜의 그룹에
도달한다
ㅂ. 멀티캐스팅을 지원한다
EGP
(Exterior Gateway Protocol,
외부 게이트웨이 프로토콜)
자율 시스템(AS) 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜이다
BGP
(Border Gateway Protocol)
- 자율 시스템(AS) 간의 라우팅 프로토콜로, EGP의 단점을 보완하기 위해
만들어졌다
- 초기에 BGP 라우터들이 연결될 때에는 전체 경로 제어표(라우팅 테이블)를
교환하고, 이후에는 변화된 정보만을 교환한다

 

 3. 트래픽 제어(Traffic Control)의 개요

  : 네트워크의 보호, 성능 유지, 네트워크 자원의 효율적인 이용을 위해 전송되는 패킷의 흐름 또는 그 양을 조절하는

    기능으로 흐름 제어, 폭주(혼잡) 제어, 교착상태 방지 기법이 있다

 

 4. 흐름 제어(Flow Control)

  : 네트워크 내의 원활한 흐름을 위해 송·수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능이다

  - 송신 측과 수신 측 간의 처리 속도 또는 버퍼 크기의 차이에 의해 생길 수 있는 수신 측 버퍼의

    오버플로(Overflow)를 방지하기 위한 기능이다

정지-대기
(Stop-and-Wait)
- 수신 측의 확인 신호(ACK)를 받은 후에 다음 패킷을 전송하는 방식이다
- 한 번에 하나의 패킷만을 전송할 수 있다
슬라이딩 윈도우
(Sliding Window)
- 확인 신호, 즉 수신 통지를 이용하여 송신 데이터의 양을 조절하는 방식이다
- 수신 측의 확인 신호를 받지 않더라도 미리 정해진 패킷의 수만큼 연속적으로 전송하는 방식으로,
한 번에 여러 개의 패킷을 전송할 수 있어 전송 효율이 좋다
- 송신 측은 수신 측으로부터 확인 신호(ACK) 없이도 보낼 수 있는 패킷의 최대치를 미리
약속받는데, 이 패킷의 최대치가 윈도우 크기(Window Size)를 의미한다
- 윈도우 크기(Window Size)는 상황에 따라 변한다 즉, 수신 측으로부터 이전에 송신한 패킷에 대한
긍정 수신 응답(ACK)이 전달된 경우 윈도우 크기는 증가하고, 수신 측으로부터 이전에 송신한
패킷에 대한 부정 수신 응답(NAK)이 전달된 경우 윈도우 크기는 감소한다

 

 5. 폭주(혼잡) 제어(Congestion Control)

  : 흐름 제어(Flow Control)가 송·수신 측 사이의 패킷 수를 제어하는 기능이라면, 폭주 제어는 네트워크 내의 패킷

    수를 조절하여 네트워크의 오버플로(Overflow)를 방지하는 기능을 한다

느린 시작
(Slow Start)
- 윈도우의 크기를 1, 2, 4, 8, ...과 같이 2배씩 지수적으로 증가시켜 초기에는 느리지만
갈수록 빨라진다
- 전송 데이터의 크기가 임계 값에 도달하면 혼잡 회피 단계로 넘어간다
혼잡 회피
(Congestion Avoidance)
느린 시작(Slow Start)의 지수적 증가가 임계 값에 도달되면 혼잡으로 간주하고 회피를 위해 윈도우의 크기를 1씩 선형적으로 증가시켜 혼잡을 예방하는 방식이다

 

 6. 교착상태(Dead Lock) 방지

  : 교환기 내에 패킷들을 축적하는 기억 공간이 꽉 차 있을 때 다음 패킷들이 기억 공간에 들어가기 위해 무한정

    기다리는 현상을 말한다

  - 패킷이 같은 목적지를 갖지 않도록 할당하고, 교착상태 발생 시에는 교착상태에 있는 한 단말장치를 선택하여

    패킷 버퍼를 폐기한다

 

∙SW / 보안 관련 신기술

 1. SW 관련 용어

인공지능
(AI, Artificial Intelligence)
- 인간의 두뇌와 같이 컴퓨터 스스로 추론, 학습, 판단 등 인간지능적인 작업을 수행하는 시스템이다
- 응용 분야에는 신경망, 퍼지, 패턴 인식, 전문가 시스템, 자연어 인식, 이미지 처리, 컴퓨터 시각, 로봇 공학 등이 있다
뉴럴링크
(Neuralink)
- 미국의 전기자동차 회사 테슬라(Tesla)의 CEO 일론 머스크(Elon Musk)가 사람의 뇌와 컴퓨터를 결합하는 기술을 개발하기 위해 설립한 회사이다
- 작은 전극을 뇌에 이식함으로써 생각을 업로드하고 다운로드하는 것을 목표로 삼고 있다
딥 러닝
(Deep Learning)
- 인간의 두뇌를 모델로 만들어진 인공 신경망(ANN; Artificial Neural Network)을 기반을오 하는 기계 학습 기술이다
- 마치 사람처럼 스스로 학습할 수 있어 많은 데이터를 정형화하지 않고도 스스로 필요한 데이터를 수집·분석하여 고속으로 처리할 수 있다
전문가 시스템
(Expert System)
- 의료 진단 등과 같은 특정 분야의 전문가가 수행하는 고도의 업무를 지원하기 위한 컴퓨터 응용 프로그램이다
- 지식 베이스(Knowledge Base)라는 데이터베이스와 지식 베이스에 기초하여 추론을 실행하는 추론 기구(Inference Engine)를 활용하여 결정을 내리거나 문제를 해결한다
가상현실
(VR, Virtual Reality)
컴퓨터 등을 사용하여 실제와 유사하지만 실제가 아닌 환경이나 상황을 구현하는 기술이다
증강현실
(AR, Augmented Reality)
실제 촬영한 화면에 가상의 정보를 부가하여 보여주는 기술이다
혼합현실
(MR; Mixed Reality)
가상현실과 현실세계를 합쳐, 현실의 물리적인 객체와 가상의 객체가 상호 작용할 수 있는 환경을 구현하는 기술이다
그레이웨어
(Grayware)
소프트웨어를 제공하는 입장에서는 악의적이지 않은 유용한 소프트웨어라고 주장할 수 있지만 사용자 입장에서는 유용할 수도 있고 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성 코드나 악성 공유웨어를 말한다
매시업
(Mashup)
5G(MIT-2020)의 핵심기술 중 하나로, 하나의 물리적인 네트워크를 다수의 가상 네트워크로 분리하여 각각의 네트워크를 통해 다양한 고객 맞춤형 서비스를 제공하는 것을 목적으로 하는 네트워크 기술이다
리치 인터넷 애플리케이션
(RIA; Rich Internet Application)
플래시 애니메이션 기술과 웹 서버 애플리케이션 기술을 통합하여 기존 HTML보다 역동적이고 인터랙티브한 웹페이지를 제공하는 신개념 플래시 웹페이지 제작 기술이다
시맨틱 웹
(Semantic Web)
- 컴퓨터가 사람을 대신하여 정보를 읽고 이해하고 가공하여 새로운 정보를 만들어낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹이다
- 시맨틱 웹을 구성하는 핵심 기술로는 웹 자원(Resource)을 서술하기 위한 자원 서술 기술, 온톨로지(Ontology)를 통한 지식 서술 기술, 통합적으로 운영하기 위한 에이전트(Agent) 기술들을 들 수 있다
증발품
(Vaporware)
판매 계획 또는 배포 계획은 발표되었으나 실제로 고객에게 판매되거나 배포되지 않고 있는 소프트웨어이다
오픈 그리드 서비스 아키텍처
(OGSA;
Open Grid Service Architecture)
- 애플리케이션 공유를 위한 웹 서비스를 그리드 상에서 제공하기 위해 만든 개방형 표준이다
- 웹 서비스 표준을 적극적으로 따르고 기존의 웹 개발 툴들을 그대로 사용할 수 있다는 장점이 있다
서비스 지향 아키텍처
(SOA;
Service Oriented Architecture)
- 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처이다
- 기업의 IT 시스템을 비즈니스에 맞춰 유연하게 사용할 수 있다는 것이 장점이다
- SOA 기반 애플리케이션 구성 계층 : 표현(Presentation) 계층, 업무 프로세스(Biz-Process) 계층, 서비스 중간(Service Intermediary) 계층, 애플리케이션(Application) 계층, 데이터 저장(Persistency) 계층
서비스형 소프트웨어
(SaaS; Software as a Service)
- 소프트웨어의 여러 기능 중에서 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어이다
- 공급업체가 하나의 플랫폼을 이용해 다수의 고객에게 소프트웨어 서비스를 제공하고, 사용자는 이용한 만큼 돈을 지급하는 방식이다
복잡 이벤트 처리
(CEP; Complex Event Processing)
- 실시간으로 발생하는 많은 사건들 중 의미가 있는 것만을 추출할 수 있도록 사건 발생 조건을 정의하는 데이터 처리 방법이다
- 금융, 통신, 전력, 물류, 국방 등에서 대용량 데이터 스트림에 대한 요구에 실시간으로 대응하기 위하여 개발된 기술이다
디지털 트윈(Digital Twin) - 현실속의 사물을 소프트웨어로 가상화한 모델로, 실제 자산의 특성에 대한 정확한 정보를 얻을 수 있고, 최적화, 돌발사고 최소화, 생산성 증가 등 설계부터 제조, 서비스에 이르는 모든 과정의 효율성을 향상시킬 수 있다
- 주로 현실속의 사물을 대신해 다양한 상황을 모의 실험하기 위한 용도로 사용한다
텐서플로(TensorFlow) - 구글의 구글 브레인 팀이 만든, 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다
- C++ 언어로 제작되었고, 구글 검색, 음성 인식, 번역 등의 구글 서비스 전반에서 다양하게 사용되고 있다

 

 2. 보안 관련 용어

블록체인
(BlockChain)
P2P 네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자(Peer)의 디지털 장비에 분산 저장하는 기술이다
분산 원장 기술
(DLT; Distributed Ledger Technology)
- 중앙 관리자나 중앙 데이터 저장소가 존재하지 않고 P2P 망내의 참여자들에게 모든 거래 목록이 분산 저장되어 거래가 발생할 때마다 지속적으로 갱신되는 디지털 원장이다
- 대표적인 사례로 블록체인(Blockchain)이 있다
양자 암호키 분배
(QKD; Quantum Key Distribution)
- 양자 통신을 위해 비밀키를 분배하여 관리하는 기술이다
- 두 시스템이 암호 알고리즘 동작을 위한 비밀키를 안전하게 공유하기 위해 양자 암호키 분배 시스템을 설치하여 운용하는 방식으로 활용된다
프라이버시 강화 기술
(PET; Privacy Enhancing Technology)
개인정보 위험 관리 기술로, 암호화, 익명화 등 개인정보를 보호하는 기술에서 사용자가 직접 개인정보를 통제하기 위한 기술까지 다양한 사용자 프라이버시 보호 기술을 통칭한다
공통 평가 기준
(CC; Common Criteria)
- ISO 15408 표준으로 채택된 정보 보호 제품의 평가 기준이다
- 시스템의 평가 원칙과 평가 모델, 시스템 보안 기능 요구사항(11개), 시스템의 7등급 평가를 위한 보증 요구사항(8개)으로 구성되어 있다
개인정보 영향평가 제도
(PIA; Privacy Impact Assessment)
개인 정보를 활용하는 새로운 정보시스템의 도입 및 기존 정보시스템의 중요한 변경 시 시스템의 구축·운영이 기업의 고객은 물론 국민의 사생활에 미칠 영향에 대해 미리 조사·분석·평가하는 제도이다
소프트웨어 에스크로(임치)
(Software Escrow)
소프트웨어 개발자의 지식재산권을 보호하고 사용자는 저렴한 비용으로 소프트웨어를 안정적으로 사용 및 유지보수 받을 수 있도록 소스 프로그램과 기술 정보 등을 제3의 기관에 보관하는 것이다
서비스형 블록체인
(BaaS; Blockchain as a Service)
- 블록체인 앱의 개발 환경을 클라우드 기반으로 제공하는 서비스이다
- 블록체인 네트워크에 노드의 추가 및 제거가 용이하고, 블록체인 플랫폼마다 다른 블록체인 기술을 보다 편리하게 사용할 수 있게 한다
OWASP
(the Open Web Application Security Project,
오픈 웹 애플리케이션 보안 프로젝트)
- 웹 정보 노출이나 악성 코드, 스크립트, 보안이 취약한 부분을 연구하는 비영리 단체이다
- 보안 취약점 중 보안에 미치는 영향이 큰 것을 기준으로 선정한 10대 웹 애플리케이션 취약점을 3~4년에 한 번씩 발표하고 있다

 

∙HW 관련 신기술

 1. 고가용성(HA; High Availability)

  : 긴 시간동안 안정적인 서비스 운영을 위해 장애 발생 시 즉시 다른 시스템으로 대체 가능한 환경을 구축하는

    메커니즘을 의미한다

  - 가용성(Availability)을 극대화하는 방법으로는 클러스터, 이중화 등이 있다

 

 2. 3D Printing(Three Dimension Printing)

  : 대상을 평면에 출력하는 것이 아니라 손으로 만질 수 있는 실제 물체로 만들어내는 것을 말한다

  - 아주 얇은 두께로 한층한층 적층시켜 하나의 형태를 만들어내는 기술을 이용한다

  - 건축가나 항공우주, 전자, 공구 제조, 자동차, 디자인, 의료 분야에서 사용되고 있다

 

 3. 4D Printing(Fourth Dimension Printing)

  : 특정 시간이나 환경 조건이 갖추어지면 스스로 형태를 변화시키거나 제조되는 자가 조립(Self-Assembly) 기술이

    적용된 제품을 3D Printing하는 기술을 의미한다

  - 2013년 4월 TED(Technology, Entertainment, Design) 강연에서 미국 MIT 자가 조립 연구소

    (Self-Assembly Lab)의 스카일러 티빗츠(Skylar Tibbits) 교수에 의해 처음 공개되었다

  - 4D Printing을 위해서는 인간의 개입 없이 열·진동·습도·중력 등 다양한 환경이나 에너지원에 자극 받아 변화하는

    스마트 소재가 필요하며, 이는 형상기억합금이나 나노 기술을 통해 전기회로를 내장하는 방법 등으로 제조된다

  - 4D Printing으로 제조된 제품에 전기로 열을 가하면 기존에 설정한 모양으로 접히는 종이접기 로봇이나, 접힌

    상태에서 출력되어 완전한 형태로 변화하는 키네메틱스 드레스(Kinamatics Dress) 등이 선보여진 바 있다

 

 4. RAID(Redundant Array of Inexpensive Disk, Redundant Array of Independant Disk)

  : 여러 개의 하드디스크로 디스크 배열을 구성하여 파일을 구성하고 있는 데이터 블록들을 서로 다른 디스크들에

    분산 저장할 경우 그 블록들을 여러 디스크에서 동시에 읽거나 쓸 수 있으므로 디스크의 속도가 매우 향상되는데,

    이 기술을 RAID라고 한다

  - 어느 한 디스크에만 결함이 발생해도 전체 데이터에 파일이 손상되는 문제가 발생한다 이러한 문제점을 해결하기

    위해 디스크 배열에 오류 검출 및 복구를 위한 여분의 디스크들을 추가하여 오류가 발생해도 원래의 데이터를

    복구할 수 있게 했다

  - 오류 검출 및 정정 방법에 따라 RAID1~RAID5까지 다섯 종류가 있다

 

 5. 4K 해상도

  : 차세대 고화질 모니터의 해상도를 자칭하는 용어이다

  - 가로 픽셀 수가 3840이고, 세로 픽셀 수가 2160인 영상의 해상도를 말하는데, 이는 Full HDTV(1920x1080)의

    가로·세로 2배, 총 4배에 해당하는 초고화질의 영상이다

  - UHDTV는 차세대 TV 규격으로, HDTV 해상도의 4배에 해당하는 4K, 16배에 해당하는 8K 해상도를 채택하고

    있다

 

 6. 앤 스크린(N-Screen)

  : N개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 이용할 수 있는 서비스를 말한다

  - PC, TV, 휴대폰에서 동일한 콘텐츠를 끊임 없이 이용할 수 있는 것은 물론 사용자가 가지고 있는 여러 개의

    단말기에서도 동일한 콘텐츠를 끊김 없이 이용할 수 있다

 

 7. 컴패니언 스크린(Companion Screen)

  : 앤 스크린의 한 종류로, TV 방송 시청 시 방송 내용을 공유하며 추가적인 기능을 수행할 수 있는 스마트폰,

    태블릿PC 등을 의미하고 세컨드 스크린(Second Screen)이라고도 불린다

  - 이용자는 IP망을 통해 TV와 스마트폰, PC 등을 연결하여 시청 중인 방송 프로그램의 관련 정보, 가수의

    영상(VOD), 음원(AOD) 등을 이용하는 것이 가능하며, 소셜TV와 같이 시청 중에 SNS를 통해 다른 사람들과

    의견을 공유할 수도 있다

 

 8. 신 클라이언트 PC(Thin Client PC)

  : 하드디스크나 주변 장치 없이 기본적인 메모리만 갖추고 서버와 네트워크로 운용되는 개인용 컴퓨터를 말하는

    것으로, 서버 기반 컴퓨팅과 관계가 깊다

  - 클라이언트는 프로그램이 필요할 때마다 서버에 접속하여 소프트웨어를 내려받기만 하면 되며, 기억장치가

    없으므로 데이터는 서버 측에서 한꺼번에 관리한다

  - 신 클라이언트 PC는 기억장치를 따로 두지 않기 때문에 PC를 분실하더라도 정보가 유출될 우려가 없다

  - 신 클라이언트 PC는 원래 유지보수 등에 발생하는 비용을 절감하기 위해 고안되었지만, 정보 유출 방지를 위해

    이용되면서 재택근무 도입을 검토하고 있는 기업들의 주목을 받고 있다

 

 9. 패블릿(Phablet)

  : 폰(Phone)과 태블릿(Tablet)의 합성어로, 태블릿 기능을 포함한 5인치 이상의 대화면 스마트폰을 말한다

  - 동영상 시청, 웹 브라우징 등 각종 서비스가 월등하므로 대화면 기기를 한 번 사용해보면 작은 기기를 사용할 수

    없다는 이른바 ‘톱니 효과(Ratchet Effect)’가 적용될 수 있따는 점에서 의미 있는 프리미엄 제품이다

 

 10. C형 유에스비(Universal Serial Bus Type-C, USB Type-C, USB-C)

  : 범용 인터페이스 규격인 유에스비(USB; Universal Serial Bus)의 표준 중 하나로, 2014년 8월

    USB IF(Implementers Forum)에서 발표되었다

  - 기존 A형에 비하여 크기가 작고, 24핀으로 위아래의 구분이 없어 어느 방향으로든 연결이 가능하다

  - 데이터 전송 속도는 초당 10기가비트(Gbps)이며, 전력은 최대 100W까지 전송이 가능하다

  - 전력 전송량이 증대됨에 따라 전원 케이블을 필요로 하던 주변기기들을 C형 유에스비만으로 연결할 수 있게

    되면서 기기 간 연결의 편의성이 증대되었다

 

 11. 멤스(MEMS; Micro-Electro Mechanical Systems)

  : 초정밀 반도체 제조 기술을 바탕으로 센서, 엑추에이터(Actuator) 등 기계 구조를 다양한 기술로 미세 가공하여

    전기기계적 동작을 할 수 있도록 한 초미세 장치이다

  - 일반적으로 작은 실리콘 칩 위에 마이크로 단위의 작은 부품과 이들을 입체적으로 연결하는 마이크로 회로들로

    구성되며, 정보기기의 센서나 프린터 헤드, HDD 자기 헤드, 기타 환경, 의료 및 군사 용도로 이용된다

  - 최근의 초소형이면서 고도의 복잡한 동작을 하는 마이크로시스템이나 마이크로머신들은 대부분 멤스 기술을

    사용한다

 

 12. 트러스트존 기술(TrustZone Technology)

  : 칩 설계회사인 ARM(Advanced RISC Machine)에서 개발한 기술로, 하나의 프로세서(Processor) 내에 일반

    애플리케이션을 처리하는 일반 구역(Normal World)과 보안이 필요한 애플리케이션을 처리하는 보안 구역

    (Secure World)으로 분할하여 관리하는 하드웨어 기반의 보안 기술이다

  - 트러스트존 기술을 적용한 프로세서를 사용하면 결제, 인증서, 기밀문서 등과 같이 보안이 필요한 데이터들을

    취급하는 애플리케이션을 외부 공격에 노출하지 않고 운영체제(OS) 수준에서 안전하게 보호하는 것이 가능하다

 

 13. 엠디스크(M-DISC, Millennial DISC)

  : 한 번의 기록만으로 자료를 영구 보관할 수 있는 광 저장 장치이다

  - 디스크 표면의 무기물층에 레이저를 이용해 자료를 조각해서 기록한다 기존의 염료층에 표시하는 방식과 달리

    물리적으로 조각하는 방식 덕분에 시간이 가도 변하지 않는 금속 활자처럼 빛, 열, 습기 등의 외부 요인에 영향을

    받지 않는다

  - 미국의 밀레니어터(Millenniata)사에서 개발되었으며, 디지털 비디오 디스크(DVD)와 블루레이 디스크

    (Blue-ray Disk)에 적용된다

 

 14. 멤리스터(Memristor)

  : 메모리(Memory)와 레지스터(Register)의 합성어로, 전류의 방향과 양 등 기존의 경험을 모두 기억하는 특별한

    소자이다

  - 레지스터(Register), 커패시터(Capacitor), 인덕터(Inductor)에 이어 네 번째 전자회로 구성 요소라 불리고 있다

  - 전원 공급이 끊어졌을 때도 직전에 통과한 전류의 방향과 양을 기억하기 때문에 다시 전원이 공급되면 기존의

    상태가 그대로 복원된다 컴퓨터를 예로 들면, 문서 작업을 하다 전원을 끈 뒤 다시 켜면 작업했던 상태 그대로

    남아 있는 것이다 이를 이용하면 수분이 소요되는 부팅 시간이 몇 초로 줄어들 수 있다

 

∙Secure OS

 : 기존의 운영체제(OS)에 내재된 보안 취약점을해소하기 위해 보안 기능을 갖춘 커널을 이식하여 외부의

   침입으로부터 시스템 자원을 보호하는 운영체제를 의미한다

 - 보안 커널은 보안 기능을 갖춘 커널을 의미하며, TCB를 기반으로 참조 모니터의 개념을 구현하고 집행한다

 - 보안 커널의 보호 대상에는 메모리와 보조기억장치, 그리고 그곳에 저장된 데이터, 하드웨어 장치, 자료 구조,

   명령어, 각종 보호 메커니즘 등이 있다

 - 보호 방법을 구현하기 복잡한 것부터 차례로 분류하면 다음과 같다

  ㄱ. 암호적 분리(Cryptographic Separation) : 내부 정보를 암호화하는 방법

  ㄴ. 논리적 분리(Logical Separation) : 프로세스의 논리적 구역을 지정하여 구역을 벗어나는 행위를 제한하는 방법

  ㄷ. 시간적 분리(Temporal Separation) : 동일 시간에 하나의 프로세스만 수행되도록 하여 동시 실행으로 발생하는

       보안 취약점을 제거하는 방법

  ㄹ. 물리적 분리(Physical Separation) : 사용자별로 특정 장비만 사용하도록 제한하는 방법

 

 + 참조 모니터(Reference Monitor)

  : 보호대상의 객체에 대한 접근통제를 수행하는 추상머신이며, 이것을 실제로 구현한 것이 보안 커널입니다

  - 보안 커널 데이터베이스(SKDB; Security Kernel Database)를 참조하여 객체에 대한 접근 허가 여부를

    결정합니다

  - 참조 모니터와 보안 커널은 3가지 특징을 갖습니다

   ㄱ. 격리성(Isolation) : 부정 조작이 불가능해야 합니다

   ㄴ. 검증가능성(Verifiability) : 적절히 구현되었다는 것을 확인할 수 있어야 합니다

   ㄷ. 완전성(Completeness) : 우회가 불가능해야 합니다

 

 1. Secure OS의 보안 기능

식별 및 인증 각 접근 주체에 대한 안전하고 고유한 식별 및 인증 기능
임의적 접근통제 - 소속 그룹 또는 개인에 따라 부여된 권한에 따라 접근을 통제하는 기능
- DAC(Discretionary Access Control) 또는 신분 기반 정책이라고도 한다
강제적 접근통제 - 접속 단말 및 접속 방법, 권한, 요청 객체의 특성 등 여러 보안 속성이 고려된 규칙에 따라 강제적으로 접근을 통제하는 기능
- MAC(Mandatory Access Control) 또는 규칙 기반 정책이라고도 한다
객체 재사용 보호 메모리에 기존 데이터가 남아있지 않도록 초기화하는 기능
완전한 조정 우회할 수 없도록 모든 접근 경로를 완전하게 통제하는 기능
신뢰 경로 비밀번호 변경 및 권한 설정 등과 같은 보안 작업을 위한 안전한 경로를 제공하는 기능
감사 및 감사기록 축소 - 모든 보안 관련 사건 및 작업을 기록(Log)한 후 보호하는 기능
- 막대한 양의 기록들을 분석하고 축소하는 기능

 

•DB 관련 신기술

 1. 빅데이터(Big Data)

  : 기존의 관리 방법이나 분석 체계로는 처리하기 어려운 막대한 양의 정형 또는 비정형 데이터 집합으로, 스마트

    단말의 빠른 확산, 소셜 네트워크 서비스의 활성화, 사물 네트워크의 확대로 데이터 폭발이 더욱 가속화되고 있다

  - 빅데이터가 주목받고 있는 이유는 기업이나 정부, 포털 등이 빅데이터를 효과적으로 분석함으로써 미래를 예측해

    최적의 대응 방안을 찾고, 이를 수익으로 연결하여 새로운 가치를 창출하기 때문이다

 

 2. 브로드 데이터(Broad Data)

  : 다양한 채널에서 소비자와 상호 작용을 통해 생성된, 기업 마케팅에 있어 효율적이고 다양한 데이터이며, 이전에

    사용하지 않거나 알지 못했던 새로운 데이터나, 기존 데이터에 새로운 가치가 더해진 데이터를 말한다

  - 대량의 자료를 뜻하는 빅데이터와는 달리 다양한 정보를 뜻하는 것으로, 소비자의 SNS 활동이나 위치 정보 등이

    이에 속한다

  - IBM은 아시아 유통 데이터 분석 리포트를 통해 브로드 데이터의 중요성을 강조하기도 했다

 

 3. 메타 데이터(Meta Data)

  : 일련의 데이터를 정의하고 설명해 주는 데이터이다 컴퓨터에서는 데이터 사전의 내용, 스키마 등을 의미하고,

    HTML 문서에서는 메타 태그 내의 내용이 메타 데이터이다 방송에서는 방대한 분량의 저작물을 신속하게

    검색하기 위한 촬영 일시, 장소, 작가, 출연자 등과 음원의 검색을 위한 작곡자나 가수명 등을 메타 데이터로

    처리한다

  - 여러 용도로 사용되나 주로 빠르게 검색하거나 내용을 간략하고 체계적으로 하기 위해 많이 사용된다

 

 4. 디지털 아카이빙(Digital Archiving)

  : 디지털 정보 자원을 장기적으로 보존하기 위한 작업을 말한다 아날로그 콘텐츠는 디지털로 변환한 후 압축해서

    저장하고, 디지털 콘텐츠도 체계적으로 분류하고 메타 데이터를 만들어 DB화하는 작업이다

  - 디지털 아카이빙은 늘어나는 정보 자원의 효율적인 관리와 이용을 위해 필요한 작업이다

 

 5. 하둡(Hadoop)

  : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼이다

  - 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할

    수 있도록 개발된 자바 소프트웨어 프레임워크로, 구글, 야후 등에 적용되고 있다

  - 하둡과 관계형 데이터베이스(RDB) 간 대용량 데이터를 전송할 때 스쿱(Sqoop)이라는 도구를 이용한다

 

 6. 맵리듀스(MapReduce)

  : 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델로, 흩어져 있는 데이터를 연관성 있는

    데이터 분류로 묶는 Map 작업을 수행한 후 중복 데이터를 제거하고 원하는 데이터를 추출하는 Reduce 작업을

    수행한다

  - Googld에 의해 고안되었으며, 대표적인 대용량 데이터 처리를 위한 병렬 처리 기법으로 많이 사용되고 있다

 

 7. 타조(Tajo)

  : 오픈 소스 기반 분산 컴퓨팅 플랫폼인 아파치 하둡(Apache Hadoop) 기반의 분산 데이터 웨어하우스 프로젝트로,

    우리나라가 주도하여 개발하고 있다

  - 하둡(Hadoop)의 빅데이터를 분석할 때 맵리듀스(Mapreduce)를 사용하지 않고 구조화 질의 언어(SQL)를

    사용하여 하둡 분산 파일 시스템(HDFS; Hadoop Distributed File System) 파일을 바로 읽어낼 수 있다

  - 대규모 데이터 처리와 실시간 상호 분석에 모두 사용할 수 있다

 

 8. 데이터 다이어트(Data Diet)

  : 데이터를 삭제하는 것이 아니라 압축하고, 중복된 정보는 중복을 배제하고, 새로운 기준에 따라 나누어 저장하는

    작업이다

  - 인터넷과 이동통신 이용이 늘면서 각 기관·기업의 데이터베이스에 쌓인 방대한 정보를 효율적으로 관리하기 위해

    대두된 방안으로, 같은 단어가 포함된 데이터들을 한 곳에 모아 두되 필요할 때 제대로 찾아내는 체계를 갖추는

    것이 중요하다

 

 9. 데이터 마이닝(Data Mining)

  : 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한

    기법이다

  - 대량의 데이터를 분석하여 데이터 속에 내재되어 있는 변수 사이의 상호관계를 규명하여 패턴화함으로써 효율적인

    데이터 추출이 가능하다

 

 10. OLAP(Online Analytical Processing)

  : 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식을 말한다

  - 데이터 웨어하우스나 데이터 마트와 같은 시스템과 상호 연관되는 정보 시스템이다

  - OLAP 연산 : Roll-up, Drill-down, Drill-through, Drill-across, Pivoting, Slicing, Dicing

 

•회복 / 병행제어

 1. 회복(Recovery)

  : 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로

    복구하는 작업이다

  - 장애의 유형

   ㄱ. 트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 트랜잭션 내부의 비정상적인

        상황으로 인하여 프로그램 실행이 중지되는 현상

   ㄴ. 시스템 장애 : 데이터베이스에 손상을 입히지는 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착상태 등에

        의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상

   ㄷ. 미디어 장애 : 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는

        전부가 물리적으로 손상된 상태

  - 회복 관리기(Recovery Management)

   ㄱ. DBMS의 구성 요소이다

   ㄴ. 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터 베이스에 생성했던 모든 변화를 취소(Undo)

        시키고, 트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 담당한다

   ㄷ. 메모리 덤프, 로그(Log)를 이용하여 회복을 수행한다

 

 2. 회복 기법

연기 갱신 기법
(Deferred Update)
- 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법이다
- 트랜잭션이 수행되는 동안 갱신된 내용은 일단 Log에 보관된다
- 트랜잭션의 부분 완료(성공적인 완료 직전) 시점에 Log에 보관한 갱신 내용을 실제
데이터베이스에 기록한다
- 트랜잭션이 부분 완료되기 전에 장애가 발생하여 트랜잭션이 Rollback되면 트랜잭션이 실제
데이터베이스에 영향을 미치지 않았기 때문에 어떠한 갱신 내용도 취소(Undo)시킬 필요 없이
무시하면 된다
- 재시도(Redo) 작업만 가능하다
즉각 갱신 기법
(Immediate Update)
- 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법이다
- 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들은 Log에 보관시킨다
- 데이터베이스 로그(Log)를 필요로 하는 회복 기법이다
- 회복 작업을 할 경우에는 Redo와 Undo 모두 사용 가능하다
그림자 페이지 대체 기법
(Shadow Paging)
- 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인
그림자 페이지로 별도 보관해 놓고, 실제 페이지를 대상으로 트랜잭션에 의한 갱신 작업을
하다가 장애가 발생하여 트랜잭션 작업을 Rollback시킬 때, 갱신된 이후의 실제 페이지 부분에
그림자 페이지를 대체하여 회복시키는 기법이다
- 로그, Undo 및 Redo 알고리즘이 필요 없다
검사점 기법
(Check Point)
트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관해 두고, 장애 발생 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 하여 회복시간을 절약하도록 하는 기법이다

 

 3. 병행제어(Concurrency Control)

  : 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이

    데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 것이다

  - 병행제어의 목적

   ㄱ. 데이터베이스의 공유를 최대화한다

   ㄴ. 시스템의 활용도를 최대화한다

   ㄷ. 데이터베이스의 일관성을 유지한다

   ㄹ. 사용자에 대한 응답 시간을 최소화한다

 

 4. 병행제어 기법의 종류

로킹
(Locking)
- 주요 데이터의 액세스를 상호 베타적으로 하는 것이다
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이
허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다
타임 스탬프 순서
(Time Stamp Ordering)
- 동시성 제어를 위한 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리
선택하는 기법들 중에서 가장 보편적인 방법이다
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기
전에 시간표(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을
수행하는 기법이다
- 교착상태가 발생하지 않는다
최적 병행수행
(검증 기법, 확인 기법,
낙관적 기법)
병행수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read Only) 트랜잭션일 경우, 트랜잭션 간의 충동률이 매우 낮아서 병행제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법이다
다중 버전 기법 - 타임 스탬프의 개념을 이용하는 기법으로, 다중 버전 타임 스탬프 기법이라고도
한다
- 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로
관리하지만, 다중 버전 기법은 갱신될 때마다의 버전을 부여하여 관리한다

 

 + 로킹 단위(Locking Granularity)

  - 병행제어에서 한꺼번에 로딩할 수 있는 객체의 크기를 의미합니다

  - 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있습니다

  - 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아

    관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아집니다

 

 5. 병행수행의 문제점

  : 병행제어 기법에 의한 제어 없이 트랜잭션들이 데이터베이스에 동시에 접근하도록 허용할 경우 갱신 분실,

    비완료 의존성, 모순성, 연쇄 복귀 등의 문제점이 발생한다

갱신 분실
(Lost Update)
두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상이다
비완료 의존성
(Uncommitted
Dependency)
- 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는
현상이다
- 임시 갱신이라고도 한다
모순성
(Inconsistency)
- 두 개의 트랜잭션이 병행수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제이다
- 불일치 분석(Inconsistent Analysis)이라고도 한다
연쇄 복귀
(Cascading Rollback)
병행수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback하는 경우 다른 트랜잭션도 함께 Rollback되는 현상이다

 

•교착 상태(Dead Lock)

 : 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가

   점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미한다

 

 1. 교착상태 발생의 필요 충분 조건

  : 다음의 네 가지 조건이 충족되어야 하는데, 이 네 가지 조건 중 하나라도 충족되지 않으면 교착상태가 발생하지

    않는다

상호 배제
(Mutual Exclusion)
한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다
점유와 대기
(Hold and Wait)
최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다
비선점
(Non-preemption)
다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다
환형 대기
(Circular Wait)
공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스들의 자원을 요구해야 한다

 

 2. 교착상태의 해결 방법

예방 기법
(Prevention)
- 교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착상태 발생의 네 가지 조건
중에서 어느 하나를 제거(부정)함으로써 수행된다
- 자원의 낭비가 가장 심한 기법이다
회피 기법
(Avoidance)
- 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법으로,
주로 은행원 알고리즘(Banker's Algorithm)이 사용된다
- 은행원 알고리즘(Banker's Algorithm) : E. J. Dijkstra가 제안한 것으로, 은행에서 모든 고객의
요구가 충족되도록 현금을 할당하는 데서 유래한 기법
발견 기법
(Detection)
- 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것을
의미한다
- 교착상태 발견 알고리즘과 자원 할당 그래프 등을 사용할 수 있다
회복 기법
(Recovery)
교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것을 의미한다

∎ 3장 소프트웨어 개발 보안 구축

 

∙Secure SDLC

 : 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것을 의미한다

 - 소프트웨어의 유지 보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화하기 위해 등장하였다

 - 요구사항 분석, 설계, 구현, 테스트, 유지 보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동을 제시한다

 - Secure SDLC의 대표적인 방법론

CLASP - Secure Software 사에서 개발하였으며, SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론이다
- 활동 중심, 역할 기반의 프로세스로 구성되어 있으며, 현재 운용 중인 시스템에 적용하기에 적합하다
SDL - 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론이다
- 전통적인 나선형 모델을 기반으로 한다
Seven Touchpoints - 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론이다
- 설계 및 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트를 수행한다
- SDLC의 각 단계에 관련된 7개의 보안 강화 활동을 수행한다

 

 1. 요구사항 분석 단계에서의 보안 활동

  : 요구사항 분석 단계에서는 보안 항목에 해당하는 요구사항을 식별하는 작업을 수행한다

  - 전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류한다

  - 조직의 정보보호 관련 보안 정책을 참고하여 소프트웨어 개발에 적용할 수 있는 보안 정책 항목들의 출처,

    요구 수준, 세부 내용 등을 문서화한다

 

 + 보안 요소

  : 보안 3개 요소에는 기밀성, 무결성, 가용성이 있으며, 그 외에도 인증, 부인 방지 등이 있습니다

기밀성
(Confidentiality)
시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용됩니다
정보가 전송 중에 노출되더라도 데이터를 읽을 수 없습니다
무결성
(Integrity)
시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있습니다
가용성
(Availability)
인가받은 사용자는 언제라도 사용할 수 있습니다
인증
(Authentication)
시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위를 말합니다
대표적 방법으로는 패스워드, 인증용 카드, 지문 검사 등이 있습니다
부인 방지
(NonRepudation)
데이터를 송·수신한 자가 송·수신 사실을 부인할 수 없도록 송·수신 증거를 제공합니다

 

 2. 설계 단계에서의 보안 활동

  : 설계 단계에서는 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성한다

  - 소프트웨어에서 발생할 수 있는 위협을 식별하여 보안대책, 소요예산, 사고 발생 시 영향 범위와 대응책 등을

    수립한다

  - 네트워크, 서버, 물리적 보안, 개발 프로그램 등 환경에 대한 보안통제 기준을 수립하여 설계에 반영한다

   ㄱ. 네트워크 : 외부의 사이버 공격으로부터 개발 환경을 보호하기 위해 네트워크를 분리하거나 방화벽을 설치한다

   ㄴ. 서버 : 보안이 뛰어난 운영체제를 사용하고 보안 업데이트, 외부접속에 대한 접근통제 등을 실시한다

   ㄷ. 물리적 보안 : 출입통제, 개발 공간 제한, 폐쇄회로 등의 감시설비를 설치한다

   ㄹ. 개발 프로그램 : 허가되지 않은 프로그램들을 통제하고 지속적인 데이터 무결성 검사를 실시한다

 

 3. 구현 단계에서의 보안 활동

  : 구현 단계에서는 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항들을

    구현한다

  - 개발 과정 중에는 지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점을 최소화해야 한다

  - 코드 점검 및 소스 코드 진단 작업을 통해 소스 코드의 안정성을 확보해야 한다

 

 + 시큐어 코딩(Secure Coding)

  : 소프트웨어의 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하며 코딩하는

    것을 의미합니다

  - 보안 취약점을 사전에 대응하여 안정성과 신뢰성을 확보하기 위해 사용됩니다

  - 보안 정책을 바탕으로 시큐어 코딩 가이드를 작성하고, 개발 참여자에게는 시큐어 코딩 교육을 실시해야 합니다

 

 4. 테스트 단계에서의 보안 활동

  : 테스트 단계에서는 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지

    점검한다

  - 동적 분석 도구 또는 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결여부를 검증한다

  - 설계 단계에서 식별된 위협들 외에도 구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트

    계획을 수립하고 시행한다

  - 테스트 단계에서 수행한 모든 결과는 문서화하여 보존하고, 개발자에게 피드백 되어야 한다

 

 5. 유지보수 단계에서의 보안 활동

  : 유지보수 단계에서는 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들을 식별하고, 사고 발생 시 이를

    해결하고 보안 패치를 실시한다

 

∙세션 통제

 : 세션은 서버와 클라이언트의 연결을 의미하고, 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는

   것을 의미한다

 - 소프트웨어 개발 과정 중 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용이다

 - 세션 통제의 보안 약점에는 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출이 있다

 

 1. 불충분한 세션 관리

  : 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있는 보안

    약점이다

  - 세션 관리가 충분하지 않으면 침입자는 세션 하이재킹과 같은 공격을 통해 획득한 세션ID로 인간되지 않은

    시스템의 기능을 이용하거나 중요한 정보에 접근할 수 있다

 

 + 세션 하이재킹을 탐지하는 방법

  - 비동기화 탐지 : 서버와 시퀀스 넘버를 주기적으로 탐지, 비동기 상태 탐지

  - ACK Storm 탐지 : 급격한 ACK 비율 증가시 탐지

  - 패킷의 유실 및 재전송 증가 탐지 : 공격자가 중간에 끼어서 작동하므로 패킷의 유실과 서버와의 응답이 길어짐

 

 2. 잘못된 세션에 의한 정보 노출

  : 다중 스레드(Multi-Thread) 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점이다

  - 싱글톤 패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출될 수 있다

  - 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지할 수 있다

 

 3. 세션 설계시 고려 사항

  - 시스템의 모든 페이지에서 로그아웃이 가능하도록 UI를 구성한다

  - 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 한다

  - 세션 타임아웃은 중요도가 높으면 2~5분, 낮으면 15~30분으로 설정한다

  - 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계한다

  - 중복 로그인을 허용하지 않은 경우 클라이언트의 중복 접근에 대한 세션 관리 정책을 수립한다

  - 패스워드 변경 시 활성화된 세션을 삭제하고 재할당한다

 

 4. 세션ID의 관리 방법

  - 안전한 서버에서 최소 128비트의 길이로 생성한다

  - 예측이 불가능하도록 안전한 난수 알고리즘을 적용한다

  - 노출되지 않도록 URL Rewrite 기능을 사용하지 않는 방향으로 설계한다

  - 로그인 시 로그인 전의 세션ID를 삭제하고 재할당한다

  - 장기간 접속하고 있는 세션ID는 주기적으로 재할당되도록 설계한다

 

∙입력 데이터 검증 및 표현

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

 - 입력 데이터로 인해 발생하는 문제를 예방하기 위해서는 소프트웨어 개발의 구현 단계에서 유효성 검증 체계를

   갖추고, 검증되지 않은 데이터가 입력되는 경우 이를 처리할 수 있도록 구현해야 한다

 - 입력 데이터를 처리하는 객체에 지정된 자료형이 올바른지 확인하고, 일관된 언어셋을 사용하도록 코딩한다

 

 1. 입력 데이터 검증 및 표현의 보안 약점

  : 입력 데이터 검증 및 표현과 관련된 점검을 수행하지 않은 경우 공격에 취약해진다

  - 보안 약점의 종류

SQL 삽입
(SQL Injection)
- 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점이다
- 취약점이 발생하는 곳은 주로 웹 애플리케이션과 데이터베이스가 연동되는 부분이다
- DBMS의 종류마다 SQL injection 공격 기법은 다르다
- 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지할 수 있다
경로 조작 및 자원 삽입 - 데이터 입출력 경로를 조작하여 서버 자원을 수정·삭제할 수 있는 보안 약점이다
- 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지할 수 있다
크로스사이트 스크립팅
(XSS; Cross Site Scripting)
- 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점이다
- HTML 태그의 사용을 제한하거나 스크립트에 삽입되지 않도록 ‘<’, ‘>’, ‘&’ 등의 문자를 다른 문자로 치환함으로써 방지할 수 있다
운영체제 명령어 삽입 - 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점이다
- 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지할 수 있다
위험한 형식 파일 업로드 - 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로ㅆ 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점이다
- 업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 등의 방법으로 방지할 수 있다
신뢰되지 않는 URL 주소로
자동접속 연결
- 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점이다
- 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지할 수 있다
메모리 버퍼 오버플로 - 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점이다
- 프로그램의 오동작을 유발시키거나, 악의적인 코드를 실행시켜 공격자가 프로그램을 통제할 수 있는 권한을 획득하게 한다
- 메모리 버퍼를 사용할 경우 적절한 버퍼의 크기를 설정하고, 설정된 범위의 메모리 내에서 올바르게 읽거나 쓸 수 있도록 함으로써 방지할 수 있다

 

∙보안 기능

 : 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한

   보안 점검 항목들이다

 - 각 보안 기능들은 서비스 환경이나 취급 데이터에 맞게 처리될 수 있도록 구현해야 한다

 - 소프트웨어의 기능 또는 데이터에 접근하려는 사용자별로 중요도를 구분하고, 차별화된 인증 방안을 적용한다

 - 인증된 사용자가 이용할 기능과 데이터에 대해 개별적으로 접근 권한을 부여하여 인가되지 않은 기능과 데이터로의

   접근을 차단한다

 - 개인정보나 인증정보와 같은 중요한 정보의 변조·삭제·오남용 등을 방지하기 위해 안전한 암호화 기술을 적용한다

 

 1. 보안 기능의 보안 약점

적절한 인증 없이 중요기능 허용 - 보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경이 가능하다
- 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 수행하도록 하여 방지할 수 있다
부적절한 인가 - 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취할 수 있다
- 모든 실행경로에 대해 접근제어 검사를 수행하고, 사용자에게는 반드시 필요한 접근 권한만을 부여하여 방지할 수 있다
중요한 자원에 대한 잘못된 권한 설정 - 권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용할 수 있다
- 소프트웨어 관리자만 자원들을 읽고 쓸 수 있도록 설정하고, 인가되지 않은 사용자의 중요 자원에 대한 접근 여부를 감시함으로써 방지할 수 있다
취약한 암호화 알고리즘 사용 - 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보를 탈취할 수 있다
- 안전한 암호화 알고리즘을 이용하고, 업무관련 내용이나 개인정보 등에 대해서는 IT 보안인증사무국이 안정성을 확인한 암호모듈을 이용함으로써 방지할 수 있다
중요정보 평문 저장 및 전송 - 암호화되지 않은 평문 데이터를 탈취하여 중요한 정보를 획득할 수 있다
- 중요한 정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 하고, HTTPS 또는 SSL과 같은 보안 채널을 이용함으로써 방지할 수 있다
하드코드 된 비밀번호 - 소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한을 탈취할 수 있다
- 패스워드는 암호화하여 별도의 파일에 저장하고, 디폴트 패스워드나 디폴트 키의 사용을 피함으로써 방지할 수 있다

 

∙코드 오류

 : 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형(Type) 변환, 자원 변환 등의 오류를 예방하기

   위한 보안 점검 항목들이다

 - 코드 오류로 발생할 수 있는 보안 약점에는 널 포인터 역참조, 부적절한 자원 해제, 해제된 자원 사용, 초기화되지

   않은 변수 사용이 있다

 

 1. 널 포인터(Null Pointer) 역참조

  : 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점이다

  - 많은 라이브러리 함수들이 오류가 발생할 경우 널 값을 반환하는데, 이 반환값을 포인터로 참조하는 경우

    발생한다

  - 대부분의 운영체제에서 널 포인터는 메모리의 첫 주소를 가리키며, 해당 주소를 참조할 경우 소프트웨어가

    비정상적으로 종료될 수 있다

  - 공격자가 널 포인터 역참조로 발생하는 예외 상황을 악용할 수 있다

  - 널이 될 수 있는 포인터를 이용하기 전에 널 값을 갖고 있는지 검사함으로써 방지할 수 있다

 

 + 스택 가드(Stack Guard)

  - 널 포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나입니다

  - 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우 오버플로우

    상태로 판단하여 프로그램 실행을 중단함으로써 잘못된 복귀 주소의 호출을 막는 기술입니다

 

 2. 부적절한 자원 해제

  : 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점이다

  - 힙 메모리(Heap Memory), 소켓(Socket) 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해

    새로운 입력을 처리하지 못 할 수 있다

  - 프로그램 내에 자원 반환 코드가 누락되었는지 확인하고, 오류로 인해 함수가 중간에 종료되었을 때 예외처리에

    관계없이 자원이 반환되도록 코딩함으로써 방지할 수 있다

 

 3. 해제된 자원 사용

  : 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점이다

  - 반환된 메모리를 참조하는 경우 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생할 수

    있다

  - 반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화함으로써 방지할 수 있다

 

 4. 초기화되지 않은 변수 사용

  : 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점이다

  - 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전에 사용하던 내용이 계속 남아있어 변수가 외부에

    노출되는 경우 중요정보가 악용될 수 있다

  - 변수 선언 시 할당된 메모리를 초기화함으로써 방지할 수 있다

 

•캡슐화

 : 정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를

   예방하기 위한 보안 점검 항목들이다

 - 캡슐화로 인해 발생할 수 있는 보안 약점에는 잘못된 세션에 의한 정보 노출, 제거되지 않고 남은 디버그 코드,

   시스템 데이터 정보 노출 등이 있다

 

 1. 잘못된 세션에 의한 정보 노출

  : 다중 스레드(Multi-Thread) 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점이다

  - 싱글톤 패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출될 수 있다

  - 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지할 수 있다

 

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

  : 개발 중에 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점이다

  - 소프트웨어 제어에 사용되는 중요한 정보가 디버그 코드로 인해 노출될 수 있다

  - 디버그 코드에 인증 및 식별 절차를 생략하거나 우회하는 코드가 포함되어 있는 경우 공격자가 이를 악용할 수

    있다

  - 소프트웨어를 배포하기 전에 코드 검사를 통해 남아있는 디버그 코드를 삭제함으로써 방지할 수 있다

 

 3. 시스템 데이터 정보 노출

  : 시스템의 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 약점이다

  - 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만을 제공함으로써 방지할 수 있다

 

 4. Public 메소드로부터 반환된 Private 배열

  : 선언된 클래스 내에서만 접근이 가능한 Private 배열을 모든 클래스에서 접근이 가능한 Public 메소드에서 반환할

    때 생기는 보안 약점이다

  - Public 메소드가 Private 배열을 반환하면 배열의 주소가 외부로 공개되어 외부에서 접근할 수 있게 된다

  - Private 배열을 별도의 메소드를 통해 조작하거나, 동일한 형태의 복제본으로 반환받은 후 값을 전달하는

    방식으로 방지할 수 있다

 

 5. Private 배열에 Public 데이터 할당

  : Private 배열에 Public으로 선언된 데이터 또는 메소드의 파라미터를 저장할 때 발생하는 보안 약점이다

  - Private 배열에 Public 데이터를 저장하면 Private 배열을 외부에서 접근할 수 있게 된다

  - Public으로 선언된 데이터를 Private 배열에 저장할 때, 레퍼런스가 아닌 값을 직접 저장함으로써 방지할 수 있다

 

 + 접근 지정자(접근 제어자)

  : 프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사용되는 예약어입니다

한정자 클래스 내부 패키지 내부 하위 클래스 패키지 외부
Public O O O X
Protected O O O X
Default O O X X
Private O X X X

 

∙암호 알고리즘

 : 패스워드, 주민번호, 은행계좌와 같은 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만듣는 절차 또는

   방법을 의미한다

 - 암호 알고리즘은 해시(Hash)를 사용하는 단방향 암호화 방식과, 개인키 및 공개키로 분류되는 양방향 암호화

    방식이 있다

 1. 개인키 암호화(Private Key Encryption) 기법

  : 동일한 키로 암호화하고 복호화한다

  - 데이터베이스 사용자는 평문의 정보 M을 암호화 알고리즘 E와 개인키(Private Key) K를 이용하여 암호문 C로

    바꾸어 저장시켜 놓으면 사용자는 그 데이터베이스에 접근하기 위해 복호화 알고리즘 D와 개인키 K를 이용하여

    다시 평문의 정보 M으로 바꾸어 이용하는 방법이다

  - 개인키 암호화 기법에서 암호화 대상이 n개일 때 사용되는 키의 개수는 2n이다

  - 대칭 암호 기법 또는 비밀키 암호화 기법이라고도 한다

  - 한 번에 하나의 데이터 블록을 암호화 하는 블록 암호화 방식과, 평문과 동일한 길이의 스트림을 생성하여

    비트/바이트/워드 단위로 암호화하는 스트림 암호화 방식으로 분류된다

   ㄱ. 블록 암호화 방식 : DES, SEED, AES, ARIA

   ㄴ. 스트림 암호화 방식 : LFSR, RC4

  - 장점 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순하고, 공개키 암호 기법보다 파일의 크기가 작다

  - 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아진다

 

 2. 공개키 암호화(Public Key Encryption) 기법

  : 데이터를 암호화할 때 사용하는 공개키(Public Key)는 데이터베이스 사용자에게 공개하고, 복호화할 때의

    비밀키(Secret Key)는 관리자가 비밀리에 관리한다

  - 데이터베이스 사용자는 평문의 정보 M을 암호화 알고리즘 E와 공개키(Public Key) P를 이용하여 암호문 C로

    바꾸어 저장시켜 놓고, 이를 복호화하기 위해서는 비밀키와 복호화 알고리즘에 권한이 있는 사용자만이 복호화

    알고리즘 D와 비밀키(Secret Key) S를 이용하여 다시 평문의 정보 M으로 바꿀 수 있는 기법이다

  - 공개키 암호화 기법에서 암호화 대상이 n개일 때 사용되는 키의 개수는 n(n-1)/2이다

  - 비대칭 암호 기법이라고도 하며, 대표적으로는 소수를 활용한 RSA(Rivest Shamir Adleman) 기법이 있다

  - 장점 : 키의 분배가 용이하고, 관리해야 할 키의 개수가 적다

  - 단점 : 암호화/복호화 속도가 느리며, 알고리즘이 복잡하고 개인키 암호화 기법보다 파일의 크기가 크다

 

 + 공개키 기반 구조(PKI; Public Key Infrastructure)

  - 공개키 암호 시스템을 안전하게 사용하고 관리하기 위한 정보 보호 표준 방식으로 ITU-T의 X.509 방식과

    비X.509 방식으로 구분된다

  - X.509 방식 : 인증기관에서 발생하는 인증서를 기반으로 상호 인증을 제공

  - 비X.509 방식 : 국가별, 지역별로 맞게 보완 및 개발

 

 + 양방향 알고리즘 종류

SEED - 1999년 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
- 블록 크기는 128비트이며, 키 길이에 따라 128, 256으로 분류됩니다
ARIA
(Academy, Research Institute, Agency)
- 2004년 국가정보원과 산학연협회가 개발한 블록 암호화 알고리즘
- ARIA는 학계(Academy), 연구기관(Research Institute), 정부(Agency)의 영문 앞 글자로 구성되었습니다
- 블록 크기는 128비트이며, 키 길이에 따라 128. 192, 256으로 분류됩니다
DES
(Data Encryption Standard)
- 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘
- DES를 3번 적용하여 보안을 더욱 강화한 3DES(Triple DES)도 있습니다
- 블록 크기는 64비트이며, 키 길이는 56비트입니다
AES
(Advanced Encryption Standard)
- 2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
- DES의 한계를 느낀 NIST에서 공모한 후 발표하였습니다
- 블록 크기는 128비트이며, 키 길이에 따라 128, 192, 256으로 분류됩니다
RSA
(Rivest Shamir Adleman)
- 1978년 MIT의 라이베스트(Rivest), 샤미르(Shmir), 애들먼(Adleman)에 의해 제안된 공개키 암호화 알고리즘
- 큰 숫자를 소인수분해 하기 어렵다는 것에 기반하여 만들어졌습니다
- 공개키와 비밀키를 사용하는데, 여기서 키란 메시지를 열고 잠그는 상수(Constant)를 의미합니다

 

 3. 해시(Hash)

  : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미한다

  - 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부른다

  - 무결성 검증을 위해 사용될 뿐만 아니라 정보보호의 다양한 분야에서 활용된다

  - 복호화가 거의 불가능한 일방향 함수에 해당한다

  - 해시 함수의 종류

SHA 시리즈 - 1993년 미국 국가안보국(NSA)이 처음 설계했으며, 미국 국립표준기술연구소(NIST)에 의해 발표되었다
- 초기 개발된 SHA-0 이후 SHA-1이 발표되었고, 다시 SHA-2라고 불리는 SHA-224, SHA-256, SHA-384, SHA-512가 발표되었다
MD5 - 1991년 R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수이다
- 블록 크기는 512비트이며, 키 길이는 128비트이다
N-NASH - 1989년 일본의 전신전화주식회사(NTT)에서 발표한 암호화 해시 함수이다
- 블록 크기와 키 길이가 모두 128비트이다
SNEFRU - 1990년 R.C.Merkle가 발표한 해시 함수이다
- 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발되었다
- 블록 크기는 512비트이며, 키 길이에 따라 128과 256으로 분류된다

 

 + 솔트(Salt)

  - 둘 이상의 계정에 대해 패스워드를 ‘qwer1234’라고 지정하고, 같은 암호화 알고리즘을 적용하게 되면 결과도

    마찬가지로 동일하게 나타납니다 이 경우 공격자가 나타난다면 하나의 암호만 해제해도 둘 이상의 계정을

    얻게 되죠 이를 방지하고자 암호화를 수행하기에 앞서 원문에 무작위의 값을 덧붙이는 과정을 수행하는데, 이 때

    덧붙이는 무작위의 값을 솔트(Salt)라고 합니다

  - 솔트(Salt)를 사용하면 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과가 나타나게 되어 더 안전하게

    암호화된 데이터를 관리할 수 있게 되는 것이죠  


∎ 4장 시스템 보안 구축

 

•서비스 공격 유형

 1. 서비스 거부(DoS; Denial of Service) 공격의 개념

  : 표적이 되는 서버의 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에

   집중적으로 전송함으로써, 표적이 되는 서버의 정상적인 기능을 방해하는 것이다

 

 2. Ping of Death(죽음의 핑)

  : Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위(65,536바이트) 이상으로 전송하여 공격 대상의

    네트워크를 마비시키는 서비스 거부 공격 방법이다

  - 공격에 사용되는 큰 패킷은 수백 개의 패킷으로 분할되어 전송되는데, 공격 대상은 분할된 대량의 패킷을

    수신함으로써 분할되어 전송된 패킷을 재조립해야 하는 부담과 분할되어 전송된 각각의 패킷들의

    ICMP Ping 메시지에 대한 응답을 처리하느라 시스템이 다운되게 된다

  - jolt, sPING, ICMP bug, IceNewk 등의 변종 공격에 대비하여 ICMP Ping 메시지가 전송되지 못하도록

    방화벽에서 차단하는 기술이 개발되었다

 

 3. SMURFING(스머핑)

  : IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로

   만드는 공격 방법이다

  - 공격자는 송신 주소를 공격 대상자의 IP 주소로 위장하고 해당 네트워크 라우터의 브로드캐스트 주소를 수신지로

    하여 패킷을 전송하면, 라우터의 브로드캐스트 주소로 수신된 패킷은 해당 네트워크 내의 모든 컴퓨터로 전송된다

  - 해당 네트워크 내의 모든 컴퓨터는 수신된 패킷에 대한 응답 메시지를 송신 주소인 공격 대상지로 집중적으로

    전송하게 되는데, 이로 인해 공격 대상지는 네트워크 과부하로 인해 정상적인 서비스를 수행할 수 없게 된다

  - SMURFING 공격을 무력화하는 방법 중 하나는 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게

    미리 설정해 놓는 것이다

 

 4. SYN(FTP) Flooding

  : TCP(Transmission Control Porotocol)는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후에 데이터를

   전송하게 되는데, SYN Flooding은 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을

   의도적으로 중단시킴으로써 공격 대상자인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는

   공격 방법이다

  - 공격자는 사용할 수 없는 IP 주소를 이용해 가상의 클라이언트로 위장하여 공격 대상지인 서버로 'SYN' 신호를

    보내 3-way-handshake의 첫 번째 과정을 수행한다

  - 공격 대상지인 서버는 'SYN' 신호에 대한 응답으로 'SYN+ACK' 신호를 가상의 클라이언트로 보내면서

    클라이언트의 접속을 받아들이기 위해 메모리의 일정 공간을 확보한다

  - 가상의 클라이언트는 본래 사용할 수 없는 주소였으므로 서버가 보낸 응답이 전송되지 않을 뿐만 아니라 가상의

    클라이언트로부터 3-way-handshake의 마지막 과정인 'ACK' 신호도 전송되지 않으므로 공격 대상지인 서버는

    메모리 공간을 확보한 상태에서 대기하게 된다

  - 공격자가 사용할 수 없는 IP 주소를 이용해 공격 대상지 서버로 반복적인 3-way-handshake 과정을 요청하면

    공격 대상지 서버는 메모리 공간을 점점 더 많이 확보한 상태에서 대기하게 되며, 결국 서버에 설정된 동시

    사용자 수가 모두 대기 상태로 채워지게 되어 더 이상 정상적인 서비스를 수행할 수 없게 된다

  - SYN Flooding에 대비하기 위해 수신지의 'SYN' 수신 대기 시간을 줄이거나 침입 차단 시스템을 활용한다

 

 5. TearDrop

  : 데이터의 송·수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때 분할 순서를 알 수 있도록

    Fragment Offset 값을 함께 전송하는데, TearDrop은 이 Offset값을 변경시켜 수신 측에서 패킷을 재조립할 때

    오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법이다

  - TearDrop에 대비하기 위해 Fragment Offset이 잘못된 경우 해당 패킷을 폐기하도록 설정한다

 

 6. Land

  : 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송하는

    것으로, 이 패킷을 받은 공격 대상은 송신 IP 주소가 자신이므로 자신에게 응답을 수행하게 되는데, 이러한 패킷이

    계속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격이다

  - Land에 대비하기 위해 송신 IP 주소와 수신 IP 주소의 적절성을 검사한다

 

 7. DDoS(Distributed Denial of Service, 분산 서비스 거부) 공격

  : 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것으로, 네트워크에서

    취약점이 있는 호스트들을 탐색한 후 이들 호스트들에 분산 서비스 공격용 툴을 설치하여 에이전트(Agent)로 만든

    후 DDoS 공격에 이용한다

  - 공격의 범위를 확대하기 위해 일부 호스트에 다수의 에이전트를 관리할 수 있는 핸들러(Handler) 프로그램을

    설치하여 마스터(Master)로 지정한 후 공격에 이용하기도 한다

 

 + 분산 서비스 공격용 툴

  : 에이전트의 역할을 수행하도록 설계된 프로그램으로 데몬(Demon)이라고 부른다

  - Trin00 : 가장 초기 형태의 데몬으로, 주로 UDP Flooding 공격을 수행한다

  - TFN(Tribe Flooding Network) : UDP Flooding 뿐만 아니라 TCP SYN Flooding 공격, ICMP 응답 요청,

    스머핑 공격 등을 수행한다

  - TFN2K : TFN의 확장판

  - StacheIdraht : 이전 툴들의 기능을 유지하면서, 공격자, 마스터, 에이전트가 쉽게 노출되지 않도록 암호화된

    통신을 수행하며, 툴이 자동으로 업데이트되도록 설계됨

 

 8. Swtich Jamming

  : 위조된 매체 접근 제어(MAC) 주소를 지속적으로 네트워크로 흘려보내, 스위치 MAC 주소 테이블의 저장 기능을

    혼란시켜 더미 허브(Dummy Hub)처럼 작동하게 하는 공격

 

 9. 네트워크 침해 공격 관련 용어

스미싱
(Smishing)
- 문자 메시지(SMS)를 이용해 사용자의 개인 신용 정보를 빼내는 수법이다
- 초기에는 문자 메시지를 이용해 개인 비밀정보나 소액 결제를 유도하는
형태로 시작되었다
- 현재는 각종 행사 안내, 경품 안내 등의 문자 메시지에 링크를 걸어
안드로이드 앱 설치 파일인 apk 파일을 설치하도록 유도하여 사용자
정보를 빼가는 수법으로 발전하고 있다
스피어 피싱
(Spear Phishing)
사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취한다
APT
(Advanced Persistent Threats,
지능형 지속 위협)
- 다양한 IP 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격이다
- 공격 방법
ㄱ. 내부자에게 악성코드가 포함된 이메일을 오랜 기간 동안 꾸준히
발송해 한 번이라도 클릭되길 기다리는 형태이다
ㄴ. 스턱스넷(Stuxnet)과 같이 악성코드가 담긴 이동식 디스크(USB)
등으로 전파하는 형태이다
ㄷ. 악성코드에 감염된 P2P 사이트에 접속하면 악성코드에 감염되는
형태 등이 있다
무작위 대입 공격
(Brute Force Attack)
암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식이다
큐싱
(Qshing)
QR코드(Quick Response Code)를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법의 하나로, QR코드와 개인정보 및 금융정보를 낚는다(Fishing)의 의미로 합성 신조어이다
Phising 개인 정보(Private Data)와 낚시(Fishing)의 합성어로, 이메일이나 메신저 등을 통해 공기관이나 금융 기관을 사칭하여 개인 정보를 빼내는 기법이다
Ping Flood 특정 사이트에 매우 많은 ICMP 메시지를 보내 이에 대한 응답(Respond)으로 시스템 자원을 모두 사용하게 해 시스템이 정상적으로 동작하지 못하도록 하는 공격 방법이다
Evil Twin Attack 실제 존재하는 동일한 이름의 무선 WiFi 신호를 송출하여 로그온한 사람들의 계정 정보나 신용 정보 등을 빼내는 기법이다

 

 10. 정보 보안 침해 공격 관련 용어

좀비(Zombie) PC 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터로, C&C(Command&Control) 서버의 제어를 받아 주로 DDoS 공격 등에 이용된다
C&C 서버 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버를 말한다
봇넷(Botnet) 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태를 말한다
웜(Worm) 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스의 일종으로, 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등이 웜 공격의 한 형태이다
제로 데이 공격
(Zero Day Attack)
보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격으로, 공격의 신속성을 의미한다
키로거 공격
(Key Logger Attack)
컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격
랜섬웨어
(Ransomware)
인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램으로, 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 한다
백도어
(Back Door, Trap Door)
- 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자(Programmer)의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로로, 컴퓨터 범죄에 악용되기도 한다
- 백도어 탐지 방법 : 무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사 등
- 침입탐지 도구 : tripwire
트로이 목마
(Trojan Horse)
정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것으로, 자기 복제 능력은 없다

 

 11. 블루투스(Bluetooth) 공격

블루버그(BlueBug) 블루투스 장비 사이의 취약한 연결 관리를 악용한 공격
블루스나프(BlueSnarf) 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로 OOP를 사용하여 정보를 열람
블루프린팅(BluePrinting) 블루투스 공격 장치의 검색 활동을 의미
블루재킹(BlueJacking) 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 것

 

∙로그 분석

 : 로그란 시스템 사용에 대한 모든 내역을 기록해 놓은 것으로, 이러한 로그 정보를 이용하면 시스템 침해 사고 발생 시     해킹 흔적이나 공격 기법을 파악할 수 있다

 - 로그 정보를 정기적으로 분석하면 시스템에 대한 침입 흔적이나 취약점을 확인할 수 있다

 

 1. LINUX 로그

  : LINUX에서는 시스템의 모든 로그를 var/log 디렉터리에서 기록하고 관리한다

  - 로그 파일을 관리하는 syslogd 데몬은 etc/syslog.conf 파일을 읽어 로그 관련 파일들의 위치를 파악한 후 로그

    작업을 시작한다

  - syslog.conf 파일을 수정하여 로그 관련 파일들의 저장 위치와 파일명을 변경할 수 있다

 

 2. LINUX의 주요 로그 파일

로그 파일명 데몬 내용
커널 로그 /dev/console kernel 커널에 관련된 내용을 관리자에게 알리기 위해 파일로 저장하지 않고 지정된 장치에 표시한다
부팅 로그 /var/log/boot.log boot 부팅 시 나타나는 메시지들을 기록한다
크론 로그 /var/log/cron crond 작업 스케줄러인 crond의 작업 내역을 기록한다
시스템 로그 /var/log/messages syslogd 커널(kernel)에서 실시간으로 보내오는 메시지들을 기록한다
보안 로그 /var/log/secure xinetd 시스템의 접속에 대한 로그를 기록한다
FTP 로그 /var/log/xferlog ftpd FTP로 접속하는 사용자에 대한 로그를 기록한다
메일 로그 /var/log/maillog sendmail popper 송수신 메일에 대한 로그를 기록한다
사용자 로그인 로그 /var/log/wtmp wtmp 사용자의 성공한 로그인/로그아웃 정보, 시스템의 Boot/Shutdown 정보에 대한 히스토리를 담고 있는 로그

 

 3. Windows 로그

  : 이벤트 로그 형식으로 시스템의 로그를 관리한다

  - Windows의 이벤트 뷰어를 이용하면 이벤트 로그를 확인할 수 있다

 

 4. Windows 이벤트 뷰어의 로그

로그 내용
응용 프로그램 - 응용 프로그램에서 발생하는 이벤트가 기록된다
- 기록되는 이벤트는 응용 프로그램 개발자에 의해 결정된다
보안 로그온 시도, 파일이나 객체 생성, 조회, 제거 등의 리소스 사용과 관련된 이벤트가 기록된다
시스템 Windows 시스템 구성 요소에 의해 발생하는 이벤트가 기록된다
Setup 프로그램 설치와 관련된 이벤트가 기록된다
Forwarded Events 다른 컴퓨터와의 상호 작용으로 발생하는 이벤트가 기록된다

 

∙보안 솔루션

 : 접근 통제, 침입 차단 및 탐지 등을 수행하여 외부로부터의 불법적인 침입을 막는 기술 및 시스템을 말한다

 - 주요 보안 솔루션에는 방화벽, 침입 탐지 시스템(IDS), 침입 방지 시스템(IPS), 데이터 유출 방지(DLP), 웹 방화벽,

    VPN, NAC 등이 있다

 

 1. 방화벽(Firewall)

  : 기업이나 조직 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용·거부·수정하는 기능을 가진 침입

    차단 시스템이다

  - 내부 네트워크에서 외부로 나가는 패킷은 그대로 통과시키고, 외부에서 내부 네트워크로 들어오는 패킷은 내용을

    엄밀히 체크하여 인증된 패킷만 통과시키는 구조이다

  - 해킹 등에 의한 외부로의 정보 유출을 막기 위해 사용한다

  - 스크린 서브넷(Screened Subnet) : 외부 네트워크와 내부 네트워크 사이에 두는 완충적인 통신망

 

 2. 침입 탐지 시스템(IDS; Intrusion Detection System)

  : 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템이다

  - 방화벽과 같은 침입 차단 시스템만으로는 내부 사용자의 불법적인 행동과 외부 해킹에 100% 완벽하게 대처할

    수는 없다

  - 문제가 발생한 경우 모든 내·외부 정보의 흐름을 실시간으로 차단하기 위해 해커 침입 패턴에 대한 추적과 유해

    정보 감시가 필요하다

  - 오용 탐지(Misuse Detection) : 미리 입력해 둔 공격 패턴이 감지되면 이를 알려준다

  - 이상 탐지(Anomaly Detection) : 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면

    이를 알려준다

  - 침입 탐지 시스템의 종류

   ㄱ. HIDS(Host-Based Instrusion Detection)

    - 시스템의 내부를 감시하고 분석하는데 중점을 둔 침입 탐지 시스템이다

    - 내부 시스템의 변화를 실시간으로 감시하여 누가 접근해서 어떤 작업을 수행했는지 기록하고 추적한다

    - 종류 : OSSEC, md5deep, AIDE, Samhain 등

   ㄴ. NIDS(Network-Based Intrusion Detection System)

    - 외부로부터의 침입을 감시하고 분석하는데 중점을 둔 침입 탐지 시스템이다

    - 네트워크 트래픽을 감시하여 서비스 거부 공격, 포트 스캔 등의 악의적인 시도를 탐지한다

    - 종류 : Snort, Zeek 등

  - 침입 탐지 시스템의 위치

   ㄱ. 패킷이 라우터로 들어오기 전 : 네트워크에 시도되는 모든 공격을 탐지할 수 있다

   ㄴ. 라우터 뒤 : 라우터에 의해 패킷 필터링을 통과한 공격을 탐지할 수 있다

   ㄷ. 방화벽 뒤 : 내부에서 외부로 향하는 공격을 탐지할 수 있다

   ㄹ. 내부 네트워크 : 내부에서 내부 네트워크의 해킹 공격을 탐지할 수 있다

   ㅁ. DMZ : DMZ는 외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크로, 강력한 외부 공격이나

       내부 공격으로부터 중요 데이터를 보호하거나 서버의 서비스 중단을 방지할 수 있다

 

 3. 침입 방지 시스템(IPS; Intrusion Prevention System)

  : 방화벽과 침입 탐지 시스템을 결합한 것이다

  - 비정상적인 트래픽을 능동적으로 차단하고 격리하는 등의 방어 조치를 취하는 보안 솔루션이다

  - 침입 탐지 기능으로 패킷을 하나씩 검사한 후 비정상적인 패킷이 탐지되면 방화벽 기능으로 해당 패킷을 차단한다

 

 4. 데이터 유출 방지(DLP; Data Leakage/Loss Prevention)

  : 내부 정보의 외부 유출을 방지하는 보안 솔루션이다

  - 사내 직원이 사용하는 PC와 네트워크상의 모든 정보를 검색하고 메일, 메신저, 웹하드, 네트워크 프린터 등의

    사용자 행위를 탐지·통제해 외부로의 유출을 사전에 막는다

 

 5. 웹 방화벽(Web Firewall)

  : 일반 방화벽이 탐지하지 못하는 SQL 삽입 공격, Cross-Site Scripting(XSS) 등의 웹 기반 공격을 방어할

    목적으로 만들어진 웹 서버에 특화된 방화벽이다

  - 웹 관련 공격을 감시하고 공격이 웹 서버에 도달하기 전에 이를 차단해 준다

 

 6. VPN(Virtual Private Network, 가상 사설 통신망)

  : 가상 사설 네트워크로서 인터넷 등 통신 사업자의 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 전용

    회선을 사용하는 것처럼 해주느 보안 솔루션이다

  - 암호화된 규격을 통해 인터넷망을 전용선의 사설망을 구축한 것처럼 이용하므로 비용 부담을 줄일 뿐만 아니라

    원격지의 지사, 영업소, 이동 근무자가 지역적인 제한 없이 업무를 수행할 수 있다

 

 7. NAC(Network Access Control)

  : 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는

    보안 솔루션이다

  - 내부 PC의 소프트웨어 사용 현황을 관리하여 불법적인 소프트웨어 설치를 방지한다

  - 일괄적인 배포 관리 기능을 이용해 백신이나 보안 패치 등의 설치 및 업그레이드를 수행한다

  - 네트워크에 접속한 비인가된 시스템을 자동으로 검출하여 자산을 관리한다

 

 8. SSH(Secure SHell, 시큐어 셀)

  : 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜 또는

    이를 이용한 응용 프로그램이다

  - 데이터 암호화화 강력한 인증 방법으로 보안성이 낮은 네트워크에서도 안전하게 통신할 수 있다

  - 키(Key)를 통한 인증 방법을 사용하려면 사전에 클라이언트의 공개키를 서버에 등록해야 한다

  - 기본적으로 22번 포트를 사용한다


● 기타

 

∙Windows 파일 시스템

 1. FAT

  - DOS 때부터 사용되던 윈도우의 파일 시스템

  - 저용량에 적합, 호환성이 좋음, 저장 가능한 파일의 최대 크기가 4GB

 2. NTFS

  - FAT 시스템을 대체하기 위해 개발된 윈도우 파일 시스템

  - 사용자마다 다른 보안 적용 가능 즉 보안이 FAT보다 뛰어남

  - 대용량 저장 가능 및 안정성이 뛰어남

 

∙LINUX의 파일 생성 권한

 - umask : 파일 생성 권한 666 – 생성된 파일 권한

 

∙취약점 관리를 위해 일반적으로 수행하는 작업

 - 무결성 검사

 - 응용 프로그램의 보안 설정 및 패치(Patch) 적용

 - 불필요한 서비스 및 악성 프로그램의 확인과 제거

 - 활성화된 프로세스와 열린 포트 위주로 확인

 

∙Honeypot

 - 1990년대 David Clock이 처음 제안하였다

 - 비정상적인 접근의 탐지를 위해 의도적으로 설치해 둔 시스템이다

 - 침입자를 속여 실제 공격당하는 것처럼 보여줌으로써 크래커를 추적 및 공격기법의 정보를 수집하는 역할을 한다

 - 쉽게 공격자에게 노출되어야 하며 쉽게 공격이 가능한 것처럼 취약해 보여야 한다

 

∙Docker

 - 컨테이너 응용프로그램의 배포를 자동화하는 오픈소스 엔진이다

 - 소프트웨어 컨테이너 안에 응용 프로그램들을 배치시키는 일을 자동화 해주는 오픈 소스 프로젝트이자

   소프트웨어로 볼 수 있다

 

∙DPI(Deep Packet Inspection)

 : OSI 7 Layer 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽을

  조정하기 위한 패킷 분석 기술

 - 네트워크 보안, 관리, 컨텐츠 관리 등이 목적

 

∙코드 오류

생략 오류
(Omission error)
입력 시 한 자리를 빼놓고 기록한 경우 1234 -> 123
필사 오류
(Transcription error)
입력 시 임의의 한 자리를 잘못 기록한 경우 1234 -> 1235
전위 오류
(Transposition error)
입력 시 좌우 자리를 바꾸어 기록한 경우 1234 -> 1243
이중 오류
(Double Transposition error)
전위 오류가 두 가지 이상 발생한 경우 1234 -> 2143
추가 오류
(Addition error)
입력 시 한 자리 추가로 기록한 경우 1234 -> 12345
임의 오류
(Random error)
위의 오류가 두 가지 이상 결합하여 발생한 경우 1234 -> 12367
반응형
저작자표시 (새창열림)

'📃 Certification > 정보처리기사' 카테고리의 다른 글

[정보처리기사 필기] 합격수기  (0) 2022.04.25
[정보처리기사 필기] 4과목 프로그래밍 언어 활용  (0) 2022.04.10
[정보처리기사 필기] 3과목 데이터베이스 구축  (0) 2022.04.08
[정보처리기사 필기] 2과목 소프트웨어 개발  (0) 2022.04.06
[정보처리기사 필기] 1과목 소프트웨어 설계  (0) 2022.04.04
    0_ch4n
    0_ch4n
    while(true) { study(); }

    티스토리툴바