오프 더 레코드 메시징

**오프 더 레코드 메시징**(, **OTR**)은 인스턴트 메신저 대화에 암호화를 제공하는 암호 프로토콜이다. OTR은 128비트 키 길이의 AES 대칭 키 암호, 1536비트 그룹 크기의 디피-헬먼 키 교환, 그리고 SHA-1 해시 함수를 조합하여 사용한다. OTR은 인증 및 암호화 외에도 전방향 보안과 가변적 암호화를 제공한다.

이 프로토콜의 주된 동기는 대화 내용을 비밀로 유지하면서 대화 참여자들에게 부인 가능 인증을 제공하는 것이었다. 이는 현실 세계의 사적인 대화나 저널리즘의 비보도(오프 더 레코드)와 유사하다. 이는 나중에 통신 사건이나 참여자의 신원을 검증할 수 있는 기록으로 사용될 수 있는 결과물을 생성하는 암호화 도구들과는 대조적이다. 최초의 도입 논문 제목은 "Off-the-Record Communication, or, Why Not To Use PGP"였다.

OTR 프로토콜은 암호학자 이안 골드버그와 니키타 보리소프가 설계하여 2004년 10월 26일에 발표했다. 이들은 프로토콜을 구현하려는 인스턴트 메신저 클라이언트 개발자들을 지원하기 위해 클라이언트 라이브러리를 제공한다. 피진 및 Kopete 플러그인이 존재하여 피진이나 Kopete가 지원하는 모든 IM 프로토콜에서 OTR을 사용할 수 있으며, 일반적인 비암호화 대화를 방해하지 않으면서 OTR이 활성화된 상대와 세션을 시작하는 자동 감지 기능을 제공한다. 프로토콜 버전 4는 소피아 셀리가 이끄는 팀에 의해 2017년부터 개발 중이며, 닉 웅거와 이안 골드버그의 검토를 거쳤다. 이 버전은 온라인 및 오프라인 부인 방지 기능을 제공하고, 암호화 프리미티브를 업데이트하며, 비순차적 전달 및 비동기 통신을 지원하는 것을 목표로 한다.

2014년 12월 28일 슈피겔 기사에 게재된 기밀 NSA 문서에 따르면, NSA가 두 사용자 간의 대화를 가로챘으나 사용자들이 OTR 프로토콜을 사용하고 있었기 때문에 메시지를 해독할 수 없었다.

## 역사
OTR은 2004년 니키타 보리소프, 이안 에이브럼 골드버그, 에릭 A. 브루어에 의해 "전자 사회의 프라이버시 워크숍"(WPES)에서 OpenPGP와 S/MIME 시스템의 개선책으로 제시되었다. 참조 구현의 첫 버전인 0.8.0은 2004년 11월 21일에 발표되었다. 2005년에는 마리오 디 라이몬도, 로사리오 젠나로, 휴고 크라브칙이 여러 취약점을 지적하고 적절한 수정을 제안한 분석 결과가 발표되었는데, 특히 키 교환의 결함이 포함되었다. 그 결과, 제안된 수정 사항을 구현하고 추가로 공개 키를 숨기는 OTR 프로토콜 버전 2가 2005년에 발표되었다. 또한, 메시지 크기가 제한된 채팅 시스템에 대응하기 위해 OTR 메시지를 조각화하는 기능이 도입되었고, 중간자 공격에 대한 더 간단한 검증 방법이 구현되었다.

2007년 올리비에 고파르트는 ejabberd용 `mod_otr`을 발표하여 키 지문을 확인하지 않는 OTR 사용자에게 중간자 공격을 수행할 수 있게 했다. OTR 개발자들은 libotr에 사회주의 백만장자 프로토콜 구현을 도입하여 이 공격에 대응했다. 키 체크섬을 비교하는 대신, 상대적으로 낮은 엔트로피로도 사용 가능한 임의의 공유 비밀 지식을 활용할 수 있게 되었다.

프로토콜 버전 3은 2012년에 발표되었다. 동일한 사용자 주소에 여러 채팅 클라이언트가 동시에 로그인했을 때 세션이 반복적으로 재수립되는 문제를 해결하기 위해, 버전 3에서는 송수신 클라이언트 인스턴스에 대한 더 정확한 식별 레이블이 도입되었다. 또한 다른 데이터 채널에 사용할 수 있는 추가 키 협상 기능이 포함되었다.

여러 참여자가 있는 대화를 지원하기 위한 몇 가지 솔루션이 제안되었다. 2007년 장 비안, 렘지 세커, 우미트 토팔로글루가 제안한 방식은 한 참여자의 시스템을 "가상 서버"로 사용한다. 2009년에 발표된 "다자간 오프 더 레코드 메시징"(mpOTR) 방식은 중앙 관리 호스트 없이 작동하며, 이안 골드버그 등에 의해 Cryptocat에 도입되었다.

