시스템 보안

시스템 보안 - 1주차

space1637 2026. 9. 18. 23:23

이 글은 무엇인가요?

고려대학교 세종캠퍼스 인공지능사이버보안학과 Kim, Youngsoo 교수님의 AICS306 「System Security」 Lecture 02 「Operating System Fundamentals & System Security」 강의 자료 전체 53쪽(2026년 9월 14일자)을 정리한 글이에요.

내용은 크게 다섯 덩어리예요. 정보보안의 개념, 운영체제의 개념과 기능, 사용자 모드와 커널 모드, 리눅스와 유닉스, 시스템 보안이에요. 이름만 보면 딱딱한데, 알고 보면 전부 "누가 무엇을 해도 되는가"를 정하는 이야기예요.

목차

  1. 정보보안의 목표: 삼각형 세 개에 두 개를 더해요
  2. 기밀성(Confidentiality): 아무나 못 보게
  3. 무결성(Integrity): 아무나 못 고치게
  4. 가용성(Availability): 필요할 때 쓸 수 있게
  5. 인증(Authentication): 진짜 본인인지 확인
  6. 책임추적성(Accountability): 나중에 누가 했는지 찾기
  7. 위협을 여섯 갈래로 나누는 STRIDE
  8. 운영체제는 무슨 일을 하나요?
  9. 윈도우 구조와 인터럽트
  10. 리눅스와 유닉스 구조
  11. 보호 모드와 링 구조
  12. 사용자 모드와 커널 모드
  13. 시스템 보안: 실제 위협과 방어
  14. 퀴즈
  15. 용어 사전
  16. 참고 문헌

1. 정보보안의 목표

강의 자료의 첫 그림은 삼각형 하나예요. 세 변에 각각 Confidentiality(기밀성), Integrity(무결성), Availability(가용성)가 적혀 있어요. 이 세 가지를 앞 글자만 따서 CIA 삼각형(CIA Triad)이라고 불러요. 그리고 삼각형 옆에 상자 두 개가 더 붙어요. Accountability(책임추적성)와 Authentication(인증)이에요.

목표 강의 자료의 정의
Confidentiality
기밀성
허가받지 않은 사용자가 보호된 정보의 내용에 접근하거나 알아낼 수 없게 해요.
Integrity
무결성
허가받지 않은 사용자가 정보를 함부로 고치거나 조작할 수 없게 해요.
Availability
가용성
허가받은 사용자가 필요할 때 불필요한 중단 없이 정보와 서비스를 쓸 수 있게 해요.
Authentication
인증
어떤 사용자가 허가받은 정당한 사용자인지 판단하는 과정이에요.
Accountability
책임추적성
보안 사고가 일어났을 때 그 원인과 책임 있는 행위를 찾아내고 추적할 수 있어야 한다는 뜻이에요.

쉽게 말하면 다섯 가지를 학교 일기장으로 바꿔 볼게요. 기밀성은 자물쇠가 달려 있어서 아무도 못 읽는 것이고, 무결성은 누가 몰래 내용을 고쳐 놓지 못하는 것이고, 가용성은 내가 쓰고 싶을 때 일기장이 항상 그 자리에 있는 것이에요. 인증은 자물쇠 열쇠를 가진 사람이 진짜 나인지 확인하는 것이고, 책임추적성은 누가 언제 일기장을 열었는지 기록이 남아 있는 것이에요.

2. 기밀성(Confidentiality)

  • 기밀성은 허가받은 사용자만 정보 자산에 접근할 수 있다는 뜻이에요.
  • 보안이라는 말의 일반적인 뜻과 가장 가까운 개념이에요.
  • 간단히 비유하면 허가받지 않은 사람이 정보에 접근하지 못하게 막는 자물쇠예요. 이 비유는 강의 자료 자체에 나오는 말이에요.
  • 많은 보안 시스템과 기술이 기밀성과 깊이 관련돼요. 예로 방화벽(Firewalls), 암호화(Encryption), 비밀번호(Passwords)가 있어요.

2.1 기밀성을 지키는 두 가지 그림

강의 자료는 그림 두 장으로 설명해요.

방법 그림 설명
아이디와 비밀번호로 지키기 빨간 공격자는 "ID: ???, password: ???" 상태라 서버에 들어가지 못해요. 파란 사용자는 "ID: xxx, password: ***"로 들어가요. 옆에서 다른 사용자가 "ID: yyy"로 접근하려 해도 권한이 없으면 막혀요.
암호화 통신으로 지키기 두 사람 사이에 자물쇠 표시가 있는 화살표가 오가요. 아래에서 공격자가 통신을 가로채도, 암호화된 데이터라서 내용을 이해하지 못해요.

강의 자료가 분홍 상자로 정리한 결론이에요. "따라서 기밀성은 아이디와 비밀번호 인증, 그리고 암호화 통신으로 유지할 수 있다."

2.2 기밀성을 받쳐 주는 기술들

기술 한 줄 설명
TLS 웹 주소 앞에 붙는 https를 만들어 주는 암호화 통신 규칙이에요.
IPSec 인터넷 주소 단계에서 통신을 통째로 암호화해요.
AES 같은 열쇠로 잠그고 여는 대표적인 암호 방식이에요.
RSA 잠그는 열쇠와 여는 열쇠가 다른 암호 방식이에요.
End-to-End Encryption 보내는 사람과 받는 사람만 내용을 볼 수 있게 하는 방식이에요. 가운데 서버도 못 봐요.
Tor (Onion Routing) 여러 중계점을 양파 껍질처럼 겹겹이 지나가게 해서 누가 보냈는지 숨겨요.

