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

메밀·2024년 5월 1일
0

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

1) 소프트웨어 개발 방법론

- 구조적 방법론

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

  • 60년대까지 가장 많이 적용된 방법론
  • 목적: 쉬운 이해, 검증 가능한 프로그램 코드 생성
  • 분할과 정복

- 정보공학 방법론

계획, 분석, 설계, 구축에 정형화된 기법을 상호 연관성 있게 통합, 적용
자료 중심

  • 대규모 정보 시스템 구축에 적합

- 컴포넌트 기반 방법론

컴포넌트를 조합하여 하나의 앱 만들기

  • 컴포넌트 재사용
  • 새 기능 추가 간단 → 확장성 보장
  • 유지보수 비용 최소화, 생산성/품질 향상

절차

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

2) 소프트웨어 재사용

- 정의

이미 개발된 SW를 다른 SW 개발에 사용
품질, 생산성 ↑

- 이점

  • 개발 시간, 비용 단축
  • 소프트웨어 품질 향상
  • 개발 생산성 향상
  • 실패 위험 감소
  • 시스템 구축 지식 공유
  • 시스템 명세, 설계, 코드 등 문서 공유

- 방법

> 합성 중심

블록(모듈)을 끼워맞춤

> 생성 중심

추상화형태로 쓰인 명세를 구체화하여 만듦
패턴 구성 방법

3) 소프트웨어 재공학

새로운 요구에 맞도록 기존 시스템을 이용하여 나은 시스템 구축,
새 기능을 추가하여 성능 향상 시키는 것

  • 유지보수비용 == 소프트웨어 개발 비용의 대부분 → 기존 것을 개조/개선 하여 유지보수성, 품질 향상
  • 유지보수성 향상 → 소프트웨어 위기 해결 (예방 유지보수 측면에서)
  • 자동화 도구 사용 과정 포함
  • SW 수명 연장, 기술 향상, 개발 기간 단축
  • 오류 감소, 비용 절감

- 주요 활동

  • 분석
    • 기존 명세서 확인 → 동작 이해, 재공학 대상 선정
  • 재구성
    • 코드 재구성, 기능/동작 수정 X
  • 역공학
    • 기존 SW 분석 → 개발 과정, 데이터 처리 과정 등을 재발견, 창조
    • 일반 개발단계와 반대방향
    • 설계도 추출 등
  • 이식
    • 다른 OS, HW에서 사용할 수 있도록

4) CASE

Computer Aided Software Engineering
요구 분석, 설계, 구현, 검사/디버깅 등을 SW 도구로 자동화

  • 다양한 시스템에서 활용되는 자동화 도구(CASE Tool)
  • SW, HW, DB, Test 등을 통합하여 SW를 개발하는 환경 조성
  • SW 생명주기 전체 단계 연결, 자동화해주는 통합된 도구 제공
  • SW 개발도구 + 방법론 → 정형화된 구조/방법을 개발에 적용하여 생산성 향상

주요 기능
: SW 생명주기 전 단계 연결, 다양한 개발모형 지원, 그래픽 지원

5) 비용 산정 기법

- LOC(원시 코드 라인 수 기법): 상향식

각 기능의 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정 → 예측치 계산 → 비용 산정

  • 측정 용이, 이해 쉬움 → 가장 많이 사용

예측치 = a + 4m + b / 6
(a: 낙관치, b: 비관치, m: 기대치(중간치))

산정공식

  • 노력(인월) = 개발 기간 X 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
  • 개발 비용 = 노력(인월) X 단위 비용(1인당 월 인건비)
  • 개발 기간 = 노력(인월) / 투입 인원
  • 생산성 = LOC / 노력(인월)

- 수학적 산정 기법: 상향식

aka 경험적 추정 모형, 실험적 추정 모형
목표: 개발 비용 산정 자동화

  • 비용 공식 == 유사 프로젝트를 기반으로 경험적으로 유도
  • COCOMO 모형, Putnam 모형, 기능점수(FP) 모형 등

> COCOMO 모형

COnstructive COst MOdel
보헴
LOC에 의한 비용 산정 기법

  • LOC 예측 후 SW 종류에 따른 방정식에 대입하여 비용 산정
  • 중소 규모 프로젝트 추정에 적합
  • 같은 규모라도 성격에 따라 다름
  • 결과: 프로젝트를 완성하는데 필요한 노력(Man-Month)

> COCOMO의 소프트웨어 개발 유형

조직형

  • 기관 내부에서 개발된 중소규모 SW
  • 일괄 자료 처리, 과학 기술 계산, 비즈니스 자료 처리 등 4만 라인 이하 SW 개발
  • 사무 처리용, 업무용, 과학용 응용 SW 개발에 적합

