소프트웨어 개발방법론 활용
소프트웨어 개발방법론
구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 복잡한 문제를 다루기 위해 분할과 정복 원리를 사용
정보공학 방법론
- 정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심 방법론
- 업무 영역 분석과 업무 시스템 설계 과정에 데이터베이스 설계를 위한 데이터 모델링으로 ERD(개체 관계도)를 사용
컴포넌트 기반 방법론
- 기존 시스템이나 소프트웨어를 구성성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의 재사용이 가능하여 시간과 노력을 절감할 수 있다.
- 유지 보수 비용을 최소화하고 생산성 및 품질을 향상시킬 수 있다.
- 분석 단계에서 사용자 요구사항 정의서가 산출된다.
S/W 공학의 발전적 추세
소프트웨어 재사용의 이점
- 개발 시간과 비용 단축
- 소프트웨어 품질 향상
- 소프트웨어 개발의 생산성 향상
- 시스템 명세, 설계, 코드 등 문서 공유
소프트웨어 재사용 방법
- 합성 중심: 전자 칩과 같은 소프트웨어 부품, 즉 블록 (모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키 는 방법
- 생성 중심 : 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
소프트웨어 재공학의 주요 활동
- 분석(Analysis) : 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고, 재공학할 대상을 선정 하는 활동 재
- 구성(Restructuring) : 기존 소프트웨어의 구조를 향상 시키기 위하여 코드를 재구성하는 활동
- 역공학(Reverse Engineering) : 기존 소프트웨어를 분석 하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명 하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 활동
- 이식(Migration): 기존 소프트웨어를 다른 운영체제나 하 드웨어 환경에서 사용할 수 있도록 변환하는 활동
CASE 사용의 이점
- 소프트웨어 개발 기간을 단축하고 개발 비용을 절감할 수 있다.
- 자동화된 기법을 통해 소프트웨어 품질이 향상된다.
- 소프트웨어의 유지보수를 간편하게 수행할 수 있다.
- 소프트웨어 모듈의 재사용성이 향상된다.
CASE의 주요 기능
- 소프트웨어 생명 주기 전 단계의 연결
- 다양한 소프트웨어 개발 모형 지원
- 그래픽 지원
- 모델들의 모순 검사 및 오류검증
- 자료 흐름도 작성
CASE의 원천 기술
- 구조적 기법
- 프로토타이핑
- 자동 프로그래밍
- 정보 저장소
- 분산처리
상향식 비용 산정 기법
LOC 기법
- 소프트웨어 각 기능의 원시 코드 라인 수의 비관치. 낙 관치. 기대치를 추정하여 예측치를 구하고 이물 이용하 여 비용윤 산징하는 기법이다.
- 산정 공식
- LOC / 1인당 월평균 생산 코드 라인 수 | | --- | --- | | 개발 비용 | 노력(인월) x 단위 비용(1인당 월평균 인건비) | | 개발기간 | 노력(인월) / 투입인원 | | 생산성 | LOC/ 노력(인월) |
- | 노력(인월) | - 개발 기간 x 무입 인원
수학적 산정 기법
수학적 산정 기법의 종류
- COCOMO(COnstructive COst MOdel) 모형
- Putnam 모형
- 기능 점수(Function Point) 모형
COCOMO 모형 개요
- 보헴(Bochm)이 제안한 것으로. 원시 프로그랩의 규모 (LOC)에 의한 비용 산정 기법이다.
- 비교적 작은 규모의 프로젝트 기록은 통계 분석하여 얻은 결과를 반영한 모델이다.
- 비용 산정 결과는 프로젝트를 완성하는 데 필요한 노력 (Man-Month)으로 나타난다.
COCOMO의 소프트웨어 개발 유형
- 조직형(Organic Mode) : 기관 내부에서 개발된 중.소 규모의 소프트웨어로 일관 자료 처리나 과학기술 계산용, 비즈니스 자료 처리용으로 5만(50KDSI) 라인 이하 의 소프트웨어를 개발하는 유형
- 반분리형(Semi-Detached Mode): 조직형과 내장형의 중 간형으로 트랜잭션 처리 시스템이나 운영체제. 데이터 베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형
- 내징형(Embedded Mode): 내장형은 초대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만 (300KDSI) 라인 이상의 소프트웨어물 개반하는 유형
Putnam 모형
- 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해 주는 모형이다.
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선 의 노력 분포도를 기초로 한다.
기능 점수(FP) 모형 -가중치 증대 요인
- 자료 입력(입력 양식)
- 정보 실력(출력 보고서)
- 명령어(사용자 진의수)
- 데이터 파일 .필요한 외부 루틴과의 인터페이스
자동화 추정 도구 - SUIM
Rayleigh-Norden 곡선과 Putnam 예측 모델움 기초로 하여 개발된 자동화 추정 도구이다.
프로젝트 일정 계획
PERT(프로그램 평가 및 검토 기술)
- 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크로 각 작업별로 낙관적인 경우, 가능성이 있는 경우, 비관적인 경우로 나누어 각 단계별 종료 시기를 결정하는 방법이다
- 권장 경로. 작업에 대한 경계 시간, 작업 간의 상호 관 건성 등윤 알수 있다.
CPM임계 경로 기법)
- 프로젝트 완성에 필요한 작업을 나열하고 작업에 필 한 소요 기간을 예측하는데 사용하는 기법이다.
- 경영층의 과학적인 의사 건정윤 지원한다.
- 효과적인 프로젝트의 통제를 가능하게 해준다
임계 경로 소요 기일
임계 경로는 최장 경로(굵은 선)를 의미한다.
간트 차트(Gantt Chart)
- 프로젝트의 각 작업들이 언제 시작하고 언제 종료되는 지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표이다.
- 수평 막대의 길이는 각 작업(Task)의 기간을 나타낸다.
소프트웨어 개발 방법론 결정
프로젝트 관리
주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 환동을 의미한다.
위험 관리
- 프로젝트 추진 과정에서 예상되는 각종 돌발 상황(위 험)을 미리 예상하고 이에 대한 적절한 대책을 수립하는 일련의 활동을 의미한다.
- 위험 관리 절차 : 위험 식별 → 위험 분석 및 평가→ 위험 관리 계획 → 위험 감시 및 조치
소프트웨어 개발 표준
ISO/IEC 12207
- 기본 생명 주기 프로세스: 획득, 공급, 개발, 운영, 유지 보수 프로세스
- 지원 생명 주기 프로세스: 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
- 조직 생명 주기 프로세스: 관리, 기반 구조, 훈련, 개선 프로세스
CMM의 소프트웨어 프로세스 성숙도 5단계
- 초기(Initial)
- 관리(Managed)
- 정의(Defined)
- 정량적 관리(Quantitatively Managed)
- 최적화(Optimizing)
SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
정보 시스템 분야에서 소프트웨어의 품질 및 생산성 향상 을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준이다.
SPICE의 프로세스 수행 능력 단계
- Level 0 - 불완전(Incomplete)
- Level 1- 수행(Performed)
- Level 2- 관리(Managed)
- Level 3 - 확립(Established)
- Level 4 - 예측(Predictable)
- Level 5 최적화(Optimizing)
소프트웨어 개발 방법론 테일러링
소프트웨어 개발 방법론 테일러링의 개요
- 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개 발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업이다.
- 관리적 측면: 최단기간에 안정적인 프로젝트 진행을 위 해 사전 위험을 식별하고 제거하는 작업
- 기술적 측면: 프로젝트에 최적화된 기술 요소를 도입하 여 프로젝트 특성에 맞는 최적의 기법과 도구를 찾아가 는 작업
소프트웨어 개발 방법론 테일러링 고려사항
- 내부적 기준
- 목표 환경: 시스템의 개발 환경과 유형
- 요구사항: 개발, 운영, 유지보수 등
- 프로젝트 규모: 비용, 인력, 기간 등
- 보유 기술: 프로세스, 개발 방법론, 산출물, 구성원의 능력 등
- 외부적기준
- 법적 제약사항: 프로젝트별로 적용될 IT Compliance
- 표준 품질 기준 : 금융, 제도 등 분야별 표준 품질 기준
소프트웨어 개발 프레임워크
소프트웨어 개발 프레임워크
- 프레임워크(Framework)는 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손 쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템이다.
- 선행 사업자의 기술에 의존하지 않은 표준화된 개발 기반으로 인해 사업자 종속성이 해소된다.
- 개발해야 할 애플리케이션의 일부분이 이미 내장된 클 래스 라이브러리로 구현되어 있어 개발자는 이미 존재 하는 부분을 확장 및 이용하는 것으로 소프트웨어를 개발할 수 있다
프레임워크의 특성
- 모듈화
- 재사용성
- 확장성
- 제어의 역흐름
IT프로젝트 정보시스템 구축 관리
네트워크 관련 신기술
클라우드 기반 HSM .
- 클라우드를 기반으로 암호화 키의 생성ㆍ저장ㆍ처리 등의 작업 등의 작업을 수행하는 보안기기물 가리키는 용어이다.
- 암호화 키 생성이 하드웨어적으로 구현되기 때문에 소 프트웨어적으로 구현된 암호 기술이 가지는 보안 취약점을 무시할 수 있다.
SDN(Sofiware Deined Nelworking)
- 네트워크를 컴퓨터처립 모델링하여 여러 사용자가 각 각의 소프트웨어들로 네트워킹을 가상화하여 제어하고 관리하는 네트워크이다.
- 기존 네트워크에는 영향을 주지 않으면서 특정 서비스 의 전송 경로 수정은 통하여 인터넷상에서 발생하는 문 제를 처리할 수 있다.
파스-타(PaaS-TA)
- 소프트웨어 개발 환경윤 제공하기 위해 개발한 개방형 클라우드 컴퓨팅 플랫품이다.
- 국내 IT 서비스 경쟁력 강화를 목표로 하며. 인프라 제어 및 관리 환경. 실행 환경, 개발 환경, 서비스 환경, 운영 환경으로 구성되어 있다.
SDS(Software-Defined Storage)
- 물리적인 데이터 스토리지(Data Storage)를 가상화하여 여러 스토리지를 하나처립 관리하거나. 하나의 스토리지 를 여러 스토리지로 나눠 사용한 수 있는 기술이다
SDDC(Sofware Defined Data Center)
- 데이터 센터의 모든 자원을 가상화하여 인력의 개입없이 소프트웨어 조작만으로 관리 및 제어되는 데이터 센터 이다.
징(Zing)
- 10cm 이내 거리에서 3.5Gbps 속도의 데이터 전송이 가능한 초고속 근집무선용신(NFC)이다.
- 휴대용 스마트 기기, 노트북, 쇼핑물, 거리 등의 광고 나 키오스크에 접목하여 사용합 수 있다.
올조인(AILloyn)
- 오픈소스 기반의 사물인터넷(IoT) 플랫품이다.
- 서로 다른 운영체제(OS)나 하드웨어를 사용하는 기기들이 표준화된 플랫품을 이용함으로서 서로 통신 및 제 어가 가능하다.
WDM(Wavelength Division Multiplexing)
- 광섬유를 이용한 통신 기술의 하나로, 파장이 다른 광선 끼리는 서로 간섭을 일으키지 않는 성질을 이용하여 서로 다른 복수의 신호를 보냄으로씨 여러 대의 단말기가 동시 에 통신 회선을 사용할 수 있도록 하는 기술이다.
메시 네트워크(Mesh Network)
- 차세대 이동통신, 홈네트워킹, 공공 안전 등 특수 목적 을 위한 네트워크이다.
- 수십에서 수천 개의 디바이스를 그물망(Mesh)과 같이 유기적으로 연결하여 모든 구간을 동일한 무선망처럼 구성하여 사용자가 안정적인 네트워크를 사용한 수 있게 한다.
SSO(Single Sign On)
- 한 번의 로그인으로 개인이 가입한 모든 사이트를 이용할 수 있게 해주는 시스템이다.
스마트 그리드(Smant Grid)
- 정보 기술을 전력에 접목해 효율성을 높인 시스템이다.
- 전력선을 기반으로 모든 통신, 정보, 관련 애플리케이션 인프라를 하나의 시스템으로 통합하여 관리함으로 써 효율적인 에너지 관리가 가능하다.
피코넷(PICONET)
- 여러 개의 독립된 통신장치가 블루투스 기술이나 UWB (Ultra Wide Band) 통신 기술을 사용하여 통신망을 형성 하는 무선 네트워크 기술이다.
메타버스(Metaverse)
- 가공(Meta)과 현 세계(Universo)의 합성어로, 현신 세계와 같은 사회ㆍ경제ㆍ문화 활동이 이뤄지는 3차원 가상 세계를 가리킨다.
- 1992년 미국 SF 작가 님 스티븐슨의 소설 '스노 크래시'에 처음 등장하였다.
네트워크 구축
버스형(Bus)
- 한 개의 풍신 회선에 여러 대의 단말장치가 연관된 형태 이다.
VAN(Virtual Local Area Network)
- LAN의 물리적인 배치와 상관없이 논리적으로 분리하는 기술로, 접속된 장비들의 성능 및 보안성윤 향상시킬 수 있다.
WPA(W-Fi Prolected Access)
- Wi-F에서 제정한 무선 랜(WLAN) 인증 및 암호화 관련 표준이다.
LAN의 표준 규격- 802.11e
- 802.11의 부가 기능 표준으로, QoS 기능이 지원되도록 하기 위해 매체 접근 제어(MAC) 계층에 해당하는 부분을 수정하였다. 248 5과목 정보시스템 구속 관리
CSMA/CD
- 데이터 프레임 간의 충돌이 발생하는 것은 인정하고이 를 해소하기 위해 CSMA 방식에 충돌 검출 기능과 충돌 발생 시 재송신하는 기능을 부가했다.
- 통신 회선이 사용중이면 일정 시간 동안 대기하고, 통신 회선 상에 데이터가 없을 때에만 데이터를 송신하며, 송신중에도 전송로의 상태를 계속 감시한다.
CSMA/CA
- 무선 랜에서 데이터 전송 시 매체가 비어있음을 확인한 뒤 충돌을 피하기 위해 일정한 시간을 기다린 후 데이터를 전송하는 방법이다.
- 회선을 사용하지 않는 경우에도 화인 신호를 전송하여 동시 전송에 의한 충돌을 예방한다.
경로 제어 / 트래픽 제어
RIP(Routing Information Protocol)
- IGP에 속하는 라우팅 프로토콜로, 거리 벡터 라우팅 프로토쿨이라고도 불린다.
- 최단 경로 탐색에 Bellman-Ford 알고리즘이 사용 된다.
- 최대 흡(Hop) 수를 15로 제한한다.
OSPF(Open Shortest Path First protoco.)
- RIP의 단점을 해결하여 새로운 기능을 지원하는 라우팅 프로토콜이다.
- 최단 경로 탐색에 다익스트라(Dijkstra) 알고리즘을 사용한다.
- 네트워크 변화에 신속하게 대처할 수 있고, 멀티캐스팅을 지원한다.
흐름 제어 - 정지-대기(Stop-and-Wait)
- 수신 후의 확인 신호(ACK)를 받은 후에 다음 패킷을 전공하는 방식이다.
- 한 번에 하나의 패킷만을 전송할 수 있다.
SW 관련 신기술
매시업(Mashup)
- 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술이다.
증발품(Vaponware)
- 판매 계획 또는 배포 계획은 발표되었으나 실제로 고객에 게 판매되거나 배포되지 않고 있는 소프트웨어이다.
서비스 지향 아키텍처(SOA)
- 기반 애플리케이션 구성 계층
- 표현(Presentation) 계층
- 업무 프로세스(Biz-Process) 계층
- 서비스 중간(Service Intermediary) 계층
- 애플리케이션(Application) 계층
- 데이터 저장(Persistency) 계층
디지털 트윈(Digital Twin)
- 현실 속의 사물윤 소프트웨어로 가상화한 모델이다.
- 실제 자산의 속성에 대한 정확한 정보를 얻을 수 있고 최적화, 돌발사고 최소화, 생산성 증가 등 설계부터 제조, 서비스에 이르는 모든 과정의 효율성을 향상시킬 수있다.
텐서플로(TensorFlow)
- 구글의 구글 브레인(Google Brain) 팀이 만든, 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다.
도커(Docker)
- 컨테이너 기술을 자동화하여 쉬게 사용한 수 있게 하는 오픈소스 프로젝트이다.
- 소프트웨어 컨테이너 인에 응용 프로그램들을 배치시키는 있을 자동화 해주는 역할을 수행한다. 하고.
스크래피(Scrapy)
- Python 기반의 웹 크를링 프레임워크로, 코드 재사용성 윤 높이는 데 도움이 되며, 대규모의 크롤링 프로젝트에 적합하다.
보안 관련 신기술
비트로커(BitLocker)
- Windows 7부터 지원되기 시작한 Windows 전용의 불륨 암호화 기능이다.
- TPM(Trusted Platform Module)과 AES-128 알고리즘을 사용한다.
서비스형 블록체인(BaaS)
- 블록체인(Blockchain) 앱의 개발 환경을 클라우드 기반으로 제공하는 서비스이다
- 블록체인 네트워크에 노드의 추가 및 제거가 용이하다.
WASP(오픈 웹 애플리케이션 보안 프로젝트)
- 웹 정보 노출이나 악성 코드, 스크립트, 보안이 취약한 부 분을 연구하는 비영리 단체이다.
TCP 래퍼(TCP Wrapper)
외부 컴퓨터의 접속 인가 여부만 점검하여 접속을 허용 및 거부하는 보안용 도구이다.
허니팟(Honeypot)
- 비정상적인 접근의 탐지를 위해 의도적으로 설치해 둔 시스템이다.
- 침입를 속여 실제 공격당하는 것처럼 보여줌으로씨 추적 및 공격기법에 대한 정보를 수집한다. 141
DPI(Deep Packel Inspection)
OSI 7 Layer 전 계층의 프로토쿨과 패킷 내부의 콘덴츠 를 파악하여 침입 시도. 해킹 동을 탐지하고, 트래픽을 정하기 위한 패킷 분석 기술이다
HW 관련 신기술
고가용성 솔루션(HACMP)
- 긴 시간동안 안정적인 서비스 운영을 위해 장애 발생 시 즉시 다른 시스템으로 대체 가능한 환경을 구축하는 메커니즘을 의미한다.
- 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결할 수 있다.
앤 스크린(N-Screen)
- N개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 이용할 수 있는 서비스를 말한다.
- PC. TV, 휴대폰에서 동일한 콘텐츠를 끊김 없이 이용할 수 있다.
Secure OS
Secure OS
- 기존의 운영체제(OS)에 내재된 보안 취약점을 해소하기 위해 보안 기능을 갖춘 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제를 의미 한다.
- Seaure OS의 보안 기능 : 식별 및 인증, 임의적/ 강제적 접근통제, 객체 재사용 보호, 완전한 조정, 신뢰 경로, 감사 및 감사기록 축소 등
Secure OS의 보안 기능
- 식별 및 인증
- 임의적 접근통제
- 강제적 접근동제
- 객체 재사용 보호
- 완전한 조정 .신뢰 경로
- 감사 및 감사기록 축소
DB 관련 신기술
하둡(Hadoop)
- 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼이다.
- 하둡과 관계형 데이터베이스(RDB) 간 대용량 데이터 를 전송할 때 스쿱( Sqoop)이라는 도구를 이용한다.
맵리듀스(MapReduce)
- 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델이다.
- Google에 의해 고안되었으며. 대표적인 대용량 데이터 처리를 위한 병렬 처리 기법으로 많이 사용되고 있다.
타조(Taio)
- 오픈 소스 기반 분산 컴퓨팅 플랫품인 아파치 하든 (Apache Hadoop) 기반의 분산 데이터 웨어하우스 프로젝트이다.
- 대규모 데이터 처리와 실시간 상호 분석에 모두 사용할 수있다.
데이터 마이닝(Data Mining)
- 데이터 웨어하우스에 저장된 대량의 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보물 발견하기 위한 기법이다.
OLAP(Online Analytical Processing) •\\
- 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식은 말한다
- OLAP 연산 : Roll-up, Drill-down, Drill-through, Drill-across, Pivoting, Slicing, Dicing
회복 / 병행제어
회복(Recovery)
- 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베 이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구 하는 작업이다.
즉각 갱신 기법(lmmediate Updale)
- 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료 되기 전이라도 즉시 실제 데이터베이스에 반영하는 방 법이다.
- 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들은 Log에 보관시킨다.
병행제어의 목적
- 데이터베이스의 공유를 최대화한다.
- 시스템의 활용도를 최대화한다.
- 데이터베이스의 일관성을 유지한다
- 사용자에 대한 응답 시간은 최소화한다
로킹(Locking)
- 주요 데이터의 액세스를 상호 배타적으로 하는 것이다.
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.
타임 스탬프 순서(Time Stamp Ordering)
- 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법이다.
로킹 단위(Locking Granularity)
- 병행제어에서 한꺼번에 로킹한 수 있는 객체의 크기를 의미한다.
- 데이터베이스. 파일. 레코드. 필드 등이 로킹 단위가 될수있다.
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병 행성 수준이 낮아지고. 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아진다.
교착상태
교착상태 발생의 필요 충분 조건 4가지
- 상호 배제(Mutual Exclusion)
- 점유와 대기(Hold and Wait)
- 비선점(Non-preemption)
- 환형 대기(Circular Wait)
회피 기법(Avoidance)
- 교착상태가 발생할 가능성을 배제하지 않고 교착상태 가 발생하면 적절히 피해 나가는 방법으로, 주로 은행 원 알고리즘(Banker's Algorithm)이 사용된다
- 은행원 알고리즘(Banker's Agorithm): E. J. Dijkstra가 제안한 것으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래한 기법
소프트웨어 개발 보안 구축
Secure SDLC
Seven Touchpoints
- 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론이다.
- 설계 및 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트를 수행한다.
보안 3대 요소
- 기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게 만 접근이 허용되며. 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
- 무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수 정한 수 있음
- 가용성: 인가받은 사용자는 언제라도 사용한 수 있음
세션 통제
세션 하이재킹(Session Hijacking)
- 서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 공격기법으로, 세션 가로채기라고도 한다.
- 탐지 방법에는 비동기화 상태 탐지. ACK Storm 탐지, 패킷의 유실 탐지. 예상치 못한 접속의 리셋 탐지가 있습니다.
입력 데이터 검증 및 표현
SQL 삽입(SQL Injection)
- 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 (DB) 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점이다.
경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 서버 자원을 수정ㆍ삭제할 수있는 보안 약점이다.
크로스사이트 스크립팅(XSS; Cross Site Scripling)
- 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나. 비정상적인 기능 수행을 유발하는 보안 약점이다.
운영체제 명령어 삽입
- 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로 써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점 이다.
메모리 버퍼 오버플로
- 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점이다.
보안 기능
하드코드된 비밀번호
- 소스코드 유출 시 내부에 하드코드된 패스워드를 이용 하여 관리자 권한을 탈취할 수 있다.
※ 하드코드 : 데이터를 코드 내부에 직접 입력하여 프로그래밍하는 방식
에러처리
부적절한 예외처리
- 함수의 반환값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어 한 번에 처리하거나. 누락된 예외 가 존재할 때 발생하는 보안 약점이다.
- 모든 오류들을 세세하게 정의하여 처리한 필요는 없지만, 모든 오류들을 광범위한 예외처리 구문으로 정의해 버리면 예기치 않은 문제가 발생한 수 있다.
코드 오류
스택 가드(Stack Guard)
- 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우 오버플로우 상태로 판단하여 프로그램 실행을 중단함으로써 잘못된 복 귀 주소의 호출을 막는 기술이다.
캡슐화
접근 지정자(접근 제어자)
- 프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사용되는 예약어이다.
- 종류 : Public, Protected, Default, Private
암호 알고리즘
개인키 암호화(Privale Key Encryption) 기법
- 동일한 키로 데이터를 암호화하고 부호화한다
- 알고리즘이 단순하므로 암호화/복호화 속도가 빠르다.
- 대칭 암호 기법 또는 비밀키 암호화 기법이라고도 한다.
개인키 암호화 기법의 종류
- 블록 암호화 방식
- 한 번에 하나의 데이터 블록을 암호화하는 방식이다.
- 종류 : DES, SEED, AES, ARIA, IDEA 등
- 스트림 암호화 방식
- 평문과 동일한 길이의 스트림을 생성하여 비트/바이트/워드 단위로 암호화하는 방식이다
- 종류: LFSR, RCA 동
공개키 암호화(Public Key Encryption) 기법
- 데이터를 암호화한 때 사용하는 공개키(Public Key)는 데이터베이스 사용자에게 공개하고, 복호화함 때의 비밀키(Secret Key)는 관리자가 비밀리에 관리한다 .
- 공개키 암호화 기법에서 암호화 대상이 n개일 때 사용 되는 키의 개수는 2n이다
- 비대칭 암호 기법이라고도 한다.
- 대표적으로는 RSA(Rivest Shamir Adleman) 기법이 있다.
- 키의 분배가 용이하고, 관리해야 한 키의 개수가 적다.
ARIA
- 2004년 국가정보원과 산학연협회가 개발한 블록 암호화알고리즘이다.
- 블록 크기는 128비트이며. 키 길이에 따라 128, 192, 256으로 분류됩니다.
DES
- 1975년 미국 NBS에서 발표한 64비트의 개인키 암호화 알고리즘이다.
AES
- DES에 한계를 느낀 미국 표준 기술 연구소(NIST)가 2001년 발표한 개인키 암호화 알고리즘이다
RSA
- 1978년 MIT의 라이베스트(Rivest). 샤미르(Shamir). 애들먼(Adelman)에 의해 제안된 공개키 암호화 알고리즘이다.
- 큰 숫자를 소인수분해 하기 어렵다는 것에 기반하여 들어진 공개키 암호화 알고리즘이다.
ECC
- 1985년 RSA 암호 방식의 대안으로 제안되었다.
- 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높인 암호화 알고리즘이다.
Rabin
- 1979년 미하엘 라빈이 제안하였다.
- 소인수분해의 어려움에 안전성의 근거를 둔 암호화 알고리즘이다.
해시(Hash)
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미한다.
- 복호화가 거의 불가능한 일방향 함수에 해당한다.
- 종류: SHA 시리즈, MD4, MD5, N-NASH, SNEFRU 등
솔트(Salt)
- 암호화를 수행하기에 앞서 원문에 무작위의 값을 덧붙이는 과정이다.
- 솔트를 사용하면 같은 패스워드에 대해 암호화를 수행 하더라도 서로 다른 결과가 나타나게 되어 더 안전하게 암호화된 데이터를 관리할 수 있게 된다
시스템 보안 구축
서비스 공격 유형
서비스 거부 공격의 개념
- 표지이 되는 서버의 자원은 고간시신 목적으로 다수의 공로자 또는 시스템에서 대량의 데이터를 한 곳의 서버 에 집중직으로 전송함으로씨, 표식이되는 서버의 정상적인 기능을 방해하는 것이다.
- 유형 : Ping of Death, SMURFING, SYN Flooding. TearDrop, Land, DDOS 등
죽음의 핑(Ping of Death)
- Ping 명링을 전송한 때 ICMP 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격 방법이다.
SMURFING(스머핑)
- IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법이다.
SYN Flooding
- 공격자가 가상의 클라이언트로 위장하여 3-way- handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행 하지 못하게 하는 공격 방법이다.
Land
- 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공 격 대상의 IP 주소로 하여 공격 대상에게 전송하는 것으로, 이 패킷을 받은 공격 대상은 송신 IP 주소가 자신이므로 자신에게 응답을 수행하게 되는데. 이러한 패킷이 계 속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격이다.
DDoS(Distributed Denial of Service, 분산 서비스 거부) 공격
- 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것이다.
- 분산 서비스 공격용 툴의 종류 : Trin00, TEN(Tribe Flooding Network), TFN2K, Stacheldraht 등
피싱(Phishing)
- 개인 정보(Private Data)와 낚시(Fishing)의 합성어로 이메일이나 메신저 등을 통해 공기관이나 금융 기관을 사 칭하여 개인 정보를 빼내는 기법이다.
Ping Flood
- 특정 사이트에 매우 많은 ICMP 메시지를 보내 이에 대한 응답(Respond)으로 시스템 자원을 모두 사용하게 해 시스템이 정상적으로 동작하지 못하도록 하는 공격 방법 이다.
스위치 재밍(Switch Jamming)
- 위조된 매체 접근 제어(MAC) 주소를 지속해서 네트워크로 흘려보내, 스위치 MAC 주소 테이블의 저장 기능은 혼란시켜 더미 허브(Dummy Hub)처럼 작동하게 하는 공격이다.
블루프린팅
- 공격 대상이 될 블루투스 장비를 검색하는 활동을 의미 한다.
월(Worm)
- 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스 의 일종이다.
키로거 공격(Key Logger Attack)
- 컴퓨터 사용자의 키보드 움직임을 탐지해 ID. 패스워드. 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격이다.
랜섬웨어(Ransomware)
- 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램으로, 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 한다.
백도어(Back Door, Trap Door)
- 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자(Programmer)의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로로. 컴퓨터 범죄에 악용되기도 한다.
- 백도어 탐지 방법 : 무결성 검사, 열린 포트 확인. 로그 분석. SetUID 파일 검사 등
파밍(Pharming)
- 해커가 악성코드에 감염된 PC를 조작하여 이용자가 정상적인 사이트에 접속해도 중간에서 도메인을 탈취하여 가 짜 사이트로 접속하게 한 다음 개인 정보나 금융정보를 몰래 빼내는 행위이다
서버 인증
인증(Authentication)
- 다중 사용자 컴퓨터 시스템이나 네트워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하는 보안 절차이다.
인가(Authorization)
- 인증된 사용자에 대해 요청한 자원이나 동작에 대한 권한 여부를 확인한 후 이를 부여하는 보안 절차이다.
지식 기반 인증(Something You Know)
- 사용자가 기억하고 있는 정보를 기반으로 인증을 수행하는 것이다. 예) 패스워드(Password)
소유 기반 인증(Something You Have)
- 사용자가 소유하고 있는 것을 기반으로 인증을 수행하는 것이다. 예) 신분증, 메모리 카드(토큰), 스마트 카드, OTP, QR
행위 기반 인증(Something You Do)
- 사용자의 행동 정보를 이용해 인증을 수행한다. 예 서명, 동작, 음성
보안 아키텍처 / 보안 프레임워크
관리적 보안
- 정보보호 정책, 정보보호 조직, 정보자산 분류, 정보보호 교육 및 훈련, 인적 보안, 업무 연속성 관리 등의 정의
물리적 보안
건물 및 사무실 출입 통제 지침, 전산실 관리 지침. 정보 시스템 보호 설치 및 관리지침, 재해 복구 센터 운영 등의 정의
기술적보안
사용자 인증, 접근 제어, PC, 서버, 네트워크. 응용 프로 그램. 데이터(DB) 등의 보안지침 정의
로그 분석
커널 로그의 종류
- wtmp: 성공한 로그인/로그아웃과 시스템의 시작/종료 시간에 대한 로그
- ump: 현재 로그인한 사용자의 상태에 대한 로그
- blmp: 실패한 로그인에 대한 로그
- aslog: 마지막으로 성공한 로그인에 대한 로그
보안 솔루션
침입 탐지 시스템(IDS; Instrusion Detection System)
- 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템이다.
- 오용 탐지(Misuse Delection): 미리 입력해둔 공격 패턴이 감지되면 이를 알려줌
- 이상 탐지(Anomaly Delecion): 평균적인 시스템의 상태를 기준으로 비상적인 행위나 자원의 사용이 감지되면 이를 알려줌
VPN(Virtual Private Network, 가상 사설 통신망)
- 가상 사설 네트워크로서 인터넷 등 통신 사업자의 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신 의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션 이다.
SSH(Secure SHell, 시큐어 셀)
- 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜 또 는 이를 이용한 응용 프로그램이다.
- 데이터 암호화와 강력한 인증 방법으로 보안성이 낮은 네트워크에서도 안전하게 통신할 수 있다. .
- 키(key)를 통한 인증 방법을 사용하려면 사전에 클라이언트의 공개키를 서버에 등록해야 한다.
- 기본적으로는 22번 포트를 사용한다.
'개발 기초 > CS 공부' 카테고리의 다른 글
[OS] 07. Deadlocks (1) | 2023.12.22 |
---|---|
[OS] 06. Process Synchronization (1) | 2023.12.22 |
[OS] 05. CPU Scheduling (1) | 2023.12.22 |
[OS] 04. Process Management (0) | 2023.12.22 |
[OS] 03. Process (1) | 2023.12.22 |