zrungee 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
반응형