본문으로 이동

오프 더 레코드 메시징

위키백과, 우리 모두의 백과사전.

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

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

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

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

역사

[편집]

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

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

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

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

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

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

구현

[편집]

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

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

인증

[편집]

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

한계

[편집]

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

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

클라이언트 지원

[편집]
libotr
개발자OTR 개발 팀
안정화 버전
4.1.1 / 2016년 3월 9일(10년 전)(2016-03-09)
프로그래밍 언어C
운영 체제크로스 플랫폼
종류소프트웨어 라이브러리
라이선스LGPL v2.1+[20]
웹사이트otr.cypherpunks.ca/index.php#downloads

내장 지원 (프로젝트 개발자 지원)

[편집]

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

제3자 플러그인을 통한 지원

[편집]
사회주의 백만장자 프로토콜을 사용한 피진에서의 오프 더 레코드 인증

다음 클라이언트들은 오프 더 레코드 메시징을 사용하기 위해 플러그인이 필요하다.

구글 토크 "오프 더 레코드"와의 혼동

[편집]

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

같이 보기

[편집]

각주

[편집]
  1. 1 2 니키타 보리소프, 이안 골드버그, 에릭 브루어 (2004년 10월 28일). 〈Off-the-Record Communication, or, Why Not To Use PGP〉 (PDF). 《Workshop on Privacy in the Electronic Society》. 2014년 3월 6일에 확인함.
  2. ↑ 이안 골드버그 (2014년 10월 26일). 《[OTR-users] Happy 10th anniversary!》. 2015년 4월 27일에 확인함.
  3. ↑ Sofía Celi; Ola Bini (2019년 2월 15일). “Off-the-Record Messaging Protocol version 4”. 《깃허브》.
  4. ↑ “Add disclaimer · otrv4/otrv4@0c0847e” (영어). 《GitHub》. 2023년 9월 20일에 확인함.
  5. ↑ “Inside the NSA's War on Internet Security”. 2014년 12월 28일.
  6. ↑ 마리오 디 라이몬도; 로사리오 젠나로; 휴고 크라브칙 (2005). 《Secure off-the-record messaging》 (PDF). 《Proceedings of the 2005 ACM Workshop on Privacy in the Electronic Society》 (Association for Computing Machinery). 81–89쪽.
  7. ↑ “Off-the-Record Messaging Protocol version 2”.
  8. ↑ “mod_otr”. 2013년 9월 29일에 원본 문서에서 보존된 문서. 2026년 1월 11일에 확인함.
  9. ↑ Chris Alexander; 이안 에이브럼 골드버그 (February 2007). 〈Improved user authentication in off-the-record messaging〉. 《Proceedings of the 2007 ACM workshop on Privacy in electronic society》 (PDF). New York: Association for Computing Machinery. 41–47쪽. doi:10.1145/1314333.1314340. ISBN 9781595938831. S2CID 17052562.
  10. 1 2 “Off-the-Record Messaging Protocol version 3”.
  11. ↑ Jiang Bian; Remzi Seker; Umit Topaloglu (2007). 《Off-the-Record Instant Messaging for Group Conversation》. IEEE International Conference on Information Reuse and Integration. IEEE. doi:10.1109/IRI.2007.4296601.
  12. 1 2 이안 에이브럼 골드버그; Berkant Ustaoğlu; Matthew D. Van Gundy; Hao Chen (2009). 〈Multi-party off-the-record messaging〉. 《Proceedings of the 16th ACM conference on Computer and communications security》 (PDF). Association for Computing Machinery. 358–368쪽. doi:10.1145/1653662.1653705. hdl:11147/4772. ISBN 9781605588940. S2CID 6143588.
  13. ↑ Nik Unger; Sergej Dechand; Joseph Bonneau; Sascha Fahl; Henning Perl; 이안 에이브럼 골드버그; Matthew Smith (2015). 《SoK: Secure Messaging》 (PDF). 《Proceedings of the 2015 IEEE Symposium on Security and Privacy》 (IEEE Computer Society's Technical Committee on Security and Privacy). 232–249쪽.
  14. ↑ Straub, Andreas (2015년 10월 25일). “OMEMO Encryption”. 《XMPP Standards Foundation website》. 2016년 1월 29일에 원본 문서에서 보존된 문서. 2016년 1월 16일에 확인함.
  15. ↑ Gultsch, Daniel (2015년 9월 2일). “OMEMO Encrypted Jingle File Transfer”. 《XMPP Standards Foundation website》. 2016년 1월 16일에 확인함.
  16. ↑ Sofía Celi; Ola Bini (2018년 7월 21일). 《No evidence of communication: Off-the-Record Protocol version 4》 (PDF). 2018년 11월 29일에 확인함.
  17. ↑ Ian Goldberg (2009년 5월 27일). “multi-party OTR communications? (and other OTR details)”. 《OTR-users mailing list》.
  18. ↑ Nadim Kobeissi (2014년 2월 1일). “mpOTR Project Plan”. 《Cryptocat wiki on GitHub》.
  19. ↑ Ian Goldberg (2012년 9월 4일). “pidgin-otr and libotr 4.0.0 released!”. 《OTR-announce mailing list》.
  20. ↑ “Off-the-Record Messaging”.
  21. ↑ “BitlBee Wiki”. Wiki.bitlbee.org. 2014년 1월 25일. 2014년 5월 15일에 확인함.
  22. ↑ “kopete-otr in KDE for 4.1”. 2008년 3월 28일에 원본 문서에서 보존된 문서.
  23. ↑ “kopete-otr review request”.
  24. 1 2 “OTR Plugin”. Github.com. 2017년 9월 6일에 확인함.
  25. ↑ “Psi+ snapshots”. Github.com. 2017년 9월 6일에 확인함.
  26. ↑ “Tkabber OTR Plugin”. 2014년 3월 11일에 원본 문서에서 보존된 문서.
  27. ↑ “Irssi Changelog - 1.2.0”.
  28. ↑ “Off the record plugin for HexChat”. 《깃허브》. 2021년 12월 2일.
  29. ↑ “Miranda OTR Plugin”.
  30. ↑ “OTR plugin for Pidgin”.
  31. ↑ “OTR plugin for WeeChat”. 《깃허브》. January 2019.
  32. ↑ “TingPing/hexchat-otr” (영어). 《GitHub》. 2017년 3월 14일에 확인함.
  33. ↑ “Chatting off the record - Talk Help”.
  34. ↑ “Google Talk - Privacy Policy”.

더 읽어보기

[편집]

외부 링크

[편집]