운영체제 보안 (Protection in Operating System )

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
제 8 장 메모리 관리전략. 개요 2 기억장치 관리의 발전 개요 SSD(Solid State Drive) – 반도체 메모리 내장함, 처리속도 빠르고 소음이 없고 전력소모량이 적은 플래시 메모리 기반의 모델 주소 바인딩 (address binding) – 정의 논리적.
컴퓨터와 인터넷.
재료수치해석 HW # 박재혁.
뇌를 자극하는 Windows Server 2012 R2
소리가 작으면 이어폰 사용 권장!.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
Entity Relationship Diagram
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
연결리스트(linked list).
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Windows Server 장. 사고를 대비한 데이터 백업.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Root Filesystem Porting
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
기억 장치 관리 (Memory Management)
Error Detection and Correction
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
뇌를 자극하는 Windows Server 장. 장애 조치 클러스터.
CHAP 12. 리소스와 보안.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
27장. 모듈화 프로그래밍.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Day-27(Tue_10.16) 파일 서비스 설정 AD 가 설치된 환경에서 DHCP 설치 할 경우 권한 자격을 주어야함.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
7장 주기억장치 관리 A박도하.
논리회로 설계 및 실험 5주차.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
컴퓨터 시스템 하드웨어 컴퓨터 시스템 소프트웨어 C P U Control Unit 입 력 장 치 출 력 장 치 ALU
Chapter 12. 파일, 프린트 서버관리 네트워크 환경에서 파일서버, 프린트 서버를 구축하여 사용하는 것은 기본이다. 효율성 있는 파일서버의 관리방법에 대해서 설명하고 있으며, 프린트 서버를 운영할 때 참고할 만한 기능에 대해서도 설명한다. 분산파일시스템, 디스크할당량.
ARM Development Suite v1.2
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
데이터 베이스 DB2 관계형 데이터 모델 권준영.
S-Work 2.0 DRM 신규 버전 설치 가이드 SOFTCAMP
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Teaming pms.
( Windows Service Application Debugging )
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
바넘효과 [Barnum effect] 사람들이 보편적으로 가지고 있는 성격이나 심리적 특징을 자신만의 특성으로 여기는 심리적 경향. 19세기 말 곡예단에서 사람들의 성격과 특징 등을 알아 내는 일을 하던 바넘(P.T. Barnum)에서 유래하였다. 1940년대 말 심리학자인.
AT MEGA 128 기초와 응용 I 기본적인 구조.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
발표자 : 이지연 Programming Systems Lab.
.Net FrameWork for Web2.0 한석수
제 4 장 Record.
06. 디바이스의 등록과 해제 김진홍
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
과 목 명 : 운영체제 담당교수 : 박 승 기 학 과 : 컴퓨터 소프트웨어 학 번 : 이 름 : 최 현 식
 6장. SQL 쿼리.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
7 생성자 함수.
6 객체.
20 XMLHttpRequest.
Presentation transcript:

운영체제 보안 (Protection in Operating System ) 오 세 종

목차 개요 보호대상 객체와 보호 방법 메모리와 주소 보호 일반 객체 접근 보호 파일 보호 사용자 인증

개요 컴퓨터 보안에 있어서 운영체제의 역할에 대해 배움 개인 PC OS 보다는 서버급의 OS에 대해 다룸 운영체제는 멀티프로그래밍, 다수 사용자의 시스템 동시 이용을 지원하기 때문에 개별 사용자의 컴퓨팅 작업을 다른 사용자들로 부터 보호해야 한다. 운영체제가 제공해야 할 보안 영역 메모리 보호 파일 보호 시스템 자원에 대한 접근제어 사용자 인증 이 네가지 요소를 어떻게 지원할지에 대해 살펴봄

개요 개요 운영체제 응용 프로그램 응용 프로그램 Operating System MEMORY CPU Disk I/O device

