1. 소프트웨어 개발 방법론 활용
1) 소프트웨어 개발 방법론
(1) 구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화
- 처리 중심의 방법론
- 60년대까지 가장 많이 적용된 방법론
- 목적: 쉬운 이해, 검증 가능한 프로그램 코드 생성
- 분할과 정복 기법 사용
(2) 정보공학 방법론
- 계획, 분석, 설계, 구축에 정형화된 기법을 상호 연관성 있게 통합·적용
- 자료 중심
- 대규모 정보 시스템 구축에 적합
(3) 컴포넌트 기반 방법론
- 이미 만들어진 컴포넌트를 조합하여 하나의 애플리케이션 완성
- 컴포넌트 재사용으로 유지보수 비용 최소화, 생산성과 품질 향상
- 새 기능 추가가 간단하므로 확장성 보장
절차
- 개발 준비
- 분석
- 설계
- 구현
- 테스트
- 전개
- 인도
2) 소프트웨어 재사용
정의
- 이미 개발된 소프트웨어를 다른 소프트웨어 개발에 사용하는 것
- 품질과 생산성을 높이는 효과
이점
- 개발 시간과 비용 단축
- 소프트웨어 품질 향상
- 개발 생산성 향상
- 실패 위험 감소
- 시스템 구축 지식 공유
- 시스템 명세, 설계, 코드 등 문서 공유
방법
- 합성 중심: 블록(모듈)들을 맞춰서 새로운 소프트웨어를 구성
- 생성 중심: 추상화 형태로 쓰인 명세를 구체화하여 패턴을 구성하고 구현
3) 소프트웨어 재공학
- 새로운 요구에 맞도록 기존 시스템을 활용해 더 나은 시스템을 구축하는 것
- 새 기능을 추가하여 성능을 개선하는 작업
- 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지 → 기존 것 개조/개선으로 유지보수성과 품질을 향상
- 유지보수성 향상 → 소프트웨어 위기 해결에 도움이 됨
- 자동화 도구 사용 과정을 포함
- 소프트웨어 수명 연장, 기술 향상, 개발 기간 단축, 오류 감소, 비용 절감
주요 활동
- 분석: 기존 명세서를 확인해 시스템 동작을 이해하고, 재공학 대상을 선정
- 재구성: 코드만 재구성하며 기능/동작은 수정하지 않음
- 역공학: 기존 소프트웨어를 분석해 개발 과정, 데이터 처리 과정을 재발견/재창조 (설계도를 추출하는 등)
- 이식: 다른 OS나 하드웨어에서도 사용할 수 있도록 시스템을 옮기는 것
4) CASE
Computer Aided Software Engineering
- 요구분석, 설계, 구현, 검사/디버깅을 소프트웨어 도구로 자동화
- 다양한 시스템에서 활용되는 자동화 도구(CASE Tool) 제공
- 소프트웨어, 하드웨어, 데이터베이스, 테스트 등을 통합해 소프트웨어 개발 환경을 조성
- 소프트웨어 개발도구 + 방법론을 정형화된 구조와 방법으로 결합 → 생산성 향상
주요 기능
- 소프트웨어 생명주기 전체 단계를 연결하고, 다양한 개발 모형 지원
- 그래픽 지원
5) 비용 산정 기법
LOC(원시 코드 라인 수) 기법: 상향식
- 각 기능의 원시 코드 라인수에 대한 비관치, 낙관치, 기대치를 측정 후 예측치를 계산하고 비용을 산정
- 측정이 용이하고 이해하기 쉬워 가장 많이 사용
예측치 = (a + 4m + b) / 6
(a: 낙관치, b: 비관치, m: 기대치)
산정공식
- 노력(인월) = LOC / (1인당 월평균 생산 코드 라인 수)
- 개발 비용 = 노력(인월) × 단위 비용(1인당 월 인건비)
- 개발 기간 = 노력(인월) / 투입 인원
- 생산성 = LOC / 노력(인월)
수학적 산정 기법: 상향식
- 경험적 추정 모형, 실험적 추정 모형
- 개발 비용 산정을 자동화
- 유사 프로젝트를 기반으로 비용공식을 경험적으로 유도
- COCOMO, Putnam, 기능점수(FP) 모형 등이 대표적
COCOMO 모형
- COnstructive COst MOdel
- 보헴(Bohem)이 제안
- LOC 기반 비용 산정 기법
- LOC 예측 후 SW 종류에 따른 방정식에 대입해 비용 산정
- 중소 규모 프로젝트 추정에 적합
- 결과: 프로젝트를 완성하는 데 필요한 노력(Man-Month)
COCOMO 소프트웨어 개발 유형
- 조직형
- 기관 내부에서 개발된 중소규모 SW (4만 라인 이하)
- 업무용, 과학기술 계산 등
- 반분리형
- 조직형과 내장형 중간, 30만 라인 이하
- OS/DB 관리 시스템, 컴파일러, 인터프리터 등
- 내장형
- 30만 라인 이상, 초대형 규모
- 미사일 유도, 신호기 제어 시스템 등 실시간 처리 시스템
Putnam 모형
- SW 생명주기 전 과정에 사용될 노력이 시간에 따라 어떻게 분포되는지 가정
- 생명주기 예측 모형이라 불림
- Rayleigh-Norden 곡선의 노력분포도를 기초로 함
- 대형 프로젝트에 적합
기능 점수(FP) 모형
- 알브레히트(Albrecht)가 제안
- SW 기능 증대 요인별 가중치를 부여해 총 기능점수를 산정
- 총 기능 점수와 영향도를 통해 최종 FP를 구함
- 기능 증대 요인: 자료 입력(입력 양식), 정보 출력(보고서), 명령어(사용자 질의 수), 데이터 파일, 외부 루틴과의 인터페이스
자동화 추정 도구
- SLIM: Putnam 예측 모델에 기초한 자동화 측정 도구
- ESTIMACS: 기능점수(FP)에 기초한 자동화 측정 도구
6) PERT
Program Evaluation and Review Technique
- 프로젝트에 필요한 전체 작업의 상호관계를 표시하는 네트워크 기법
- 각 작업별 낙관적/가능성 있는/비관적인 경우로 나누어 종료 시기를 결정
- 과거 경험이 없어 소요 기간 예측이 어려운 소프트웨어 프로젝트에서 주로 사용
- 노드와 간선으로 이루어진 네트워크로, 노드에는 작업, 간선에는 낙관치·기대치·비관치를 표시
- 결정 경로, 작업 경계 시간, 상호 관련성을 파악 가능
작업 예측치 = (비관치 + 4 × 기대치 + 낙관치) / 6
평방 편차 = [(비관치 - 낙관치) / 6]²
7) CPM (임계 경로 기법)
- 작업을 나열하고 소요 기간을 예측하는 기법
- 노드(작업), 간선(전후 의존관계)으로 구성
- 원형 노드에는 작업(이름, 소요시간), 박스 노드에는 이정표(예상 완료 시간)
- 임계 경로(Critical Path)는 프로젝트 전체를 결정짓는 최장 경로
8) 간트 차트
- 각 작업의 시작/종료를 막대 도표로 표시하는 프로젝트 일정표
- 일명 시간선 차트
- 중간 목표 미달성 시 그 이유나 기간 예측을 할 수 있음
- 예산 초과 지출 관리 가능
- 자원 배치와 인원 계획에 유용하게 사용
- 작업 경로 표시가 되지 않고, 계획 변경 시 다소 번거롭다는 단점
- 작업 일정, 기간, 산출물 등을 표시
- 수평 막대의 길이로 작업 기간을 가시화
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단계로 분류
- 불완전: 프로세스 구현이 없거나 목적 달성 못함
- 수행: 프로세스 수행으로 목적 달성
- 관리: 정의된 자원 범위 내에서 작업 산출물 인도
- 확립: 소프트웨어 공학 원리에 기반을 둔 프로세스 수행
- 예측: 프로세스가 통제되고 양적 측정을 통해 일관적으로 수행
- 최적화: 프로세스 지속 개선으로 업무 목적을 충족
12) 소프트웨어 개발 방법론 테일러링
- 정의된 개발 방법론을 프로젝트 상황과 특성에 맞도록 수정·보완하는 작업
- 고려사항
- 내부적 기준: 목표 환경, 요구사항, 프로젝트 규모, 보유 기술
- 외부적 기준: 법적 제약, 표준 품질 기준
13) 소프트웨어 개발 프레임워크
- 공통 요소와 아키텍처를 일반화한 소프트웨어 시스템
- 표준화된 개발 기술을 통해 특정 벤더 종속성을 해소
- 예외처리, 트랜잭션, 메모리 공유, 데이터 소스 관리, 서비스 관리, 쿼리 서비스, 로깅 서비스, 사용자 인증 서비스 등을 제공
종류
- 스프링 프레임워크: 자바 플랫폼을 위한 오픈소스 경량형 프레임워크
- 전자정부 프레임워크: 우리나라 공공부문 정보화 사업 표준 프레임워크
- 닷넷(.NET): Windows 기반 프로그램 개발/실행 프레임워크
특성
- 모듈화: 캡슐화를 통해 변경 영향 최소화
- 재사용성: 재사용 가능한 모듈 제공
- 확장성: 다형성을 통한 인터페이스 확장
- 제어의 역흐름(IoC): 프레임워크가 프로그램의 제어 흐름 주도
14) 소프트웨어 정의 기술 (SDE, SDx)
Software-Defined Everything
- 네트워크, 데이터 센터 등 자원을 가상화해 개별 사용자에게 할당하고, 중앙에서 통합적으로 제어
소프트웨어 정의 네트워킹(SDN)
- Software Defined Networking
- 하드웨어에 의존적인 기존 네트워크보다 효율적 제어/관리 가능
- 특정 서비스 트래픽 경로 수정이 용이
소프트웨어 정의 데이터 센터(SDDC)
- 데이터센터의 모든 자원을 가상화
- 인력 개입 없이 소프트웨어 조작만으로 관리/제어 가능
소프트웨어 정의 스토리지(SDS)
- 물리적 데이터 스토리지를 가상화
- 여러 스토리지를 하나로 묶거나, 하나의 스토리지를 여러 개처럼 사용 가능
2. IT프로젝트 정보 시스템 구축 관리
1) 네트워크 관련 신기술
- IoT(사물인터넷)
- 메시 네트워크: 대규모 디바이스에서 네트워크 생성에 최적
- 피코넷: 블루투스, UWB 등을 활용해 통신망 형성
- 파장 분할 다중화(WDM): 광섬유에서 서로 다른 파장의 신호가 간섭 없이 동시 전송
- 클라우드 기반 HSM: 클라우드로 인증서를 저장하고, 암호화 키는 하드웨어적으로 분리해 보안성 강화
- 파스-타(PaaS-TA): 우리나라의 개방형 클라우드 컴퓨팅 플랫폼
- 징(Zing): 초고속 근접 무선통신(NFC) 기술
- SSO(Single Sign On): 한 번 로그인으로 여러 시스템에 자동 접속
- 스마트 그리드: 전력선 기반 모든 통신/정보/애플리케이션 인프라를 하나의 시스템으로 통합 관리
2) 네트워크 설치 구조
- 성형(Star, 중앙 집중형)
- 중앙 컴퓨터와 각 단말 장치가 포인트 투 포인트로 연결
- 관리가 용이하지만 중앙 장치 장애 시 전체 영향
- 링형(Ring, 루프형)
- 이웃 단말끼리 포인트 투 포인트로 연결
- 데이터 단방향/양방향 전송 가능
- 버스형
- 하나의 통신 회선에 여러 단말 장치가 연결
- 물리적 구조가 간단, 단말 추가/제거가 쉬움
- 하나의 단말 고장 시 전체 영향 없음
- 계층형(Tree, 분산형)
- 중앙 컴퓨터와 일부 단말 장치는 단일 통신 회선으로 연결
- 그 외 단말들은 중간 단말을 통해 연결
- 망형(Mesh)
- 모든 지점이 서로 연결
- 노드 수가 n개이면 연결선은 n(n-1)/2, 노드 하나당 n-1개의 포트 필요
- 신뢰성이 높지만 설치 비용이 큼
3) VLAN
- 물리적 배치와 상관없이 논리적으로 네트워크 구역을 나눠서 관리하는 기술
- 성능과 보안 향상
4) LAN의 표준안 (IEEE 802)
- 유선 LAN은 802.3(Ethernet)
- 무선 LAN은 802.11 시리즈 (a/b/g/n/ac 등)
5) CSMA/CA
Carrier Sense Multiple Access / Collision Avoidance
- 무선 랜에서 충돌을 피하기 위해 매체가 비어있는지 확인 후, 일정 시간 뒤 데이터 전송
- 충돌 회피에 특화된 기법
6) 경로 제어 프로토콜 (Routing Protocol)
IGP (Interior Gateway Protocol)
- 하나의 자율 시스템(AS) 내에서 사용하는 라우팅 프로토콜
- RIP
- 소규모 동종 네트워크에서 가장 널리 사용
- 벨만-포드 알고리즘
- 최대 홉 수 15로 제한
- OSPF
- RIP 단점 보완, 대규모 네트워크에 적합
- 다익스트라(Dijkstra) 알고리즘으로 최단 경로 산출
- 라우팅 정보 변화 시 전체 라우터에 전달
EGP (Exterior Gateway Protocol)
- 자율 시스템 간 라우팅 용 프로토콜
- BGP(Border Gateway Protocol)
- EGP를 보완한 프로토콜
- AS 간 경로 제어
7) 흐름 제어
송·수신 측 사이에서 데이터 전송량과 속도를 규제
- 정지-대기(Stop-and-Wait)
- 매 데이터 전송 후 ACK(확인 신호) 받아야 다음 데이터 전송
- 슬라이딩 윈도우
- 미리 설정된 윈도우 크기만큼은 ACK 없이도 연속 전송 가능
- 전송 효율성이 좋음
8) SW 관련 용어
매시업
- 웹에서 제공하는 정보나 서비스를 조합해 새로운 SW, 서비스, DB를 만드는 기술
- 여러 정보원에서 제공받은 콘텐츠를 조합해 하나의 서비스로 만드는 것
서비스 지향 아키텍처(SOA)
- 기업 내부 애플리케이션을 공유/재사용 가능한 서비스 중심으로 구성하는 아키텍처
- 표현 계층, 서비스 중간 계층, 애플리케이션 계층, 데이터 계층으로 구성
디지털 트윈
- 현실 속 사물을 SW로 가상화하여 시뮬레이션하는 기술
- 자동차, 항공, 에너지, 국방, 헬스케어 등 다양한 분야에서 활용
텐서플로(TensorFlow)
- 구글 브레인 팀이 개발한 오픈소스 머신러닝/딥러닝 라이브러리
- 데이터 흐름 그래프(그래프 계산)를 활용
Docker
- 애플리케이션을 컨테이너 형태로 패키징해 배포·실행하는 자동화 기술
스크래피(Scrapy)
- 파이썬 기반 웹 크롤링 및 스크레이핑 프레임워크
9) 보안 관련 용어
서비스형 블록체인(BaaS)
- Blockchain as a Service
- 블록체인 개발 환경을 클라우드 기반으로 제공
- 노드 추가/삭제 등이 간편
OWASP
- Open Web Application Security Project
- 웹 취약점을 연구하는 비영리 단체
- 3~4년 주기로 10대 웹 취약점을 발표
TCP 래퍼
- 외부 컴퓨터의 접속을 확인해 허용/거부하는 보안 도구
허니팟
- 비정상적인 접근을 탐지하기 위해 공격자를 유인하는 시스템
- 공격 정보를 수집하고, 공격 기법 분석 가능
DPI (Deep Packet Inspection)
- OSI 7계층까지 패킷 내부 콘텐츠를 분석해 해킹·침입 시도를 탐지/차단
10) HW 관련 신기술
고가용성(HA)
- High Availability
- 장애 발생 시 다른 시스템으로 즉시 대체 가능한 이중화 환경(클러스터 등)
RAID
- Redundant Array of Inexpensive Disk
- 여러 물리 디스크를 병렬로 묶어 속도와 안정성을 높임
앤 스크린(N-Screen)
- 다양한 기기(N개의 디바이스)에서 동일 콘텐츠를 자유롭게 이용
MEMS
- Micro-Electro Mechanical Systems
- 미세전자기계시스템
트러스트존(TrustZone)
- 하나의 프로세서에서 일반 구역과 보안 구역을 분할 관리
- 하드웨어 기반 보안 기술
멤리스터(Memristor)
- 메모리 + 레지스터
- 전류 흐름 이력을 기억해 스위치처럼 동작
11) Secure OS
- 기존 OS에 보안 커널을 이식해 외부 침입에서 시스템을 보호하는 운영체제
- 주소 저장 스택 등에서 발생하는 보안 약점을 완화
- 구현이 복잡하지만 보안성이 높음
보안 기능
- 식별, 인증
- 임의적 접근통제(DAC)
- 강제적 접근통제(MAC)
- 객체 재사용 보호 (메모리 초기화)
- 완전한 조정 (우회 불가)
- 신뢰 경로 (비밀번호, 권한 설정 등 안전 경로 제공)
- 감사 및 감사기록 축소 (로그 기록 및 보호)
12) DB 관련 신기술
하둡(Hadoop)
- 오픈소스 분산 컴퓨팅 플랫폼
- 일반 PC로 구성된 분산 환경에서 대규모 데이터 세트를 병렬 처리
맵리듀스(MapReduce)
- 하둡 기반 대용량 데이터 분산 처리 프로그래밍 모델
- Map 단계에서 데이터를 분산 처리 후, Reduce 단계에서 결과를 합침
타조(Tajo)
- 하둡 기반 분산 데이터웨어하우스 프로젝트 (국내 개발)
데이터 마이닝
- 대량의 데이터 집합에서 유용한 정보를 발견하는 기법
- 데이터에 내재된 변수 간 상호관계를 찾고 패턴화
OLAP
- Online Analytical Processing
- 다차원 데이터로부터 통계적 요약 정보를 분석해 의사결정에 활용
- 대표 연산: Roll-up, Drill-down, Drill-through, Slicing, Dicing 등
13) 회복
- 트랜잭션 장애로 DB가 손상됐을 때 이전 상태로 복구
회복 기법
- 연기 갱신 기법: 트랜잭션이 완료될 때까지 DB 갱신을 미룸 (redo만 필요)
- 즉각 갱신 기법: 트랜잭션 도중에도 DB에 반영 (redo/undo 모두 필요)
- 그림자 페이지 기법: 복사본(그림자 페이지) 유지 → 롤백 시 그림자 페이지로 교체 (로그 불필요)
- 검사점 기법: 검사점에 관련 정보를 로그로 보관 → 장애 발생 시 검사점 이후만 복구
14) 병행 제어
- 다수 트랜잭션이 동시에 DB에 접근할 때 상호 간섭을 막고 일관성을 유지
기법 종류
- 로킹(Locking)
- 공유 자원에 배타적 접근을 설정
- 타임 스탬프 순서
- 트랜잭션마다 타임스탬프를 부여해 순서를 결정
- 교착상태 발생이 없음
- 낙관적(검증) 기법
- 대부분 읽기 전용이면 병행 제어 없이 진행 후 마지막에 검증
- 다중 버전 기법
- 각 데이터에 여러 버전을 유지하며 타임스탬프로 관리
로킹 단위
- 한 번에 로킹할 수 있는 데이터 객체의 크기(DB, 파일, 레코드 등)
- 단위가 크면 관리가 쉽지만 병행성↓
- 단위가 작으면 관리가 복잡하지만 병행성↑
15) 교착상태(Deadlock)
- 둘 이상의 프로세스가 서로 자원을 점유한 상태에서, 상대가 점유한 자원을 요구하며 무한정 대기
필요충분 조건
- 상호 배제 (한 번에 한 프로세스만 자원 사용)
- 점유와 대기 (자원을 이미 점유한 상태에서 다른 자원을 기다림)
- 비선점 (자원을 강제로 빼앗을 수 없음)
- 환형 대기 (자원-프로세스가 원형으로 얽혀 있음)
해결 방법
- 예방 기법: 교착상태 4가지 조건 중 하나를 제거 (자원 낭비 심함)
- 회피 기법: 교착 가능성 있으면 우회 (은행원 알고리즘)
- 발견 기법: 교착상태를 탐지(자원할당 그래프 등)
- 회복 기법: 교착상태에 빠진 프로세스 종료나 자원 선점으로 복구
3. 소프트웨어 개발 보안 구축
1) Secure SDLC
- SDLC 각 단계에 보안 강화를 포함한 소프트웨어 개발 생명주기
- 운영 단계에서 보안 이슈 해결 시 비용이 크므로, 초기에 보안을 설계하는 기법
방법론
- CLASP(Secure Software)
- 초기 단계에서 보안 강화, 활동 중심·역할 기반 프로세스
- 현재 운용 중인 시스템에 적용하기 적합
- SDL(마이크로소프트)
- 나선형 모델 기반
- Sevel Touchpoints
- 소프트웨어 보안 모범사례를 SDLC에 통합
- 모든 산출물에 대해 위험 분석과 테스트 수행
2) 보안 요소
3대 요소
- 기밀성(Confidentiality): 인가된 사용자만 데이터 접근
- 무결성(Integrity): 인가된 사용자만 데이터 변경
- 가용성(Availability): 인가된 사용자는 언제라도 자원 사용 가능
추가 요소
- 인증(Authentication)
- 부인 방지(Non-repudiation)
3) 세션 하이재킹
- 클라이언트와 서버 사이에 맺어진 세션을 탈취해 불법적 접근
- 정상 연결을 RST 패킷 등으로 끊고 재연결을 공격자가 가로채는 방식
- 시퀀스 번호를 동기화해 두었던 점을 악용
4) 입력 데이터 검증 및 표현의 보안 약점
- SQL 삽입: 쿼리문에 임의 문자열 삽입 → 필터링 필요
- 경로 조작 및 자원 삽입: 파일 경로를 조작해 자원에 무단 접근
- 크로스 사이트 스크립팅(XSS): 웹페이지에 스크립트를 삽입해 방문자 정보를 탈취
- 운영체제 명령어 삽입: 외부 입력값을 통해 시스템 명령어 실행
- 위험한 형식 파일 업로드: 스크립트 파일 등을 업로드해 서버를 공격
- 신뢰되지 않은 URL 자동 연결: 피싱 사이트로 유도
- 메모리 버퍼 오버플로: 배열 크기를 벗어나 시스템 메모리 침범
5) 보안 기능의 보안 약점
- 적절한 인증 없이 중요 기능 허용: 재인증 과정 필요
- 부적절한 인가: 접근제어 누락된 실행 경로로 정보 탈취
- 잘못된 권한 설정: 중요 자원의 권한이 잘못 부여
- 취약한 암호화 알고리즘 사용: 강력한 알고리즘으로 교체 필요
- 중요정보 평문 저장 및 전송: 암호화 처리 필요
- 하드코드된 비밀번호: 외부 설정값으로 전환
6) 스택 가드(Stack Guard)
- 스택 상에 복귀주소와 지역변수 사이에 특정 값을 저장해 메모리 변조를 방지
- 값이 변경되면 오버플로우로 판단하고 프로그램 중지
7) 접근 제어자, 접근 지정자
구분 클래스 내 동일 패키지 하위 클래스 외부 패키지
public | O | O | O | O |
protected | O | O | O | X |
(default) | O | O | X | X |
private | O | X | X | X |
8) 암호화
개인키 암호화 기법
- 대칭 암호화
- 암호화와 복호화에 동일한 키 사용
- 블록 암호: DES, SEED, AES, ARIA 등
- 스트림 암호: RC4 등
공개키 암호화 기법
- 비대칭 암호화
- 암호화 키는 공개, 복호화 키는 비밀
- RSA가 대표적
양방향 알고리즘 종류
- SEED: KISA에서 개발한 블록 암호, 128비트 블록, 128·256비트 키
- ARIA: 국정원, 산학협력으로 개발된 블록 암호, 128비트 블록, 128·192·256비트 키
- DES: 1975년 NBS에서 발표한 개인키 암호, 64비트 블록, 키 길이 56비트
- 3DES: DES를 3번 반복 적용
- AES: NIST에서 발표, 128비트 블록, 128·192·256비트 키
- RSA: 공개키 방식, 큰 수의 소인수분해가 어렵다는 난해성 기반
9) 해시
- 임의 길이 데이터를 고정 길이로 매핑하는 함수
- 무결성 검증, 정보 보호 등에 활용
해시 함수 종류
- SHA 시리즈(SHA-0, SHA-1, SHA-2, SHA-256, 등): NSA·NIST
- MD5: Rivest가 MD4를 개선, 128비트
- N-NASH: 일본 NTT, 128비트
- SNEFRU: R.C.Merkle, 128 또는 256비트
10) 솔트(Salt)
- 사용자 비밀번호가 같아도 암호화하면 결과가 동일해지는 문제를 방지
- 암호화하기 전에 무작위 문자열(솔트)을 추가해 해시 생성
- 무차별 대입 공격, 무작위 대입 공격에 대한 방어 효과
4. 시스템 보안 구축
1) DDoS(분산 서비스 거부) 공격
- 취약한 호스트를 에이전트(공격 도구 설치)로 만든 후 다수의 에이전트가 동시에 공격
- 에이전트를 관리하는 마스터(핸들러) 시스템을 두어 공격을 총괄 지휘
분산 서비스 공격 툴
- Trin00: UDP Flooding
- TFN: UDP Flooding, TCP SYN Flood, ICMP 공격 등
- TFN2K: TFN 확장판
- Stacheldraht: 이전 툴 기능 + 암호화 통신 + 자동 업데이트
2) 네트워크 침해 공격 관련 용어
- Ping of Death: 허용 범위보다 큰 패킷을 전송해 대상 네트워크 마비
- SMURFING: IP, ICMP 특성을 악용해 다량의 패킷을 증폭·전송
- Smishing: 문자메시지(SMS)로 개인정보 탈취
- Phishing: 공공기관 등을 사칭해 개인정보 탈취
- Ping Flood: 대량의 ICMP Echo Request로 트래픽 유발
- Evil Twin Attack: 동일 SSID의 악성 무선 AP로 접속을 유도
- 스위치 재밍: 위조된 MAC 주소 다량 전송 → 스위치를 허브처럼 동작하게 만듦
3) 블루투스 관련 공격
- 블루버그(BlueBug): 취약점을 이용해 휴대폰을 원격 조종, 통화 감청
- 블루스나프(BlueSnarf): 파일 접근 취약점
- 블루프린팅(BluePrinting): 공격 대상 장비 검색
- 블루재킹(Bluejacking): 블루투스 메시지 스팸
4) 정보 보안 침해 공격 관련 용어
- 웜(Worm): 네트워크를 통해 자기 복제 → 시스템 부하 유발
- 제로 데이 공격: 보안 취약점이 공개되기도 전에 공격
- 키로거: 키보드 입력 정보를 몰래 빼감
- 랜섬웨어: 파일을 암호화하고 복호화 대가로 금전 요구
- 백도어(Backdoor): 시스템 보안을 무력화하는 비밀 통로
5) 인증(Authentication)
- 지식 기반: 사용자가 알고 있는 것(패스워드 등)
- 소유 기반: 사용자가 소유한 것(토큰, 스마트카드 등)
- 생체 기반: 지문, 홍채, 안면 인식
- 위치 기반: 위치정보(GPS 등)
6) 관리적·물리적·기술적 보안
- 관리적 보안: 조직의 정책, 인적 보안, 보안 교육 등
- 물리적 보안: 출입 통제, 재해 복구 센터 등
- 기술적 보안: 인증, 접근 제어, 시스템·네트워크 보안 설정 등
7) 리눅스 커널 로그
- /dev/console: 커널 관련 메시지를 콘솔에 직접 출력
- /var/log/wtmp: 로그인/로그아웃, 시스템 시작/종료 로그
- /var/run/utmp: 현재 로그인 상태 기록
- /var/log/btmp: 실패한 로그인 시도 로그
- /var/log/lastlog: 마지막 로그인에 대한 기록
8) 침입 탐지 시스템(IDS)
Intrusion Detection System
- 비정상적 사용, 오용, 남용 등을 실시간 탐지
- 방화벽만으로 내부 사용자의 불법 행위를 제어하기 어려움
종류
- HIDS(Host-Based IDS): 호스트 내부에서 동작
- OSSEC, md5deep, AIDE 등
- NIDS(Network-Based IDS): 네트워크 트래픽 분석
- Snort, Zeek
설치 위치
- 패킷이 라우터로 들어오기 전
- 라우터 뒤
- 방화벽 뒤
- 내부 네트워크
- DMZ 등
9) VPN
Virtual Private Network
- 공중망을 암호화해 마치 전용선을 쓰는 것처럼 안전하게 통신
10) SSH(시큐어 셸)
- 원격 로그인, 명령어 실행, 파일 복사 등을 안전하게 수행하는 프로토콜
- 데이터 암호화와 강력한 인증 방식 제공
- 보통 22번 포트 사용
'📜 Certs > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 프로그래밍 언어 활용 - 4과목 정리 (2) | 2025.01.28 |
---|---|
[정보처리기사] 데이터베이스 구축 - 3과목 정리 (3) | 2025.01.28 |
[정보처리기사] 소프트웨어 개발 - 2과목 정리 (2) | 2025.01.23 |
[정보처리기사] 소프트웨어 설계 - 1과목 정리 (3) | 2025.01.22 |