일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Double free
- MLFQ
- DSP
- STCF
- Security
- dirty cow
- TSet
- sampling theory
- 게임 개발
- stride
- RBAC
- Rr
- linear difference equation
- dtft
- MAC
- 메카님
- ret2libc
- 운영체제
- AINCAA
- Race condition
- 게임개발
- Frequency Response
- 유스케이스
- DP
- 유니티
- Unity #Indie Game
- 배경 그림
- pdlc
- 언리얼엔진
- frequency-domain spectrum analysis
- Today
- Total
다양한 기록
Protection in OS 본문
Protection(보호)
프로세스 또는 사용자가 시스템 및 사용자 자원에 접근하는 것을 제어하는 메커니즘
== 주체의 객체 접근을 제어하는 메커니즘
- 인가된 사용과 비인가된 사용을 구분해야 함
*하지만 인가된 사용에서도 실수는 발생할 수 있고
처음부터 의도를 가지고 공격을 할 수도 있음. 전부 보호가 필요
보호의 목적
컴퓨터는 오브젝트(파일), 하드웨어, 소프트웨어의 집합
각각의 오브젝트는 유니크한 식별자 가지고 잘 정의된 명령셋을 가지고 접근됨
모든 객체는 인가된 프로세스에의해 정확하게 접근되어야 함
* 유니크한 식별자
pid, inode number 등
파일 이름은 이름이 같아보일 순 있는데 절대 경로가 다름
=> 같은 디렉토리에 같은 이름을 가질 수는 없음
OS 보호(프로텍션)의 기본 원리: Separation (분리)
Separation(분리), Isolation(격리)
- 커널 스페이스 vs. 유저 스페이스
- 루트 유저 vs. 노말 유저
* UID의 분리.. 루트, 노말 유저, 게스트..
* 관리자만 할 수 있는 거: 애드 유저, 체인지 오너, 시스템 컨트롤, 패키지 설치
- 디스크 파티셔닝
- 홈 디렉토리 분리
* 사용자들 간 파일 격리/보호
- 프로세스 주소 공간 분리
- 가상 머신
- 웹 포탈에서 이메일 계정 분리
- Fault isolation
다양한 종류의 분리
- 물리적인 분리
* 디바이스 분리 .. CPUs(멀티 코어 프로세서), 프린터, 네트워킹 디바이스
* 망 분리
* 자동차의 ECU .. 각 유닛을 역할에 따라 분리
* 스마트폰은 AP (애플리케이션 프로세서)
- 시간 분리
* 하나의 자원을 시간을 나눠서 사용
- 논리적인 분리
* 도메인, 각 유저는 대상이 자신이 혼자 있다고 생각하게 됨 (자신만의 도메인)
* 주소 공간 분리, 샌드박싱
* 커널과 애플리케이션의 가상 주소 공간 분리
* 각 프로세스 간 주소 공간 분리
- 암호학적 분리
* 데이터를 숨겨서 다른 유저가 이해하지 못하게 함
* 중요한 데이터는 Hiding
샌드박스
프로그램이 실행될 수 있으나 다른 나머지 머신에 영향을 주지 않는 환경
제일 많이 사용되는게 안드로이드 폰.. 애플리케이션이 하나의 샌드박스 안에서 돌아가게 되어 있음
PC앱과 모바일 앱 차이
안드로이드 앱이 훨씬 배포하기가 편함
=> 수가 훨씬 많음 => 문제가 생길 여지가 큼
다른 앱을 건들지 못하게 샌드박스화
Access Control
프로텍션 중 제일 많이 쓰는 방법 => 액세스 컨트롤 리스트(ACL)
ls -l (inode 정보들을 보여줌)
맨 앞이 파일의 종류를 알려줌
b : 블록 디바이스 (하드 디스크, SSD)
c: 문자 디바이스 (키보드)
l: 심볼릭 링크
p: 파이프
s: 소켓
모든 장치는 파일로 추상화
가상 주소 공간
한 프로세스가 참조할 수 있는 주소들의 집합 == 주소 공간
텍스트, 데이터, 스택, 힙
텍스트 세그먼트 == 코드 세그먼트 == 리드 온리 코드, 데이터
컴파일된 명령어와 상수가 들어감
데이터 세그먼트
- 초기화된 전역변수
- 초기화되지 않은 전역 변수 => BSS
힙
동적할당된 데이터
스택
지역변수, 리턴 어드레스, 함수에 대한 인자 등
커널
32비트 CPU, 리눅스 기준 4기가 중 1기가 차지
* 부팅의 역할
디스크에 있는 OS를 메모리에 올리는 것
롬에 있는 부트스트랩 코드가 실행.. 이후 메모리에 상주하는게 커널
왜 상주? 빨리 처리해줘야 하는데 디스크로 내려가면 시간 낭비가 심함
가상화
버추얼 머신 => 호스트 OS 위에 하이퍼바이저가 올라가고 그 위에 게스트 OS
컨테이너 => 호스트 OS 위에서 도커 엔진같은게 돌아감
OS must ..
주체로부터 악용되거나 잘못 사용되는 걸 스스로 지켜야 함
유저들을 다른 유저들로부터 보호해야 함
프로세스들을 다른 프로세스들로부터 지켜야 함
OS 특징
특권 레벨 & 메모리 프로텍션이 OS와 프로세스를 유저들로부터 지킴
파일 퍼미션이 자원과 유저들을 다른 유저들로부터 지킴
OS 정의
자원 관리자
하드웨어와 유저, 앱 간 인터페이스
OS 컴포넌트
프로세스, 메모리, 파일 매니저, I/O 서브 시스템들
쉐어링 vs 프로텍션
멀티 유저, 멀티 태스킹
Protection in OS
Separation, Isolation (Sanboxing)
'운영체제보안' 카테고리의 다른 글
Trusted OS (0) | 2024.10.12 |
---|---|
Threats and Security Issues related to OS (0) | 2024.10.12 |
Security Goals (0) | 2024.10.12 |
Protection & Security (0) | 2024.10.12 |
운영체제 개요 (0) | 2024.10.11 |