운영체제 15장 - computer security techniques


컴퓨터의 보안을 유지하는 방법들

password 사용
유저가 인증을 받았는지, 권한이 어디까지인지 확인하고 그것을 사용해서 접근제어를 한다


salt라고 하는 랜덤 넘버를 사용해서 해싱을 해서
저장될 패스워드를 구하게 된다


이 salt라고 하는 랜덤넘버는 저장이 되어, 유저가 다시 패스워드를 입력시 해싱을 위해서 사용된다
주어진 password와 salt로 해싱을 해서 저장된 hash code 와 비교

만약 사용자가 동일한 password로 여러 컴퓨터에 사용하더라도
salt값이 다르기 때문에 다른 해시 값이 저장이 된다
따라서 이것을 가지고 역으로 password를 찾는걸 막을수 있다
만약 salt값이 k비트라면 2^k만큼 더 넓은 공간을 탐색해야 한다


salt
패스워드가 중복되서 다른 시스템을 뚫을수 있는 가능성을 줄이고
패스워드 파일로부터 딕셔너리(자주 쓰이는 패드워드 단어를 모아놓음) 공격을 할수 있는 가능성을 줄인다
동일한 패스워드로 두개 이상의 시스템에 사용하는 사람을 찾는것이 거의 불가능하다

 
유닉스 시스템
guest account
password cracker - 비밀번호를 추측하는 프로그램, 만약 etc 폴더 밑의 task파일을 얻을 수 있다면, 이 크래커 프로그램을 사용해서 패스워드를 찾아낼 수 있다


유닉스에서는 8개의 printable character를 주면 56비트의 값으로 해싱을 한다
DES방법에 기초한 crypt()함수
이것은 추측을 하는 공격을 방어하도록 되어 있다

많은 유닉스 시스템에서 MD5라고 하는 해시함수에 기반해서 만들어진 hash function을 사용하고 있다
가장 안전한 유닉스 salt scheme은 openBSD에서 개발되었고, 이러한 암호화 방법에 의해 만들어진 hash function이 Bcrypt


다른 인증 방법들
암호의 대용품으로서 사용


은행에서 마그네틱 카드 사용


마그네틱 카드를 보완
현재 사용하는 은행 카드에는 금속판이 붙어있다. 이것을 통해서 프로세서에 접근
스마트 토큰이라는 금속 인터페이스를 사용해서 통신

 
사람의 물리적 정보로 인증




정확도와 비용을 표시한것


인증을 한 후 시스템에 들어가면 각 사용자는 접근할수 있는 정보를 제한받게 된다
접근을 제어하는 정책 3가지
DAC - 접근을 요청하는 사람이 누구인지에 따라 접근 제어
MAC - 접근하는 사람의 security lebels에 따라서
RBAC - 사용자의 역할에 따라서


세 정책을 겹쳐서 사용할수 있다


접근제어를 하는 방법을 access controll matrix를 통해서 표현가능


어떤 대상들이 파일을 읽거나, 프로세스를 깨우거나 할때 access matrix를 사용해서 권한을 확인
보안 책임자는 access matrix monitor를 사용해서, 허용하거나 권한을 제공할 부분을 업데이트


각 사용자의 identity보다는 유저의 역할에 기반해서 판단
NIST에서 표준 제안





이러한 access control 까지 구현을 하더라도 침입자가 해킹에 의해 임의의 권한을 획득할수도 있다
intrusion detection - 정상적인 사용자와 침입자의 행동패턴이 다르다는것을 가정하고 있다.


침입자의 행동을 프로파일링 해서 
일반 패턴과 침입자의 패턴을 가우시안으로 모델링해서 구분


컴퓨터로 IDS를 만들어서 의심스러운 패턴을 감지시 경고
이상감지 - anomaly detection

signature detection - 다른 방법으로는 공격의 패턴rule을 저장하고 있다가 행동이 발견되면 경고


탐지의 가장 기초는 사용자의 행동을 기록하는것
추가적인 소프트웨어 없이 그냥 행동을 기록
다른 방법은 특정한 행동만을 모아서 저장 - 특정 행동을 구분해내야 해서 오버헤드 존재



바이러스가 자신을 숨기는것에 대처해서 개발됨




인터넷에 기반한 바이러스가 퍼짐에 따라서 개발됨
이메일, 모바일 프로그램과 관련된 바이러스 대처




이상한 행동을 감지하여 차단하는것


관리자가 여러 정책을 기술하면
제한된 리소스만 사용할수 있게 한 sandbox 안에서 실행하도록 되어있는 환경에서 감지하여, 문제가 발생시 관리자에게 알림