3. 무결성(Integrity)

  • 무결성은 정보가 적절한 권한을 가진 사용자에 의해, 허가된 방법으로만 바뀔 수 있다는 뜻이에요.
  • 강의 자료의 예는 화폐예요. 허가받은 정부 기관만 공식 절차를 거쳐 돈을 만들거나 고칠 수 있어요. 허가 없이 만들거나 고치면 무결성이 깨진 것이고, 그게 바로 위조지폐예요.
  • 기밀성이 보통 첫 번째 요소로 소개되지만, 어떤 환경과 응용에서는 무결성이 더 중요할 수 있어요.

쉽게 말하면 성적표를 생각해 보세요. 남이 내 성적을 보는 것이 문제인 상황도 있고, 남이 내 성적을 고쳐 놓는 것이 훨씬 큰 문제인 상황도 있어요. 은행 잔액이나 병원 처방전은 남이 보는 것보다 남이 고치는 것이 훨씬 무서워요. 그래서 무결성이 더 중요한 곳이 있는 거예요.

3.1 무결성이 깨지는 두 가지 모습

깨지는 모습 설명
Website Manipulation
웹사이트 변조
공격자가 허가 없이 웹사이트 내용을 고치면 그 웹사이트의 무결성이 깨진 거예요.
Data Manipulation During Transmission
전송 중 데이터 변조
보내는 사람과 받는 사람 사이를 지나가는 동안 데이터가 바뀌면 무결성이 깨진 거예요.

강의 자료는 무결성을 지키는 일상 예로 계약서 그림도 넣었어요. 두 장의 계약서를 나란히 놓고 걸쳐서 갑과 을의 도장을 찍어요. 나중에 한 장만 바꿔치기하면 걸친 도장 모양이 맞지 않으니 바로 들통나요. 종이 세상에서 쓰던 무결성 장치예요.

3.2 무결성을 지키는 기술 세 가지

기술 강의 자료의 설명
암호학적 해시 함수
Cryptographic Hash Function
데이터가 바뀌었는지 확인하는 데 써요. 입력 데이터로부터 길이가 정해진 해시 값을 만들어요. 원래 데이터가 조금이라도 바뀌면 해시 값도 바뀌어요. 그래서 데이터 무결성을 확인할 수 있어요.
메시지 인증 코드
MAC
메시지의 무결성과 보낸 사람의 진짜 여부를 함께 확인해요. 통신하는 두 쪽이 나눠 가진 비밀 키로 만들어요.
전자 서명
Digital Signature
데이터의 무결성, 서명한 사람의 신원, 서명 뒤에 데이터가 바뀌었는지를 모두 확인해요. 보통 공개키 암호로 구현해요.

쉽게 말하면 해시 함수는 책의 글자 수를 세어 적어 두는 것과 비슷해요. 누가 한 글자라도 고치면 세어 놓은 숫자와 안 맞아요. 다만 진짜 해시는 글자 수보다 훨씬 똑똑해서, 글자 수가 같아도 내용이 다르면 값이 달라져요.

4. 가용성(Availability)

  • 가용성은 정보 자산이 필요할 때 쓸 수 있도록 보장하는 것이에요.
  • 강의 자료가 든 일상 예는 24시간 편의점이에요. 언제 가도 물건과 서비스를 계속 이용할 수 있으니까요.
  • 현대 사회에서 정보 가용성을 잃는 것은 다른 중요한 자원을 못 쓰게 되는 것만큼 심각할 수 있어요.

4.1 가용성이 깨지는 상황

상황 설명
접속이 한꺼번에 몰림 아주 많은 접속 요청이 동시에 들어오면 사용자가 원하는 서버에 매끄럽게 연결하지 못할 수 있어요.
중간 장비나 네트워크 고장 중간에 있는 시스템이나 네트워크에 문제가 생기면 인터넷이나 다른 서비스에 연결하지 못할 수 있어요.

가용성을 노리는 대표적인 공격이 서비스 거부 공격(DoS, Denial-of-Service)과 분산 서비스 거부 공격(DDoS, Distributed Denial-of-Service)이에요. 강의 자료의 그림은 이렇게 생겼어요. Attacker가 Controller에 명령을 내리고, Controller가 감염시켜 놓은 여러 대의 Zombies에게 명령을 퍼뜨리고, 좀비들이 한꺼번에 Victim 서버로 트래픽을 보내요. 그러면 정상 사용자는 서비스를 쓸 수 없게 돼요.

자료에는 실제 사건 기사도 함께 실려 있어요. 2011년 중앙선거관리위원회 디도스 공격 사건, 그리고 2016년 4월 13일 총선 선거일 오후에 선관위 홈페이지가 다시 디도스 공격을 받은 사건이에요.

강의 자료는 공격이 아닌 경우도 보여 줘요. 예매 사이트의 "고객님, 죄송합니다. 현재 접속인원이 많아 접속순으로 예매를 진행하고 있으므로 잠시 후 재접속 부탁드립니다", 정부24의 "서비스 지연 안내" 화면 같은 것들이에요. 자료가 붙인 문장이 핵심이에요. 직접적인 보안 침해가 없어도, 수요가 지나치게 몰리거나 시스템 용량이 모자라면 가용성이 떨어질 수 있다는 뜻이에요.

4.2 가용성을 지키거나 되살리는 방법

방법 설명
데이터 백업 데이터를 여러 벌 만들어 두는 것(이중화)이에요.
서버 용량 증설 더 많은 접속을 감당할 수 있게 서버를 키워요.
KISA 사이버 대피소 DNS 정보를 바꿔서 네트워크 통신을 되살리는 방법이에요. 공격 트래픽을 다른 곳으로 보내고 정상 트래픽만 받아요.