반분리형

  • 조직형과 내장형의 중간
  • 트랜잭션 처리 시스템, OS/DB 관리 시스템 등의 30만 라인 이하 SW 개발용
  • 컴파일러, 인터프리터와 같은 유틸리티 개발

내장형

  • 초대형 규모의 트랜잭션 처리 시스템, 운영체제 등
  • 30만 라인 이상
  • 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등 시스템 프로그램 개발

> Putnam 모형

SW 생명주기의 전 과정 동안에 사용될 노력의 분포 가정해주는 모형

  • aka 생명주기 예측모형
  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력분포도를 기초로 함
  • 대형 프로젝트
  • 개발 기간이 늘어날수록 인원의 노력이 감소

> 기능 점수(FP) 모형

알브레히트
SW 기능 증대 요인별 가중치 부여 → 요인별 가중치를 합산하여 총 기능점수 산출
→ 총 기능 점수, 영향도 → 기능점수 산출

소프트웨어 기능 증대 요인
: 자료 입력(입력 양식), 정보 출력(출력 보고서), 명령어(사용자 질의 수), 데이터 파일, 필요한 외부 루틴과의 인터페이스

- 자동화 추정 도구

  • SLIM: Rayleigh-Norden 곡선 + Putnam 예측 모델 기초 자동화 측정 도구
  • ESTIMACS: FP 기초

6) PERT

Program Evaluation and Review Technique
프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크
각 작업별 낙관적/가능성 있는/비관적인 경우로 나누어 종료 시기 결정

  • 과거 경험이 없어 소요기간 예측 어려운 소프트웨어에서 사용
  • 노드와 간선 → 원 노드엔 작업을, 간선(화살표)엔 낙관치, 기대치, 비관치
  • 결정 경로, 작업 경계 시간, 상호 관련성 알 수 있음

작업 예측치 = 비관치 + 4 X 기대치 + 낙관치 / 6
평방 편차 = [(비관치 - 낙관치) / 6] ^2

7) CPM(임계 경로 기법)

작업 나열, 소요기간 예측 기법

  • 노드(작업), 간선(전후 의존관계)
  • 원형노드: 각 작업 (이름, 소유시간 표시), 박스노드: 이정표(예상 완료 시간)
  • 임계경로 == 최장경로

8) 간트 차트

각 작업의 시작/종료를 막대 도표로 표시하는 프로젝트 일정표
시간선 차트

  • 중간 목표 미달성 시 그 이유, 기간 예측할 수 있도록
  • 사용자와의 문제점, 예산 초과 지출 관리 가능
  • 자원 배치, 인원 계획에 유용하게 사용
  • 다양한 형태로 변형하여 사용 가능
  • 작업 경로 표시 X, 계획 변화 까다로움
  • 계획 수립/수정 시 주관적 수치에 기울어지기 쉬움
  • 이정표, 작업일정, 기간, 산출물로 구성
  • 수평 막대의 길이는 각 작업의 기간을 나타냄

9) ISO/IEC 12207

ISO 표준 소프트웨어 생명 주기 프로세스

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

10) CMMI

Capability Maturity Model Integration

개발 조직의 업무 능력, 조직의 성숙도 평가 모델

  • 초기: 정의된 프로세스 없음 / 작업자 능력에 따라 성공 여부 결정
  • 관리: 규칙화된 프로세스 / 특정한 프로젝트 내의 프로세스 정의, 수행
  • 정의: 표준화된 프로세스 / 조직 표준을 활용해 업무
  • 정량적 관리: 예측가능한 프로세스 / 프로세스 정량 관리 및 통제
  • 최적화: 지속적 개선 프로세스

11) SPICE

Software Process Improvement and Capability dEtermination

소프트웨어 프로세스 평가, 개선 표준 (ISO/IEC 15504)

  • 5개의 프로세스 범주와 40개의 세부 프로세스로 구성
  • 프로세스 수행 능력 단계를 불완전, 수행, 관리, 확립, 예측, 최적화의 6단계로 구분
    • 불완전: 프로세스 구현 X / 목적 달성 못함
    • 수행: 프로세스 수행, 목적 달성
    • 관리: 정의된 자원의 한도 내에서 그 프로세스가 작업 산출물을 인도
    • 확립: 소프트웨어 공학 원칙에 기반하여 정의된 프로세스 수행
    • 예측: 프로세스가 목적 달성을 위해 통제, 양적인 측정을 통해 일관적으로 수행됨
    • 최적화: 프로세스 수행 최적화, 지속적 개선으로 업무 목적 만족

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

