-
SW Development> Information Security/CISSP 2022. 6. 27. 08:31
< 개발 프로세스 >
- 폭포수 모델 : 순차적/단계적/체계적으로 수행, 프로젝트 초기(계획 수립)에 많은 시간이 소요되며 각 단계마다 검토(문서) 및 승인이 필요함. 프로젝트 중간단계 이후에서나 사용자 요구사항 검증할 수 있음
- 나선형 모델 : 위험 최소화. 품질확보 가능. 프로젝트 완전성 및 유지보수 용이. 관리 어려움. 장기화 가능 / 방사형 치수=누적비용, 각도 치수 = 각 주기
- 사시미 모델 : 각 단계가 겹쳐서 크로스체크 되면서 진행, 다음단계로 넘어가기 전에 걸쳐져서.
- 클린룸 모델 : 처음부터 버그가 없는 버전 / 개발 수정 어려움
- 반복적 개발 모델 : 보안성 보장 어려움
- 애자일 모델 :
- DevOps : 통합, 빌드, 테스트, 배포, 모니터링 개발사이클을 신뢰가능한 수준으로 자동화해서 애자일을 달성하자.
- DevSecOps : 자동화된 보안취약점 진단과정 추가 / 파이프라인 모든 과정에 보안이 고려
- CASE : 유틸리티를 사용하는데, 개발/유지보수 인원이 도구에 대한 훈련이 필요함
- CBD : 표준화된 블록을 조합하는 방식, 컴포넌트들이 사전에 충분히 테스트되어 보안 측면의 장점 있음
- COCOMO : 소스지침에 있는 소프트웨어 제품크기의 함수로 개발노력과 비용을 추정함
< SDLC >
** 보안기능 요구사항은 “시스템 예비설계 개발 후 데이터 분류 전”에 정의해야 함
1)계획(Planning)
2)분석(Analysis)
- 요구사항 분석, 타당성 조사
3)설계(Design)
4)구현(Develop)
5)테스트(Test)
6)운영/유지보수(Operate&maintenance)==========
[1] 프로젝트 초기화, 계획
- 프로젝트 범위 기술서 - 제품 범위 명세서, 인수 기준, 인도물, 프로젝트 범위 제외사항, 제약조건, 가정사항
- Due Care, Due Diligence를 다룸
[2] 시스템 컨셉 개발
[3] 기획/계획 수립
[4] 기능 요구사항 분석
- 요구사항 관리[CMMI Lv2] : 요구사항 협상, 기준선, 변경관리, 요구사항 확인 수행
- 요구사항 개발[CMMI Lv3] : 요구사항 추출, 분석, 명세화, 요구사항 확인(검증)
[5] 시스템 설계(Product Design)
- 통제사양 개발
- 보안사양 통합, 접근제어/암호화옵션/책임추적성/탐지매커니즘 등 다루어야 함
- 설계과정에서 지속적으로 보안요구사항이 반영되어야 함
- 시스템 아키텍처/인터페이스/출력 설계
- 데이터 입력/흐름/출력 요구사항 수립, 데이터 보안분류 수행
[6] 개발 및 구현
- 소스코드 생성
- 테스트 시나리오/케이스 개발
[7] 통합테스트(Integration) 및 평가 통제
- 단위테스트 : 오류가 있는지 테스트
- 통합테스트 : 요구사항이 포함되었는지 테스트
- 시스템 테스트 : 계획/의도대로 잘 반영되었는지 테스트
- 성능 테스트
- 무결성 테스트
- 회귀 테스트(Regression Testing): 변경으로 인해 다양한 부작용이 나타나진 않는지 테스팅, 이전에 테스트했던걸 반복적으로 테스트하기 때문에 보통 자동화
- Orthogonal testing : 정적인 분석에 기초한 테스트
- Matrix Testing : input과 output을 검증
- 패턴 테스트 : 이전 버그가 반영되었는지
[8] Implementation / 프로덕션 환경으로 이전
- 프로덕션 환경에 배포
- 사용자 테스트(User Acceptance Test)
[9] 운영 및 유지보수
- 백업 및 복구절차 테스트
[10] 개선 및 시스템 교체
==========
[5] 인수(Acceptance)
- 인수 테스트 : 독립적인 그룹이 테스트데이터를 개발하여 코드를 테스트
- 인증(Certification)과 인가(Verification)의 첫 단
[7] 인증과 인가
- 인증(Certification) : 독립적인 기관으로부터 컴플라이언스/요구사항 부합여부
- 인가(Accrediation) : 경영진이 승인
# 구축
- 정적 소스코드 분석
- 수동 바이너리 리뷰
# 실행 환경
- 모의해킹
- 자동 취약점 점검
- Fuzz 시험 도구 : 시스템 취약점을 발견하는 방법
< 테스트 >
- 합리성 테스트(Reasonable check) : 값이 지정된 기준에 맞는지 확인하는 테스트
- 탐색적 테스팅(Exploratory Testing) : 제한된 시간동안 테스트 엔지니어의 지적능력 최대한 활용(Heuristic)
# 정적 테스트
- 코드 리뷰
- 워크스루 : 체크리스트 없이 정성적으로 테스트하는 방식
- (구조적 위험분석) : 디자인 상 결함찾기 위한 목적
# 동적 테스트
- Whitebox, Blackbox
# Black box = ISO 29119-4 소프트웨어 명세기반 테스트 방식
- 사용자 관점, 기능 적합성 테스트
- 경곗값 분석 검사(Boundary Value Analysis),
- 동치분할검사(Equivalence Partitioning) : 입력도메인을 테스트케이스가 산출될 수 있는 데이터클래스로 균일하게 분류하는 기법
- 원인-결과 그래프 검사(Cause-Effect Graph)문법(Syntax) 검사
- 오류예측 검사
- 조합 검사
- 의사결정 테이블 검사
- 상태 전이 검사
- 시나리오 검사
- 분류 트리 검사
- 랜덤 검사
- 비교 테스트(Comparison test)
# White box
- 개발자 관점, 프로그램 내부 로직 점검
- 소스코드 실행 유효성 발견하여 테스트 시나리오를 결정하기 위한 방법
- 구조 테스트 /
- 모듈 테스트 /
- Logic, Loop, Statement 테스트
- Branch(분기) 테스트
- 데이터 흐름 검사
# Negative vs Positive
- Negative Test : 부적절한 입력/예기치 못한 행동으로 취약한 부분을 찾아내는 것
- Positive Test : 테스트 실행 중 오류가 발생하는 것을 찾아내는 것 / 정상적인 기능 테스트
검증(Verification) :
- 소프트웨어 제품과 그 사양(Specification)이 일치하는지
- 제품을 올바르게 빌드하고 있나?
- 시작단계부터 조건을 만족시키는지 결정하기 위해 중간중간 평가
유효성 검사(Validation) :
- (사용자의)요구사항을 충족하는 작업 산출물
- (버그없는)올바른 제품을 빌드하고 있나?
- 특정요구조건을 만족시키는가를 결정하기 위해 마지막에 평가
# 소프트웨어 프로세스 품질인증(SP)
# 소프트웨어 유지/변경 관리
- 요청 통제(request)
- 변경 통제(change) : 품질 통제기준 준수, 개발, 문서화
- 배포 통제(release) : 배포에 대한 인가, 이중점검, 인수테스트
# 소프트웨어 능력 성숙도 모델(SW-CMM)
- 초기(Initial)
- 반복(Repeated)
- 정의된(Defined) : 절차, 문서화
- 관리된(Managed) : 정량적
- 최적화(Optimized)
# IDEAL 모델
- Initiating
- Diagnosis: 권고/가이드 수립
- Establishing: 권고 진행, 계획을 개발
- Acting
- Learning
# CMMI : 기존 CMM을 통합한 모델
- Stage 방식 :
- 프로세스 관리
- 프로젝트 관리
- 지원
- 엔지니어링
# 소프트웨어 보증 성숙도 모델(SAMM)
- 소프트웨어 보안전략을 이해, 공식적으로 구현하는 것을 지원하는 개방형 프레임워크
- 작은 반복, 점진적, 유연, 측정가능해야 함
- 기존 소프트웨어 보안관행을 평가하고, 잘 정의되어 반복된 소프트웨어 보증 프로그램을 구현
- 구채적인 개선사항을 시연하고, 조직 전체의 보안관련 활동을 정의하고 측정
- 4개의 비즈니스 기능
- 12개의 보안관행 및 36개의 목표
- 성숙도 수준
# 공개 소프트웨어 라이센스 검증을 통한 이점
- 저작권 위반 등으로 인한 법적/이미지/금전적 손실 예방
- 개방형 시스템 구축 시 특정 SW 종속성 탈피
- 공개 SW 재사용으로 개발 생산성 증가 / 재개발 비용 절감
- 내부 지적재산권 관리 및 보호 가능
# 소프트웨어 품질 인증
- 1등급
- 2등급
- 3등급
# 변경관리 : 형상을 지속적으로 유지하기 위함
- 공식적인 변경 요청 > 검토 > 승인 > 적용계획 수립 > 적용 > 문서화(Reporting) > 추적 > 감사
# 패치관리
- 패치 평가 > 검증 > 승인 > 배포 > 감사와 검증을 통해 시스템 패치 보증
# 구성(형상)관리 :
- 베이스라인(이미지)생성 > 문서화 관리
- 식별 > 통제 > 감사 > 기록
- 제한되고 승인된 변경만 구현하도록 함
- TCB에 대한 모든 변경사항을 Auditing, Controlling
- Configuration Control Board(구성 제어 보드)
# 취약점 관리
- 취약점 점검 > 주기적 평가
< 데이터베이스 >
# DB 트랜잭션 원칙
- 원자성(Atomicity) : 트랜잭션이 일어나거나, 일어나지 않거나
- 일관성(동시성, Consistency) : 일치하는 환경에서 트랜잭션 결과가 일어나야함 - Table Locking 기능
- 독립성(Isolation) : 각각의 트랜잭션은 독립적으로(간섭하지 않음)
- 내구성(Durability) : 트랜잭션 결과가 영구적으로 보존된는 것
- View
# 객체지향 데이터베이스(OODB)
- 이미지 및 그래픽과 같은 멀티미디어 데이터를 저장하고 조작하는데 유용
- 코드재사용, 분석, 유지관리 용이
- 추상화를 위한 블랙박스 제공
- 프로그램 변경오류 확산 방지
# 객체지향프로그래밍(OOP)
- 프로그램 변경오류 확산 예방
- 각 객체는 메소드를 보유
- 추상화를 위한 블랙박스 제공
- 객체 캡슐화
- 다형성(Polymorphism) : 같은 이름을 가진 객체가 공통 작업집합에 다르게 응답함
- 응집력(Cohensive)
- 결합력(Coupling) : 결합력이 낮은 객체는 더 독립적
# 관계형 데이터베이스
- 관계 도메인(Domain of a relation)은 attribute를 허용하는 집합이다
- 기본 키는 후보키 집합에서 선택됨
#정규화
- 테이블의 속성이 기본 키에만 의존하도록 함
- 반복되는 그룹을 별도 테이블에 배치하여 제거 > 중복데이터 제거 > 기본키에 종속되지 않는 테이블 속성 제거
# SQL
- DDL : 데이터 구조나 스키마 정의, View와의 릴레이션 생성/삭제
- DML : 데이터 값에 영향을 줌
- 바인드 변수 : SQL 쿼리의 리터럴 값에 대한 자리표시자
# 트랜잭션 방식
- OLTP(온라인 트랜잭션 처리) : 실시간으로 데이터 처리
- OLAP(온라인 분석 처리) : 저장된 데이터를 바탕으로 대용량 분석 및 처리(ex:Data warehouse)
- 집성(Aggregation) : 등급이 낮은 데이터들을 조합해서 더 높은 등급을 유추해내는 공격
- 추론(Inference) : 보안으로 분류되지 않은 정보에서 기밀정보를 유추하는식
- 데이터 디들링 : 처리할 자료를 다른 데이터로 바꿔서 처리하는 방식
# 데이터베이스 암호화
- Plug-in : DB에 모듈을 설치해서 암호화 하는 방식
- TDE : 메모리 상에 올릴 땐 복호화, 파일로 저장할 때는 암호화
- API : 어플리케이션에 모듈을 탑재해서 함수로 호출해서 암호화 하는 방식
- 하이브리드 : API+Plug-in
# 데이터베이스 보안 통제
- 접근제어
- 추론통제
- 흐름통제
# 데이터베이스 분할 및 배피
- 수평 분할
- 수직 분할
- 부분 복제
- 광역 복제
- 데이터 사전(Data Dictionary) : 우수한 소프트웨어 엔지니어링 사례를 지원하는 도구로 구성된 데이터베이스
- Trusted front-end : DBMS가 멀티레벨 보안을 새로장착할 때 사용되는 것
# 다중데이터베이스에서 보안기능
- 의미적 무결성(Semantic Integrity) : 사용자의 행위가 규칙을 위반하지 않는다는 것을 보증함
- 콘텐츠 의존적(Content Dependant) 접근 통제
- 문맥 의존적(Context Dependant) 접근 통제
- 다중인스턴스화(Polyinstantiation) : 관계형 DB에서 여러 행을 삽입하는 것
# 추론 방지 기법
- 셀 은폐(Suppression) : 특정 필드/셀을 숨기거나 보이지 않게 처리
- 잡음 및 혼란(Noise, Confusion) : 가짜 데이터를 넣는 기술
- 롤백 : 트랜잭션을 무효화하기 위해 DB 수정사항을 부분적으로 원복처리
- DB쿼리에 패딩
- 데이터베이스 구획화 : 다른 데이터와 연관짓기 어렵게 구획화
- 최소 쿼리세트를 지정하지만, DB 레코드 중 하나를 제외한 모든 레코드에 대한 쿼리를 금지해야 함
- ODBC(Open Database Connectivity)
# 데이터웨어하우스
- DB에서 보관하지 않는 상세한 정보 저장
- DW에서 잠재적인 상관연계정보를 찾아내는 것이 “데이터 마이닝”
- 집성 및 추론에 이용되지 않도록 보안조치(탐지, 제거) 적용되어야 함
< 지식 기반 시스템 >
# 전문가시스템
- 순방향 연결 :
- 역방향 연결 :
- 칠판 : 다양한 정보를 반복적으로 기입해서 솔루션이 나오는 방식 / 잠재적 솔루션 배치
# 지식 기반
- If/then 구문으로 체계적으로 정리
# 추론 엔진
- 올바른 결정에 도달하기 위해 지식기반의 정보를 분석
- 논리적 사고와 퍼지로직 조합 이용
# 신경망
- 의사결정 프로세스에 반영하는 것을 목적으로 함
- 입력 데이터를 학습해서 가중치를 조정함
- 데이터에 적용하는 가중치를 조정함
- 뉴런을 모델로 하고, 비선형 패턴매칭 기술과 학습접근방식을 사용하여 문제를 해결하고자 함
- 문제해결을 위한 러닝을 필요로 함
# 의사결정 시스템(DSS)
- 고도로 구조화, 비구조화, 반구조화된 된 문제를 해결하는 것을 목표로 함
- 비전통적인 데이터 접근과 검색기능과 결합하는 것을 ??
- 사용자의 의사결정 방식과 환경변화 수용을 위한 유연성(flexibility), 적응성을 강조
- 퍼지 전문가시스템 : 데이터를 추론하기 위해 퍼지 멤버십 기능, 규칙을 사용
728x90반응형'> Information Security > CISSP' 카테고리의 다른 글
Network (0) 2022.06.27 Security & Risk Mangement (0) 2022.06.27 Security Operation (0) 2022.06.27 Security Engineering (0) 2022.06.27 Compliance (0) 2022.06.27