쉽게 말하면 급식실 문이 하나뿐인데 전교생이 한꺼번에 몰려오면 아무도 못 들어가요. 이때 방법이 세 가지예요. 밥을 다른 곳에도 준비해 두거나(백업), 문을 더 넓히거나(용량 증설), 학생들을 다른 통로로 안내하는 거예요(사이버 대피소). 누가 일부러 문 앞을 막고 서 있는 게 디도스 공격이에요.

5. 인증(Authentication)

강의 자료는 인증을 전자 서명으로 설명해요. 그림의 위쪽은 서명이 없을 때 벌어지는 일이에요.

  1. 공격자가 당사자인 것처럼 위장하여 자료를 만들어요.
  2. 받는 쪽이 자료 내용을 확인해요.
  3. 확인 내용을 전송해요.
  4. 나중에 클레임, 즉 분쟁이 생겨요. "나는 그런 것 보낸 적 없다"는 상황이에요.

그림의 아래쪽은 해결책이에요. 정당한 보내는 사람이 자료에 전자 서명을 추가하여 송부하면, 공격자는 같은 서명을 만들어 낼 수 없어요. 그림에도 "전자 서명을 추가할 수 없음"이라고 적혀 있고, 공격자의 화살표는 빨간 X로 막혀 있어요. 그래서 받는 쪽은 그 메시지가 진짜 정당한 사람이 보낸 것인지 확인할 수 있어요.

쉽게 말하면 부모님 사인이 필요한 가정통신문 같아요. 누군가 부모님 이름을 따라 써서 낼 수는 있지만, 선생님이 사인 모양을 알고 있으면 가짜인지 알 수 있어요. 전자 서명은 흉내 낼 수 없는 사인이에요.

6. 책임추적성(Accountability)

강의 자료는 로그 분석을 통한 사고 원인 파악이라고 적어 놨어요. 사람 네 명(A, B, C, D)이 차례로 어떤 사이트에 접속하고, 그 접속 기록이 로그로 만들어져 서버에 저장돼요. 저장된 접속 로그는 이렇게 생겼어요.

순서 내용 시각
1 A → ##사이트 접속 2021.08.25 13:00
2 B → ##사이트 접속 2021.08.26 14:10
3 C → ##사이트 접속 2021.08.26 16:00
4 D → ##사이트 접속 2021.08.27 09:30

그림에서 D만 빨간색이에요. 사고가 난 뒤에 로그를 보면 "마지막에 들어온 D가 원인이었구나"를 알 수 있다는 뜻이에요. 기록이 없으면 이 추적이 불가능해요.

쉽게 말하면 교실 사물함에서 물건이 없어졌을 때 복도 CCTV를 돌려 보는 것과 같아요. 평소에 녹화를 켜 두지 않았으면 아무리 급해도 볼 게 없어요. 책임추적성은 미리 기록을 남겨 두는 습관이에요.

7. 위협을 여섯 갈래로 나누는 STRIDE

마이크로소프트가 만든 위협 분류 모델이에요. 강의 자료의 설명이에요.

  • STRIDE는 어떤 서비스에서 일어날 수 있는 보안 위협의 범위를 나타내는 머리글자예요.
  • 여섯 가지 주요 위협 범주를 살펴봄으로써 취약점과 잠재적 공격을 찾아내는 데 도움을 줘요.
  • STRIDE를 적용할 때 보안 팀은 서비스를 기능과 데이터 흐름 기준으로 쪼개서 분석하고, 가능한 위협을 찾아내요.
  • 찾아낸 위협은 위험 수준에 따라 평가하고, 위험에 맞게 무시(Ignore), 통지(Notify), 제거(Eliminate), 완화 또는 수정(Mitigate or modify) 중에서 대응을 고를 수 있어요.

7.1 여섯 글자 하나씩

글자 위협 강의 자료의 설명과 대책
S Spoofing Identity
신원 위장
허가 없이 사용자나 프로세스인 척하는 것이에요. 가장 단순한 형태는 남의 자격 증명(아이디와 비밀번호)을 그대로 쓰는 것이에요. 악의적인 사용자가 쿠키 내용을 바꿔서 다른 사용자인 척하거나, 쿠키가 다른 서버에서 온 것처럼 꾸밀 수도 있어요. 대책은 강력한 인증이에요. 사용자 이름이나 비밀번호를 쿠키에 저장하지 마세요. 쉽게 찾아서 바꿀 수 있으니까요.
T Tampering with Data
데이터 변조
허가 없이 자원을 고치거나 지우는 것이에요. 예로 공격자가 웹사이트를 장악해 파일을 고쳐서 웹 페이지를 훼손하는 경우가 있어요. 대책은 운영체제의 보안 장치로 파일과 디렉터리를 보호하고, 응용 프로그램을 필요한 최소한의 권한으로 실행하는 것이에요. 사용자나 데이터베이스가 준 정보를 자동으로 믿지 말고, 믿을 수 없는 곳에서 온 정보에 실행 가능한 코드가 들어 있지 않은지 확인하세요.
R Repudiation
부인
거래를 했는데 누가 했는지 알려 주는 증거가 충분히 남지 않을 때 생기는 위협이에요. 보낸 사람이 "나는 보낸 적 없다", 받은 사람이 "나는 받은 적 없다"고 하는 상황이에요. 웹 애플리케이션에서는 정당한 사용자의 자격 증명을 도용하는 형태로도 나타나요. 대책은 강력한 인증으로 부인 방지(non-repudiation)를 제공하고, 로그 기능으로 서버 활동의 감사 기록을 남기는 것이에요.
I Information Disclosure
정보 노출
개인적이거나 민감한 정보를 훔치거나 드러내는 것이에요. 비밀번호 정보가 노출되면 공격자가 서버의 아무 파일이나 자원에 접근할 수도 있어요. 가장 좋은 대책은 저장할 필요가 없는 정보는 저장하지 않는 것이에요. 다만 완전히 저장하지 않는 건 현실적으로 어려우니, 비밀번호는 원문 대신 해시 값으로 저장하고, 사용자가 입력한 비밀번호를 해시해서 저장된 값과 비교해요. 민감한 정보를 보내야 할 때는 암호화하고 SSL 같은 안전한 통신 규칙을 쓰세요.
D Denial of Service
서비스 거부
응용 프로그램의 가용성을 일부러 평소보다 떨어뜨리는 공격이에요. 네트워크나 시스템, 웹 애플리케이션에 과부하를 걸어 정상 사용자가 못 쓰게 하거나, 서버를 일부러 멈추게 해요. 대책은 응용 프로그램이 처리할 요청 수를 제한하고, 악성으로 확인된 사용자나 IP 주소의 접근을 막는 것이에요.
E Elevation of Privilege
권한 상승
비정상적이거나 허가받지 않은 방법으로 원래 받은 것보다 더 많은 권한을 얻는 것이에요. 권한 상승에 성공하면 웹 서버의 관리자 권한을 얻을 수도 있고, 그러면 서버 기능을 마음대로 다루고 저장된 데이터에 접근할 수 있어요. 대책은 응용 프로그램을 최소 권한(least-privilege) 환경에서 실행하는 것이에요.