보호대상 객체와 보호 방법 간단한 역사 컴퓨터의 초기 : 운영체제가 없었음 최초의 운영체제 (executive) 사용자가 스위치를 통해 직접 binary 로 프로그램 입력 각 사용자가 독점적으로 컴퓨터를 이용 각 사용자는 자신의 작업이 끝나면 사용한 중요정보는 컴퓨터에서 삭제  보안의 문제가 일어날 소지 없음 최초의 운영체제 (executive) 개별 프로그래머를 지원하고 새로운 사용자가 시스템을 쉽게 시작할 수 있도록 도와주는 간단한 유틸리티에 불과 링커(linker), 로더(loader)

보호대상 객체와 보호 방법 간단한 역사 후기의 운영체제 (operating system) 멀티프로그래밍의 등장으로 운영체제의 역할, 이름이 완전히 바뀜 (Monitor 라고도 불리움) 두명 이상의 사용자가 시스템 자원을 공유하면서 작업을 하는 환경 초기 운영체제가 사용자의 요구가 있을 때에만 수동적으로 지원했던 것에 비해 모니터는 능동적으로 사용자에게 자원을 할당하고 작업 환경을 통제하는 역할 초기 운영체제에서 정보보호는 개별 사용자의 몫, 후기 운영체제에서는 정보보호가 상당부분 운영체제의 몫이됨 각 사용자의 작업을 다른 사용자로 부터 어떻게 보호할 것인가

보호대상 객체와 보호 방법 보호대상 객체 (protected object) 다중 사용자 환경의 도래로 다음과 같은 시스템 객체들에 대한 보호의 필요성 대두 메모리 (memory) 디스크와 같은 공유 저장장치 프린터, 테이프 드라이버와 같은 직렬(serial) I/O 장치 공유 프로그램 공유 데이터

보호대상 객체와 보호 방법 OS의 보호 방법 가장 기초적인 방법은 분리 (separation) : 한 사용자의 객체를 다른 사용자들로 부터 분리시키는 것. 물리적 분리 : 각 프로세스들은 각각의 물리적인 시스템 자원들을 이용 (예: 서로 다른 보안 등급을 가진 프로세스들은 서로 다른 분리된 프린터 사용) 시간적 분리 : 서로 다른 보안 요구사항을 가진 프로세스들은 서로 다른 시간에 실행되도록 함 논리적 분리 : 각 사용자에게 오직 자신만이 컴퓨터를 사용하고 있는 것처럼 보이도록 다른 사용자의 작업을 감춤 기밀 분리 : 각 프로세스는 자신의 데이터, 커뮤니케이션 내용을 다른 프로세스가 알 수 없도록 만듦.

보호대상 객체와 보호 방법 OS의 보호 방법 OS 는 앞의 방법들 중 몇가지를 혼용할수도 있다. 처음 두가지 방법은 시스템의 자원 이용률을 떨어뜨림 OS 는 서로 다른 보안 요구사항을 가진 프로세스들이 동시적으로 수행될 수 있도록 지원해야 한다. 분리는 절반의 해결책

보호대상 객체와 보호 방법 OS의 보호 방법 OS 가 제공하는 보호의 여러 레벨 아무 보호도 없음 (No protection): 민감한 프로세스들이 서로 다른 시간에 수행될 때 고립 (Isolation) : 동시 수행되는 각 프로세스는 자신의 고유한 주소공간, 파일, 기타 객체를 할당 받는다. 운영체제는 각 프로세스가 다른 프로세스들에 대해 자신을 숨길 수 있도록 지원해야 한다. 모두 공유 또는 모두 공유하지 않음 (Share all or share nothing) : 어떤 객체에 대한 소유자(owner)는 그 객체가 공용(public) 인지 자신만을 위한 것인지(private)를 선언. 공용 객체는 모든 사용자가 접근할 수 있다.

