[OSTEP] 스터디 23주차 암호화 & 분산 시스템 보안

1. 암호화를 통한 정보 보호

  • OS의 한계: OS는 자신이 통제하는 하드웨어 내에서는 강력하지만, 데이터가 네트워크로 나가거나 하드디스크가 물리적으로 탈취되면 무력해진다.
  • 해결책: 자원을 잃을 것을 가정하고, 적대자가 데이터를 가져가더라도 내용을 읽을 수 없게(기밀성) 하거나 수정 여부를 알 수 있게(무결성) 미리 준비하는 것, 즉 암호화가 필요하다.

Basic Concepts

 

  • 평문(Plaintext): 우리가 읽을 수 있는 원래 메시지($P$).
  • 암호문(Ciphertext): 암호화 알고리즘을 거쳐 읽을 수 없게 된 메시지($C$).
  • 키(Key): 암호화와 복호화 과정을 조절하는 비밀 값($K$).
  • 수식: $C = E(P, K)$ (암호화), $P = D(C, K)$ (복호화).
  • 설계 원칙: 암호 알고리즘($E, D$) 자체는 공개되어도 안전해야 하며, 오직 키($K$)의 비밀성에만 보안을 의존해야 한다 (Kerckhoffs의 원칙).

Symmetric Cryptography (대칭키 암호화)

  • 정의: 암호화와 복호화에 동일한 키를 사용한다.
  • 특징: 계산 속도가 매우 빨라 대량의 데이터를 처리하기에 적합하다 (예: AES).
  • 난제 (Key Distribution Problem): 통신하는 양측이 어떻게 안전하게 키를 공유할 것인가가 가장 큰 문제다. 네트워크를 통해 키를 보내다가 탈취되면 모든 보안이 무너진다.

Asymmetric Cryptography (비대칭키/공개키 암호화)

  • 정의: 서로 수학적으로 연결된 공개키(Public Key)개인키(Private Key) 쌍을 사용한다.
  • 작동 방식: 누구나 알 수 있는 공개키로 암호화하면, 오직 주인만 가진 개인키로만 복호화할 수 있다.
  • 장점: 키 전달 문제가 해결된다. (공개키는 누구에게나 그냥 보내도 되기 때문)
  • 단점: 대칭키 방식보다 훨씬 느리다. 따라서 실무에서는 비대칭키로 '대칭키'를 안전하게 전달한 뒤, 실제 데이터는 그 대칭키로 주고받는 하이브리드 방식을 쓴다.

Cryptographic Hash Functions (암호학적 해시 함수)

 

  • 정의: 임의의 길이를 가진 데이터를 고정된 길이의 짧은 값(지문과 같음)으로 변환한다.
  • 필수 특성:
    • 1. 단방향성: 해시값에서 원래 메시지를 알아내는 것이 불가능해야 한다.
    • 2. 충돌 저항성: 서로 다른 두 메시지가 같은 해시값을 가질 확률이 극도로 낮아야 한다.
  • 용도: 데이터의 무결성(Integrity) 확인. 파일이 1비트라도 바뀌면 해시값이 완전히 달라지기 때문에 변조 여부를 즉시 알 수 있다.

Digital Signatures (디지털 서명)

  • 개념: 비대칭키 암호화와 해시 함수를 결합하여 만든 '전자 인장'다.
  • 과정: 송신자가 메시지의 해시값을 자신의 개인키로 암호화한다. 수신자는 송신자의 공개키로 이를 풀어 해시값을 비교한다.
  • 효과:
    • 1. 인증: 송신자의 개인키로만 만들 수 있으므로 진짜 그 사람이 보냈음을 증명한다.
    • 2. 부인 방지: 보낸 사람이 나중에 "내가 안 보냈다"고 발뺌할 수 없다.

2. Distributed System Security (분산 시스템 보안)

운영체제는 자신의 기계 내 자원만 통제할 수 있다. 분산 시스템에서는 두 가지 큰 문제에 직면한다.

  1. 상대방을 믿을 수 있는가?: 원격 시스템이 우리의 보안 정책을 제대로 지키고 있는지 알 수 없으며, 심지어 신뢰할 수 있는 파트너를 사칭하는 공격자일 수도 있다.
  2. 네트워크를 믿을 수 있는가?: 통신 경로는 공격자가 메시지를 가로채거나, 조작하거나, 재전송(Replay)할 수 있는 '불신의 공간'이다.

The Adversary and the Network (공격자와 네트워크)

네트워크 상의 공격자는 다음과 같은 일을 할 수 있다.

  • 메시지 가로채기(Eavesdropping): 기밀성 침해.
  • 메시지 변조(Alteration): 무결성 침해.
  • 재전송 공격(Replay Attack): 예전에 보낸 유효한 메시지(예: 송금 요청)를 복사해서 나중에 다시 보내기.
  • 서비스 거부(DoS): 메시지를 삭제하거나 지연시켜 가용성 침해.

Authentication in Distributed Systems (분산 인증)

서로 떨어져 있는 기계들이 "너 정말 그 사람 맞아?"를 확인하는 방법이다.

  • 공개키 인증서 (Digital Certificates): 상대방의 공개키가 진짜인지 확인하기 위해 신뢰할 수 있는 제3자(CA, Certificate Authority)가 서명한 보증서이다.
  • X.509 표준: 우리가 브라우저에서 HTTPS를 쓸 때 확인하는 인증서의 표준 규격이다.

Kerberos (커버로스)

분산 시스템 인증의 고전이자 표준이다.

  • 중앙 집중형 인증: KDC(Key Distribution Center)라는 신뢰할 수 있는 서버가 '티켓(Ticket)'을 발행한다.
  • 작동 원리: 사용자가 한 번 로그인하면 KDC로부터 티켓을 받고, 이 티켓을 사용해 다른 여러 서비스(파일 서버, 프린터 등)에 매번 비밀번호를 입력하지 않고도 안전하게 접근한다.

Secure Channels: SSL/TLS

네트워크 상에 암호화된 '안전한 터널'을 만드는 기술이다.

  • 과정:
    • 1. Handshake: 사용할 암호 알고리즘을 합의하고 인증서를 확인한다.
    • 2. Key Exchange: 비대칭키를 이용해 대칭키(세션키)를 안전하게 교환한다.
    • 3. Data Transfer: 이후 실제 데이터는 빠른 대칭키로 암호화하여 주고받는다.