쉽게 말하면 학교에 도둑이 들어오는 길을 여섯 개로 나눠 적어 둔 목록이에요. S는 남의 학생증으로 들어오기, T는 게시판 내용을 몰래 고치기, R은 "내가 안 그랬다"고 우기기, I는 비밀번호 적힌 쪽지를 흘리기, D는 매점 앞을 막고 서서 아무도 못 사게 하기, E는 학생이 교무실 열쇠를 손에 넣는 것이에요. 여섯 개를 외워 두면 새로운 서비스를 만들 때 "이 여섯 개는 어떻게 막지?"라고 하나씩 점검할 수 있어요.

7.2 한 장으로 정리한 위협과 대응

강의 자료의 마지막 STRIDE 장은 표 하나예요. 왼쪽이 위협, 가운데가 그 위협을 막아 주는 보안 성질, 오른쪽이 실제 기술이에요.

위협 지켜야 할 성질 기술
S Spoofing Authentication
(인증)
비밀번호, 비밀 키, 홍채 인식, 지문, SSL/TLS를 쓰는 PKI, 전자 서명
T Tampering Integrity
(무결성)
해시 함수, 메시지 인증 코드(MAC), 전자 서명
R Repudiation Non-repudiation
(부인 방지)
전자 서명, 감사 로그
I Information Disclosure Confidentiality
(기밀성)
프라이버시를 강화한 프로토콜, 암호화
D Denial of Service Availability
(가용성)
접근 제어 목록(ACL), 접근 필터링, 스로틀링(시스템이 처리할 요청 수를 제한하는 것)
E Elevation of Privilege Authorization
(인가)
최소 권한, 역할과 그룹 소속, 입력값 검증

가운데 열을 세로로 읽어 보세요. 1장에서 배운 다섯 가지 목표가 거의 그대로 다시 나와요. 위협 여섯 개를 막는 방패가 곧 정보보안의 목표라는 뜻이에요.

8. 운영체제는 무슨 일을 하나요?

강의 자료의 정의는 짧아요. 운영체제는 프로그램들의 모음이에요. 하는 일은 두 가지예요.

  • 사용자가 컴퓨터 시스템을 편리하게 쓸 수 있게 해요.
  • 시스템 자원을 효율적으로 관리해요. 자원은 메모리, 프로세서, 입출력 장치, 정보, 네트워크예요.

그림에서는 왼쪽에 사용자가 있고, 가운데 네모가 운영체제이고, 오른쪽에 기억 장치, 프로세서, 입출력 장치, 정보, 네트워크가 동그라미로 둘러싸고 있어요. 화살표는 모두 양방향이에요.

그리고 중요한 한 줄이 나와요. 운영체제는 하드웨어를 제어하는 기능을 제공하는데, 실행해야 할 올바른 요청(Valid Requests)과 실행하면 안 되는 잘못된 요청(Invalid Requests)을 구별할 수 있어야 해요. 자료가 든 예가 메모리에 접근하겠다는 요청이에요.

쉽게 말하면 운영체제는 학교 행정실이에요. 학생이 직접 창고에 들어가 물건을 꺼내 가면 엉망이 되니까, 신청서를 내면 행정실이 "이건 줘도 되는 것", "이건 안 되는 것"을 판단해서 내줘요. 이 글의 뒷부분은 전부 행정실이 어떻게 판단하는가에 대한 이야기예요.

8.1 다섯 명의 관리자

단일 사용자 운영체제 모델을 따르는 보통의 개인용 컴퓨터는 네 명의 주요 서브시스템 관리자로 이루어져요. 네트워크를 지원하는 운영체제라면 한 명이 더 붙어요.

