1. 소프트웨어 개발 방법론 활용
1) 소프트웨어 개발 방법론
- 구조적 방법론
정형화된 분석절차에 따라 사용자 요구사항을 파악하여 문서화
처리 중심의 방법론
- 60년대까지 가장 많이 적용된 방법론
- 목적: 쉬운 이해, 검증 가능한 프로그램 코드 생성
- 분할과 정복
- 정보공학 방법론
계획, 분석, 설계, 구축에 정형화된 기법을 상호 연관성 있게 통합, 적용
자료 중심
- 컴포넌트 기반 방법론
컴포넌트를 조합하여 하나의 앱 만들기
- 컴포넌트 재사용
- 새 기능 추가 간단 → 확장성 보장
- 유지보수 비용 최소화, 생산성/품질 향상
절차
2) 소프트웨어 재사용
- 정의
이미 개발된 SW를 다른 SW 개발에 사용
품질, 생산성 ↑
- 이점
- 개발 시간, 비용 단축
- 소프트웨어 품질 향상
- 개발 생산성 향상
- 실패 위험 감소
- 시스템 구축 지식 공유
- 시스템 명세, 설계, 코드 등 문서 공유
- 방법
> 합성 중심
블록(모듈)을 끼워맞춤
> 생성 중심
추상화형태로 쓰인 명세를 구체화하여 만듦
패턴 구성 방법
3) 소프트웨어 재공학
새로운 요구에 맞도록 기존 시스템을 이용하여 나은 시스템 구축,
새 기능을 추가하여 성능 향상 시키는 것
- 유지보수비용 == 소프트웨어 개발 비용의 대부분 → 기존 것을 개조/개선 하여 유지보수성, 품질 향상
- 유지보수성 향상 → 소프트웨어 위기 해결 (예방 유지보수 측면에서)
- 자동화 도구 사용 과정 포함
- SW 수명 연장, 기술 향상, 개발 기간 단축
- 오류 감소, 비용 절감
- 주요 활동
- 분석
- 기존 명세서 확인 → 동작 이해, 재공학 대상 선정
- 재구성
- 역공학
- 기존 SW 분석 → 개발 과정, 데이터 처리 과정 등을 재발견, 창조
- 일반 개발단계와 반대방향
- 설계도 추출 등
- 이식
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) 접근 제어자, 접근 지정자
특정 개체 선언 시 외부 접근 제한용 예약어
/ | 클래스 | 패키지 | 하위 클래스 | 패키지 외부 |
---|
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
8) 암호화
- 개인키 암호화 기법
동일한 키로 암호화/복호화
- 암호화 대상이 n개일 때 키의 개수는 n(n-1)/2
- 대칭 암호 기법, 단일키 암호화 기법
- 블록 암호화 방식: 한 번에 하나의 데이터 블록 암호화 / DES, SEED, AES, ARIA
- 스트림 암호화 방식: 평문과 동일한 길이의 스트림 생성 → 비트 단위로 암호화 / LFSR, RC4
- 공개키 암호화 기법
공개키(암호화)는 DB 사용자에게 공개, 비밀키(복호화)는 관리자가 비밀리에 관리
- 암호화 대상이 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번 포트 사용