IT보안 학습

소프트웨어 개발보안 가이드(21.12) 개념 추출

김구티2 2024. 6. 27. 21:36

소프트웨어 개발 생명주기

① 정의단계: 무엇(what)을 처리하는 소프트웨어를 개발할 것인지 정의하는 단계로 타당성 검토단계, 개발계획단계, 요구사항 분석단계로 나눌 수 있다.

② 개발단계: 어떻게(How)에 초점을 두고 실제로 소프트웨어를 개발하는 단계이다. 설계단계, 구현단계, 테스트단계로 나눌 수 있다.

③ 유지보수단계: 소프트웨어를 직접 운영하며, 변경(Change)에 초점을 두고 여러 환경변화에 따라 소프트웨어를 적응 및 유지시키는 단계이다.

 

대표적인 개발생명주기 모델

① 개발수정 모델: 요구사항, 분석/설계 단계 없이 일단 개발에 들어간 후 만족할 때까지 수정작업을 수행하는 방식

② 폭포수 모델: 순차적으로 소프트웨어를 개발하는 전형적인 개발모델로 소프트웨어 개발의 전 과정을 나누어 체계적이고 순차적으로 접근하는 방식

③ 프로토타입 모델: 점진적으로 시스템을 개발해 나가는 접근 방식으로 원형(prototype)을 만들어 고객과 사용자가 함께 평가한 후 개발될 소프트웨어의 요구사항을 정제하여 보다 완전한 요구 명세서를 완성하는 방식

④ 나선형 모델: 포수 모형과 원형모형의 장점을 수용하고 위험분석을 추가한 점증적 개발모델로 프로젝트 수행 시 발생하는 위험을 관리하고 최소화하기 위한 방식

 

소프트웨어 개발 방법론

① 구조적 방법론: 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 체계적인 방법으로 비즈니스 프로세스 자동화를 목표로 하고 있으며, 프로세스 중심의 개발 방법이다.

② 객체지향 방법론: 분석, 설계 및 개발에 있어서 객체지향 기법을 활용하여 시스템을 구축하는 방법이다.

③ CBD 방법론: 재사용이 가능한 컴포넌트의 개발 또는 사용 컴포넌트를 조합하여 애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화할 수 있는 방법이다.

 

CBD SW개발 각 단계별 산출물 목록

① 분석: 사용자 요구사항 정의서(필수), 유스케이스 명세서, 요구사항 추적표(필수)

② 설계: 클래스 설계서, 사용자 인터페이스 설계서(화면설계서, 필수), 컴포넌트 설계서, 인터페이스 설계서, 아키텍처 설계서(필수), 총괄시험 계획서, 시스템시험 시나리오, 엔티티 관계 모형 기술서 (ERD, 필수), 데이터베이스 설계서(테이블설계서, 필수), 통합시험 시나리오, 단위시험 케이스, 데이터 전환 및 초기데이터 설계서

③ 구현: 프로그램 코드, 단위시험 결과서, 데이터베이스 테이블

④ 시험: 통합시험 결과서(필수), 시스템시험 결과서, 사용자 지침서, 운영자 지침서, 시스템 설치 결과서, 인수시험 시나리오, 인수시험 결과서

 

소프트웨어 개발보안 적용 사례

① MS‐SDL: 마이크로소프트사는 보안수준이 높은 안전한 소프트웨어를 개발하기 위해 수행한 프로세스 개선 작업으로 자체수립한 SDL(Secure Development Lifecycle) 방법론을 적용하였으며, ⑴ 교육 ⑵ 계획 및 분석 ⑶ 설계 ⑷ 구현 ⑸ 시험 및 검증 ⑹ 배포 및 운영 ⑺ 대응 단계를 거친다.

② Seven Touchpoints: 실무적으로 검증된 개발보안 방법론 중 하나로써 소프트웨어 보안의 모범 사례를 소프트웨어 개발 라이프사이클에 통합하였다. 보안활동으로는 ⑴ 요구사항과 Use Cases 단계 ⑵ 구조설계 단계 ⑶ 테스트 계획 단계 ⑷ 코드 단계 ⑸ 테스트 및 테스트결과 단계 ⑹ 현장과의 피드백 단계를 갖는다.

③ CLASP: SW개발보안 방법론 중 하나인 CLASP은 SDLC 초기단계에 보안 강화를 목적으로 하는 정형화된 프로세스로써, 활동중심·역할기반의 프로세스로 구성된 집합체이다. 이미 운영 중인 시스템에 적용하기 좋다. CLASP의 5가지 관점으로는 ⑴ 개념 관점 ⑵ 역할기반 관점 ⑶ 활동평가 관점 ⑷ 활동구현 관점 ⑸ 취약성 관점이 있다.

 

설계단계 보안설계 기준

① 입력데이터 검증 및 표현: 사용자와 프로그램의 입력 데이터에 대한 유효성검증 체계를 갖추고, 유효하지 않은 값에 대한 처리방법 설계

② 보안기능: 인증, 접근통제, 권한관리, 비밀번호 등의 정책이 적절하게 반영될 수 있도록 설계

③ 에러처리: 에러 또는 오류상황을 처리하지 않거나 불충분하게 처리되어 중요정보 유출 등 보안약점이 발생하지 않도록 설계

④ 세션통제: HTTP를 이용하여 연결을 유지하는 경우 세션을 안전하게 할당하고 관리하여 세션정보 노출이나 세션 하이재킹과 같은 침해사고가 발생하지 않도록 설계

 

AES

미국 정부 표준으로 지정된 블록 암호 형식으로 이전의 DES를 대체하며, 미국 표준 기술 연구소(NIST)가 5년의 표준화 과정을 거쳐 2001년 11월 26일에 연방 정보처리표준(FIPS 197)으로 발표하였다.

 

CAPTCHA

HIP(Human Interaction Proof) 기술의 일종으로, 어떠한 사용자가 실제 사람인지 컴퓨터 프로그램인지를 구별하기 위해 사용되는 방법이다.

 

FIPS

미연방 정부 기관 및 정부 계약자를 위한 미국 연방 정부에서 개발하여 공개한 컴퓨터시스템 사용 표준이다.

 

LDAP

TCP/IP 위에서 디렉토리 서비스를 조회하고 수정하는 응용 프로토콜이다.

 

Spring 프레임워크

개발 효율성과 생산성을 최대로 높일 수 있도록 지원하기 위해 개발된 J2EE기반의 오픈소스 개발 프레임워크이다.

 

샌드박스(Sandbox) 기법

어린이가 다치는 것을 방지하기 위해 만든 모래 통(Sandbox)에서 유래되었다. JAVA가 지원하는 기본 보안 SW로써, 외부에서 받은 프로그램을 JVM(Java Virtual Machine)이라는 보호된 영역 안에 가둔 뒤 작동시키는 방법으로 프로그램이 폭주하거나 악성 바이러스가 침투하는 경우를 대비한다.

 

728x90