보호대상 객체와 보호 방법 OS의 보호 방법 OS 가 제공하는 보호의 여러 레벨 (계속) 접근제한에 의한 공유 (Share via access limitation) : 사용자는 자신에게 허가된 권한 범위 내에서 객체에 접근. 운영체제는 각각의 접근 요구에 대해 권한 검사 후 접근허가 또는 거절 능력에 의한 공유 (Share by capability) : 접근제한에 의한 공유를 확장한 것으로, 객체에 대한 공유 권한이 정적인 방법이 아닌 동적인(dynamic) 방법으로 이루어진다. 공유의 정도는 객체의 소유자 혹은 주체(subject)가 처해 있는 컴퓨팅환경에 따라 결정된다.

보호대상 객체와 보호 방법 OS의 보호 방법 OS 가 제공하는 보호의 여러 레벨 (계속) 객체에 대한 제한된 이용 (Limit use of an object): 이 방법은 객체에 대한 접근을 제한한다는 것이 아니라 접근을 한후의 객체에 대한 이용을 제한한다는 것이다. 예) 사용자는 기밀 문서를 볼 수는 있지만 본 다음에 복사나 출력은 할 수 없게 함 예) 계산된 통계 데이터는 사용자가 볼 수 있지만 통계 대상이 되는 원천 데이터는 볼 수 없게 함 이상의 방법들 역시 운영체제의 복잡성을 높이지만 보다 정밀한 보안 제어를 가능하게 한다.

보호대상 객체와 보호 방법 OS의 보호 방법 보호 대상 객체의 크기(granularity)도 보안의 관심 대상이다. 예) 파일 > 레코드 > 필드 개체의 크기가 크면 클수록 보호도 쉬워진다. (그러나 객체의 활용성은 떨어진다.)

메모리와 주소 보호 다중 프로그래밍 환경에서의 중요한 문제는 한 프로그램에서 사용중인 (메인) 메모리를 다른 프로그램의 간섭으로 부터 보호하는 일 다행히도 하드웨어적 방법에 의해 추가적인 비용 없이 메모리를 효과적으로 보호하는 방법이 존재함 운영체제  일반 프로그램 일반 프로그램  일반 프로그램

메모리와 주소 보호 울타리 (Fence) 초기 컴퓨터 시스템에서 메모리에 적재된 운영체제를 사용자 시스템에서 보호하려는 목적으로 생겨남 메모리는 하드웨어적으로 운영체제를 위한 주소 영역과 일반 프로그램을 위한 주소영역으로 나누어짐 사용자는 운영체제 영역의 주소에 접근 할 수 없음 이러한 울타리를 고정 울타리(Fixed Fence)라고 한다. 문제점 운영체제가 필요한 메모리 < 운영체제 주소영역 운영체제가 필요한 메모리 > 운영체제 주소영역

메모리와 주소 보호 울타리 (Fence) 고정 울타리 (Fixed Fence) Memory Address Operating Operating system n n+1 User Program Space Hardware address limitation addressing range

메모리와 주소 보호 울타리 (Fence) 고정 울타리의 한계를 극복하고자 도입된 것이 주소범위 레지스터 (Address Limit Register) 울타리의 경계주소를 운영체제가 결정. 이를 주소범위 레지스터에 저장 (가변 울타리) 사용자는 역시 운영체제의 주소 영역에 접근할 수 없다. 사용자 프로그램에서 주소범위 레지스터에 저장된 주소보다 작은 주소를 접근하고자 하면 운영체제가 차단 남아 있는 문제 운영체제  일반 프로그램의 문제는 해결 되었지만 일반 프로그램들 사이에는 여전히 메모리 보호가 되지 않는다.

메모리와 주소 보호 울타리 (Fence) 가변 울타리 (Variable Fence) Address Limit Register Memory Address Limit Register Address Memory Operating system Operating system n+1 p+1 n n+1 User Program Space p p+1 User Program Space addressing range addressing range

