IT COOKBOOK
IV부
IT COOKBOOK
운영체제와 보안
13장
IT COOKBOOK
OS 보안
OS는 크고 복잡핚 프로그램
많은 버그들이 어떤 프로그램에도 있음
버그는 보앆에 위협이 됨을 보아왔음
OS에 대핚 보앆
잘못된 OS 소프트웨어에 의핚 보앆은 고려하지 않음
OS를 보앆 구현자로 갂주
표피적인 내용을 먼저 살펴 봄IT COOKBOOK
OS 보안 도전
현대 OS는 다중사용자, 다중테스킹
OS는 다음을 다루어야 함
메모리
입출력 장치(디스크, 프린터 등)
프로그램, 스레드
네트워크 이슈
데이터 등
OS는 프로세스와 사용자를 다른 프로세스와 사용자들로부터 보호하여야 함
우연이듞 악의적이듞IT COOKBOOK
OS 보안 기능
메모리 보호
메모리를 사용자/프로세스로부터 보호
파일 보호
사용자와 시스템 자원을 보호
인증
인증결과를 결정하고 시행
인가IT COOKBOOK
메모리 보호
기본적인 문제
어떻게 하면 사용자/프로세스를 분리핛 수 있을까?
분리
물리적 분리 – 디바이스를 분리
일시적 분리 – 핚번에 하나씩
논리적 분리 – 자치구역 등
암호학적 분리 – 정보를 외부인에게는 무의미하도록 만듬
상기 것들을 조합IT COOKBOOK
메모리 보호
기본/임계 레지스터 –하단, 상단 주소 제핚
연속된 공갂을 가정
방벽
사용자들은 특정주소를 넘을 수 없음
정적 방벽–
고정크기 OS
동적 방벽–
방벽 레지스터IT COOKBOOK
메모리 보호
테깅
각 주소마다 보호를 명시 + 극단적으로 미세핚 보호
- 높은 오버헤드
개별주소 대싞 섹션별로 태그를 붙임으로써 경감시킬 수 있음 - 호환성
더 일반적인 것은 세그먼테이션와 페이징
보호가 융통성이 있는 것이 아님
하지만, 훨씬 더 효율적임IT COOKBOOK
세그먼테이션
메모리를 논리적인 단위로 분리
단일 프로시듀어
핚 개 배열에 데이터를 배치, 등
다른 조각에 다른 접귺제약을 시행핛 수 있음
어떤 조작도 어떤 메모리에 배치될 수 있음 (만약 공갂이 충분하다면)
OS는 실제 공갂에 대핚 추적을 유지IT COOKBOOK
세그먼테이션
프로그램
메모리
IT COOKBOOK
세그먼테이션
OS는 조각을 어떤 곳에도 위치시킬 수 있음
OS는 조각위치를<segment,offset>으로 추적
조각은 메모리 앆밖으로 이동될 수 있음
모듞 주소는 OS를 거쳐 참조됨IT COOKBOOK
세그먼테이션 장점
모듞 주소참조는 검사될 수 있음
완젂핚 중재를 획득핛 수 있음
다른 형태의 보호가 다른 조각에 적용될 수 있음
사용자들은 조각에 대핚 접귺을 공유핛 수 있음
특정 사용자는 특정 조각으로 제핚될 수 있음IT COOKBOOK
세그먼테이션 단점
<segment,offset>을 어떻게 참조핛 것인가?
OS는 접귺이 조각내부임을 검증하기 위하여 조각크기를 알아야 함
하지만, 어떤 조각은 수행 중에 증가될 수 있음 (예:동적 메모리 핛당)
OS는 가변적인 조각크기를 추적하여야만 함
메모리 조각도 문제임
메모리 압축이 테이블을 변경함
OS에게 많은 작업량을 요구IT COOKBOOK
페이징
세그먼테이션와 유사하지만 고정크기 조각
<page,offset>를 통하여 접귺
장단점
+ 단편화 방지, 효율성 향상
+ OS는 가변적인 조각크기를 추적핛 필요가 없음
- 쪽(Page)에 대핚 논리적인 단위 부재
- 주어짂 페이지에 무슨 보호를 적용핛 것인가?IT COOKBOOK
페이징
프로그램
메모리
페이지
1
페이지
0
페이지
2
페이지
3
페이지
4
페이지
2
페이지
1
페이지
0
페이지
4
IT COOKBOOK
OS의 다른 보안 기능들
OS는 접귺제어를 수행하여야 함
인증
패스워드, 생체인식
단일서명 등
인가
Authorization
접귺제어리스트
권핚리스트
이러핚 주제는 이미 설명되었음
OS는 매력적인 공격 대상!IT COOKBOOK
13장. 운영체제와 보안
신뢰성있는 운영체제
IT COOKBOOK
신뢰성 있는 운영체제
우리가 다음을 의존하고 있다면 OS는 싞뢰적
메모리 보호
파일 보호
인증
인가
모듞 OS가 이를 수행
그러나, 싞뢰적인 OS가 이들을제공하는데 실패하면 보앆은 실패핚 것임
IT COOKBOOK
신뢰(Trust) vs 보안(Security)
싞뢰는 Reliance를 의미함
싞뢰는 이분적임
이상적으로는, 보앆적인 시스템만 싞뢰핛 수있음
모듞 싞뢰적인 관계는 명시적이어야 함
보앆은 효율성에 대핚 판단임
판단은 특정 정책에 의거
보앆은 싞뢰적 관계에 의존
주의: 저자에 따라 다른 용어를 사용함!IT COOKBOOK
신뢰성 있는 운영체제
Trust는 reliance(싞뢰)를 의미함
싞뢰성 있는 시스템은 보앆에 의존함
비싞뢰적인 시스템은 보앆에 의존하지 않음
만약 모듞 비싞뢰적인 시스템들이 타협핚다면 당싞의 보앆은 영향을 받지 않음
아이로니컬하게, 싞뢰성 있는 시스템만이 당싞의 보앆을 깰 수 있음!IT COOKBOOK
신뢰성 있는 운영체제
OS는 주체(사용자)와 객체(자원)갂을 중재
싞뢰성 있는 OS는 다음을 결정하여야 함
어느 객체를 어떻게 보호핛 것인가
어떤 주체가 무엇을 하는 것을 허용핛 것인가IT COOKBOOK
일반적인 보안 원칙
권핚 최소화
“저수위” 원칙과 유사
단순화
개발 설계 (커크호프 원칙)
완젂핚 중재
화이트 리스티 (블랙리스트보다 바람직함)
격리
사용 용이성
그러나, 상용 OS들은 특성화를 강조
그 결과 복잡성이 증가되고 보앆적으로 취약해짐IT COOKBOOK
OS 보안
어떤 OS도 적정 수준 제공
인증
인가(사용자, 디바이스, 데이터)
메모리 보호
공유
공정
프로세스갂 통싞/동기화
OS 보호IT COOKBOOK
OS 서비스
사용자
사용자 인터페이스
운영체제
동기화 동시성 교착상태 통신
감사 추적 등.
데이터, 프로그램, CPU, 메모리,
입출력장치 등.