일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- level design
- widget
- listen server
- gas
- 언리얼엔진
- unity
- UI
- 게임개발
- 보안
- Replication
- rpc
- C++
- gameplay effect
- ability task
- local prediction
- gameplay ability system
- attribute
- 언리얼 엔진
- animation
- photon fusion2
- os
- Unreal Engine
- 유니티
- CTF
- gameplay tag
- Multiplay
- stride
- Aegis
- MAC
- 게임 개발
- Today
- Total
Replicated
설계 단계 보안 강화 활동 본문
설계 단계 보안 개발 필요성
- 설계 단계는 기능 및 비기능 요구사항을 충족시키기 위한 소프트웨어의 구조와 구성 요소를 명확하게 정의하는 단계
- 설계 단계에서 보안 항목을 반영하지 않으면 이후 구현 단계에서 소프트웨어 일관성이 떨어지거나, 단순 수정을 통해 보안 항목을 만족시킬 수 없는 경우 발생 가능
- 설계 시 반영하지 못한 항목 반영 .. 구현 시 5배, 제품 출시 이후엔 30배까지도 추가 비용이 들 수도 있음
보안 설계 원칙
설계에 보안을 통합 (Security by Design)
- 범위 정의: 설계 범위에 대한 명확한 정의
- 가정 명시화: 필요한 가정에 대한 명시화
- 보안 요구사항 대해 최종 목표로 표현
- CIA에 근거한 작성
- 보안 요구사항에 대해 최종 목표로 표현
- 중요한 완화 조치를 위해 허용 가능한 비용과 trade-off를 고려
- 위협 모델링
- 설계 프로세스에 위협 모델링 내재화
- 잠정적인 설계 진행 후 위협 모델링 수행 후 대안 검토
- 필수 위협 모델을 기준 선으로 산정한 후 설계 대안 검토
- 보안 기능 추가를 위한 유연성을 고려해 설계
- 특별히 우려되는 특정 공격이 있을 경우 해당 공격 시도를 모니터링 가능하게 시스템 구축
- 사용성과 보안성이 충돌할 경우, 프로토타입을 통한 검증 .. 실제와 다를 수 있음
인터페이스 설계
- 인터페이스는 각 모듈 및 시스템의 경계를 정의
- 설계 범위 내의 모든 인터페이스를 정의하고 각 인터페이스 보안에 대한 명확한 정의
- 보안 통신 프로토콜과 같이 복잡한 인터페이스는 독자적인 보안 설계 필요
- 인터페이스 보안 설계 시 CIA 속성 포함
데이터 처리 설계
- 데이터 처리는 모든 설계의 중심
- 데이터 민감도 분류 및 안전한 데이터 처리를 위한 일관된 설계 진행
- 가급적 민감한 데이터의 이동을 제한
개인정보보호를 설계에 통합
- 개인 정보는 매우 민감한 데이터
- 설계자는 개인정보보호를 정책을 숙지.
- 서비스에 필요한 개인정보 처리 방안을 정책에 맞게 명시적으로 설계
- 개인정보 접근 및 사용에 대한 로깅 및 감사 기능 설계
소프트웨어 수명주기 전반에 걸친 계획
- 설계 시 소프트웨어의 전체 수명에 걸쳐 보안적 측면 검토
- 종료 시 데이터 처리에 대한 명시, 필요 시 일정 기간 유지 및 백업본 폐기 정책 등
Trade off 처리
- 보안 완화 처리 시 소프트웨어 복잡성 증가
- 상충하는 우선 순위들 사이의 조정 필요
- 이상적인 원칙과 실제 시스템 구축을 위한 실용적인 요구 사이에서 적절한 균형을 맞추는 것이 안전한 소프트웨어 설계의 핵심
- 완벽한 보안은 목표 x, 소프트웨어 설계 시에 트레이드오프를 명시화하여 합리적인 타협적 도출
설계 단순성
- 단순함이 궁극적인 정교함
- 복잡한 기능이 보안 메커니즘과 상호작용하는 경우, 복잡성 증가
- 기능과 보안을 분리하여 계층화된 모델을 이용한 단순성 제공
설계 속성
- 설계의 경제성: 설계 단순성과 제공 기능 복잡성
- 투명한 설계: 보안은 설계의 비밀성에 의존하지 않음
노출 최소화 속성
- 최소 권한: 작업에 필요한 최소 권한만 부여
- 최소 정보: 작업에 필요한 최소 정보만 제공, 작업이 완료된 정보는 삭제 (메모리, 캐시 등)
- 허용목록 관리: 차단 목록으로 관리하기보다는 허용 목록으로 관리
- 예측 가능성 금지: 공격자에 의해 예측 가능한 정보(데이터, 행동 등) 사용 금지
- 실패 시 완전한 종료 처리: 문제 발생 시 오류 처리 및 완전한 상태로 종료 처리
- 최소 접근 경로: 보호 자산에 대한 접근은 일관된 최소 접근 경로만을 허용
- 최소 공통 매커니즘: 공유 메커니즘을 최소화해서 독립적인 프로세스들 사이의 격리 유지
중복적 속성
- 심층 방어: 독립적인 보호 계층을 중복적으로 결합하여 보안 강화
- 권한 분리: 독립적인 컴포넌트를 이용한 권한 분리 가능
신뢰와 책임 속성
- 신뢰에 대한 확인성: 신뢰는 항상 확고한 증거를 바탕으로 하는 명백한 선택
- 보안 책임 수용: 모든 소프트웨어 전문가는 보안을 책임져야 하는 의무가 있음. 보안은 기본적 속성.
안티 패턴 속성 (피해야 할 패턴)
- 명확하지 않은 권한 상승: 신뢰 경계에 대한 잘못된 이동
- 패치 불가능한 컴포넌트: 컴포넌트는 취약성 발견 시 바로 패치가 가능하여야 함
보안 설계 기준
1. 입력 데이터 검증 및 표현
- 사용자 프로그램의 입력 데이터에 대한 유효성 검증 체계 설계
- 유효하지 않은 값에 대한 처리 방법 설계
2. 보안 기능
- 인증, 접근 통제, 권한 관리, 비밀번호 등의 정책이 적절하게 반영될 수 있도록 설계
3. 에러처리
- 에러 또는 오류 상황에 대한 완전한 처리가 되지 않아 중요 정보 유출 등 보안 취약점이 발생하지 않도록 설계
4. 세션통제
- TCP를 이용하여 연결을 유지하는 경우 세션을 안전하게 할당하고 관리하여 세션 정보 노출이나 세션 하이재킹과 같은 침해사고가 발생하지 않도록 설계
보안 설계 적용 방법
- 설계 항목 적용 계획서
- 유즈케이스 다이어그램, 플로우차트, DFD, 화면 설계서 등을 작성
'소프트웨어 보안개발방법론' 카테고리의 다른 글
구현 단계 개발 보안 - Secure Coding, 테스트, 분석 (0) | 2025.06.12 |
---|---|
소프트웨어 공급망 공격과 SBOM, CC 인증 (0) | 2025.06.12 |
ZTA와 경계 기반 보안 모델 (0) | 2025.06.12 |
보안 위협 완화 전략 (0) | 2025.06.12 |
DevSecOps, 역할 별 보안 활동, Best Practices (0) | 2025.06.12 |