관리자 하는 일
Memory Manager
메모리 관리자
프로그램은 실행되는 동안 코드와 데이터를 담을 메모리가 충분히 필요해요. 프로그램이 메모리를 요청하면 메모리 관리자가 그 요청이 적절한지 확인하고, 올바르면 필요한 메모리를 내줘요.
Processor Manager
프로세서 관리자
프로그램을 실행하려면 프로세서가 코드를 이루는 명령을 하나씩 실행해야 해요. 프로세서 관리자는 명령과 작업이 체계적이고 효율적으로 실행되도록 작업 스케줄링을 하고, 필요에 따라 작업 요청을 받아들이거나 거절해요.
Device Manager
장치 관리자
프린터, 디스크 드라이브, 모뎀, 모니터 같은 시스템 장치를 할당하고 반납해요. 주로 입출력 장치예요.
File Manager
파일 관리자
시스템 안의 데이터, 응용 프로그램, 그 밖의 파일에 대해 사용자별 파일 접근 권한을 정해요. 파일은 이 권한에 따라 할당되고 반납돼요.
Network Manager
네트워크 관리자
네트워크를 통해 접근할 수 있는 자원을 관리해요. CPU, 메모리, 프린터, 디스크 드라이브, 모뎀, 모니터가 대상이에요.

쉽게 말하면 다섯 명을 학교 선생님으로 바꾸면 이래요. 메모리 관리자는 사물함을 배정하는 선생님, 프로세서 관리자는 시간표를 짜는 선생님, 장치 관리자는 프린터와 복사기 사용 순서를 정하는 선생님, 파일 관리자는 도서관에서 누가 어떤 책을 빌릴 수 있는지 정하는 선생님, 네트워크 관리자는 다른 학교와 연락을 주고받는 선생님이에요.

8.2 사용자 명령 인터페이스

UCI(User Command Interface), 흔히 명령줄 인터페이스(CLI, Command-line interface)라고 불러요.

  • 사용자와 시스템 사이의 대화 수단을 제공해요.
  • 전통적인 예가 DOS나 유닉스에서 쓰는 셸(shell)이에요. 커서가 깜빡이면서 명령을 기다려요.

그림에는 왼쪽에 층 구조가 있어요. 맨 위가 응용 프로그램, 가운데가 운영체제이고 그 안에 셸과 커널이 들어 있고, 아래가 저장 자료예요. 오른쪽에는 하드웨어(스캐너, 프린터, 모니터)로 가는 화살표가 있고, 그 옆에는 실제 명령 프롬프트 화면이 붙어 있어요.

9. 윈도우 구조와 인터럽트

커널(kernel)은 운영체제의 가장 기본이 되는 기능을 제공해요. 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스예요.

강의 자료에는 그림이 두 장 있어요.

그림 내용
윈도우 링 구조 동심원이 안에서 바깥으로 하드웨어 → HAL → 마이크로 커널 → 각종 관리자 → 응용 프로그램 순서예요.
윈도우 시스템 구조 위쪽이 사용자 모드예요. 16비트 응용 프로그램, NTVDM, POSIX, 32비트 응용 프로그램, 보안, OS/2가 Win32 서브시스템을 둘러싸고 있어요. 그 아래 시스템 서비스를 경계로 커널 모드가 시작돼요. 커널 모드 안에는 입출력 관리자, 개체 관리자, 보안 참조 관리자, 프로세스 관리자, 로컬 프로시저 호출(LPC) 관리자, 가상 메모리 관리자, 기타 관리자, 그래픽 장치 관리자가 있고, 그 아래에 마이크로 커널(Micro Kernel), 다시 그 아래에 HAL(Hardware Abstraction Layer), 맨 아래가 하드웨어예요.

자료 아래쪽 각주 두 줄이 중요해요.

  • 마이크로 커널은 주로 하드웨어와의 통신을 제어하는, 최소한의 기능만 가진 커널이에요. 예로 ntoskrnl.exe가 있어요.
  • HAL은 하드웨어와 소프트웨어가 매끄럽게 통신하도록 중간에서 이어 주는 역할을 해요.

쉽게 말하면 HAL은 통역사예요. 소프트웨어는 "글씨를 찍어 줘"라고 말하고 싶은데, 프린터 회사마다 알아듣는 말이 달라요. 가운데에서 통역해 주는 사람이 있으면 소프트웨어는 프린터 종류를 몰라도 돼요.

9.1 인터럽트

인터럽트(interrupt)는 컴퓨터가 동작하는 중에 CPU가 즉시 처리해야 할 상황을 감지했을 때 일어나요. 인터럽트가 생기면 이 순서로 처리돼요.

  1. 지금 하던 일을 잠시 멈춰요.
  2. 운영체제의 인터럽트 처리 루틴이 실행돼요.
  3. 인터럽트가 처리돼요.
  4. 시스템이 원래 하던 상태로 돌아와요.

그림으로는 "원래 하던 작업" → "인터럽트 발생" → "중단" → "인터럽트 서비스 루틴 실행" → "복귀" 순서예요. 인터럽트에는 네 종류가 있어요.

언제 생기나요 이름
갑작스러운 정전이나 하드웨어 고장 Machine-check interrupt
운영자나 타이머가 프로그램을 일부러 중단 External interrupt
입출력 작업이 끝났거나 입출력 오류로 CPU가 봐야 할 때 I/O interrupt
프로그램이 보호된 메모리에 접근하려 하거나 잘못된 명령을 실행 Program-check interrupt

쉽게 말하면 수업 중에 화재경보가 울리는 것과 같아요. 하던 수업을 멈추고, 대피 요령대로 움직이고, 상황이 끝나면 교실로 돌아와 하던 데서 이어서 수업해요. 중요한 건 다시 돌아올 자리를 기억해 두는 것이에요. 컴퓨터도 멈추기 전에 하던 위치를 저장해 둬요.

10. 리눅스와 유닉스 구조