메모리와 주소 보호 재배치(Relocation) 만일 사용자 프로그램에서 사용하는 메모리 주소가 고정적이라고 한다면 OS 의 크기 증가에 따라 프로그램에서 사용하던 주소를 더 이상 쓸 수 없는 상황이 벌어질 수 있다. 이 경우는 프로그램을 다시 작성해야 한다. *a = 1001 // 1001 번지를 변수 a 에 할당 *b = 1002 // 1002 번지를 변수 b 에 할당 a = 20 b = a * 35 …

메모리와 주소 보호 재배치(Relocation) 이런 문제를 해결하기 위해서 프로그램에서 사용하는 주소와 실제 메모리에 매핑되는 주소를 다르게 함. 실제 메모리 주소 = 프로그램 사용 주소 + 기준값 보통 기준 값으로 주소범위 레지스터에 있는 값을 이용. 이렇게 하면 사용자는 절대로 운영체제 영역에 들어갈 수 없다. *a = 1 // 논리주소 1 번지를 변수 a 에 할당 *b = 2 // 논리주소 2 번지를 변수 b 에 할당 a = 20 b = a * 35 … 실제 주소로 재배치

메모리와 주소 보호 기초/한계 레지스터(Base/Bound Register) 주소범위 레지스터 (Address Limit Register) 와 같이 프로그램이 사용할 수 있는 최저 주소 (시작주소)를 가리키는 레지스터를 기초 레지스터라고 한다. 기초 레지스터는 주소의 하한선은 결정을 하지만 상한선은 말하지 않기 때문에 상한선을 제한하기 위해 한계 레지스터를 이용 한 프로그램은 기초/한계 레지스터를 이용해서 다른 프로그램으로 부터 자신의 메모리 영역을 제한할 수 있다.

메모리와 주소 보호 기초/한계 레지스터(Base/Bound Register) Base Address Memory Memory Operating system n+1 n Bound Register n+1 User A Program Space p p User B Program Space p+1 User C Program Space

메모리와 주소 보호 기초/한계 레지스터(Base/Bound Register) 문제점 사용자는 실수로 데이터를 프로그램 코드 부분에 저장할수 있다. 이 경우 프로그램은 정상적으로 작동하지 않게 된다. 이를 위해 두쌍의 기초/한계 레지스터가 이용된다. 이론상으로는 세쌍 이상의 레지스터를 구현할 수 있지만 실용성의 측면에서 두쌍이 적합한 것으로 알려져 있다.

메모리와 주소 보호 기초/한계 레지스터(Base/Bound Register) Memory Program Base Operating system Program Bound User A Program Space User B Data Space Data Base User A Data Space Data Bound User C Program Space User C Data Space User B Program Space

메모리와 주소 보호 태그 구조 (Tagged Architecture) 사용자는 자신의 데이터를 전부 보호하기 보다는 일부만을 보호하고 나머지는 다른 프로그램과 공유하기를 원할 수 있다. 기초/한계 레지스터가 제공할 수 있는 공유 방법은 ‘전부 아니면 전무 (all or nothing)’ 이를 극복하기 위한 하나의 제안으로 제시된 것이 태그 구조의 메모리이다. 메모리의 각 저장 공간은 주소 외에 몇 bit 의 태그를 갖음

메모리와 주소 보호 태그 구조 (Tagged Architecture) Tag Values R : read only 0001 RW 1249 1267 X ~~~ R : read only RW : Read/Write X : Execute-only

메모리와 주소 보호 태그 구조 (Tagged Architecture) 각 메모리 주소에 대한 접근이 있을 때마다 태그 값을 보고 접근 허용 여부를 결정 이 기법이 실제 적용된 시스템은 많지 않음 이유 : 현재 잘 알려진 OS 들은 역사가 오래 된 것들. 새로운 기법을 적용 하려면 많은 변경 필요. 태그 구조를 이용하지 않는 다른 OS 와의 호환성 문제… Burroughs B6500-7500 (3 tag bits) IBM System/38 Intel I960 extend architecture processor : 변형 태그 구조 적용 (여러 메모리당 하나의 태그 bit 할당)

