본문 바로가기
security/cissp

Domain 8. Software Development Security -1




1. System Development Control(SDLC)

1) Waterfall Model 
-  특징 
. 공업제품의 개발을 근본으로 한 모델
. 공정이 이미 정해 있으며, 앞의 공정 등에 되돌아가는 것이 곤란

- 장점
. 개념적으로 자연스럽게 개발 과정을 표현
. 단계별 진행으로 해당 단계의 진척 관리가 쉽다 .
. 눈에 보이는 성과물이 각 공정 마다 반드시 출력
. 일정 관리가 쉽게 됨
. 유사한 시스템의 개발 경험이 있는 경우 효울품질 면에서 우수 

- 단점
. 작업 공정의 변경이 곤란한 경우가 많다.
. 코딩이나 테스트 작업 지연 
. 최종 성과물이 완성되어야만 판명

2)  Modified Waterfall Model 

- 바로 앞단계로만 back 가능 하도록 Waterfall model 수정

- Validation ->확인(Real-world)
. Evaluate against real-world requirements and concept(실제 요구 사항 및 개념에 대한 평가)
. 외부 요건 반영 실세계의 요구사항의 만족 

- Verification->검증(IT)
.  Evaluate product in development against the specification(사양에 맞게 제품을 개발)
, validation 된것을 만족하는지, 각 단계가 잘 끝냈는지 

3) Prototyping Model 
- 특징 
. 고객이 모르는 경우 시제품(prototype) 을 만들어 보여 주는 것
. 폭포수 모델의 단점을 보완 하기 위해 전진적으로 시스템을 개발 
. 시제품(Prototype)은 실제 실행이 되는 시스템이며, 모두 구현 할 필요는 없다 .
. 성능 ,보안, 견고한 및 신뢰도와 같은 소프트웨어의 특성을 무시
. 변경이 체계적으로 이루어지지 않으므로 유지보수 힘듦
. 요구 사항 명세서를 추출하는 기반으로 사용 

- 장점
. 개발자와 사용자의 오해가 규명
. 생각지 못하였던 기능과 서비스 발견
. 가능성과 유용성을 관리자에 보여줌 

- 단점 
. 재사용의 어려움 
. 변경관리의 어려움

4) Spiral Model (나선형) 
- 특징: 기업 내에서 경영환경의 변화에 따른 업무 개선을 하는데 사용되는 PDCA(Plan - Do- Check -Action) 주기의 생각을 시스템 개발의 적용 

- 장점
. 시스템 개발중에 일어나는 변경에  유연하게 대응=>가장 좋은 목표로 수렴

- 단점
. 배치가 복잡 하고 리스크를 다룰수 있는 전문가 필요 
. 시간과 비용이 많이 듦

- EX) DRP(Disaster Recovory Plan)

5) 기타 모델
- CBD(Component-based engineering) : 컴포넌트(클래스)를 사용 어플리케이션 구성-> 소프트웨어의 재사용성
- RAD:  자동화 개발 도구를 통한 빠른 개발 
- CASE : 컴퓨터를 활용하여 자동화한 방법론
- JAD: 워크샵 위주의 환경 (고객/사용자가 설계 참여)
- Cleanrom : 실수와 오류를 방지 하기 위한 접근법으로 고품질의 중요한 어플리 케이션 사용 
- XP :실천적인 개발 방법론 


2. 소프트웨어  개발 방법론 

Q) sw 라이프 사이클 중 보안은 언제 고려 되어야 하는가 ? =>전단계
Q) sw 라이프 사이클 중 보안은 언제 고려 되는 것이 가장 효율적인가 ?=> 초기

1) 프로젝트 착수 및 계획작성(Project Initiation)
. 프로젝트 개념정의 결정
. 보안필요 조건 확인
. 초기 위험분석 수행
. 위협 및 대응책 분석 
. 보안관리의 관여가 가장 효과적시기

2) 기능적 설계 분석 및 계획(Design Analysis & Planning)
. 보안 요구 사항 정의

3) 시스템 설계 명세 (System Design Specification)
.  보안 체크 리스트 
. 소프트웨어의 기준선(Baseline) 설정=범위