강의 자료의 첫 문장이에요. 리눅스와 유닉스 구조는 윈도우 구조보다 훨씬 단순해요. 크게 파일 서브시스템, 장치 드라이버, 프로세스 제어로 나눌 수 있어요. 자료는 또, 여기서 다루는 구조에서 유닉스 커널이 윈도우 커널의 약 3분의 1 크기라고 적어 놨어요.

그림 내용
유닉스 링 구조 안에서 바깥으로 하드웨어 → 커널 → 셸 → 응용 프로그램(데몬) 순서예요. 윈도우보다 층이 적어요.
유닉스 시스템 구조 맨 위에 사용자 프로그램과 라이브러리가 있고, 점선이 사용자 수준과 커널 수준을 가릅니다. 커널 수준 맨 위가 시스템 호출 인터페이스이고, 그 아래 왼쪽에 파일 서브시스템, 오른쪽에 프로세스 제어(프로세스 간 통신, 스케줄링, 메모리 관리)가 있어요. 파일 서브시스템 아래에는 문자와 블록 방식의 장치 드라이버가 있고, 그 아래가 하드웨어 제어, 맨 아래가 하드웨어예요.

10.1 네 부분이 하는 일

  • 프로세스 제어(Process Control)는 프로세스 간 통신, 스케줄링, 메모리 관리를 구현해요.
  • 장치 드라이버(Device drivers)는 윈도우와 비슷하게 하드웨어와 소프트웨어 사이의 통로를 제공해요.
  • 파일 서브시스템(File subsystem)은 하드디스크 같은 저장 장치에서 유닉스 파일을 저장하고 꺼내 와요.
  • 셸(shell)은 응용 프로그램이나 사용자에게서 명령을 받아 커널에 전달해요. 키보드 입력을 인식해서 해당 프로그램을 실행하고, 내장 명령, 입력·출력·오류 방향 바꾸기(리다이렉션), 파이프라인, 조건부와 무조건부 명령 연결, 서브셸 생성, 백그라운드 처리, 셸 스크립트 기능을 제공해요.

쉽게 말하면 셸은 교무실 앞 창구 선생님이에요. 학생이 창구에 대고 "3반 출석부 주세요"라고 말하면, 창구 선생님이 안쪽(커널)에 전달해서 가져다줘요. 학생이 교무실 안으로 직접 들어가지는 않아요.

11. 보호 모드와 링 구조

  • 대부분의 CPU가 보호 모드(Protected Mode)를 지원해요.
  • x86 CPU 구조는 링을 이용한 권한 구조를 써요.
링 누가 사는 곳인가요
Ring 0 (가장 안쪽) OS Kernel, 운영체제 커널
Ring 1, Ring 2 Device Drivers, 장치 드라이버
Ring 3 (가장 바깥) User Applications, 사용자 응용 프로그램

그림은 색깔 다른 동그라미 네 개가 겹쳐 있는 모양이에요. 가운데 초록색이 Ring 0 Kernel, 그 밖의 파란색이 Ring 1, 보라색이 Ring 2(둘 다 Device Drivers), 가장 바깥 빨간색이 Ring 3 Applications예요. 안쪽일수록 권한이 크고, 바깥일수록 권한이 작아요.

자료 아래에 x86에 대한 설명도 있어요. x86 또는 80x86은 인텔이 개발한 마이크로프로세서 계열, 더 넓게는 이 프로세서들과 호환 프로세서가 쓰는 명령어 집합 구조를 가리켜요.

쉽게 말하면 양파를 떠올리면 돼요. 가장 안쪽 알맹이가 제일 중요하고, 껍질이 여러 겹 감싸고 있어요. 바깥 껍질에 있는 프로그램은 안쪽 알맹이를 마음대로 만질 수 없어요. 학교로 바꾸면 Ring 0은 교장실, Ring 3은 운동장이에요. 운동장에 있는 학생이 교장실 서류를 직접 꺼낼 수는 없어요.

12. 사용자 모드와 커널 모드

모드 강의 자료의 설명
커널 모드
Kernel mode
신뢰할 수 있는 운영체제 코드를 실행하기 위한 프로세서의 특별한 모드예요. 메모리 작업과 입출력 작업처럼 중요한 동작은 커널 모드에서만 실행되도록 설계돼요. 그래서 운영체제 코드와 시스템 소프트웨어 코드가 커널 모드에서 실행돼요.
사용자 모드
User mode
사용자 응용 프로그램이 실행되는 곳이에요. 응용 프로그램이 스스로 할 수 있는 일을 제한하려고 이렇게 나눠요. 사용자 모드에서 실행되던 프로세스가 커널 모드에서만 할 수 있는 작업이 필요하면, 커널에게 대신 해 달라고 요청해요. 커널은 그 요청이 올바른지 먼저 확인한 다음에 대신 실행해 줘요.

12.1 모드는 어떻게 구분하나요

사용자 모드와 커널 모드는 프로세서 제어 레지스터의 몇 개 비트로 정해져요. x86 구조에서는 CS 레지스터의 아래 두 비트로 권한 수준을 구분해요.

0 (00)  =  가장 높은 권한 (커널 모드)
3 (11)  =  가장 낮은 권한 (사용자 모드)

CPU는 필요에 따라 두 모드 사이를 오가요. 강의 자료의 그림을 보면, 왼쪽이 User Mode, 오른쪽이 Kernel Mode이고, 가운데 세로선이 경계예요. 커널 모드 쪽 상자에는 H/W Devices, File System, Memory, I/O Manager, CPU, Process Management가 쌓여 있어요. 경계를 넘는 화살표는 두 개예요.

  • 빨간 화살표(사용자 → 커널): 시스템 호출(system call), 예외(exception), 인터럽트 같은 것들이에요.
  • 파란 화살표(커널 → 사용자): 사용자 모드로 복귀, 시스템 호출의 결과 같은 것들이에요.

