디지털 인증서에는 모두가 신뢰할 수 있는 제삼자인 CA와 비대칭키 암호화가 필요.
B는 CA에게 자신이 B임을 증명하고 자신의 공개 키가 B의 공개 키가 맞음을 인증하는 인증서 발급.
A에게 B의 공개키가 포함된 이 인증서를 주면,
이를 받은 A는 자신이 신뢰할 수 있는 CA에게 CA가 진짜 발급한 인증서인지 확인하고,
맞으면 그 인증서에 포함된 B의 공개 키로 데이터를 암호화해서 B에게 전달
만약 최종적으로 B가 올바르게 자신의 개인키로 복호화한다면, CA가 인증하는 B의 공개키에 대응하는 개인키를 가지고 있다는 것이므로, 이 과정을 통해 현재 통신하고 있는 상대방이 B가 맞음을 인증할 수 있음.
대칭키 암호화를 사용하기 위해 안전하지 않는 네트워크 상에서 안전하게 키를 교환할 수 있어야 함.
이러한 역할을 하는 알고리즘을 key exchange, key agreement, key establishment등 여러 이름이지만 여기서는 키 합의 프로토콜이라 함.
비대칭키 암호화인 RSA를 사용한 키 합의 프로토콜. 앨리스는 앞으로 통신에 사용할 세션키를 만들어서 이를 밥의 공개키로 암호화한 다음 밥에게 전송. 밥은 자신의 공개키로 암호화된 세션키를 복호화해서 사용.
밥과 앨리스의 통신 기록을 모두 기록한 앨리스. 추후 밥의 개인키를 알아내어 복호화해서 모든 톻신 기록을 복호화해서 세션키와 세션키를 통한 대화내용을 얻을 수 있음.
현재에만 안전한 것이 아니라 미래에 개인키가 유출되어도 안전하게 하는 보안 목표를 순방향 비밀성(forward secrecy), 완전 순방향 비밀성(perfect forward secrecy, PFS) 이라고 한다. RSA에는 순방향 비밀성이 제공되지 않는다.
안전하지 않은 채널에서 안전하게 세션키를 전달 가능
순방향 비밀성 보장
앨리스와 밥은 통신에 사용할 기저키 공개적으로 정함 - 노란색
각자 비밀키를 정함 - 빨간색, 청록색
각자 비밀키 + 기저키을 하여 공개적으로 전송 - 오렌지색, 파란색
받은 (상대방의 비밀키+기저키) + 자신의 비밀키를 하면 최종 공통키 - 갈색
각자의 비밀키을 즉시 삭제 - 빨간색, 청록색
훗날 밥의 개인 키를 탈취하더라도 얻을 수 있는 것은 힌트뿐이기 때문에 여전히 복호화하지 못함.
세션키를 만드는데에 사용된 비밀키들은 폐기되었기 때문에 세션키 탈취 불가
= 순방향 비밀성 제공
해쉬 함수는 어떤 임의의 데이터를 입력으로 받아서 일정한 길이의 데이터로 바꾸어주는 함수를 말하는데, 이때 나오는 결과인 일정한 길이의 데이터를 해시 또는 해시 값이라고 한다.
암호학적으로 강점을 가지는 요소들을 가진 해시 함수 == 암호학적 해시 함수
대표적인 암호학적 해시 함수 ) SHA-256
전송 중에 메시지가 변경되었을 경우, 해시 값이 다르다면 오염된 메시지임을 확인 가능
수정 또는 변경은 감지할 수 있지만 위조는 감지 못함. → 키있는 해쉬 함수 사용
키 있는 해쉬 함수 종류중 대표적인 메시지 인증 코드(message authentication code, MAC).
메시지 인증 코드 = 대칭키 암호화 개념 + 해쉬 함수
① 송신자 앨리스와 수신자 밥은 사전에 키를 공유해 둔다.
② 송신자 앨리스는 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).
③ 송신자 앨리스는 수신자 밥에게 송금 의뢰 메시지와 MAC 값을 보낸다.
④ 수신자 밥은 수신한 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).
⑤ 수신자 밥은 앨리스로부터 수신한 MAC 값과 계산으로 얻어진 MAC 값을 비교한다.
⑥ 수신자 밥은 2개의 MAC 값이 동일하면 송금 의뢰가 틀림없이 앨리스로부터 온 것이라고 판단한다(인증 성공). 동일하지 않다면 앨리스로부터 온 것이 아니라고 판단한다(인증 실패).
1. 일 방향 해시 함수를 써서 실현
대칭키, 공개키, 비밀 값 등을 이용하여 메시지 다이제스트를 생성하고 검증한다.
2. 블록 암호를 이용한 인증코드
트리플 DES나 AES와 같은 블록 암호를 사용해서 메시지 인증 코드를 실현할 수 있다.블록 암호의 키를 메시지 인증 코드의 공유 키로 사용하고, CBC 모드를 써서 메시지 전체를 암호화한다. 메시지 인증 코드에서는 복호화를 할 필요가 없으므로 마지막 블록만 제외하고 나머지 블록들은 모두 폐기해 마지막 블록만 MAC 값으로 이용.
3. 기타 인증 코드 만들기