ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.