프로젝트 상황/특성에 맞도록 정의된 개발 방법론을 수정, 보완하는 작업

고려사항

  • 내부적 기준: 목표 환경, 요구사항, 프로젝트 규모, 보유 기술
  • 외부적 기준: 법적 제약, 표준 품질 기준

13) 소프트웨어 개발 프레임워크

공통 요소, 아키텍처를 일반화한 소프트웨어 시스템

  • 표준화된 개발 기술 → 사업자 종속성 해소
  • 주요기능: 예외처리, 트랜잭션, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스

종류

  • 스프링 프레임워크: 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
  • 전자정부 프레임워크: 우리나라 공공부문 정보화 사업
  • 닷넷: Windows 프로그램 기발/실행

- 특성

  • 모듈화: 캡슐화를 통해 모듈화 강화, 변경 영향 최소화 → SW 품질 향상, 유지보수 용이
  • 재사용성: 재사용 가능한 모듈 제공 → 예산 절감, 생산성 향상, 품질 보증
  • 확장성: 다형성을 통한 인터페이스 확장 가능
  • 제어의 역흐름: IoC

14) 소프트웨어 정의 기술(SDE, SDx)

Software-Defined Everything

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

  • 소프트웨어 정의 네트워킹(SDN)
    • Software Defined Networking
    • HW에 의존하는 네트워크 체계에 비해 보다 효율적으로 네트워크 제어, 관리 가능
    • 기존 네트워크에 영향을 주지 않으면서 특정 서비스 전송 경로 수정 가능 → 인터넷 상에서 발생하는 문제 처리 가능
  • 소프트웨어 정의 데이터 센터(SDDC)
    • 데이터센터의 모든 자원을 가상화 → 인력 개입 없이 SW 조작만으로 관리/제어되는 데이터센터
  • 소프트웨어 정의 스토리지(SDS)
    • 물리적 데이터 스토리지 가상화 → 여러 스토리지를 하나처럼 관리하거나 하나를 여럿으로 나눠 사용

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

1) 네트워크 관련 신기술

  • IoT
  • 메시 네트워크: 새로운 방식의 네트워크, 대규모 디바이스의 네트워크 생성에 최적화
  • 피코넷: 여러 통신장치가 블루투스, UWB로 통신망 형성
  • 파장 분할 다중화: 광섬유, 서로 다른 파장의 신호 → 여러 단말기가 동시에 통신회선 사용 (파장이 다른 광선끼리는 간섭을 일으키지 않는 성질 이용)
  • 클라우드 기반 HSM: 클라우드 기반 암호화 키 작업 보안 기기, 클라우드에 인증서 저장, 암호화 키는 HW적으로 구현 → 보안 ↑
  • 파스-타(PaaS-TA): 개방형 클라우드 컴퓨팅 플랫폼, 우리나라 꺼
  • 징(Zing): 초고속 근접 무선통신(NFC), 스마트폰 키오스크 등
  • SSO(Single Sign On): 한 번의 로그인으로 죄다 로그인
  • 스마트 그리드: 전력선 기반으로 모든 통신, 정보, 앱 인프라 하나의 시스템으로 통합 관리

2) 네트워크 설치 구조

  • 성형(Star, 중앙 집중형)
    • 중앙 컴퓨터 + 단말 장치 / 포인트 투 포인트 방식으로 회선 연결
  • 링형(Ring, 루프형)
    • 컴퓨터, 단말장치를 이웃하는 것끼리 포인트 투 포인트 방식으로 연결
    • 분산, 집중제어 가능
    • 데이터 단방향, 양방향 가능 → 단방향의 경우 하나라도 고장나면 전체에 영향
  • 버스형
    • 한개의 통신회선에 여러 대의 단말 장치
    • 물리적 구조 심플, 단말장치 추가/제거 용이
    • 하나 고장나도 전체에 영향X → 신뢰성 높음
  • 계층형(Tree, 분산형)
    • 중앙 컴퓨터와 일정 지역의 단말 장치까지는 하나의 통신 회선으로 연결 → 이웃 단말 장치는 중간 단말에서 다시 연결
  • 망형(Mesh)
    • 모든 지점의 컴퓨터-단말 서로 연결 → 노드 연결성 높음
    • 많은 단말로부터 많은 통신 필요 경유에 유리
    • 공중 데이터 통신망에서 사용 → 총 경로 가장 김
    • 노드의 수가 n개일 때, n(n-1)/2개의 회선, 노드당 n-1개의 포트가 필요

3) VLAN

LAN의 물리적 배치와 상관없이 논리적으로 분리하는 기술
→ 성능, 보안 향상

4) LAN의 표준안