4) 소프트웨어 개발 (Software Development)
. 개발 및 문서화 
. 단위테스트 : QA팀에서 테스트와 다른, 개발자가 개발품을 테스트 
. 높은 응집도(cohesion), 낮은 결합도(coupling)=의존도
. 재사용성, 유지보성의 증가 

5) 인수테스트 /구현(Acceptance test/implementation)
- 인수 테스트 후 인증(certification) 과 인정(accreditation)과정 수행 
. 인증: 제품을 기술적 검토
. 인정 : 경영자의 공식적인 선언 -> 제품에 대해 책임 질 것을 수락

Q) SDLC 의 마지막 단계는 ?=> 인정(폐기/소멸이 없는 경우)
Q) 변경 관리의 마지막 단계는?=> 인정(폐기 /소멸이 있어도 )

- 제품의 문서화 => 계약 
. SLA- 서비스 수준계약
. Escrow : 벤더가 망하더라도 제 3자가 유지보수 계약 

*Escrow 계약시 필요한것 : 소스코드, 설계문서 , 개발 환경 정보 
*Escrow 계약시 필요 없는것 : OS 개발 환경, 개발자 이메일 주소 등 

3.운용/유지보수(Maintenance/Operation)

- 벤더가 고객과 SLA를 체결할 경우 운용 및 유지보수 책임 
- 주기적 감사 : 패치의 실행 전테스트 ,취약점 검사 
- 제품이 환경상에 변화가 일어날 경우 또 다른 인증./인정 절차 수행

- 운영단계에서 발생 하는 테스트 
. 병행테스트 : 서로 다른 시스템간의 기능 비교 테스트 
. 파일럿테스트  : 특정부서 선도입
. 회귀테스트 : 기능 업그레이드/패치에 대한 테스트( 이전 테스트 항목 포함)
. 사회성 테스트 : 기존 시스템간 호환성 테스트 
Q) 기존의 ERP를 바꿀때 테스트 => 병행 테스트 

- Hardening (경화)=>Simple(단순함) : 불필요한 기능은 제거 , 필요한 기능만 활성화 

4. 소프트웨어 성숙도 모델(CMM)

- 정보기술 프로세스 능력 평가 및 개선 모델
- 각 성숙도 단계별 이행하여야 할 핵심 프로세스 및 각 프로세스별 이행방법 제시 

- 기대효과
. 생산성 향상(시행차고 최소화) , 품질 오차율 감소 , 개발 소요기간 감소 ,ROI 향상 
. 프로세스 개선 소요 비용, 훈련비용 절감 

- 1단계(초기) : 초기 회사, 관리 빈약, 프로세스 예측 불가 
- 2단계(반복) : 성공한 사례/task  반복 수행 , 퇴사시 1단계로  (key :반복)
- 3단계(정의) : 업무의 정형화 문서화 , 정성적, 퇴사해도 수준 유지( Key: 정의, 문서화)
- 4단계 (관리); 업무의 평가 측정, 프로세스화 , 정량적( Key : 수치,평가 )
- 5단계 (최적) : 프로세스 혁신에 초점 (Key : 지속적인 리엔지니어링)

5. 변화 제어 / 관리 (Change control & management) 

- 모든 비지니스의 생존의 문제가 데이터 무결성에 의존

- 변화 제어/관리는 모든 변경은 철저히 검토/승인 되고 , 테스트 되며  기록 되어야 함

- 변경 통제에서 changes must be authorized , tested & recorded!!

- 변경 통제에서 마지막 단계는 인정 

- 변경 제어절차 
변화 요청 -> 변화 요청 분석->변화 요청 기록 -> 승인을 위해 변화 요청을 제출 -> 변화 개발 
-> 변화된 내용이 담긴 버전 작성 -> 경영자에게 보고 



2. Database & DATA Warehouse 