메모리와 주소 보호 앞으로 소개할 두가지 기법은 대부분의 운영체제에서 채택하고 있는 일반적이고 중요한 기법 (1965~1975 년 사이에 제안됨) 세그멘테이션 (Segmentation) 페이징 (Paging)

메모리와 주소 보호 세그멘테이션 메모리에 적재될 프로그램을 성격에 따라 여러 조각으로 나눈다. 나누어진 각 조각을 세그먼트(Segment) 라고 불리움 각 세그먼트들은 메모리 상에서 서로 독립된 위치에 적재됨. (cf. 이전의 방법에서는 프로그램 전체가 하나의 세그먼트) 각 세그먼트는 고유한 이름을 부여 받는다. 세그먼트의 길이는 가변적이다.

메모리와 주소 보호 Memory Logical Arrangement Of Program SUB MAIN MAIN SEG_A DATA_SEG DATA_SEG

메모리와 주소 보호 세그멘테이션 세그먼트 내의 아이템에 대한 주소 지정 : <name, offset> 운영체제는 세그먼트 이름을 실제 메모리 주소에 매핑하기 위한 테이블을 가지고 있음 (세그먼트 변환 테이블) 두개의 서로 다른 프로세스가 하나의 세그먼트를 공유할 수도 있다.

메모리와 주소 보호 Memory Segment translation table Logical Program a MAIN Segment translation table Logical Program a MAIN MAIN c SEG_A e SUB a DATA_SEG f b c SEG_A FETCH <DATA_SEG, 20> d SUB e DATA_SEG f g h i

메모리와 주소 보호 세그멘테이션 사용자 프로그램은 자신이 이용하는 메모리의 실제 주소를 알 필요도 없고, 알 수도 없다. 세그멘테이션의 장점 운영체제는 세그먼트를 메모리상의 임의의 장소에 위치시킬 수 있고, 프로그램의 실행중에도 세그먼트위 위치를 옮길 수 있다. 현재 사용중이지 않는 세그먼트는 임시 삭제하고(보조기억 장치에 저장) 다른 세그먼트를 위해 할당할 수 있다. 메모리의 모든 주소는 운영체제를 거쳐 참조되기 때문에 보안체크를 할 기회가 주어진다.

메모리와 주소 보호 세그멘테이션 세그멘테이션의 세번째 장점을 살리기 위해서 ‘세그먼트 변환 테이블’은 일반 프로그램이 접근할 수 없다. 사용자는 프로그램 내의 세그먼트 들에 대해 서로 다른 보호 범주을 지정할 수 있다. 예) SEG_A : execute only, DATA_SEG : read only 보안의 관점에서 세그멘테이션의 장점 메모리에 대한 모든 참조를 체크할 수 있다. 데이터 아이템의 각 부분에 대해 서로 다른 보호 범주지정 가능 2인 이상의 사용자가 한 세그먼트를 공유할 때 서로 다른 접근원한이 부여될 수도 있다. 사용자는 허가되지 않은 세그먼트를 만들거나 접근할 수 없다.

메모리와 주소 보호 세그멘테이션 세그멘테이션에서의 문제 <name, offset> 에서 세그먼트를 벗어나는 offset 이 의도적, 비의도적으로 사용될 수 있다. (컴파일시 체크 안됨) 세그먼트의 사이즈 정보를 관리. 실행시 체크 세그먼트 이름의 실제 주소 매핑을 위해 세그먼트 변환 테이블에서 찾을 때 시간이 많이 걸림 컴파일시 이름 주소를 숫자 주소로 변환 조각화 (fragmentation) 발생 세그먼트의 크기가 서로 다르기 때문에 메모리의 주기적인 조각 모으기(compaction) 실행 필요