- IEEE 802

- 802.11의 버전 (무선랜)

...

5) CSMA/CA

Carrier Sense Multiple Access / Collision Avoidance

무선 랜에서 데이터 전송 시 매체 비어있는지 확인 후 충돌을 피하기 위해 일정한 시간 뒤 데이터 전송
→ 회선 사용 X 시에도 확인 신호를 전송하여 동시전송 충돌 예방

6) 경로 제어 프로토콜(Routing Protocol)

- IGP

  • Interior Gateway Protocol, 내부 게이트웨이 프로토콜
  • 하나의 자율 시스템(AS)내의 라우팅에 사용되는 프로토콜
  • RIP
    • 가장 널리 사용됨, 벡터 라우팅 프로토콜, Bellman-Ford 알고리즘(최단 경로 탐색)
    • 소규모 동종 네트워크에서 효율적
    • 최대 홉 수 15로 제한 → 대규모에서 사용할 수 없음을 의미
  • OSPF
    • RIP의 단점 해결, 대규모 네트워크에서 사용
    • 최단 경로 라우팅 지원: 라우팅 정보에 노드 간 거리, 링크 상태 정보를 실시간으로 반영
    • 최단 경로 탐색: 다익스트라(Dijkstra) 알고리즘 사용
    • 라우팅 정보 변화 발생 시 모든 라우터에 변화된 정보 알림
    • 하나의 자율 시스템에서 동작 → 내부 라우팅 프로토콜 그룹에 도달

- EGP

  • Exterior Gateway Protocol
  • 자율 시스템 간 라우팅 즉, 게이트웨이 간 라우팅에 사용되는 프로토콜

- BGP

  • Border Gateway Protocol
  • AS간 라우팅, EGP의 단점 보완
  • BGP 라우터 연결 초기엔 전체 경로 제어표(라우팅 테이블)교환, 이후엔 변화된 정보만 교환

7) 흐름 제어

송/수신 측 전송되는 패킷 양, 속도 규제

  • 정지-대기(Stop-and-Wait)
    • 수신측의 확인 신호 받은 후 다음 패킷 전송
    • 한 번에 하나의 패킷만 전송 가능
  • 슬라이딩 윈도우
    • 확인 신호(수신 통지)를 이용하여 송신 데이터 양 조절
    • 확인 신호를 받지 않더라도 정해진 패킷 수만큼 연속 전송 → 전송 효율 좋음
    • 확인신호(ACK) 없이도 보낼 수 있는 패킷 최대치 == 윈도우 크기
    • 윈도우 크기는 상황 따라 변함: ACK 긍정이면 증가, 부정이면 감소

8) SW 관련 용어

- 매시업

웹 제공 정보/서비스로 새 SW, 서비스, 데이터베이스 만드는 기술
→ 다수의 정보원이 제공하는 콘텐츠를 조합하여 하나의 서비스로 제공하는 웹 사이트/앱

- 서비스 지향 아키텍처(SOA)

  • 기업 SW 인프라인 정보 시스템을 공유/재사용 가능한 서비스/컴포넌트 중심으로 구축하는 정보 기술 아키텍처

SOA 기반 애플리케이션 구성 계층
: 표현 계층, 서비스 중간 계층, 애플리케이션 계층, 데이터 저장 계층

- 디지털 트윈

현실 속의 사물을 SW로 가상화 → 자동차, 항공, 에너지, 국방, 헬스케어 등에서 주목

- 텐서플로

구글의 구글 브레인 팀, 데이터 흐름 프로그래밍을 위한 오픈소스
C++, 구글 검색/음성 인식/번역 등

- Docker

자동화 컨테이너 기술

- 스크래피

Python, 웹 크롤링 프레임워크

9) 보안 관련 용어

- 서비스형 블록 체인(Baas)

Blockchain as a Service
블록체인 개발 환경을 클라우드 기반을 ㅗ제공
노드 추가, 제거 용이

- OWASP

the Open Web Application Security Project

웹 정보 노출, 악성 코드, 스크립트, 보안이 취약한 부분 연구하는 비영리 단체
10대 웹 애플리케이션 취약점을 3~4년에 한 번씩 발표

- TCP 래퍼

외부 컴퓨터 접속 인가 여부 점검 → 접속 허용/거부 하는 보안용 도구

- 허니팟

비정상적인 접근 탐지용 시스템
침입자를 속여 실제 공격을 당하는 것처럼 보여줌으로써 추적, 공격 기법 정보 수집

- DPI

Deep Packet Inspection

OSI 7 layer 전 계층의 프로토콜, 패킷 내부 콘텐츠 파악 → 침입 시도, 해킹 탐지, 트래픽 조정

