본문 바로가기
프로그래밍 놀이터/보안

[도서 정리] 27. SDL (Security Development Lifecycle) - 보안의 기본

by 돼지왕 왕돼지 2019. 11. 6.
반응형

27. SDL (Security Development Lifecycle) - 보안의 기본


* 소프트웨어의 오류 수정은 간단하지 않다.


-

소프트웨어의 오류(취약성 등) 수정은 하드웨어의 부품 교환처럼 간단하지 않다.

그 이유는 소프트웨어 개발에서는 공정이 진행되면 진행될수록 문제 해결에 필요한 비용이 급증한다는 것이기 때문이다.





* 개발 공정에서 보안 해결의 어려움


-

개발자가 조기 발견 및 조기 해결에 힘쓰면 되겠지만 생각만큼 그렇게 간단하지 않다.

이는 보안의 특성에 기인하는 어려움이 있기 때문이다.



-

보안 대책을 생각할 때는 제삼자의 악의를 예상하는 것이 필수이다.

보안의 위협을 찾아내고 어느 정도 문제가 되는지를 가늠하는 작업을 위협 분석이라고 하는데, 요구 분석이나 설계 단계에서 위협 분석을 적절히 & 충분히 하는 것은 상당히 어렵다.

실제로 운용해 보면 예상외의 위협이 발생하기 마련이다.


또한 요구나 설계대로 되었는지를 확인하기 위한 보안 테스트에서는 이상한 움직임을 일으키는(공격에 가까운) 테스트 데이터를 마련할 필요가 있는데, 이 테스트가 충분하지 않으면 취약성이 남아있는 제품이 만들어지게 되지만, 이 테스트를 실제 운용 전에 완벽하게 하기는 매우 어렵다.



-

보안을 고려한 개발 공정(라이프 사이클)을 SDL(Security Development Lifecycle)이라고 한다.

대표적인 SDL 은 MS 의 SDL 이 있다.





* 기타


-

개발 초기부터 보안 대책을 고려하는 것(Security by design)이 중요하다.

개발 공정이 진행될수록 수정 비용은 증가한다.



-

SDL 개발 공정에서는 소프트웨어 개발의 각 공정에 보안과 관련된 항목을 심어 넣는다.

요구 분석 : 요구 분석, 위험 분석, 위협의 발견과 리스트 평가

설계 : 보안 패턴

구축 : 시큐어 프로그래밍

테스트 : 보안 테스트



-

보안 패턴이란 과거에 축적된 노하우를 바탕으로 보안성이 높은 설계를 패턴화하여 모은 것이다.

보안 패턴의 예로는 레퍼런스 모니터(Reference monitor)가 있다.

이것은 모든 액세스 요구를 가로채어 엑세스의 타당성을 체크하는 단일 프로세스를 마련하는 방법이다. (돼왕: 접근요청의 단일점이 되어야 한다.)

이로써 모든 데이터에 대한 엑세스 제어를 보증할 수 있다.




반응형

댓글