2013년에는 OTR 메시징과 Silent Circle Instant Messaging Protocol(SCIMP)을 기반으로 한 시그널 프로토콜이 도입되었다. 이는 주요 신기능으로 비동기 통신("오프라인 메시지") 지원을 가져왔으며, 메시지 순서 뒤바뀜에 대한 더 나은 복원력과 다자간 대화에 대한 더 간편한 지원을 제공했다. 2015년 Conversations라는 안드로이드 XMPP 클라이언트에서 도입된 OMEMO는 시그널에서 사용되는 더블 래칫 알고리즘을 인스턴트 메시징 프로토콜인 XMPP("Jabber")에 통합하고 파일 전송 암호화도 가능하게 했다. 2015년 가을에는 표준화를 위해 XMPP Standards Foundation에 제출되었다.

현재 프로토콜 버전 4가 설계되었다. 이는 소피아 셀리와 올라 비니에 의해 PETS2018에서 발표되었다.

## 구현
OTR은 PGP, GnuPG, X.509(S/MIME)와 같은 일반적인 공개 키 암호화 제품군이 제공하는 기능인 암호화 및 인증 외에도 다음과 같은 덜 일반적인 기능들을 제공한다.

; 전방향 보안: 메시지는 디피-헬먼 키 교환 프로토콜을 사용하여 협상된 임시 메시지당 AES 키로만 암호화된다. 장기 암호화 키가 유출되더라도 공격자가 암호문을 보유하고 있더라도 이전의 대화 내용은 유출되지 않는다.
; 부인 가능 인증: 대화의 메시지에는 디지털 서명이 포함되지 않으며, 대화가 완료된 후에는 누구나 대화 참여자 중 한 명으로부터 온 것처럼 메시지를 위조할 수 있다. 이는 특정 메시지가 특정 사람으로부터 왔음을 증명하는 것을 불가능하게 만든다. 대화 내에서는 수신자가 메시지가 자신이 식별한 사람으로부터 오고 있음을 확신할 수 있다.

## 인증
OTR 3.1부터 프로토콜은 사회주의 백만장자 프로토콜을 통한 공유 비밀을 사용한 사용자의 상호 인증을 지원한다. 이 기능을 통해 사용자는 외부 채널을 통해 공개 키 지문을 수동으로 비교하는 불편함 없이 상대방의 신원을 확인하고 중간자 공격을 피할 수 있다.

## 한계
프로토콜의 제한으로 인해 OTR은 2009년 기준 다자간 그룹 채팅을 지원하지 않으나 향후 구현될 수 있다. 프로토콜 사양 버전 3부터는 인증된 키 교환 중에 다른 채널을 통한 보안 통신(예: 암호화된 파일 전송)에 사용할 수 있는 추가 대칭 키가 도출된다. 암호화된 오디오나 비디오 지원은 계획되어 있지 않다. (그 용도로는 ZRTP를 사용하는 SRTP가 존재한다.) 다자간 오프 더 레코드 메시징(mpOTR) 프로토콜을 제작하기 위한 프로젝트가 Cryptocat, eQualitie, 그리고 이안 골드버그를 포함한 다른 기여자들에 의해 조직되었다.

OTR 프로토콜 v3(libotr 4.0.0)부터 플러그인은 여러 장소에 로그인한 동일한 친구와의 다중 OTR 대화를 지원한다.

## 클라이언트 지원

### 내장 지원 (프로젝트 개발자 지원)
이 클라이언트들은 별도의 설정 없이 오프 더 레코드 메시징을 지원한다(불완전한 목록).

### 제3자 플러그인을 통한 지원
[섬네일| [사회주의 백만장자 프로토콜을 사용한 피진에서의 오프 더 레코드 인증]]
다음 클라이언트들은 오프 더 레코드 메시징을 사용하기 위해 플러그인이 필요하다.
* HexChat, 제3자 플러그인 필요
* 미란다 NG (마이크로소프트 윈도우), 제3자 플러그인 필요
* 피진 (크로스 플랫폼), OTR 홈페이지에서 제공하는 플러그인 필요
* WeeChat, 제3자 플러그인 필요
* HexChat, *nix 버전용 제3자 플러그인 필요

### 구글 토크 "오프 더 레코드"와의 혼동
지메일의 구글 토크가 "오프 더 레코드"(기록하지 않음)라는 용어를 사용하지만, 이 기능은 이 문서에서 설명하는 오프 더 레코드 메시징 프로토콜과 아무런 관련이 없다. 대화는 위에서 설명한 방식으로 암호화되지 않으며, 최종 사용자가 접근할 수 없더라도 구글 내부적으로 기록될 수 있다.

## 같이 보기
* 

## 각주

## 더 읽어보기
* 
* 

## 외부 링크
* 
* Protocol specification
* Off-the-Record Messaging: Useful Security and Privacy for IM , 워털루 대학교에서 이안 골드버그의 강연 (비디오)
* 

분류:암호 소프트웨어
분류:인스턴트 메시징
분류:암호 프로토콜
분류:자유 보안 소프트웨어
분류:크로스 플랫폼 자유 소프트웨어
분류:인터넷 프라이버시 소프트웨어