10) HW 관련 신기술

- 고가용성 (HA)

High Availability

장애 발생 시 즉시 다른 시스템으로 대체 가능한 환경 구축 → 클러스터, 이중화

- RAID

Redundant Array of Inexpensive Disk

여러 하드디스크로 디스크 배열 구성 → 데이터 블록을 분산 저장
→ 그 블록을 여러 디스크에서 동시에 읽/쓰 가능 → 속도 매우 향상

- 앤 스크린(N-Screen)

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

- MEMS

Micro-Electro Mechanical Systems

- 트러스트존 기술

하나의 프로세서 내에 일반 구역(일반 애플리케이션을 처리), 보안 구역 분할 관리
→ 하드웨어 기반 보안 기술

- 멤리스터

메모리 + 레지스터
→ 전류의 양, 방향 등 기존의 경험을 기억하는 특별한 소자

11) Secure OS

기존 OS의 보안취약점 해소하기 위해 보안 커널을 이식 → 외부 침입으로부터 시스템 보호하는 OS

구현하기 복잡한 것부터

  • 암호적 분리: 내부 정보 암호화
  • 논리적 분리: 프로세스 논리적 구역 지정 → 구역 벗어나면 제한
  • 시간적 분리: 동시실행 X
  • 물리적 분리: 사용자 별로 특정 장비만 사용

- 보안 기능

  • 식별, 인증
  • 임의적 접근 통제: 권한에 따라 통제, DAC / 신분 기반 정책
  • 강제적 접근 통제: 단말, 방법, 권한, 요청 객체 특성 등의 규칙에 따라 강제 접근 통제, MAC / 규칙 기반 정책
  • 객체 재사용 보호: 메모리에 기존 데이터 남아있지 않도록 초기화
  • 완전한 조정: 우회 X
  • 신뢰 경로: 비번, 권한 설정 등의 작업을 위한 안전한 경로 제공
  • 감사 및 감사기록 축소: 보안 관련 사건, 작업을 기록(log) 후 보호

12) DB 관련 신기술

- 하둡(Hadoop)

오픈소스, 분산 컴퓨팅 플랫폼
일반 PC급 컴퓨터로 가상화된 대형 스토리지 형성 → 거대한 데이터 세트를 병렬로 처리하는 자바 프레임워크
구글, 야후 등이 사용

- 맵리듀스

대용량 데이터 분산 처리용 프로그래밍 모델
흩어진 데이터를 연관성에 따라 map 작업, 중복 제거
원하는 데이터를 추출하는 reduce 작업

- 타조(Tajo)

하둡 기반 분산 데이터 웨어하우스 프로젝트, 우리나라 꺼

- 데이터 마이닝

데이터 웨어하우스에 저장된 데이터 집합에서 사용자 요구에 따라 유용한 정보를 발견하기 위한 기법
대량의 데이터 분석 → 데이터에 내재된 변수 사이의 상호관계 규명, 패턴화

- OLAP

Online Analytical Processing
다차원 데이터로부터 통계적 요약 정보를 분석하여 의사결정에 활용

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

13) 회복

트랜잭션 장애로 DB 손상 시 이전 상태로 복구하는 작업

- 회복 기법

  • 연기 갱신 기법: 트랜잭션 성공까지 DB 갱신 연기 → 갱신된 내용은 로그에 보관, redo 작업만 가능
  • 즉각 갱신 기법: 트랜잭션 부분 완료 전이라도 DB에 반영 → 갱신 내용은 로그에 보관, redo/undo 모두 가능
  • 그림자 페이지 대체 기법: 복사본(그림자 페이지) 별도 보관 → 롤백 시 페이지 대체, 로그/undo/redo 필요 X
  • 검사점 기법: 관련 정보, 검사점 로그 보관 → 장애 발생 시 트랜잭션 전체 철회 X, 검사점부터 회복 (시간 절약)

14) 병행 제어

트랜잭션 상호작용 제어

- 기법 종류

> 로킹

주요 데이터 액세스를 상호배타적으로 하는 것
lock 허락되어야 액세스

> 타임 스탬프 순서

트랜잭션 처리 순서 선택 기법 중 가장 보편적
시간표(타임 스탬프)에 부여된 시간에 따라 작업 수행
교착상태 발생 X

> 최적 병행 수행

검증 기법, 확인 기법, 낙관적 기법

대부분의 트랜잭션이 read only(판독 전용)인 경우 병행 제어 기법 X

> 다중 버전 기법

다중버전 타임 스탬프 기법

타임 스탬프 기법은 시간표로 관리, 갱신될 때마다 버전 부여해서 관리

