일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- os
- 언리얼엔진
- stride
- Multiplay
- local prediction
- level design
- photon fusion2
- listen server
- widget
- UI
- gameplay tag
- 게임개발
- unity
- 게임 개발
- gas
- Unreal Engine
- 언리얼 엔진
- CTF
- ability task
- rpc
- 유니티
- gameplay ability system
- MAC
- animation
- gameplay effect
- Aegis
- C++
- attribute
- 보안
- Replication
- Today
- Total
Replicated
소프트웨어 보안 개발 방법론, 위협 모델링 본문
SSDLC(Secure Software Development Life Cycle)
소프트웨어 요구사항
기능적 요구사항(Functional Requirements)
- 시스템이 수행해야 하는 구체적인 기능이나 동작을 명시
비기능적 요구사항(Non-Functional Requirements)
- 시스템의 품질과 제약사항 등을 명시
* 소프트웨어 비기능적 요구사항을 충족하기 어려운 이유?
- 소프트웨어 요구사항은 주로 기능적 요구사항을 중점에 두고 분석 및 설계가 진행됨. 비기능적 요구사항은 설계 시 제대로 식별되지 못하는 경우도 많고, 식별되어도 우선순위가 낮게 설정되는 경우가 있음
비기능적 요구사항
보안, 용량/처리량, 호환성, 신뢰성, 유지보수성/관리성, 확장성, 사용성
Security(보안)
- 시스템 데이터 및 기능을 보호하기 위한 정의
- 인증(Authentication)
- 인가(Authorization)
- 기밀성(Confidentiality)과 무결성(Integrity)
- 중요 데이터 암호화 / 전송 데이터 암호화
- 데이터 변조 방지 메커니즘/입력값 검증 요구사항
- 가용성(Availability)
- 이중화 구성 요구사항
- 백업 시스템 구성(장애복구) 요구사항
- 법적 준수성 (Compliance)
- 정보보호 관련 법률 준수
- 보안 감사 요구사항
Capacity(용량/처리량)
- 처리 가능한 성능 및 데이터 작업량 정의
- 저장 용량
- DB 크기 / 백업 저장소 용량
- 처리 용량
- 동시 사용자 수 / 초당 트랜잭션 처리량
- 메모리 용량
- 시스템 메모리 요구사항
- 네트워크 용량
- 대역폭 요구사항
- 네트워크 트래픽 처리량
- 동시 연결 수
- 성능 제약 조건
- 응답 시간 요구사항
- 처리 시간 제한
Compatibility (호환성)
- 시스템, 플랫폼, 환경의 확장성 정의
- 하드웨어 호환성
- 소프트웨어 호환성 (운영체재, 브라우저)
- 네트워크 호환성 (네트워크 표준 프로토콜 지원)
- 데이터 호환성 (파일 형식 지원, 인코딩 방식 지원)
- 버전 호환성 (이전 버전과의 하위 호환성 유지)
Reliability (신뢰성)
- 정해진 조건하에 안정적인 기능 수행 정의
- 가용성
- 데이터 신뢰성
- 장애관리
- 오류처리
- 재해복구
Maintainability (유지보수성 / 관리성)
- 시스템 운영 중 수정, 개선 용이성 정의
- 코드 품질
- 모듈화
- 테스트 용이성
- 변경 관리
- 문서화 및 디버깅 지원
Scalability (확장성)
- 시스템 부하 증가 시 효율적인 처리 정의
- 수직적 확장성
- 단일 시스템 성능 향상
- 메모리/CPU 확장 용이성
- 수평적 확장성
- 로드 밸런싱 지원
- 분산 시스템 및 클러스터링 지원
- 데이터 확장성
- 데이터 분산 저장
- 성능 확장성
- 동시 사용자 증가 대응
- 트랜잭션 처리량 확장
- 자동 확장
- 부하 기반 자동 확장
- 리소스 할당 자동화
Usability (사용성)
- 사용자가 효율적으로 시스템을 사용 정의
- 사용 용이성
- 직관적인 인터페이스
- 사용자 가이드 및 도움말/튜토리얼 지원
- 효율성
- 최소한의 사용자 동작
- 단축키 지원
- 접근성
- 다양한 입력 방식 지원
- 장애인 사용자 지원
- 사용자 인터페이스
- 디자인 일관성
- 시각적 피드백
기능 / 비기능 요구사항 예제 - 온라인 쇼핑몰
기능적 요구사항 (Functional Requirements)
- 사용자 관리: 회원가입 및 로그인 기능 / 개인정보 수정 기능
- 상품 관리: 상품 검색 / 장바구니에 상품 담기 및 삭제 기능
- 주문처리: 결재 진행 및 주문 내역 확인
비기능적 요구사항 (Non-Functional Requirements)
- 페이지 로딩은 3초 이내
- 동시 접속자 처리는 최소 1000명 처리
- 모든 비밀번호는 salt와 해시 함수를 이용해 저장
- 결제 정보는 암호화 통신
- 정기적인 데이터 백업 진행
보안 개발 방법론
- 위협(Threat)은 어디에나 존재하지만 관리할 수 있다면 공존이 가능
- 소프트웨어 개발자는 공격자 관점의 사고가 필요
- 잠재적 위협에 대한 이해를 바탕으로, 소프트웨어에 보안성 내재화 작업이 필요
- 소프트웨어 개발 시 필요 지점에서 보안을 고려한 프로세스가 마련되어야 함
- 소프트웨어 개발 전 단계에 걸쳐 보안을 고려하여 안전한 소프트웨어를 개발하기 위한 체계적인 방법론
- 소프트웨어 개발 생명주기 (SDLC) 각 단계 별로 보안 활동을 통합한 프로세스
개발 보안 방법론 발전 배경
사이버 보안 위협 증가
- 인터넷 사용과 디지털 서비스 확대로 인한 사이버 공격 급증
- 금전적 이익 / 국가 안보 위협 / 정치적, 이념적 목적 등..
전통적 개발 방식 한계
- 전통적 -> 소프트웨어 개발 완료 후에 취약점을 점검하고 수정하는 방식
- 개발 완료 또는 개발 후반부에 심각한 취약점 발견 시 많은 비용과 시간이 소요
- 보안 패치를 통한 사후 대응은 한계가 존재 (이미 발생한 피해)
법적, 제도적 요구사항 강화
- 개인정보 보호법, 정보통신망법 등 관련 법규 강화
- 공공기관 및 주요 기업들의 보안 인증 의무화 확대
- 보안 관련 국제 표준 가이드라인 제정
개발 보안 방법론 필요성
기술적 관점
- 보안 취약점 사전 예방
- 설계 단계로부터 보안 요구사항 검토 및 반영
- 체계적이고 지속적인 보안 품질 관리
비즈니스 / 경제적 관점
- 보안 사고로 인한 직접적 금전 손실 예방
- 기업 평판 및 신뢰도 하락 예방
- 법적 제재 및 배상 책임 리스크 감소
규제 준수 관점
- 법적 보안 요구사항의 체계적 대응
- 보안 인증 및 감사 대응
- 산업별 보안 표준 준수
보안 개발 방법론
- 개발 보안 방법론은 주로 비기능 요구사항에 초점
비기능 요구사항으로서의 보안
- 보안은 시스템 품질 속성.. 비기능 요구사항
- "무엇"보다는 "어떻게"
- 기능의 정상적인 동작을 보장하면서 추가적으로 고려해야 하는 품질 요소
보안 요구사항의 특징
- 시스템 전반에 걸쳐 적용되어야 함
- 직접적인 비즈니스 가치를 창출하진 않지만, 시스템 보호를 위해 필수적
개발 보안 방법론을 위한 기술적 관점
- 보안 아키텍처 설계
- 시큐어 코딩 구현 및 보안 프레임워크 / 라이브러리 활용
- 보안 취약점 진단 및 분석
- 보안 테스트 수행
- 보안 모니터링 및 운영 관리
소프트웨어 생명주기 각 단계별 보안 활동
요구사항 분석 단계
- 사용자의 문제를 구체적으로 이해하고 소프트웨어가 담당해야 하는 영역을 정의
- 요구사항 명세서
- 요구사항 중에서 보안 항목 요구사항 식별 활동 추가
- 시스템에서 어떤 정보를 관리하고 각 정보들에 대한 보안 등급을 결정
- 법률적 관점에서 중요도 점검
설계 단계
- 소프트웨어 구현을 준비하는 단계
- 시스템 전반적인 구조와 데이터 및 알고리즘, 사용자 인터페이스 설계
- 설계 명세서
- 요구 명세서, 설계 명세서 등을 이용해 단위 테스트 및 통합 테스트 시나리오 작성
- 시스템 위협들을 도출하는 위협 모델링 작업
- 위협 모델링 작업을 통해 도출된 내용을 설계에 반영
구현 단계
- 프로그래밍 수행 단계
- 각 모듈의 코딩과 디버깅을 수행, 그 결과를 검증하는 단위 테스트 / 모듈 테스트 수행
- 소스코드, 에러코드 정의서, 단위 테스트 결과서
- 표준 코딩 정의서 / 소프트웨어 개발 보안 가이드를 준수하여 개발
- 코드 리뷰를 이용한 코드 수준의 보안성 확인 및 안정성 보장
- 단위 테스트를 이용한 보안 취약점 점검
테스트 단계
- 개발된 모듈 및 시스템에 대한 통합 테스트 (요구사항 확인 및 사용자 검증 / 인수 테스트)
- 통합 테스트 결과서, 시스템 이행 계획서
- 동적 분석 도구를 이용한 보안성 검증
- 모의 침투 테스트 수행
유지보수 단계
- 소프트웨어 사용 중에 나타나는 문제점을 수정하거나 새로운 기능을 추가하여 좀 더 안정적인 소프트웨어로 발전시키기 위한 작업을 수행
- 소스코드 변경 관리 / 운영환경 변경 통제
- 보안 로그 관리 / 취약점 모니터링 및 대응
- 발생될 수 있는 보안 사고에 대한 관리 및 사고 대응, 패치 관리 및 교육 활동 수행
위협 모델링
- 시스템 설계 단계에서 잠재적인 보안 위협을 예측 및 분석하고 효과적인 통제를 구현하는 것을 목표로 함
- 시스템 보안 취약점을 식별하고 대응 방안 수립을 위한 체계적인 접근 방법
- 시스템의 취약 위험을 파악 -> 위협 요소 추출
- 사후 대방이 아닌 사전 예방을 목표로 비용 효율적인 보안 통제 구현
위협 모델링 프로세스
- 자산 식별
- 위협 식별
- 취약점 분석
- 위험 평가
- 대응 방안 수립
DFD (Data Flow Diagram)
- 시스템의 데이터 흐름을 시각화하여 보안 위협을 식별하는데 사용
- 신뢰 경계 (서로 다른 신뢰 수준의 경계) 간 데이터 흐름 파악
DFD 주요 구성요소 및 관련 위협
데이터 프로세스 (Data Process)
- 데이터를 처리하거나 변환하는 부분
- 주요 위협: 권한 상승, 코드 실행, 메모리 오염 등
- 위협 완화 방법: 입력 유효성 검증, 권한 관리, 메모리 안정성 확보
데이터 흐름 (Data Flow)
- 시스템 내 데이터 이동 경로
- 주요 위협: 데이터 탈취, 변조, 재전송 공격
- 위협 완화 방법: 암호화, 무결성, 인증
데이터 저장소 (Data Store)
- 데이터가 저장되는 위치
- 주요 위협: 무단 접근, SQL 인덱션, 데이터 유출
- 위협 완화 방법: 접근 제어, 입력 검증, 암호화 저장
외부 엔티티 (External Entity)
- 시스템과 상호작용하는 외부 요소
- 주요 위협: 시스템과 상호작용하는 외부 요소
- 위협 완화 방안: 강력한 인증, 세션 관리
* PFD (Process Flow Diagram)
- 시스템의 동작 프로세스를 시각화하여 보안 위협을 식별하는 도구
- 서비스 동작 흐름에 초점을 맞추어 악용 가능 사례 분석 (공격자 입장)
STRIDE
- Microsoft가 개발한 위협 모델링에 사용되는 분류 체계
- 보안 위협을 6가지 카테고리로 분류
Spoofing
- 다른 사용자 또는 시스템으로 위장하는 행위
- 피싱 사이트, IP 스푸핑, 세션 하이재킹
- 강력한 인증 메커니즘, 세션 관리 강화
Tampering
- 데이터나 코드를 무단으로 변경하는 행위
- 저장된 데이터 무단 수정, 전송 중인 데이터 변조, 실행 파일 변조
- 무결성 검사 구현, 전자서명 사용, 접근 통제 강화
Repudiation
- 행위 또는 트랜잭션 수행에 대한 부인 행위
- 트랜잭션 실행 부인, 메시지 송수신 부인, 시스템 접근 행위 부인
- 감사 로그 구현, 전자 서명 적용, 부인 방지 기능 구현
Information Disclosure
- 권한이 없는 사람에게 정보가 노출되는 현상
- 시스템 정보 노출, 개인정보 유출
- 암호화 적용, 접근 통제 강화, 데이터 분류 체계 수립
Denial of Service
- 정상적인 서비스 제공을 방해하는 행위
- DDoS 공격, 자원 고갈 공격, 서비스 과부하 유발
- 자원 할당 제한, 부하 분산 구현, DDoS 대응 체계 구축
Elevation of Privilege
- 비인가된 권한을 획득하는 행위
- 관리자 권한 탈취, 취약점을 이용한 권한 상승, 취약점을 이용한 상위 권한 명령 실행
- 최소 권한 원칙 적용, 권한 분리 구현, 입력값 검증 강화
'소프트웨어 보안개발방법론' 카테고리의 다른 글
MS-SDL (0) | 2025.06.12 |
---|---|
위협 모델링 프로세스 (0) | 2025.06.12 |
소프트웨어 개발 방법론 (0) | 2025.06.11 |
보안 솔루션 (0) | 2025.04.20 |
Software Supply Chain Attack (0) | 2025.04.20 |