비용 산정 모델
- 전문가 감정 기법
- 델파이(Delphi) 기법 : 산정 요원과 조정자에 의해 산정, 독단적인 산정을 막는다.
- LOC(Line Of Code) 기법 : 원시 코드 라인 수에 따라 비용을 산정함.
- 예측치 = a + (4 * c) + b / 6 (단, a는 낙관치, b는 비관치, c는 기대치)
- COCOMO(COnstructive COst MOdel) 모델 : 소스 코드의 규모에 의한 비용 예측 모델이다.
- Organic Mode(단순형) : 5만 라인 이하
- Semi-detached Mode(중간형) : 30만 라인 이하, 트랜잭션 처리 시스템, 운영체제, DBMS
- Embeded Mode(임베디드형) : 30만 라인 이상, 초대형 규모의 트랜젝션 처리 시스템, 운영체제
- Putnam 모델 : Rayleigh-Norden 곡선의 노력 분포도를 이용, SLIM 도구를 사용
- FP(Functional Point), 기능 점수
ISO/IEC 12119
패키지 소프트웨어의 일반적인 품질 요구사항 및 테스트를 위한 국제 표준이다.
ISO/IEC 12207
소프트웨어 개발 작업에 일관적이고 체계적인 프레임워크를 제공하기 위하여 1995년에 제정한 소프트웨어 생명주기 프로세스 국제 표준이다.
기본 생명주기 프로세스 구분
- 획득 프로세스(Acquisition Process)
- 공급 프로세스(Supply Process)
- 개발 프로세스(Development Process)
- 운영 프로세스(Operation Process)
- 유지보수(Maintenance)
SPICE(Software Process Improvement and Capability dEtermination)
소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준으로, ISO/IEC 15504이다.
레벨
- 레벨 0 불완전(Incomplete) 단계 : 프로세스가 구현되지 않거나 프로세스 목적을 달성하지 못한 단계
- 레벨 1 수행(Performed) 단계 : 해당 프로세스의 목적은 달성하지만 계획되거나 추적되지 않은 단계
- 레벨 2 관리(Managed) 단계 : 프로세스가 정해진 절차에 따라 이루어져 산출물을 내며, 모든 작업이 계획되고 추적되는 단계
- 레벨 3 확립(Established) 단계 : 표준 프로세스를 사용하여 계획되고 관리된 단계
- 레벨 4 예측(Predictable) 단계 : 표준 프로세스 능력에 대하여 정량적인 이해와 성능이 예측되는 단계
- 레벨 5 최적(Optimizing) 단계 : 정의된 프로세스와 표준 프로세스가 지속적으로 개선되는 단계
CMM(Capability Maturity Model, 능력 성숙도 모델)
소프트웨어 개발 프로세스의 성숙도를 다룬다.
레벨
- 레벨 1 초기(Initial) 단계
- 레벨 2 반복(Repeatable) 단계
- 레벨 3 정의(Defined) 단계
- 레벨 4 관리(Managed) 단계
- 레벨 5 최적(Optimizing) 단계
CMMI(Capability Maturity Model Integration, 능력 성숙도 통합 모델)
소프트웨어, 시스템, 프로덕트를 포함하는 세 분야를 통합 평가하는 모델이다.
NS(Nassi-Schneiderman) Chart
- 논리 기술에 중점을 둔 도형을 이용한 표현 방법이다.
- 순차, 반복, 선택, 다중 선택 등의 제어논리 구조로 표현한다.
- 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별한다.
- GOTO나 화살표를 사용하지 않는다.
MapReduce
대용량 데이터를 분산 처리하기 위한 목적으로 Google에 의해 고안된 프로그래밍 모델이다.
테일러링(Tailoring)
기존 개발 방법론의 절차, 기법, 산출물 등을 프로젝트 상황에 맞게 수정하는 작업이다.
RIP(Routing Information Protocol)
최단 경로 탐색 알고리즘인 Bellman-Ford 알고리즘을 사용하는 거리 벡터 라우팅 프로토콜이다. 홉만을 고려한다. 최대 홉 카운트를 15홉 이하로 한정한다.
OSPF(Open Shortest Path First Protocol)
최단 경로 탐색 알고리즘인 Dijkstra 알고리즘을 사용하는 Link State 라우팅 프로토콜이다. 89번 프로토콜을 사용하고, IGP(Interior Gateway Protocol)에서 많이 사용된다.
MQTT(Message Queueing Telemetry Transport)
IBM이 주도하여 개발한 기술로 사물 인터넷과 같이 대역폭이 제한된 통신 환경에 최적화하여 개발되었다.
클라우드 컴퓨팅(Cloud Computing)
컴퓨팅 자원을 원격으로 필요한 만큼 비려서 사용하는 방식의 서비스 기술로서 IaaS, PaaS, SaaS로 구분한다.
고가용성 솔루션(HACMP)
각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결할 수 있다. 조직, 기업의 기간 업무 서버 등의 안정성을 높이기 위해 사용될 수 있다. 2개의 서버를 연결하는 것으로 2개의 시스템이 각각 업무를 수행하도록 구현하는 방식이 널리 사용된다.
DAS(Direct-Attached Storage, 직접 연결 저장장치)
하드디스크와 같은 데이터 저장장치를 호스트 버스 어탭터에 직접 연결하는 방식이다. 저장장치와 호스트 기기 사이에 네트워크 디바이스 없이 직접 연결하는 방식으로 구성된다.
SDN(Software Defined Networking)
네트워크를 제어부, 데이터 전달부로 분리하여 네트워크 관리자가 보다 효율적으로 네트워크를 제어, 관리할 수 있는 기술이다.
Mesh Network
대규모 디바이스의 네트워크 생성에 최적화되어 차세대 이동통신, 홈 네트워킹, 공공 안전 등의 특수목적에 사용되는 새로운 방식의 네트워크 기술이다.
사용자 인증 유형
- 지식 기반 인증 : 사용자가 기억하고 있는 정보를 기반으로 인증을 수행.
- 소유 기반 인증 : 사용자가 소유하고 있는 것을 기반으로 인증을 수행.
- 생체 기반 인증 : 사용자의 고유한 생체 정보를 기반으로 인증을 수행.
- 행위 기반 인증 : 사용자의 행동 정보를 이용해 인증을 수행.
- 위치 기반 인증 : 인증을 시도하는 위치의 적절성을 확인.
세션 하이재킹 탐지 방법
- 비동기화 상태 탐지
- ACK Storm 탐지
- 패킷의 유실과 재전송 증가 탐지
- 예상치 못한 접속의 리셋 탐지
보안 약점의 종류
- SQL Injection
- 경로 조작 및 자원 삽입
- 크로스 사이트 스크립트(XSS)
- XQuery 삽입
- XPath 삽입
- LDAP 삽입
암호 방식의 분류
- 양방향
- 비밀키(스트림 방식, 블록 방식), 공개키
- 단방향
- 해시
공개키(Public Key, 비대칭키) 암호화 방식
암호키와 해독키가 서로 다른 기법으로 키 개수는 2 * N개가 필요하다. 키 분배가 비밀키 암호화 기법보다 쉽고, 암호화/복호화 속도가 느리며 알고리즘이 복잡하다. RSA, ElGama 기법 등
비밀키(Private Key, 대칭키) 암호화 방식
동일한 키로 암호화하고 복호화하는 기법으로 키의 개수는 N(N-1)/2개가 필요하다. 암호화/복호화 속도가 빠르고 알고리즘이 단순하다. 키 분배가 공개키 암호화 기법보다 어렵다.
- 스트림 방식
- 블록 방식
- DES : 블록 크기는 64bit, 키 길이는 56bit이다.
- AES
해시(Hash) 암호화 방식
임의의 길이의 메세지를 입력으로 하여 고정된 길이의 출력값으로 변환하는 기법이다. 주어진 원문에서 고정된 길이의 의사난수를 생성하며, 생성된 값을 해시값이라고 한다. 디지털 서명에 이용되어 데이터 무결성을 제공한다. 블록체인에서 체인 형태로 사용되어 데이터의 신뢰성을 보장한다. SHA, SHA-1, SHA-256, MD-5, RMD-160, HAS-160, HAVAL 기법 등
Salt
암호 공격을 막기 위해 똑같은 패스워드들이 다른 암호값으로 저장되도록 추가되는 값을 의미한다.
Dos(Denial of Service) 공격
- Ping of Death
- SYN Flooding
- Land
- Smurf : 네트워크 라우터의 브로드캐스트 주소를 활용한 공격이다.
DDoS(Distributed Denial of Service, 분산 서비스 거부) 도구
- Trinoo
- TFN
- TFN2K
- Stacheldraht
블루투스 공격
- 블루버그(BlueBug) : 블루투스 장비 사이의 취약한 연결 관리를 악용한 공격으로, 휴대폰을 원격 조정하거나 통화를 감청할 수 있다.
- 블루스나프(BlueSnarf) : 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로, 인증없이 간편하게 정보를 교환할 수 있는 OPP(Object Push Profile)을 사용하여 정보를 열람한다.
- 블루프린팅(BluePrinting) : 블루투스 공격 장치의 검색 활동을 의미한다.
- 블루재킹(BlueJacking) : 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 공격이다.
백도어(Back Door)
프로그램이나 손상된 시스템에 허가되지 않는 접근을 할 수 있도록 정상적인 보안 절차를 우회하는 악성 소프트웨어이다.
도구
- NetBus
- Back Orifice
- RootKit
탐지 방법
- 무결성 검사
- 열린 포트 확인
- 로그 분석
- SetUID 파일 검사
서버 접근 통제 종류
- 강제적 접근 통제(MAC, Mandatory Access Control) : 벨라파듈라 모델
- 임의적 접근 통제(DAC, Discretionary Access Control)
- 역할 기반 접근 통제(RBAC, Role-Based Access Control)
접근 통제 모델
- 벨라파듈라 모델(BLP) : 군대의 보안 레벨처럼 정보의 기밀성에 따라 상하 관계가 구분된 정보를 보호하기 위해 사용하며, 자신의 권한보다 낮은 보안 레벨 권한을 가진 경우에는 높은 보안 레벨의 문서를 읽을 수 없고, 자신의 권한보다 낮은 수준의 문서만을 읽을 수 있다.
- SSO(Single Sign-On) : 시스템이 몇 대가 되어도 하나의 시스템에서 인증에 성공하면 다른 시스템에 대한 접근 권한도 얻는 시스템이다.
umask
UNIX에서 파일이나 디렉토리의 초기 권한을 설정할 때 사용하는 값으로, 파일의 경우 666에서 umask를 뺀 값을, 디렉토리의 경우 777에서 umask를 뺀 값을 초기 접근 권한으로 갖는다.
리눅스의 주요 로그 파일
- console : 커널에 관련된 내용을 지정된 장치에 표시
- boot : 부팅 시 나타나는 메세지들을 기록
- cron : 작업 스케쥴러인 crond의 작업 내역을 기록
- messages : 커널에서 실시간으로 보내오는 메세지들을 기록
- secure : 시스템의 접속에 대한 로그를 기록
- xferlog : FTP로 접속하는 사용자에 대한 로그를 기록
- maillog : 송수신 메일에 대한 로그를 기록
- wtmp : 성공한 로그인/로그아웃에 대한 로그를 기록
- utmp : 현재 로그인한 사용자의 상태에 대한 로그를 기록
- lastlog : 마지막으로 성공한 로그인에 대한 로그를 기록