로킹 단위

  • 병행 제어에서 한꺼번에 로킹할 수 있는 객체의 크기
  • DB, 파일, 레코드, 필드 등
  • 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준 낮아지고,
    작으면 로크수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아짐

15) 교착 상태(Dead Lock)

둘 이상의 프로세스가 자원을 점유한 상태에서, 서로 다른 프로세스가 점유한 자원을 요구하며 무한히 기다림

- 필요 충분 조건

  • 상호 배제: 한 번에 한 개의 프로세스만 공유자원 사용 가능
  • 점유와 대기: 대기 프로세스
  • 비선점: 사용이 끝날 때까지 강제로 못 뺏음
  • 환형 대기: 자원-대기 프로세스 원형 구성 → 자신에게 할당된 자원을 점유하며 앞뒤 프로세스의 자원 요구해야함

- 해결 방법

  • 예방 기법: 사전에 시스템 제어, 4가지 조건 중 하나 제거 → 자원 낭비 가장 심함
  • 회피 기법: 교착 상태가 발생하면 피해나가는 방법, 은행원 알고리즘
  • 발견 기법: 점검해서 교착상태 발견하기, 교착상태 발견 알고리즘/자원할당 그래프 사용
  • 회복 기법: 교착상태 일으킨 프로세스 종료, 교착 상태 프로세스 자원 선점 → 프로세스, 자원 회복

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

1) Secure SDLC

보안상 안전한 소프트웨어 개발을 위해 SDLC에 보안 강화 프로세스를 포함한 것
→ 유지보수 과정에서 보안 이슈 해결 비용 최소화하기 위해

- 방법론

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

2) 보안 요소

3대 요소

  • 기밀성(Confidentiality): 인가된 사용자에게만 접근 허용, 전송 중 노출된 데이터 읽기 불가
  • 무결성(Integrity): 시스템 내 정보는 인가된 사용자만 수정 가능
  • 가용성(availability): 인가된 사용자는 언제라도 사용 가능

ETC

  • 인증
  • 부인 방지: 데이터 송/수신자가 그 사실을 부인할 수 없도록 증거 제공

3) 세션 하이재킹

클라이언트의 세션 훔치기

  • 정상 연결을 RST(reset) 패킷을 통해 종료, 재연결 시 공격자에게 연결
  • 서버와 상호간 동기화된 시퀀스 번호를 이용, 인가되지 않은 시스템의 기능/정보에 접근
  • 탐지 방법: 비동기화 상태, ACK Storm, 패킷 유실, 예상치 못한 접속의 리셋 탐지

4) 입력 데이터 검증 및 표현의 보안 약점

  • SQL 삽입: 동적 쿼리 입력 데이터에 예약어, 특수문자 필터링
  • 경로 조작 및 자원 삽입: 데이터 입출력 경로 조작하여 서버 자원을 수정/삭제 → 경로 순회 공격 방지 필터
  • 크로스사이트 스크립팅(XSS): 웹페이지에 스크립트 삽입해서 방문자 정보 탈취, 비정상 기능 → 문자 치환
  • 운영체제 명령어 삽입: 시스템 명령어 실행 유도, 권한 탈취 → 외부 입력값은 검증 후 사용
  • 위험한 형식 파일 업로드: 스크립트 파일 업로드 → 확장자 제한, 파일명 암호화, 파일서버 분리 등
  • 신뢰되지 않은 URL 주소로 자동 연결: 입력값으로 피싱 사이트 유도 → 외부 사이트 주소 화이트리스트 관리
  • 메모리 버퍼 오버플로: 할당된 메모리 범위 넘어선 위치에서 자료 읽/쓰 → 메모리 버퍼 크기 적절히

5) 보안 기능의 보안 약점

  • 적절한 인증 없이 중요 기능 허용: 재인증 기능 수행
  • 부적절한 인가: 접근 제어 기능이 없는 실행 경로로 정보/권한 탈취 → 모든 실행 경로에 대해 접근제어 검사 수행
  • 중요한 자원에 대한 잘못된 권한 설정
  • 취약한 암호화 알고리즘 사용
  • 중요정보 평문 저장 및 전송
  • 하드코드된 비밀번호

6) 스택 가드

널 포인터 역참조와 같이 주소 저장 스택에서 발생하는 보안 약점 방지 기술
→ 메모리 상에서 복귀주소와 변수 사이에 특정 값 저장 후, 변경 시 오버플로우 상태로 판단 후 프로그램 중지

7) 접근 제어자, 접근 지정자

특정 개체 선언 시 외부 접근 제한용 예약어

/클래스패키지하위 클래스패키지 외부
publicOOOO
protectedOOOX
defaultOOXX
privateOXXX