12.2 특권 명령과 메모리 나누기

사용자 응용 프로그램은 사용자 공간(user space)에서 실행돼요. 커널 공간(kernel space)에 있는 특권 명령이 필요하면, 커널에게 대신 해 달라고 요청해야 해요.

그림은 32비트 컴퓨터의 메모리 구조예요.

주소 범위 무엇이 들어가나요
0xc0000000 ~ 0xffffffff Kernel Space (커널 공간)
0x00000000 ~ 0xc0000000 User Space (사용자 공간)

쉽게 말하면 교실과 교무실이에요. 학생은 교실(사용자 공간)에서 지내고, 성적 입력 같은 중요한 일은 교무실(커널 공간)에서만 할 수 있어요. 학생이 성적을 확인하고 싶으면 교무실에 들어가는 게 아니라 선생님께 부탁해요. 이 부탁이 시스템 호출이에요. 선생님은 "이 학생이 물어봐도 되는 내용인가"를 먼저 확인하고 알려 줘요. 이 확인 절차가 없으면 아무나 남의 성적을 고칠 수 있게 돼요.

13. 시스템 보안: 실제 위협과 방어

강의 자료의 마지막 덩어리예요. 먼저 보안이 무엇인지 다시 정의해요.

보안이란
권한 없는 주체가 저지르는 악의적인 행위를 예방하고, 탐지하고, 대응하는 것이에요.
그리고 권한 있는 주체가 시스템을 오용하거나 남용하는 것을 예방하고, 탐지하고, 대응하는 것이기도 해요.

두 번째 줄이 중요해요. 보안은 바깥의 낯선 사람만 막는 일이 아니에요. 권한을 가진 사람이 그 권한을 잘못 쓰는 것도 보안의 문제예요.

13.1 운영체제만으로는 부족해요

보안 관점에서 운영체제가 해 주는 일은 특권 모드(Privileged mode), 메모리 보호(Memory protection), 파일 접근 권한(File access permissions) 같은 것들이에요. 그런데 강의 자료는 곧바로 한계를 짚어요.

운영체제가 제공하는 기본적인 보안 장치는 완전하지 않아요. 특권 모드, 메모리 보호, 파일 접근 권한은 보통 사용자가 실수로 시스템을 잘못 쓰는 것은 막아 줘요. 하지만 이 기본 장치들만으로는, 일부러 시스템을 파고들려는 악의적인 사용자로부터 시스템을 지키기에 충분하지 않아요.

13.2 위협과 공격

위협 설명
관리자 또는 root 계정에 대한 패스워드 크래킹 비밀번호를 계속 추측해서 알아내는 공격이에요. root는 리눅스와 유닉스에서 가장 권한이 큰 계정이에요.
루트킷, 키로거, 백도어
Rootkits, Keyloggers, Backdoors
루트킷은 침입한 사실을 숨기는 도구이고, 키로거는 키보드 입력을 몰래 기록하고, 백도어는 나중에 다시 들어올 뒷문이에요.
권한 상승 공격
사용자 → 슈퍼유저
버퍼 오버플로, 포맷 스트링 공격, Ret2Libc, ROP 같은 기법이 있어요. 안드로이드 루팅과 iOS 탈옥도 같은 부류예요.
레이스 컨디션
Race conditions
두 작업의 순서가 뒤엉키는 아주 짧은 틈을 노리는 공격이에요.

13.3 방어

방어 설명
Access Control (접근 제어) 누가 무엇에 접근할 수 있는지 정해 두는 것이에요.
Secure Boot (시큐어 부트) 컴퓨터가 켜질 때 정품 소프트웨어만 실행되도록 확인해요.
Stack Guard / Canary 메모리 안에 표시 값을 하나 심어 두고, 그 값이 망가졌으면 공격으로 보고 프로그램을 멈춰요. 광산에서 카나리아 새로 위험을 알아채던 데서 온 이름이에요.
NX Bit, DEP 메모리의 어떤 영역을 실행 금지로 표시해요. 데이터를 넣어 두는 자리에 공격 코드를 심어도 실행되지 않아요.
ASLR 프로그램이 쓰는 메모리 위치를 실행할 때마다 무작위로 바꿔요. 공격자가 "여기를 노리면 된다"고 미리 정해 둘 수 없게 만들어요.
TEE (신뢰 실행 환경)
ARM TrustZone, Intel SGX
칩 안에 따로 분리된 안전한 방을 만들어서, 중요한 코드와 데이터를 거기서만 다뤄요.
Intrusion Detection Systems 침입 탐지 시스템이에요. 이상한 움직임을 찾아내 알려 줘요.
Digital Forensics 디지털 포렌식이에요. 사고가 난 뒤에 남은 흔적으로 무슨 일이 있었는지 밝혀내요. 6장의 책임추적성과 이어져요.

쉽게 말하면 방어 기술을 교실로 옮겨 보면 이래요. 접근 제어는 반마다 들어갈 수 있는 사람을 정해 두는 것, 시큐어 부트는 등교할 때 교복을 확인하는 것, 카나리는 서랍에 종이 한 장을 끼워 두고 누가 열었는지 확인하는 것, NX 비트는 공책에 적힌 글을 명령으로 착각하지 않게 하는 것, ASLR은 사물함 번호를 날마다 바꾸는 것, TEE는 교실 안에 금고를 하나 두는 것이에요.


14. 퀴즈