1.용어 정리 
. SQL : DB접근 과 조작에 사용되는 언어 
. 데이터 사전 : 메타데이터와 데이터 관계의 중앙 저장소 
. 메타데이터 : 데이터에 대한 데이터를 제공 
. 스카마 : 데이터 베이스 구조
. 뷰 : 가상적인 관계 혹은 부분- 어떤 데이터가 특정 사용자에게 접근 가능 할지 조절 ( =>보안성 제공, 예방통제)
. 행: Tuple,Row,Record,Cardinality
. 열 : Attribute, Field, Column, Degree
. 셀: 행과 열이 만나는 곳 
. Checkpoint: save시점 

*DB통제에 연관 있는것은 view 이며 예방 통제 

- DBMS Architecture
. 계층형 : tree 구조로 부모 자식 관계 , 역방향 포인터 허용 안됨
. 네트워크 : 다수-다수 관계 ,역방향 포인트 허용 
. 관계형 : 운영상 비효율성이 높다 =>정규화 이슈 
. 객체지향형 : 그래픽,오디오 , 멀티미디어 등 다양한 형식의 데이터를 저장 하기 적합

- 기본키 (Primary Key) : 테이블 내에서 unique, null 허용 안되며 , 변경 불가 
- 외래키 (Forenign Key) : 하나의 테이블이 다른 테이블과 관계를 맺을때 그 관계를 나타냄

- 개체무결성(Entity Integrity) : 기본키는 유일성을 보장해주는 최소한의 집합=> PK 가 정상적이면 개체무결성 보장(Not null ,minimal set of attribute)
- 참조무결성( Referential Integrity)  : PK 에 존재 하지 않는 FK가 가지고 있어서는 안됨 => 외래키가 정상적이라면 참조무결성 보장

- DBMS Security : access protection -> user account -> db audits

- 집성(aggregation) 
. 낮은 보안 등급이 높은 등급의 정보를 알아 내는것

- 추론( Inference) 
. 보안 등급이 없는 일반 사용가자 기밀정보를 유출해 내는 행위 
. 보안 대책: Polyinstantiaion(다중인스턴스화) => 다향성, 강제적 접근통제 => 같은 이름의 data가 여러개 존재하는 것을 허용 
. 방지 대책: Partition,cell suppression(셀의 억제),noise, perturbation(작은변화)

*낮은 보안 등급의 정보조각을 조합하여 높은 등급의 정보를 알아내는 것을 집성. 즉 개별 정보가 각각 독립적으로는 가치가 없으나 
합치면 (combine)  유추 할 수 있다.

*Inference 는 raw data 로 부터 민감한 데이터를 유출하는 행위다 . 보안 대책은 다중 인스턴스화이다.

- 정규화 : DB구조 내에서 중복되는 데이터 요소들을 제거 하는것으로 , 갱신 이상을 막기 위한 목적 =>무결성
- 역정규화(비정규화) : DB 처리 효율을 증가시키기 위한 목적,무결성에 대한 위험 존재 =>효율성

- DATA warehouse
. 의사 결정 지원 시스템 (Decision Support System) 

- OLAP(On-line Analytics Processing)
. 데이터 다차원 분석을 통한 정보추출 프로세스 

- Data Mining
. 데이터를 분석, 가공하여 유용한 정보로 추출해 내는 기술, 가설 발견 
. 기본 정보 : SQL
. 다차원 정보 : OLAP(On-line Analysis Program) (OLTP 오타주의)
, 숨겨진 정보 : 데이터 마이닝
. IDS 에 활용 , 보험 사기 탐지에 사용 

- Expert System
. 추론엔진+지식베이스+사용자인터페이스 
. 추론엔진 : 결론 도출을 위한 방법론 제공 
. IDS 에 활용(Misuse)
.전문가 시스템의 중요한 구성요소는 추론 엔진과 지식베이스 + UI이다 

- Neural Network
. 많은 단순 프로세스 네트워크 (nueron 간의 weighted-connection)
. training -rule 통해 사례로 부터 학습 -> 일반화 하여 사용
. 응용 분야 : 패턴 인식,음성 인식 ,문자 와같은 아날로그를 디지털로 변환시 사용
. Anomaly IDS에 사용
. Key: 학습










반응형