8) 암호화

- 개인키 암호화 기법

동일한 키로 암호화/복호화

private_key

  • 암호화 대상이 n개일 때 키의 개수는 n(n-1)/2
  • 대칭 암호 기법, 단일키 암호화 기법
  • 블록 암호화 방식: 한 번에 하나의 데이터 블록 암호화 / DES, SEED, AES, ARIA
  • 스트림 암호화 방식: 평문과 동일한 길이의 스트림 생성 → 비트 단위로 암호화 / LFSR, RC4

- 공개키 암호화 기법

공개키(암호화)는 DB 사용자에게 공개, 비밀키(복호화)는 관리자가 비밀리에 관리
public_key

  • 암호화 대상이 n개일 때 키의 개수는 2n
  • 비대칭 암호 기법, 대표적으로 RSA

- 양방향 알고리즘 종류

  • SEED
    • 99년 한국인터넷진흥원(KISA), 블록 암호화 알고리즘
    • 블록 크기 128비트, 키 길이에 따라 128, 256 분류
  • ARIA
    • Academy Research Institute Agency
    • 국정원, 산학 연합회 블록 암호화 알고리즘
    • 블록 크기 128비트, 키 길이에 따라 128, 192, 256 분류
  • DES
    • Data Encryption Standard
    • 75년 NBS 개인키 암호화 알고리즘
    • 3DES: DES를 3번 적용
    • 블록 크기 64, 키 길이 56비트
  • AES
    • Advanced Encryption Standard
    • NIST, 개인키 암호화 알고리즘
    • 블록 크기 128비트, 키 길이에 따라 128, 192, 256으로 분류
  • RSA
    • Rivest Shamir Adeleman
    • MIT의 위 세 사람, 공개키 암호화 알고리즘
    • 큰 숫자를 소인수분해하기 어렵다는 것에 기반
    • 공개키, 비밀키 사용 → 키: 메시지를 열고 잠그는 상수

9) 해시

임의의 길이의 입력 데이터나 메시지를 고정 길이의 값, 키로 변환하는 것

  • 해시함수: 해시 알고리즘
  • 해시값, 해시키: 해시함수로 변환된 값, 키
  • 데이터 암호화, 무결성 검증, 정보 보호의 다양한 분야

- 해시 함수의 종류

  • SHA 시리즈
    • 미국 국가안보국 NSA, 미국 국립 표준 기술 연구소 NIST가 발표
    • SHA-0, SHA-1, SHA-224(=SHA-2), SHA-256, SHA-384, SHA-512
  • MD5
    • R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수
    • 블록 크기 512, 키 길이 128 비트
  • N-NASH
    • 일본 전신전화주식회사 NTT 암호화 해시함수
    • 블록, 키 128비트
  • SNEFRU
    • R.C.Merkle 발표
    • 32비트 프로세서 구현 목적, 블록 512비트, 키 길이에 따라 128, 256

10) 솔트

둘 이상의 사용자 패스워드가 password1234일 때, 같은 암호화 알고리즘 사용 시 결과도 동일
→ 이 경우 공격자가 하나의 암호만 해제해도 둘 이상의 계정 얻게됨

이를 방지하고자 암호화 수행 전에 원문에 무작위 값을 덧붙임 → 덧붙이는 무작위 값 == 솔트

4. 시스템 보안 구축

1) DDoS(분산 서비스 거부) 공격

네트워크 취약점 있는 호스트에 분산 서비스 공격 툴을 설치하여 에이전트로 만든 후 DDos 공격에 이용
일부 호스트에 핸들러(다수의 에이전트 관리) 설치하여 마스터로 지정한 후 공격하기도

- 분산 서비스 공격 툴

에이전트 역할 수행용 프로그램, 데몬(Daemon)이라고 부름

  • Trin00: 초기 형태의 데몬, UDP Flooding
  • TFN(Tribe Flooding Network): UDP Flooding, TCP SYN Flood, ICMP 응답 요청, 스머핑 공격 등
  • TFN2K: TFN 확장판
  • Stacheldraht: 이전 툴 기능 유지하며 공격자, 마스터, 에이전트 노출되지 않도록 암호화 통신 수행, 툴 자동 업데이트