메모리와 주소 보호 페이징 세그멘테이션의 한 종류로 볼 수 있다. 세그먼트가 가변적 크기를 갖는데 비해 페이지는 고정 사이즈를 갖는다. (보통 512 ~4096 bytes) 주소화 기법 : <page, offset> 메모리의 조각화, 페이지를 넘어서는 offset 의 지정 문제가 발생하지 않는다. 페이지의 사이즈를 어느 정도로 하는 것이 좋은가 하는 것이 이슈임

메모리와 주소 보호 Memory a Logical Program page translation table b PAGE 0 a Logical Program page translation table b PAGE 0 PAGE 1 PAGE 2 PAGE 3 c 1 e 2 a 3 f c d e f g h i j

메모리와 주소 보호 세그멘테이션과 페이징의 결합 페이징의 문제점은 프로그램에서 유사 성격을 가지고 있어서 동일 보호범주가 적용 되어야 할 부분이 여러 페이지로 나누어 질 수 있다는 것. 세그멘테이션과 페이징 기법의 장점을 취하여 만듦

메모리와 주소 보호 Memory a b c d e f g h i j f 3 a 2 e 1 c page translation a b c d e f g h i j f 3 a 2 e 1 c page translation table Segment translation table Logical Program MAIN MAIN c SEG_A e SEG_A page translation table SUB a ㅎ FETCH <DATA_SEG, 20> SUB DATA_SEG f 1 Eㅗ DATA_SEG 2 a 3 kㅏ page translation table c 1 e 2 a 3 f

일반 객체 접근 보호 앞에서 살펴본 메모리 보호는 컴퓨터 시스템에 존재하는 객체들에 대한 보호 문제의 한 부분을 보여줌 보호가 필요한 시스템 객체들 메모리 보조 기억장치의 파일 파일 디렉토리 메모리에서 실행 중인 프로그램 하드웨어 장치 운영체제가 관리하는 각종 테이블 사용자 패스워드 보호 메커니즘 자체도 보호 대상

일반 객체 접근 보호 이러한 일반 객체에 대해서는 합법적인 권한을 가진 주체 (사용자, 프로그램)만이 접근할 수 있도록 해야 한다. 따라서 운영체제는 보호가 필요한 객체에 대한 권한 정보를 관리해야 한다. 이러한 방법의 하나로서 이전 시간에 배운 접근제어 리스트 (Access Control List) 접근제어 행렬 (Access Control matrix) 가 많이 사용됨

파일 보호 기본적인 보호 방법 전부/전무(all-none) 보호 초기의 IBM 운영체제에서 파일은 기본적으로 공유 자원. 사용자들은 다른 사용자들이 만든 파일을 읽고 쓸 수 있었다. (사용자들을 신뢰) 시스템에서 중요한 파일은 일반 사용자가 접근할 수 없도록 시스템 관리자에 의해 보호 (패스워드) 패스워드를 파일에 이용하려면 시스템 관리자의 개입이 필요.

파일 보호 기본적인 보호 방법 전부/전무(all-none) 보호의 문제점 사용자 수가 몇 안되는 시스템에서는 사용자들끼리 잘 알고 신뢰 할 수 있지만, 많은 수의 사용자 시스템에서는 모든 사용자를 신뢰할 수 없다. 사용자가 자신이 신뢰할 수 있는 다른 사용자를 안다 하더라도 그들만이 자신의 파일에 접근할 수 있도록 하는 방법이 없다. 이 방법은 일괄작업(batch processing) 환경에서는 적합할 수 있다. (사용자간에 상호 개입할 일이 적다.) 그러나 시간 분할 (time sharing)의한 동시 사용자 작업수행 환경에서는 사용자간 상호 간섭의 가능성이 증가. 파일 보호에 시스템 관리자의 개입이 필요하므로 편리성 저하 사용자는 파일 리스트 명령어를 통해 보호 파일의 존재도 확인