여섯 문제예요. 답은 바로 아래에 있어요.

  1. CIA 삼각형의 세 가지는 무엇이고, 강의 자료는 여기에 무엇을 두 개 더했나요?
  2. 누가 내 성적을 훔쳐보는 것과 누가 내 성적을 고치는 것은 각각 어떤 성질이 깨진 것인가요?
  3. 보안 침해가 전혀 없었는데도 가용성이 떨어질 수 있나요? 강의 자료의 예로 설명해 보세요.
  4. STRIDE 여섯 글자를 말하고, 각각을 막아 주는 보안 성질을 짝지어 보세요.
  5. x86에서 커널 모드와 사용자 모드는 무엇으로 구분하나요? 각각의 값은 얼마인가요?
  6. 운영체제가 제공하는 특권 모드, 메모리 보호, 파일 접근 권한만으로 충분하지 않은 이유는 무엇인가요?

정답

1. 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)이에요. 여기에 인증(Authentication)과 책임추적성(Accountability)을 더했어요.

2. 훔쳐보는 것은 기밀성, 고치는 것은 무결성이 깨진 거예요.

3. 떨어질 수 있어요. 예매가 몰려 접속이 안 되거나 정부24가 지연되는 것처럼, 수요가 지나치게 몰리거나 시스템 용량이 모자라기만 해도 가용성은 떨어져요.

4. Spoofing은 인증, Tampering은 무결성, Repudiation은 부인 방지, Information Disclosure는 기밀성, Denial of Service는 가용성, Elevation of Privilege는 인가로 막아요.

5. CS 레지스터의 아래 두 비트로 구분해요. 0(00)이 커널 모드로 권한이 가장 높고, 3(11)이 사용자 모드로 권한이 가장 낮아요.

6. 그 장치들은 보통 사용자가 실수로 시스템을 잘못 쓰는 것은 막아 주지만, 일부러 시스템을 파고들려는 악의적인 사용자를 막기에는 충분하지 않기 때문이에요.

15. 용어 사전

용어 뜻
CIA 삼각형 정보보안의 세 가지 기본 목표인 기밀성, 무결성, 가용성
인증 / 인가 인증은 "진짜 본인인가"를 확인하는 것, 인가는 "무엇을 해도 되는가"를 정하는 것
부인 방지 (Non-repudiation) "내가 안 했다"고 발뺌할 수 없게 증거를 남기는 것
해시 함수 입력 데이터에서 길이가 정해진 값을 만들어 내는 함수. 데이터가 바뀌면 값도 바뀐다
MAC 메시지 인증 코드. 비밀 키로 만들어 무결성과 보낸 사람을 함께 확인한다
DoS / DDoS 서비스 거부 공격 / 여러 대를 동원한 분산 서비스 거부 공격
STRIDE 마이크로소프트의 위협 분류 모델. 여섯 가지 위협의 머리글자
커널 (Kernel) 운영체제의 핵심. 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리를 맡는다
셸 (Shell) 사용자나 응용 프로그램의 명령을 받아 커널에 전달하는 부분
HAL Hardware Abstraction Layer. 하드웨어와 소프트웨어 사이를 이어 주는 층
인터럽트 즉시 처리해야 할 상황이 생겼을 때 하던 일을 멈추고 처리한 뒤 돌아오는 구조
시스템 호출 (System call) 사용자 모드 프로그램이 커널에게 일을 대신 해 달라고 요청하는 방법
최소 권한 (Least privilege) 꼭 필요한 만큼의 권한만 주는 원칙
ASLR 메모리 배치를 실행할 때마다 무작위로 바꿔 공격을 어렵게 하는 기법
TEE 신뢰 실행 환경. 칩 안에 분리된 안전한 실행 공간을 두는 기술

16. 참고 문헌

  • Kim, Youngsoo, 「System Security, Lecture 02: Operating System Fundamentals & System Security」, 고려대학교 인공지능사이버보안학과, 2026. 9. 14. (이 글의 원본 강의 자료)
  • 양대일, 『시스템 해킹과 보안』 3판, 한빛아카데미, 2018. yes24 (강의 자료의 References 장에 실린 책)
  • NIST, Computer Security Resource Center Glossary (기밀성, 무결성, 가용성의 공식 정의, 근거는 FIPS 199). csrc.nist.gov / FIPS 199 원문
  • Microsoft, "Threat Modeling Tool threats" (STRIDE 여섯 범주의 공식 설명). learn.microsoft.com (STRIDE는 1999년 마이크로소프트의 Loren Kohnfelder와 Praerit Garg가 고안했어요)
  • Microsoft, "Windows Kernel-Mode HAL Library" (HAL의 정의). learn.microsoft.com
  • Microsoft, "Data Execution Prevention" (DEP의 정의). learn.microsoft.com
  • Crispin Cowan 외, "StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks," 7th USENIX Security Symposium, 1998. usenix.org (스택 카나리의 원 논문)
  • Arm, "TrustZone for Cortex-A." arm.com / Intel, "Software Guard Extensions (SGX)." intel.com
  • Gustavo Duarte, "CPU Rings, Privilege, and Protection" (CS 레지스터의 두 비트가 현재 권한 수준을 담는다는 설명). manybutfinite.com

이 글의 그림 설명과 표는 강의 자료 53쪽을 한 장씩 따라가며 정리했고, 용어의 정의는 위 원문에서 대조했어요. 틀린 부분이 있으면 댓글로 알려 주세요.

'시스템 보안' 카테고리의 다른 글

시스템 보안 3  (0) 2026.10.11
시스템 보안 2-2  (0) 2026.09.28
시스템보안-2  (0) 2026.09.27