2) 네트워크 침해 공격 관련 용어

  • Ping of Death(죽음의 핑)
    • Ping 명령 전송 시 패킷 크기를 인터넷 프로토콜 허용 범위 이상으로 전송 → 대상 네트워크 마비
  • SMURFING: IP, ICMP 특성 악용 → 엄청난 양의 데이터를 집중적으로 보냄
  • Smishing: 문자로 개인정보 빼내기
  • Phising: Private Data + Fishing (공기관 사칭)
  • Ping Flood: 특정 사이트에 매우 많은 ICMP 메시지 보냄 → 응답으로 시스템 자원 모두 사용하게 함
  • Evil Twin Attack: 실제 존재하는 동일한 이름의 Wifi 송출 → 로그인한 사람 정보 탈취
  • 스위치 재밍: 위조된 MAC 주소를 흘려보내 스위치 MAC 주소 테이블의 저장 기능 혼란 → 더미허브화

3) 블루투스 관련 공격

  • 블루버그: 블루투스 연결관리 취약 → 휴대폰 원격 조정, 통화 감청
  • 블루스나프: 장비 파일에 접근 → OPP를 사용하여 정보 열람
  • 블루프린팅: 공격할 장비 검색
  • 블루재킹: 블루투스로 스팸 보내기

4) 정보 보안 침해 공격 관련 용어

  • 웜(Worm)
    • 네트워크를 통해 연속적으로 자신을 복제 → 시스템 부하 ↑ → 시스템 다운
    • 바이러스의 일종
    • 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등
  • 제로 데이 공격
    • 보안 취약점 발견 시, 그 존재가 알려지기 전에 공격 (공격의 신속성)
  • 키로거 공격
    • 키보드 움직임으로 중요 정보 해킹
  • 랜섬 웨어
  • 백도어
    • 액세스 편의를 위해 시스템 보안을 제거하여 만들언호은 비밀 통로
    • 탐지 방법: 무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사

5) 인증(Authentication)

지식 기반 인증, 소유 기반, 생체 기반, 위치 기반

6) 관리적/물리적/기술적 보안

  • 관리적 보안: 정보보호 정책, 조직, 정보 자산 분류, 정보 보호 교육/훈련, 인적 보안 등
  • 물리적 보안: 출입 통제, 관리 지침, 재해 복구 센터 등
  • 기술적 보안: 사용자 인증, 접근 제어, PC/서버/네트워크 등의 보안지침 정의

7) 리눅스의 커널 로그

  • /dev/console: 커널 관련 내용을 관리자에게 알리기 위해 파일에 저장하지 않고 지정 장치에 표시
  • var/log/wtmp: 성공한 로그인/로그아웃, 시스템 시작/종료 로그
  • var/run/utmp: 현재 로그인한 사용자 상태 로그
  • var/log/btmp: 실패한 로그인에 대한 로그
  • var/log/lastlog: 마지막으로 성공한 로그인에 대한 로그

8) 침입 탐지 시스템(IDS)

Intrusion Detection System

컴퓨터 시스템의 비정상적인 사용, 오용, 남용 실시간 탐지 시스템

  • 방화벽 같은 침입 차단 시스템만으로는 내부 사용자의 불법적 행동, 해킹에 완벽하게 대처 불가

  • 문제 발생 시 모든 정보 흐름을 실시간으로 차단하기 위해 침입 패턴 추적, 유해 정보 감시 필요

  • 오용 탐지: 미리 입력해둔 공격 패턴 감지 시 알림

  • 이상 탐지: 비정상적 행위, 자원 사용 감지 시 알림

- 침입 탐지 시스템의 종류

  • HIDS
    • Host-Based Intrusion Detection
    • 시스템 내부 감시, 분석
    • 누가 어떤 작업 수행했는지 기록, 추적
    • OSSEC, md5deep, AIDE, Samhain 등
  • NIDS
    • Networt-Based
    • 외부 침입 감시 분석용
    • 트래픽 감시 → 서비스 거부 공격, 포트 스캔 등 악의적 시도 감지
    • Snort, Zeek

- 위치

  • 패킷이 라우터로 들어오기 전: 네트워크에 시도되는 모든 공격 탐지 가능
  • 라우터 뒤: 패킷 필터링을 통과한 공격 탐지
  • 방화벽 뒤: 내부에서 외부를 향하는 공격 탐지
  • 내부 네트워크: 내부에서 내부 해킹 감지
  • DMZ: 외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크

9) VPN

가상 사설 통신망

통신 사업자의 공중 네트워크 + 암호화 기술 → 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션

10) SSH(시큐어 셸)

다른 컴퓨터에 로그인, 원격 명령, 파일 복사 등을 수행할 수 있도록하는 프로토콜, 응용 프로그램

  • 데이터 암호화, 강력한 인증 방법 → 보안성 낮은 네트워크에도 안전한 통신 가능
  • key를 통한 인증방법을 사용하려면 클라이언트 공개키 서버 등록 필요
  • 기본적으로 22번 포트 사용

0개의 댓글