파일 보호 기본적인 보호 방법 그룹 보호 앞에서 지적한 이유로 해서 많은 운영체제에서는 그룹의 개념 지원 연관성이 있는 사용자들을 하나의 그룹으로 묶어서 생각. 그룹으로 묶는 기준 : need to share 사용자는 오직 하나의 그룹에만 속할 수 있다. 사용자는 파일을 생성할 때 자신의 그룹 안의 사용자를 위한 접근 권한과 기타 사용자를 위한 접근권한 지정 예) 자신: 모든 권한 소유,그룹 사용자 : 읽기,쓰기, 외부 사용자 : 읽기 DEC-10, Unix system, VAX VMS system 등에서 구현

파일 보호 기본적인 보호 방법 그룹 보호의 문제 한 사용자는 동시에 두 그룹에 들어갈 수 없다. 동시에 두 그룹에 들어가는 것을 허용하면 모호성 문제 발생 한 사용자가 동시에 두 그룹에 들어가지 못하는 단점을 극복하기 위해 한 사용자에게 두개의 사용자 계정을 만들 수 있다. 그러나 이 경우도 사용자는 한번에 한 계정만을 이용 가능하다. (두 계정을 동시에 open 할 수 없다)  불필요한 계정의 증가 사용자는 그룹의 모든 사용자가 아닌 한 사람의 사용자와만 어떤 파일을 공유하기 원할 수 있다.

파일 보호 Single permission 그룹 보호보다 세밀한 보안관리 제공 패스워드 /토큰 방식 사용자는 자신이 만든 파일에 패스워드를 부여 한다. 파일에 접근하는 다른 사용자는 올바른 패스워드를 제시 해야만 파일을 열어볼 수 있다. 파일을 생성한 사용자는 자신이 원하는 다른 사용자에게만 패스워드를 알려줌으로써 자신만의 ‘그룹’을 만들수 있다. 문제점 (사용자 인증에서의 패스워드와 비슷) 패스워드의 분실 패스워드가 권한이 없는 다른 사람에게 알려짐 권한의 회수, 변경시 : 패스워드를 바꾸어야 한다.

파일 보호 Single permission 임시적 권한 (temporary acquired permission) Unix 운영체제에서 제안 기본 구조 : user(owner) – group – world 추가적인 권한 : set userid (suid) suid 가 어떤 파일의 실행을 위해 설정되면 그 프로그램을 실행하는 사용자는 자신의 권한을 가지고 프로그램을 실행 하는 것이 아니라 소유자의 권한을 가지고 실행 예) suid file1 pgm1 (owner : Tom) John

파일 보호 Single permission 임시적 권한 (temporary acquired permission) Suid 를 이용하면 다른 사용자가 직접적인 방법으로는 데이터에 접근할 수 없도록 막으면서, 자신이 정한 통로 (프로그램) 를 통해서만 접근하도록 강제할 수 있다. 또 다른 예 패스워드 파일에 대한 접근권한 부여 Owner : System 사용자는 자신의 패스워드를 언제든지 바꿀 수 있어야 한다. 만일 패스워드 파일에 대한 직접적 접근권한을 사용자들에게 부여한다면?

사용자 인증 시스템에 접근하는 사용자가 권한이 있는 사용자 인지를 식별하는 일은 보안상 매우 중요 이를 위해 가장 보편적인 방법이 ID, 패스워드를 제시하게 하여 확인하는 방법 이에 대해서는 이미 다루었음

정리 컴퓨터 시스템이 발전하면서 보안적인 측면을 보완하기 위한 노력이 계속되었으며 그 결과로서 여려 가지 기법들이 제시 되었다. 이번 시간에 다룬 여러 가지 보호 기법들은 우리가 어떤 보안 시스템을 설계할 때 좋은 참고 자료가 될 수 있다. 사용자 편리성을 저하시키지 않으면서 필요한 정보를 보호할 수 있는 방법들이 계속 연구될 필요가 있다.

참고문헌 P.Pfleeger, Security in Computing, second edition, Prentice-Hall International Inc.,1997. (chapter 6)