공개키
- C = {M}_앨리스 → 메시지 M을 앨리스의 공개키로 암호화한 것
- M = [C]_앨리스 → 암호문 C를 복호화해 평문 M으로 만드는 것
- S = [M]_앨리스→ 앨리스의 개인키로 메시지를 서명한 것
- 공개키 연산은 누구나 수행할 수 있지만 개인키는 본인만 사용할 수 있다
- 암호화와 복호화가 상호 역연산인 것처럼 암호화와 서명 또한 역연산 관계
공개키 인증
- 공개키 암호를 사용한 인증
- 앨리스만이 유일하게 3번째 메시지 R의 응답에 필요한 개인키 연산을 수행 가능
→ 밥이 앨리스를 인증할 수 있다. - 취약점 : 앨리스가 인증에 사용했던 키 쌍을 암호화에도 사용할 때 발생
- 앨리스가 공개키로 암호화된 메시지 C = {M}_앨리스를 트루디가 가로챔
- 트루디는 밥으로 위장해 C를 2번째 메시지로 앨리스에게 전송
- 앨리스는 밥으로 인식하고 그 메시지를 복호화하여 평문 M을 트루디에게 전송
→ 암호화할 때 사용한 키를 서명 목적으로 사용해선 안된다.
- 앨리스만이 유일하게 3번째 메시지 R의 응답에 필요한 개인키 연산을 수행 가능
- 전자 서명을 사용한 인증
- 공개키 암호를 사용하는 것과 똑같은 기능을 수행 가능
- 취약점 : 트루디가 밥인 것처럼 행동할 수 있다면 앨리스에게 무엇이든 서명하게 가능
-> 서명과 암호화에는 항상 다른 키 쌍 사용
세션키
- 전송되는 데이터를 암호화하는 키, 한 번만 사용하는 키로 사용이 종료되면 폐기된다.
- 데이터가 특정한 하나의 키로만 암호화되지 않도록 하고, 어떤 세션키가 손상됐을 때 피해를 줄여줌
- 비밀성이나 무결성을 보호하기 위해 사용할 수 있음
- 공유 대칭키를 설정하도록 하는 인증 프로토콜
- 안전한 공개키 인증 프로토콜에 세션키를 포함
- 취약점 : 상호 인증을 제공하지 않는다.
- 서명 기반의 인증 및 세션키
- 암호화 대신 전자 서명을 사용한 프로토콜 → 상호 인증을 제공
- 취약점
- 키가 서명되어 있기 때문에 공개키를 누구든 사용할 수 있고 세션키 K를 알 수 있음
→ 공개적으로 알려져 있는 세션키는 의미 없음
- 키가 서명되어 있기 때문에 공개키를 누구든 사용할 수 있고 세션키 K를 알 수 있음
- 상호인증 및 세션키 - 선서명 후 암호화
- 상호인증과 안전한 세션키 두 기능을 모두 구현
- 상호인증 및 세션키 - 선암호화 후서명
- {R, K} 앨리스와 {R+1, K} 밥의 값은 앨리스 또는 밥의 공개키를 접근할 수 있으면 얻을 수 있음
- 상호인증에서 선서명 후암호화나 선암호화 후서명이나 보안상 차이는 없다
완전 순방향 비밀성(PFS)
- 비밀키가 노출되더라도, 이후의 키 분배 과정에서 얻는 세션키의 안정성에 영향을 미칠 수 없어야 한다는 성질
- 트루디가 암호문을 저장해 두고 장기간에 걸친 모든 비밀을 찾아낼지라도 메시지를 해독할 수 없도록 함
- PFS를 만족하는 법
- 대칭키 K_AB를 장기간 공유했다면, 대칭키를 암호화해선 안됨.
- 세션키 K를 사용 후 그 키를 망각
- PFS를 위한 일회성 디피-헬먼
- PFS를 구현하는 가장 간단한 방법으로 키 교환방법으로 구현하는 것
- 해당 프로토콜에서 g와 p는 공개적
- 앨리스는 a, 밥은 b를 비밀지수로 선택
- 과정
- 앨리스는 밥에게 g^a * mod(p)를 전송하고 밥은 앨리스에게 g^b*mod(p)를 전송
- 앨리스와 밥은 공유된 세션키 K_s = g^(ab) * mod(p)를 계산
- 앨리스와 밥은 자신의 비밀지수 a, b를 망각
→ 비밀 지수를 망각하고 나면 앨리스와 밥도 K_s를 복원할 수 없음
→ PFS 특성 만족
- PFS 특성 + 중간자 공격 극복
상호인증, 세션키, PFS
- PFS 개념의 세션키를 구현하는 상호인증 프로토콜 설계
- 선암호화 후서명 개념을 변형
타임스탬프
- 타임스탬프는 현재시간을 포함 → 시간에 따라 항상 새로운 값을 가짐 → nonce 대체 가능
- 효율성 향상과 보안 측면에서 중요한 역할을 함
- 시간 오차를 고려해야 함 → 이러한 작은 차이가 재연 공격을 허용할 수도 있음 → 시간오차 최소화하는 게 좋음
- 타임스탬프를 사용한 인증(선서명 후암호화)
- 선서명 후암호화 인증 프로토콜과 동일하지만 필요한 메시지 수를 1/3 줄임
- 선서명 후암호화 인증 프로토콜과 동일하지만 필요한 메시지 수를 1/3 줄임
- 타임스탬프를 이용한 선암호화 후서명
- 해당 방식은 취약점이 존재함
- 트루디는 앨리스의 공개키를 사용해 {T, K}_밥을 복원 가능
- 밥은 트루디가 해독할 수 있는 형태로 키 K를 트루디에게 보냄
- K가 앨리스와 밥에게 공유된 세션키라서 문제 발생
- 트루디는 앨리스의 공개키를 사용해 {T, K}_밥을 복원 가능
- 선암호화 후서명 취약점 개선안
- 앨리스는 키 K를 이미 알고 있기 때문에 밥이 키 K를 보낼 이유가 없음
- 첫 번째 메시지의 목적은 밥의 인증을 위함선서명 후암호화 방식이 선암호화 후서명 방식 보다 더 안전하다.
→ 보안 프로토콜에 있어 어느 것도 당영한 것으로 받아들여서는 안 됨
- 해당 방식은 취약점이 존재함