반응형
1장 소프트웨어 개발 방법론 활용
소프트 웨어 개발 방법론
구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 복잡한 문제를 다루기위해 분할 정복 적용
정보공학 방법론
- 정보 시스템의 개발 위해 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료(data)중심 방법론
- DB 설계를 위한 ERD 사용
컴포넌트 방법론 (CBD)
- 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의 재사용
- 기능 추가가 쉬워 확장성 보장
- 유지보수 비용 최소화, 생산성 및 품질 향상
- 분석단계에서 사용자 요구사항 정의서 산출
SW공학의 발전적 추세
SW재사용 방법
- 합성 중심: 모듈을 만들어서 끼워 맞춰 소프트웨어를 완성 시키는 방법
- 생성 중심 : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
SW 재공학의 주요 활동
- 분석(Analysts) : 기존 SW 명세서를 확인하여 동작을 이해하고, 재공학할 대상을 선정
- 재구성(Restructuring) : 기존 SW의 구조를 향상 시키기 위해 코드를 재구성
- 역공학(Reverse Engineering) : 기존 SW를 분석하여 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만드는 활동
- 이식(Migration) : 기존 SW를 다른 운영체제나 HW환경에서 사용할 수 있도록 변환
CASE (Computer Aided Software Engineering)
- 소프트웨어 개발 과정의 전체 또는 일부를 자동화 하는 것
- 장점
- 개발기간 단축, 개발 비용 절감
- 자동화 기법을 통해 품질 향상
- 유지보수 간편
- 모듈의 재사용성 향상
- 주요 기능
- SW 생명 주기 전 단계의 연결
- 다양한 SW 개발 모형 지원
- 그래픽 지원
- 모델들의 모순 검사 및 오류 검증
- 자료 흐름도 작성
- 원천 기술
- 구조적 기법, 프로토타이핑, 자동프로그래밍, 정보 저장소, 분산처리
상향식 비용 산정 기법
LOC(원시 코드 라인 수)
- 비관치 (가장 긴 라인), 낙관치(가장 짧은 라인), 기대치(측정된 평균 라인)
- 예측치 = (낙관치 + 비관치 + 4*기대치) / 6
수학적 산정 기법
COCOMO 모형
- 보헴(Boehm) 제안
- LOC에 의한 비용 산정기법
- M/M
COCOMO (Constructive Cost Model) 모형의 특징
- 프로젝트를 완성하는데 필요한 man-month로 산정 결과를 나타냄
- 보헴 (Boehm)이 제안한 것으로 원시코드 라인수 (LOC)에 의한 비용 산정 기법
- 비교적 작은 규모의 프로젝트를 통계 분석한 결과를 반영한 모델
- 중소규모 소프트웨어 프로젝트 비용 추정에 적합
- 개발 유형에 따라 조직형, 반분리형, 내장형으로 구분
- 조직형 (Organic)
- 5만 라인 이하
- 사무 처리용, 업무용, 과학용 소프트웨어 개발에 적합
- 반분리형 (Semi-Detached)
- 30만 라인 이하
- 컴파일러, 인터프리터 개발에 적합
- 내장형 (Embedded)
- 30만 라인 이상
- 미사일 유도 시스템, 실시간 처리 시스템 개발에 적합
- 조직형 (Organic)
Putnam 모형
- 소프트웨어 생명 주기의 전 과정 동안 사용될 노력의 분포를 가정해주는 모형
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력분포도를 기초함
- 대형 프로젝트의 노력 분포 산정에 이용
- 개발기간이 늘어날수록 프로젝트 적용 인원의 노력 감소
기능 점수(FP) 모형 - 가중치 증대 요인
- 자료 입력(입력 양식)
- 정보 출력(출력 보고서)
- 명령어(사용자 질의수)
- 데이터 파일
- 필요한 외부 루틴과의 인터페이스
프로젝트 일정 계획
PERT (프로그램 평가 및 검토 기술)
- 프로젝트에 필요한 전체 작업의 상호관계를 표시하는 네트워크로 각 작업별로 낙관치, 기대치, 비관치로 종료시기를 결정
- 작업들 간의 상호 관련성, 결정경로, 경계시간, 자원할당 등을 제시한다.
- 각 작업들이 언제 시작하고 언제 종료되는 지에 대한 일정을 네트워크 도표를 이용하여 표시한다.
CPM (임계 경로 기법)
- 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용
- 경영층의 과학적인 의사 결정 지원
- 효과적인 프로젝트 통제 가능
- 병행작업 가능하도록 계획 가능, 이를 위한 자원 할당 가능
- 임계 경로는 최장 경로를 의미
간트 차트(Gantt Chart)
- 프로젝트 각 작업이 언제 시작하고 종료되는지 막대 도표로 표기
- 수평 막대 길이는 작업의 시간
소프트웨어 개발 표준
CMMI (Capability Maturity Model Integration)
- 초기(Initial)
- 관리(Managed)
- 정의(Defined)
- 정량적 관리(Quantitatively Managed)
- 최적화(Optimizing)
SPICE (Software Process Improvement and Capability dEtermination)
- SW의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
- 목적
- 프로세스 개선을 위해 개발 기관이스스로 평가하는 것
- 기관에서 지정한 요구조건의 만족여부를 개발 조직이 스스로 평가
- 계약 체결을 위해 수탁 기관의 프로세스를 평가
- 프로세스 수행 능력 단계
- Level 0 - 불완전(Incomplete)
- Level 1 - 수행(Performed)
- Level 2 - 관리(Managed)
- Level 3 - 확립(Established)
- Level 4 - 예측(Predictable)
- Level 5 - 최적화(Optimizing)
프레임워크
- 개발에 필요한 요소들을 일반화하여 쉽게 구현할 수 있도록 여러 기능들을 제공해주는 반제품 형태의 소프트웨어
- 표준화된 개발 기반으로 인해 사업자 종속성 해소
- 개발해야할 일부분이 이미 내장된 클래스 라이브러리로 구현되어 있음
- 특성
- 모듈화
- 재사용성
- 확장성
- 제어의 역흐름
2장 IT프로젝트 정보시스템 구축 관리
네트워크 관련 신기술
소프트웨어 정의 기술(SDE, SDx; Software-Defined Everything)
- 소프트웨어 정의 네트워킹 (SDN)
- 네트워크를 컴퓨터처럼 모델링하여 여러 사용자가 각각의소프트웨어들로 네트워킹을 가상화하여 제어하고 관리하는 네트워크
- 하드웨어에 의존하는 네트워크보다 효율적
- 기존 네트워크에는 영향을 주지 않으면서 특정 서비스의 전송 경로 수정을 통해 인터넷상에서 발생하는 문제 처리
- 소프트웨어 정의 데이터 센터(SDDC)
- 데이터 센터의 모든 자원을 가상화하여 인력의 개입 없이 소프트웨어 조작만으로 관리 및 제어되는 데이터 센터
- 소프트웨어 정의 스토리지 (SDS)
- 물리적인 데이터 스토리지를 가상화하여 여러 스토리지를 하나처럼 관리하거나, 하나의 스토리지를 여러 스토리지로 나눠 사용
IoT
- 올조인(AllJoyn)
- 오픈소스 기반 IoT플랫폼
- 서로 다른 OS나 HW를 사용하는 기기들이 표준화된 플랫폼을 이용함으로써 서로 통신 및 제어 가능
- 메시 네트워크(Mesh Network)
- 차세대 이동통신, 홈네트워킹, 공공 안전 등 특수 목적을 위한 네트워크
- 수많은 디바이스를 그물망(Mesh)과 같이 유기적으로 연결하여 모든 구간을 동일한 무선망처럼 구성하여 사용자가 안정적인 네트워크를 사용
- 와이선(Wi-SUN)
- 스마트 그리드와 같은 장거리 무선 통신을 필요로 하는 IoT서비스를 위한 저전력 장거리 통신기술
- 낮은 지연 속도, 메시 네트워크 기반확장성, 펌웨어 업그레이드 용이성 등으로 짧은 시간 동안 데이터 전송이 빈번한 검침 분야에 유용
- UWB (Ultra WideBand, 초광대역)
- 짧은거리에서 많은 양의 디지털 데이터를 낮은 전력으로 전송하기 위한 무선 기술
- 무선 디지털 펄스, 블루투스와 비교(근거리)
- 땅 속이나 벽면 뒤로도 전송이 가능, 지진 등 재해가 일어났을 때 탐지 가능
- 피코넷(PICONET)
- 여러 개의 독립된 통신장치가 블루투스나 UWB를 통해 통신망을 형성하는 무선 네트워크 기술
- 주로 수십 미터 이내의 좁은 공간에서 네트워크를 형성
- USN (Ubiquitous Sensor Network, 유비쿼터스 센서 네트워크)
- 각종 센서로 다양한 정보를 무선으로 수집
- 필요한 모든곳에 RFID 태그를 부착, 이를 통해 사물의 인식 정보와 주변 환경 정보까지 탐지한 모든 데이터 관리
- SON (Slef Organizing Network, 자동 구성 네트워크)
- 주변 상황에 맞추어 스스로 망을 구성
- 장애 발생시 자체 치유 가능
- 저전력 블루투스 기술 (BLE; Bluetooth Low Energy)
- 일반 블루투스와 동일한 2.4GHz 주파수를 사용하지만 연결 되지 않은 대기 상태에서는 절전모드 유지
- NFC (Near Field Communication, 근거리 무선 통신)
- 고주파(HF)를 이용한 근거리 무선 통신, 아주 가까운 거리에서 양방향 통신을 지원하는 RFID기술의 일종
클라우드 컴퓨팅
- 클라우드 기반 HSM
- 클라우드 기반 암호화 키의 생성, 저장, 처리 등의 작업을 수행하는 보안기기
- 암호화 키 생성이 HW적으로 구현되기 때문에 SW적으로 구현된 암호 기술이 가지는보안 취약점 무시
- 파스-타 (Paas-TA)
- 소프트웨어 개발 환경을 제공하기 위해 개발한 개방형 클라우트 컴퓨팅 플랫폼
- 국내 IT서비스 경쟁력 강화를 목표, 인프라 제어 및 관리 환경, 실행 환경, 개발 환경, 서비스 환경, 운영 환경으로 구성
- 징(Zing)
- 10cm이내 거리에서 데이터 전송이 가능한 초고속 NFC
- 기기를 키오스크에 갖다 대면 원하는 데이터를 바로 가져가는 기술
- 근거리로 가까이 가면 지이이잉 하고 소리난다고 외운다
- NGN (Next Generation Network, 차세대 통신망)
- ITU-T에서 개발하고 있는 유선망 기반의 차세대 통신망
- WBAN (Wireless Body Area Network)
- 웨어러블, 몸에 심는 형태의 센서나 기기를 무선 연결
- 스마트 그리드(Smart Grid)
- 정보 기술을 전력에 접목해 효율성을 높인 시스템, 전력IT라고도 함
- 전력선을 기반으로 모든 통신, 정보, 관련 애플리케이션 인프라를 하나의 시스템으로 통합
- 효율적인 에너지 관리
네트워크 구축
성형(Star, 중앙 집중형)
- Point-to-Point 방식
- 단말장치 추가 제거 쉬움
- 하나의 단말장치가 고장나도 괜찮은데 중앙 고장나면 안됨
- 중앙 집중식으로 교환 노드의 수가 적다.
링형(Ring, 루프형)
- Point-to-Point
- 분산 및 집중 제어 가능
- 각 단말장치에서 전송 지연 발생
- 단방향 또는 양방향 가능
- 단방향의 경우 하나만 고장나도 전부 먹통
버스형(Bus)
- 한 개의 통신 회선에 여러대의 단말 장치 연결
- 물리적 구조 간단
- 단말기 추가 제거 용이
- 단말장치가 고장나도 전체에 영향을 주지않아 신뢰성이 높음
- 기밀 보장이 어려움, 통신 회선의 길이 제한
계층형(Tree, 분산형)
- 분산 처리 시스템 구성 방식
망형(Mesh)
- 많은 단말장치로부터 많은 양의 통신이 필요할 때
- 공중 데이터 통신망에 사용, 통신 회선의 총 경로가 가장 길다
- 통신 회선 장애시 다른 경로를 통해 데이터 전송
- 노드가 n개일 때 n(n-1)/2 회선 필요, 노드당 n-1개 필요
CSMA/CD (Carrier Csese Muliple Access/Collision Detection)
- 데이터 프레임간의 충돌이 발생하는 것을 인정하고 이를 해소하기 위해 CSMA 방식에 충돌 검출 기능과 충돌 발생시 재송신 하는 기능 추가
- 통신 회선이 사용중이면 일정 시간 동안 대기하고, 통신회선 상에 데이터가 없을 때만 데이터를 송신, 송신 중에도 전송로의 상태를 계속 감시
- 유선, 감지
CSMA/CA (Carrier Csese Muliple Access/Collision Avoidance)
- 무선 랜에서 데이터 전송시 매체가 비어있음을 확인한 뒤 충돌을 피하기 위해 일정한 시간을 기다린후 데이터를 전송
- 회선을 사용하지 않는 경우에도 확인 신호를 전송하여 동시 전송에 의한 충돌 예방
- 무선, 회피
경로제어 / 트래픽 제어
경로 제어 프로토콜 (Rounting Protocol)
IGP (Interior Gateway Protocol, 내부 게이트웨이 프로토콜)
- RIP (Routing Information Protocol)
- 가장 많이 사용하는 라우팅 프로토콜
- 거리 벡터 라우팅 프로토콜이라 불림
- 최단 경로 탐색에 벨만-포드 알고리즘 사용
- 소규모 네트워크에 효율적
- 최대 홉 수를 15홉으로 제한
- OSPF (Open Shortest Path First protocol)
- RIP의 단점 해결, 대규모 사용
- 최단 경로 탐색에 다익스트라 알고리즘 사용
EGP (Exterior Gateway Protocol)
- 자율 시스템 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용
BGP (Border Gateway Protocol)
- 자율 시스템 간의 라우팅 프로토콜, EGP 단점 보안
트래픽 제어
흐름 제어(Flow Control)
- 네트워크의 패킷의 양이나 속도를 규제하는 기능
- 정지-대기 (Stop-and-Wait)
- 수신 측의 Ack을 받은 후 다음 패킷 전송
- 한번에 하나의 패킷만 전송
- 슬라이딩 윈도우 (Sliding Window)
- 확인 신호를 이용해 송신 데이터 양 조절
- 수신 측의 신호 받지 않더라도 미리 정해진 패킷의 수만큼 연속 전송
- 한번에 여러개의 패킷을 보내 전송 효율 좋음
- 송신 측은 수신 측으로부터 확인 신호(Ack) 없이도 보낼 수 있는 패킷의 최대치를 미리 약속받는데, 이 패킷의 최대치가 윈도우 크기
- 긍정수신 응답이 전달되면 윈도우 크기 증가
- 부정 수신 응답이 전달되면 윈도우 크기 감소
폭주(혼잡) 제어(Congestion Control)
- 네트워크 패킷 수를 조절하여 오버플로 방지
- 느린 시작(Slow Start)
- 윈도우의 크기를 1, 2, 4, 8, 과 같이 2배씩 증가시켜 처음엔 느리지만 갈수록 빨라짐
- 전송 데이터 크기가 임계값에 도달하면 혼잡 회피 단계로 넘어감
- 혼잡 회피 (Congestion Avoidance)
- 느린 시작이 임계값에 도달하면 혼잡으로 간주하고 회피를 위해 윈도우의 크기를 1씩 선형적으로 증가시켜 혼잡을 예방
SW 관련 신기술
그레이웨어(Grayware)
- 유용할수도, 악의적일 수도 있는 애드웨어, 트랙웨어 같은 프로그램
매시업(Mashup)
- 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, DB 등을 만드는 기술
증발품(Vaporware)
- 판매계획, 배포계획은 있으나 실제로 판매되지 않은 SW
서비스 지향 아키텍처 (SOA; Service Oriented Architecture)
- 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
- 기업의 IT시스템을 유연하게 사용할 수 있음
- SOA기반 애플리케이션 계층
- 표현계층
- 업무 프로세스 계층
- 서비스 중간 계층
- 애플리케이션 계층
- 데이터 저장 계층
서비스형 소프트웨어 (Saas)
- SW의 여러 기능 중 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어
- 공급업체가 하나의 플랫폼을 이용해 다수의 고객에게 소프트웨어 서비스를 제공하고, 사용자는 이용한 만큼 돈 지불
디지털 트윈
- 현실속의 사물을 대신해 모의 실험 하기위한 용도로 사용
텐서플로(TensorFlow)
- 구글 제작.
- 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 라이브러리
- C++제작, 구글 검색, 음성인식, 번역 등 사용 가능
도커(Docker)
- 컨테이너 기술을 자동화하여 쉽게 사용할 수 있게 하는 오픈소스 프로젝트
- 컨테이너 안에 프로그램들을 배치시켜 일을 자동화 해줌
스크래피(Scrapy)
- Python 웹 크롤링 프레임워크
보안 관련 신기술
- 블록체인
- 분산 원장 기술(DLT; Distributed Ledger Technology)
- 양자 암호키 분배 (QKD; Quantum Key Distribution)
- 양자 통신을 위해 비밀키를 분배관리하는 기술
- 프라이버시 강화 기술 (PET; Privacy Enhancing Technology)
- 비트로커 (BitLocker)
- 윈도우7부터 지원, 윈도우 전용
- TPM과 AES-128 알고리즘 사용
- 서비스형 블록체인 (Baas)
- 블록체인앱의 개발 환경을 클라우드 기반으로 제공하는 서비스
- 다른 블록체인 기술을 보다 편리하게 사용하게 해줌
- OWASP (the Open Web Application Security Project, 오픈 웹 애플리케이션 보안 프로젝트)
- 보안 취약부분을 연구하는 비영리 단체
- TCP 래퍼 (TCP Wrapper)
- 외부 컴퓨터의 접속 여부를 점검하여 허용 및 거부하는 보안 도구
- 허니팟 (Honeypot)
- 비정상적 접근을 탐지하기 위해 설치해둔 시스템
- DPI (Deep Packet Inspection)
- OSI 7 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입시도, 해킹을 탐짐하고 트래픽을 조정하기 위한 패킷 분석 기술
HW 관련 신기술
고가용성 솔루션 (HACMP; High Availability Clustering MuliProcessing)
- 안정적인 서비스 운영 위해 장애 발생시 즉시 다른 시스템으로 대체 가능한 환경울 구축하는 매커니즘
- 각 시스템 간에 공유 디스를 중심으로 클러스터링으로 엮어 다수의 시스템을동시에 연결
RAID (Redundant Array of Inexpensive Disk, Redundant Array of Independent Disk)
- 여러 개의 하드디스크로 디스크 배열을 구성하여 파일을 구성하고 있는 데이터 블록들을 서로 다른 디스크에 분산하여 저장할 경우 그 볼륵들을 여러 디스크에서 동시에 읽거나 쓸 수 있음
- 디스크 속도 매우 향상
- RAID는 한 디스크에만 문제가 생겨도 전체가 손상됨
- 오류 검출 방법에 따라 RAID1~RAID5 5종류 있음
N-Screen
- 여러개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 보는 것
DB 관련 신기술
- 빅데이터
- 브로드 데이터
- 빅데이터와 달리 다양한 정보를 뜻함, SNS나 위치 정보 등
- 메타 데이터
- 데이터를 정의하고 설명해주는 데이터
- 주로 빠르게 검색하거나 내용을 간략하고 체계적으로 하기위해 사용
- 엘라스틱 서치같은 느낌
- 디지털 아카이빙
- 하둡 (Hadoop)
- 오픈소스 기반 분산 컴퓨팅 플랫폼
- 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성, 그 안에 보관된 거대한 데이터 세트를 병렬 처리
- 하둡과 RDBMS 간 대용량 데이터를 전송할 때 스쿱(Sqoop) 사용
- 맵 리듀스
- 타조 (Tajo)
- 우리나라에서 주도하여 개발
- 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트
- 대규모 데이터 처리와 실시간 상호분석에 사용
- 데이터 다이어트
- 데이터 마이닝 (Data Mining)
- 대량의 데이터를 분석하여 데이터 속에 내재되어 있는 변수 사이의상호관계를 규명하여 패턴화
- 효율적인 데이터 추출 가능
- OLAP (Online Analytical Processing)
- 다차원으로 이루어진 데이터로부터 통계적인 요약을 분석하여 사용
- OLAP 연산 : Roll-up, Drill-down, Drill-through, Drill-across, Pivoting, Slicing, Dicing
회복 / 병행제어
- 트랜잭션들을 수행하는도중 장애가 발생하여DB가 손상되었을 때 손상 이전으로 복구하는 작업
장애 유형
- 트랜잭션 장애
- 시스템 장애
- 미디어 ㅈ아애
회복 기법
연기 갱신 기법 (Deferred Update)
- 트랜잭션이 성공적으로 완료될 때까지 DB에 대한 실질적인 갱신을 연기
- 트랜잭션이 수행되는 동안 갱신된내용은 로그에 보관
- Redo작업만 가능
즉각 갱신 기법 (Immediate Update)
- 트랜잭션이 데이터를 갱신하면 부분 완료되기 전이라도 즉시 실제 DB에 반영
- Redo와 Undo 사용
그림자 페이지 대체 기법 (Shadow Paging)
- 갱신 이전 데이터베이스를 일정 크기로 페이지 복사본인 그림자페이지로 별도 보관, 장애가 발생하여 Rollback 할 때 갱신된 이후 실제 페이지 부분에 그림자 페이지를 대체하여 회복
- 로그, Undo, Redo 필요 없음
검사점 기법
- 일정 지점부터 회복하는 것
병행 제어 (Concurrency Control)
- 여러개의 트랜잭션을 병행 수행할때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것
목적
- 데이터베이스의 공유 최대화
- 시스템의 활용도 최대화
- 데이터베이스의 일관성 유지
- 사용자 응답 시간 최소화
병행제어 기법
- 로킹 (Locking)
- 주요 데이터의 액세스를 상호 배타적으로 하는 것
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야 그 로킹 단위를 액세스 할 수 있음
- 타임 스탬프 순서 (Time Stamp Ordering)
- 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택
- 가장 보편적
- 교착상태 발생하지 않음
- 최적 병행수행 (검증 기법, 확인 기법, 낙관적 기법)
- 트랜잭션이 Read Only일 경우 충동률이 매우 낮아서 병행제어 기법을 사용하지 않아도 일관성 있게 유지됨
- 다중 버전 기법
- 타임 스탬프 기법 이용, 다중 버전 타임 스탬프 기법 이라함
- 타임 스탬프가 시간표를 이용한다면, 다중 버전은 버전을 이용함
* 로킹 단위
- 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기
- DB, 파일, 레코드, 필드 등이 로킹 단위
- 로킹단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아짐
- 로킹단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드 증가, 병행성 수준 높아짐
교착상태 (Dead Lock)
교착 상태 필요 충분 조건
- 상호 배제 (Mutual Exclusion)
- 한 번에 한 개의 프로세스만 공유 자원을 사용할 수 있어야 한다
- 점유와 대기 (Hold and Wait)
- 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있느 ㄴ자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
- 비선점 (Non-preemption)
- 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
- 환형 대기 (Circular Wait)
- 공유 자원과 공유자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.
교착상태 해결 방법
- 예방 기법 (Prevention)
- 교착 상태가 발생하지 않도록 사전에 시스템을 제어
- 교착상태 발생의 4가지 조건중 어느 하나를 제거하여 수행
- 자원의 낭비가 가장 심함
- 회피 기법 (Avoidance)
- 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 회피하는 방법
- 은행원 알고리즘 사용 (Banker's Algorithm)
- 다익스트라, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래
- 발견 기법 (Detection)
- 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것
- 교착상태 발견 알고리즘과 자원 할당 그래프 사용
- 회복 기법 (Recovery)
- 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것
3장 소프트웨어 개발 보안 구축
Secure SDLC
- 보안상 안전한 소프트웨어를 개발하기 위해 SDLC (Software Development Life Cycle)에 보안 강화를 위한 프로세스 포함
- CLASP
- Secure Woftware 개발, SDLC의 초기 단계에서 보안 강화
- 활동 중심, 역할 기반의 프로세스로 구성
- 현재 운용중인 시스템에 적용
- SDL
- MS에서 개발, 기존의 SDLC 개선
- 전통적인 나선형 모델
- Seven Touchpoints
- 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
- 설계 및 각 개발과정의 모든 산출물에 대해 위험 분석 및 테스트
- SDLC의 각 단계에 관련된 7개의 보안 강화 활동 수행
보안 요소
- 기밀성, 무결성, 가용성, 인증, 부인 방지
- 기밀성 (Confidentiality)
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
- 정보가 전송 중 노출되더라도 데이터 읽을 수 없음
- 무결성 (Integrity)
- 시스템 내의 정보는 오직 인가된 사용자만 수정
- 가용성 (Availability)
- 인가받은 사용자는 언제라도 사용할 수 있음
- 인증 (Authentication
- 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 모든 행위
- PW, 지문검사 등
- 부인 방지 (NonRepudiation)
- 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공
입력 데이터 검증 및 표현
보안 약점 종류
- SQL 삽입(SQL Injection)
- 웹 응용프로그램에 SQL을 삽입하여 내부 DB서버의 데이터를 유출 및 변조, 관리자 인증 우회
- 동적 쿼리에 사용되는 입력데이터에 예약어 및 특수문자가 입력되지 않게 필터링하여 방지
- 경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제
- 사용자 입력값을 식별자로 사용하는경우 경로 순회 공격을 막는 필터를 사용하여 방지
- 크로스사이트 스크립팅(XSS; Cross Site Scripting)
- 웹페이지에 악의적인 스크립트를 삽입하여 방문자 정보를 탈취하거나 비정상적인 기능을 수행하도록 함
- HTML태그의 사용을 제안하거나 스크립트에 삽입되지 않도록, < > & 등의 문자를 다른문자로 치환하여 방지
- 운영체제 명령어 삽입
- 외부 입력값을 통해 시스템 명령어의 실행을 유도하여 권한을 탈취하거나 시스템 장애를 유발
- 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부명령어로 사용하지 않음으로 방지
- 위험한 형식 파일 업로드
- 악의적인 명령어가 포함된스크립트 파일 업로드
- 업로드 되는 파일의 확장자 제한, 팡리명 암호화, 웹사이트와 파일 서버 분리 등으로 방지
- 신뢰되지 않는 URL 주소로 자동 접속
- 방문자를 피싱사이트로 유도
- 연결되는 외부사이트 주소를 화이트리스트로 관리하여 방지
- 메모리 버퍼 오버플로
암호 알고리즘
개인키 암호화(Private Key Encryption) 기법
- 동일한 키로 데이터를 암호화하고 복호화한다.
- 블록 암호화 방식 : DES, SEED, AES, ARIA, IDEA
- 스트림 암호화 방식 : LFSR, RC4
- 장점: 암/복호화 속도가 빠름, 알고리즘 단순, 공개키 암호 기법보다 파일 크기가 작음
- 단점: 사용자의 증가에 따라 관리해야할 키의 수가 많아짐
공개키 암호화(Public Key Encryption) 기법
- 암호화할 때 사용하는 공개키는 데이터 베이스 사용자에게 공개, 복호화할때 비밀키는 관리자가 비밀리에 관리
- 암호화 대상이 n개일 때 키의 개수는 2n개
- 비대칭 암호 기법이라고도 함, RSA 기법이 있음
- 장점: 키의 분배가 용이, 관리해야할 키의 개수 적음
- 단점: 암호화/복호화속도 느림, 알고리즘 복잡, 개인키 암호화 기법보다 파일의 크기가 큼
양방향 알고리즘 종류
- SEED
- 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
- 블록 크기 128비트, 키 길이에 따라 128, 256 분류
- ARIA (Academy, Research Institute, Agency)
- 국정원과 산학연협회에서 개발한 블록 암호화 알고리즘
- 블록 크기 128, 키길이에 따라 128, 192, 256
- DES (Data ncryption Standard)
- 미국 NBS에서 발표한 개인키 암호화 알고리즘
- DES를 3번 적용한 3dES 있음
- 블록크기 64, 키 길이 56
- AES (Advanced Encryption Standard)
- 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘
- DES의 한계때문에 개발
- 블록크기 128, 키길이 56
- RSA (Rivest Shamir Adleman)
- MIT에서 개발한 공개키 암호화알고리즘
- 큰 숫자를 소인수분해 하기 어렵다는 것에 기반
- 공개키와 비밀키를 사용, 키는 상수
- ECC (Elliptic Curve Cryptography)
- RSA 암호 방식 대안
- 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높임
- Rabin
- 미하엘 라빈 개발
- 소인수분해 어려움에 안정성의 근거를 둔 암호화 알고리즘
해시 (Hash)
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
- 해시함수라 부름, 해시 함수로 변환된 값이나 키를 해시값, 해시키로 부름
- 무결성 검증을 위해 사용, 정보보호의 다양한 분야 활용
- 복호화가 불가능, 일방향 함수
- SHA 시리즈, MD5, N-NASH, SNEFRU
솔트(Salt)
- 암호화를 수행하기에 앞서 원문에 무작위의 값을 덧붗이는 과정
- 솔트를 사용하면 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과가 나타나 더 안전하게 암호화된 데이터 관리
4장 시스템 보안 구축
서비스 공격 유형
- Ping of Deate (죽음의 핑)
- Ping 명령을 전송할 때 ICMP 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격 방법
- 방화벽 차단기술 개발
- SMURFING (스머핑)
- IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보내 네트워크를 불능 상태로 만드는 방법
- 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 미리 설정하여 방지
- SYN Flooding
- 공격자가 가상의 클라이언트로 윚아하여 3-way-handshake 과정을 의도적으로 중단시켜 공격 대상지인 서버가 대기상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 방법
- 수신지의 SYN 수신 대기 시간을 줄이거나 침입 차단 시스템 이용
- TearDrop
- Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시키는 방법
- Offset이 잘못된 경우 해당 패킷을 폐기하여 방지
- Land
- 패킷을 전송할 때 송신 IP주소와 수신 IP주소 모두 공격 대상의 IP주소로 하여 공격 대상에게 전송하는 것
- 이 패킷을 받은 공격 대상은 송신 IP주소가 자신이므로 자신에게 응답을 수행함
- 이러한 패킷이 계쏙해서 전송될 경우 자신에게 무한히 응답하는 공격
- 송신IP와 수신IP의 적절성을 검사하여 방지
- DDoS (Distributed Denial of Service, 분산 서비스 거부) 공격
- 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격 수행
- 공격 툴 : Trin00, TFN, TFN2K, Stacheldrhat 등
네트워크 침해 공격
- 스미싱 (Smishing)
- 문자 (SMS)를 이용해 공격
- 최근은 문자에 링크를 걸어 apk파일을 설치하여 빼감
- 스피어 피싱 (Spear Phishing)
- 일반적 메일로 위장한 메일을 지속적으로 보내 메일 링크나 첨부파일을 클릭하게함
- APT (Advanced Persistent Threats, 지능형 지속 위협)
- 악성코드가 포함된 이메일을 꾸준히 보내 한번이라도 클릭하게함
- 악성코드가 담긴 USB, p2p사이트 등으로도 퍼짐
- 무작위 대입 공격 (Brute Force Attack)
- 암호에 아무값이나 계속 입력
- 큐싱 (Qshing)
- QR코드로 낚시
- Phishing
- 이메일이나 메신저로 사칭해 개인정보 빼냄
- Ping Flood
- 특정 사이트에 매우 많은 ICMP 메시지를 보내 시스템이 정상적으로 동작하지 못하도록 하는공격
- Evil Twin Attack
- 실제 존재하는 동일한 이름의 와이파이 신호를 송출해 개인정보를 빼냄
- 스위치 재밍 (Switch Jamming)
- 위조된 매체 접근 제어(MAC)주소를 지속적으로 네트워크에 보내, 스위치 MAC주소 테이블의 저장기능을 혼란시켜 더미허브처럼 동작하게 하는 공격
블루투스 공격
- 블루버그 (BlueBug)
- 블루투스 장비 사이의 취약점을 공격, 휴대폰을 원격 조정하거나 통화 감청
- 블루스나프 (BlueSnarf)
- 파일에 접근
- 간편하게 정보를 교환할 수 있는 OPP를 사용
- 블루프린팅 (BluePrinting)
- 공격대상이될 블루투스 장비를 검색하는 활동
- 블루재킹 (BlueJacking)
- 블루투스를 이용해 스팸처럼 메시지를 익명으로 퍼트림
정보보안 침해 공격
- 좀비PC
- C&C서버의 제어를 받아 DDoS공격에 사용됨
- C&C 서버
- 해커가 원격지에서 감염된 좀비PC에 명령을 내리고 악성코드를 제어하기 위한 용도의 서버
- 봇넷(Botnet)
- 감염되어 악의적으로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
- 웜 (Worm)
- 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높여 서버를 다운시키는 바이러스
- DDoS, 버퍼 오버플로, 슬래머 등이 웜 공격의 형태
- 제로 데이 공격 (Zero Day Attack)
- 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 공표되기 전에 해당 취약점을 통해 공격하는 것
- 공격의 신속성을 의미
- 키로거 공격 (Key Logger Attack)
- 컴퓨터 사용자의 키보드 움직임을 탐지해 정보를 빼감
- 랜섬웨어 (Ransomware)
- 사용자의 컴퓨터의 파일이나 문서를 암호화해 열지 못하도록하고 돈을 요구
- 백도어 (Back Door, Trap Door)
- 시스템 설계자가 서비스 기술자나 유지보수 프로그램 작성자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀통로
- 컴퓨터 범죄에 악용되기도 함
- 트로이 목마 (Trojan Horse)
- 정상적인 프로그램으로 위장하여 숨어있다가 공격
- 자기 복제 능력은 없음
- 파밍 (Pharming)
- 해커가 감염된 PC를 조작하여 이용자가 정상적인 사이트에 접속해도 중간에 도메인을 탈취해 가짜 도메인에 접속하게 한 다음 개인정보를 털어감
정보보안 3요소
- 무결성 : 인가된 사용자에 대해서만 자원 수정이 가능하며 전송중인 정보는 수정되지 않는다.
- 기밀성 : 인가된 사용자에 대해서만 자원 접근이 가능하다
- 가용성 : 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 접근이 가능하다.
응용프로그램 취약점 관리
- 패치 관리
- 응용프로그램 실행 권한의 제한
- 운영체제의 접근 제한
- 정보 수집 제한
- 불필요한 서비스 및 악성 프로그램의 확인 및 제거
- 시스템 무결성 검사 : 주요 파일을 검사하여 변경 내역 확인
Worm
- 악성코드
- 다른 컴퓨터의 취약점을 이용하여 스스로 전파하거나 메일로 전파되며 스스로 증식
Rogue Ware
- Rogue security software : 가짜 백신 소프트웨어
- 사용자 컴퓨터에 바이러스가 있다고 믿게 하고 실제로 악성프로그램을 설치하도록 하거나 가짜 악성 프로그램 제거 도구에 대한 비용을 지불하도록 설득.
- 공포심으로 조종
Adware
- 특정 소프트웨어를 실행할 때 자동으로 활성화되는 광고 프로그램
- 자체로는 악성코드로 보기는 힘들지만, 무분별한 광고 팝업을 뜨는 등의 악용 위험성으로 악성코드로 분류되기도 함
Reflection Attack (반사 공격)
- 송신자가 생선한 메시지를가로챈 공격자가 그 메시지를 다시 송신자에게 재전송하여 접근 권한을 얻는 공격 방법
Piggyback Attack (피그백 공격)
- 공격자가 다른 사용자의 연결에서 계정을 사용하지 않는 비활성 기간 (비활선 간격)을 이용하여 시스템에 엑세스 한다.
- 간선(회선 간) 공격이라고도 함.
XSS (Cross Site Script)
- 웹사이트에 악성 스크립트를 주입하는 행위
- 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱공격을 진행하는 것.
대칭 암호 알고리즘
- 비교적 실행 속도가 빠르기때문에 다양한 암호의 함수로 사용
- 키 교환이 필요하기 때문에 키를교환하는 중 키가 탈취될 수 있음
- 대칭키 알고리즘으로 AES, IDEA 등이 있음.
비대칭 암호 알고리즘
- 자신만이 보관하는 비밀키를 이용하여 인증
- 전자 서명 등에 사용
접근 통제 방법
- RBAC (Role Based Access Control)
- 역할 기반 접근 통제
- 권한이 있는 사용자들만 접근할 수 있는 방법
- DAC (Discretionary Access Control)
- 임의 접근 통제
- 자원에 대한 접근을 사용자나 그룹의 신분에 따라 제한
- 자원의 소유권을 가진 사람이 다른 사람의 접근을 허용하거나 제한할 수 있음
- MAC (Mandatory Access Control)
- 강제 접근 통제
- 미리 정해진 자원의 보안 레벨과 사용자에게 허락된 접근 권한 비교
사용자 인증 유형
- 지식 : 본인이 알고 있는 것 (패스워드, PIN 등)
- 소유 : 본인이 가지고 있는 것 (토큰, 스마트 카드 등)
- 존재 : 본인을 나타내는 것 (홍채, 지문 등)
- 행위 : 본인이하는 것 (서명, 움직임, 음성 등)
NFS (Network File System)
- 네트워크상에서 공유되는 파일 시스템.
- 다른 원격 호스트의 파일 시스템을 로컬디스크에 접근하듯 간단하게 접근하여 자신의 디렉토리처럼 사용할수 있음
Network Mapper
- 네트워크 보안을 위한 유틸리티.
- 네트워크의 보안을 위해 물리적 연결과 어떤 서버와 운영체제가 작동 중인지 등을 조사하는 응용 프로그램
AOE Network
- 어떤 프로젝트를 마치기 가지 수행되는 작업의 각 단계(상태)를 그래프의 정점(Vertex)으로 표현하고, 작업 하나가 완료되어 다음 단계로 넘어가는 시간을 그래프의 간선(Edge)으로 나타낸 방향 그래프
반응형
'정보처리기사 > 필기' 카테고리의 다른 글
24년 1회차 (240301) 필기 후기 (0) | 2024.03.04 |
---|---|
자주 틀리는 항목 (3) | 2024.02.29 |
정보처리기사 필기 공부 4과목 (프로그래밍 언어 활용) (1) | 2024.01.31 |
정보처리기사 필기 공부 3과목 (데이터베이스 구축) (0) | 2024.01.29 |
정보처리기사 필기 공부 2과목 (소프트웨어 개발) (2) | 2024.01.24 |
댓글