호우동의 개발일지

Today :

article thumbnail

공개키

  • C = {M}_앨리스 → 메시지 M을 앨리스의 공개키로 암호화한 것
  • M = [C]_앨리스 → 암호문 C를 복호화해 평문 M으로 만드는 것
  • S = [M]_앨리스→ 앨리스의 개인키로 메시지를 서명한 것
  • 공개키 연산은 누구나 수행할 수 있지만 개인키는 본인만 사용할 수 있다
  • 암호화와 복호화가 상호 역연산인 것처럼 암호화와 서명 또한 역연산 관계

상호 역연산 수식
상호 역연산 수식

 


공개키 인증

  • 공개키 암호를 사용한 인증
    공개키 인증
    • 앨리스만이 유일하게 3번째 메시지 R의 응답에 필요한 개인키 연산을 수행 가능
      → 밥이 앨리스를 인증할 수 있다.

    • 취약점 : 앨리스가 인증에 사용했던 키 쌍을 암호화에도 사용할 때 발생
      1. 앨리스가 공개키로 암호화된 메시지 C = {M}_앨리스를 트루디가 가로챔
      2. 트루디는 밥으로 위장해 C를 2번째 메시지로 앨리스에게 전송
      3. 앨리스는 밥으로 인식하고 그 메시지를 복호화하여 평문 M을 트루디에게 전송
        → 암호화할 때 사용한 키를 서명 목적으로 사용해선 안된다.
      서명과 암호화에는 항상 다른 키 쌍 사용

  • 전자 서명을 사용한 인증
    전자 서명
    • 공개키 암호를 사용하는 것과 똑같은 기능을 수행 가능
    • 취약점 : 트루디가 밥인 것처럼 행동할 수 있다면 앨리스에게 무엇이든 서명하게 가능
      -> 
      서명과 암호화에는 항상 다른 키 쌍 사용

 


세션키

  • 전송되는 데이터를 암호화하는 키, 한 번만 사용하는 키로 사용이 종료되면 폐기된다.
  • 데이터가 특정한 하나의 키로만 암호화되지 않도록 하고, 어떤 세션키가 손상됐을 때 피해를 줄여줌
  • 비밀성이나 무결성을 보호하기 위해 사용할 수 있음
  • 공유 대칭키를 설정하도록 하는 인증 프로토콜
    공유 대칭키
    • 안전한 공개키 인증 프로토콜에 세션키를 포함
    • 취약점 : 상호 인증을 제공하지 않는다.

  • 서명 기반의 인증 및 세션키
    서명 기반
    • 암호화 대신 전자 서명을 사용한 프로토콜 → 상호 인증을 제공
    • 취약점
      • 키가 서명되어 있기 때문에 공개키를 누구든 사용할 수 있고 세션키 K를 알 수 있음
        → 공개적으로 알려져 있는 세션키는 의미 없음

  • 상호인증 및 세션키 - 선서명 후 암호화
    • 상호인증과 안전한 세션키 두 기능을 모두 구현

선서명 후 암호화

 

  • 상호인증 및 세션키 - 선암호화 후서명
    • {R, K} 앨리스와 {R+1, K} 밥의 값은 앨리스 또는 밥의 공개키를 접근할 수 있으면 얻을 수 있음
  • 선암호화 후서명
  • 상호인증에서 선서명 후암호화나 선암호화 후서명이나 보안상 차이는 없다


완전 순방향 비밀성(PFS)

  • 비밀키가 노출되더라도, 이후의 키 분배 과정에서 얻는 세션키의 안정성에 영향을 미칠 수 없어야 한다는 성질
  • 트루디가 암호문을 저장해 두고 장기간에 걸친 모든 비밀을 찾아낼지라도 메시지를 해독할 수 없도록 함
  • PFS를 만족하는 법
    • 대칭키 K_AB를 장기간 공유했다면, 대칭키를 암호화해선 안됨.
    • 세션키 K를 사용 후 그 키를 망각

  • PFS를 위한 일회성 디피-헬먼
    디피 헬먼
    • PFS를 구현하는 가장 간단한 방법으로 키 교환방법으로 구현하는 것
    • 해당 프로토콜에서 g와 p는 공개적
    • 앨리스는 a, 밥은 b를 비밀지수로 선택
    • 과정
      1. 앨리스는 밥에게 g^a * mod(p)를 전송하고 밥은 앨리스에게 g^b*mod(p)를 전송
      2. 앨리스와 밥은 공유된 세션키 K_s = g^(ab) * mod(p)를 계산
      3. 앨리스와 밥은 자신의 비밀지수 a, b를 망각
        → 비밀 지수를 망각하고 나면 앨리스와 밥도 K_s를 복원할 수 없음
        → PFS 특성 만족

      • PFS 특성 + 중간자 공격 극복

 


상호인증, 세션키, PFS

  • PFS 개념의 세션키를 구현하는 상호인증 프로토콜 설계
    PFS 개념 설명을 위한 그림
    • 선암호화 후서명 개념을 변형

 

 


타임스탬프

  • 타임스탬프는 현재시간을 포함 → 시간에 따라 항상 새로운 값을 가짐 → nonce 대체 가능
  • 효율성 향상과 보안 측면에서 중요한 역할을 함
  • 시간 오차를 고려해야 함 → 이러한 작은 차이가 재연 공격을 허용할 수도 있음 → 시간오차 최소화하는 게 좋음
  • 타임스탬프를 사용한 인증(선서명 후암호화)
    • 선서명 후암호화 인증 프로토콜과 동일하지만 필요한 메시지 수를 1/3 줄임

타임 스탬프 이용

 

  • 타임스탬프를 이용한 선암호화 후서명
    • 해당 방식은 취약점이 존재함
      타임스탬프 선암호화 후서명
      • 트루디는 앨리스의 공개키를 사용해 {T, K}_밥을 복원 가능
        • 밥은 트루디가 해독할 수 있는 형태로 키 K를 트루디에게 보냄
        • K가 앨리스와 밥에게 공유된 세션키라서 문제 발생

    • 선암호화 후서명 취약점 개선안
      취약점 개선안
      • 앨리스는 키 K를 이미 알고 있기 때문에 밥이 키 K를 보낼 이유가 없음
      • 첫 번째 메시지의 목적은 밥의 인증을 위함선서명 후암호화 방식선암호화 후서명 방식 보다 더 안전하다.
        → 보안 프로토콜에 있어 어느 것도 당영한 것으로 받아들여서는 안 됨