상위 질문
타임라인
채팅
관점
시그널 프로토콜
위키백과, 무료 백과사전
Remove ads
시그널 프로토콜(Signal Protocol, 이전 명칭: 텍스트시큐어 프로토콜, TextSecure Protocol)은 음성 및 인스턴트 메신저 대화에 단대단 암호화를 제공하는 비연합 암호화 프로토콜이다.[2] 이 프로토콜은 2013년 오픈 위스퍼 시스템즈에서 개발되었으며[2] 나중에 시그널이 된 오픈 소스 텍스트시큐어 앱에 도입되었다. 여러 사유 소프트웨어 응용 프로그램에서 이 프로토콜을 구현했으며, 예를 들어 "전 세계 10억 명 이상의 사람들의 대화"를 암호화한다고 알려진 WhatsApp[3]이나 Google이 메시지 (구글) 앱 사용자 간의 일대일 대화에 RCS 기반 대화를 기본적으로 단대단 암호화하는 것 등이 있다.[4] 페이스북 메신저 또한 선택적 "비밀 대화"에 이 프로토콜을 제공한다고 밝히고 있으며, 스카이프도 "비공개 대화"에 이 프로토콜을 사용한다.
이 프로토콜은 더블 래칫 알고리즘(Double Ratchet Algorithm), 미리 키(즉, 중앙 서버에 미리 업로드된 일회성 임시 공개 키), 그리고 3중 타원곡선 디피-헬먼 (3-DH) 핸드셰이크를 결합하고,[5] Curve25519, AES-256, HMAC-SHA256을 기본요소로 사용한다.[6]
Remove ads
역사
요약
관점
시그널 프로토콜의 개발은 2013년에 트레버 페린과 목시 말린스파이크 (오픈 위스퍼 시스템즈)에 의해 시작되었다. 프로토콜의 첫 번째 버전인 TextSecure v1은 오프 더 레코드 메시징(Off-the-record messaging, OTR)을 기반으로 했다.[7][8]
2014년 2월 24일, 오픈 위스퍼 시스템즈는 Axolotl Ratchet으로 마이그레이션된 TextSecure v2를 출시했다.[9][7][10] Axolotl Ratchet의 설계는 OTR에 의해 도입된 임시 키 교환을 기반으로 하며, 사일런트 서클 인스턴트 메시지 프로토콜(Silent Circle Instant Message Protocol, SCIMP)에 따라 모델링된 대칭 키 래칫과 결합한다.[1] 주요 새 기능으로 비동기 통신("오프라인 메시지") 지원과 메시지 순서 왜곡에 대한 더 나은 복원력, 여러 참가자와의 대화에 대한 더 간단한 지원을 제공했다.[11] Axolotl Ratchet은 비정상적인 자기 치유 능력을 가진 심각한 멸종 위기 수중 도롱뇽인 아홀로틀의 이름을 따서 명명되었다. 개발자들은 세션 키가 손상된 후 공격자가 이후 메시지의 평문에 접근하는 것을 자동으로 비활성화하므로 이 알고리즘을 자가 치유라고 부른다.[1]
프로토콜의 세 번째 버전인 TextSecure v3는 암호화 기본요소와 와이어 프로토콜에 일부 변경 사항을 적용했다.[7] 2014년 10월, 보훔 루르 대학교의 연구원들은 TextSecure v3에 대한 분석을 발표했다.[6][7] 다른 발견 사항 중에서도 그들은 프로토콜에 대한 알려지지 않은 키 공유 공격을 제시했지만, 일반적으로 안전하다고 판단했다.[12]
2016년 3월, 개발자들은 프로토콜 이름을 시그널 프로토콜로 변경했다. 또한 래칫과 전체 프로토콜을 더 잘 구별하기 위해 Axolotl Ratchet을 Double Ratchet 알고리즘으로 변경했다.[13] 이는 일부 사용자들이 전체 프로토콜을 언급할 때 Axolotl이라는 이름을 사용했기 때문이다.[14][13]
2016년 10월년 기준[update], 시그널 프로토콜은 TextSecure v3를 기반으로 하지만 추가적인 암호화 변경 사항이 적용되었다.[7] 2016년 10월, 영국의 옥스퍼드 대학교, 호주의 퀸즐랜드 공과대학교, 캐나다의 맥마스터 대학교 연구원들은 프로토콜에 대한 공식 분석을 발표했으며, 프로토콜이 암호학적으로 안전하다고 결론지었다.[15][16]
프로토콜에 대한 또 다른 감사는 2017년에 발표되었다.[17]
Remove ads
속성
요약
관점
이 프로토콜은 기밀성, 무결성, 인증, 참가자 일관성, 대상 유효성 검사, 전방향 보안, 침해 후 보안 (미래 보안이라고도 함), 인과 관계 보존, 메시지 연결 불가능성, 메시지 부인, 참여 부인, 비동기성을 제공한다.[18] 익명성 보존은 제공하지 않으며, 메시지 중계 및 공개 키 자료 저장을 위해 서버가 필요하다.[18]
시그널 프로토콜은 단대단 암호화 그룹 채팅도 지원한다. 그룹 채팅 프로토콜은 쌍방향 더블 래칫과 멀티캐스트 암호화의 조합이다.[18] 일대일 프로토콜이 제공하는 속성 외에도 그룹 채팅 프로토콜은 스피커 일관성, 순서 왜곡 복원력, 메시지 손실 복원력, 계산적 평등, 신뢰 평등, 하위 그룹 메시징, 그리고 축소 및 확장 가능한 멤버십을 제공한다.[18]
인증
인증을 위해 사용자는 외부 채널을 통해 공개 키 지문을 수동으로 비교할 수 있다.[19] 이를 통해 사용자는 서로의 신원을 확인하고 중간자 공격을 방지할 수 있다.[19] 또한 구현은 상대방의 키가 변경될 경우 사용자에게 알리기 위해 트러스트 온 퍼스트 유스(trust on first use) 메커니즘을 사용할 수도 있다.[19]
메타데이터
시그널 프로토콜은 회사가 사용자가 언제 누구와 통신했는지에 대한 정보를 보유하는 것을 막지 않는다.[20][21] 따라서 메시징 서비스 제공업체가 이 정보를 처리하는 방식에는 차이가 있을 수 있다. 시그널의 개인정보처리방침은 각 메시지를 전송하는 데 필요한 기간 동안만 수신자의 식별자가 시그널 서버에 보관된다고 명시하고 있다.[22] 2016년 6월, 목시 말린스파이크는 디 인터셉트에 다음과 같이 말했다: "시그널 서버가 저장하는 메타데이터에 가장 가까운 정보는 각 사용자가 서버에 마지막으로 연결한 시간이며, 이 정보의 정밀도는 시간, 분, 초가 아닌 일 단위로 줄어든다."[21]
2018년 10월, 시그널 메신저는 시그널에 "봉인된 발신자" 기능을 구현했다고 발표했으며, 이는 발신자 식별자를 숨겨 시그널 서버가 접근할 수 있는 메타데이터의 양을 줄인다.[23][24] 발신자의 신원은 각 메시지에서 수신자에게 전달되지만, 서버가 가지고 있지 않은 키로 암호화된다.[24] 이는 발신자가 수신자의 연락처에 있거나 시그널 프로필에 접근할 수 있는 경우 자동으로 이루어진다.[24] 사용자는 연락처가 아닌 사람 및 시그널 프로필에 접근할 수 없는 사람으로부터 "봉인된 발신자" 메시지를 받도록 옵션을 활성화할 수도 있다.[24] 사용자의 장치 및 시그널 서버에 대한 동시 도청은 장치의 IP 주소가 특정 시간에 메시지를 보내거나 받기 위해 시그널 서버에 접근했음을 여전히 밝혀낼 수 있다.[23]
Remove ads
사용법
오픈 위스퍼 시스템즈는 처음으로 애플리케이션 텍스트시큐어에서 이 프로토콜을 도입했다. 이후 암호화된 음성 통화 애플리케이션인 레드폰을 텍스트시큐어에 병합하고 이름을 시그널로 변경했다.
2014년 11월, 오픈 위스퍼 시스템즈는 각 WhatsApp 클라이언트 플랫폼에 시그널 프로토콜을 통합하여 단대단 암호화를 제공하기 위해 WhatsApp과 파트너십을 발표했다.[25] 오픈 위스퍼 시스템즈는 이미 안드로이드 (운영체제)용 최신 WhatsApp 클라이언트에 프로토콜을 통합했으며, 다른 클라이언트, 그룹/미디어 메시지 및 키 확인에 대한 지원이 곧 제공될 것이라고 밝혔다.[26] 2016년 4월 5일, WhatsApp과 오픈 위스퍼 시스템즈는 WhatsApp의 "모든 형태의 통신"에 단대단 암호화를 추가하는 작업을 완료했으며, 사용자들이 이제 서로의 키를 확인할 수 있다고 발표했다.[27][28] 2017년 2월, WhatsApp은 콘텐츠 보안에 시그널 프로토콜을 사용하는 새로운 기능인 WhatsApp Status를 발표했다.[29] 2016년 10월, WhatsApp의 모회사인 페이스북도 페이스북 메신저에서 시그널 프로토콜 구현을 사용하여 단대단 암호화를 제공하는 비밀 대화라는 선택적 모드를 배포했다.[30][31][32][33]
2015년 9월, G 데이터 소프트웨어는 시그널 프로토콜을 사용하는 시큐어 챗(Secure Chat)이라는 새로운 메시징 앱을 출시했다.[34][35] G 데이터는 2018년 5월에 서비스를 중단했다.[36]
2016년 9월, 구글은 알로라는 새로운 메시징 앱을 출시했는데, 이 앱은 단대단 암호화에 시그널 프로토콜을 사용하는 선택적 "시크릿 모드"를 특징으로 했다.[37][38] 2019년 3월, 구글은 메시지 (구글) 안드로이드 앱에 유리하도록 알로를 중단했다.[39][40] 2020년 11월, 구글은 RCS 기반의 모든 대화에 메시지 (구글) 앱 사용자 간에 기본적으로 단대단 암호화를 제공하기 위해 시그널 프로토콜을 사용할 것이라고 발표했으며, 일대일 대화부터 시작했다.[4][41]
2018년 1월, 오픈 위스퍼 시스템즈와 마이크로소프트는 스카이프의 비공개 대화라는 선택적 모드에 시그널 프로토콜 지원을 추가했다고 발표했다.[42][43]
영향
시그널 프로토콜은 다른 암호화 프로토콜에도 영향을 미쳤다. 2016년 5월, Viber는 자체 암호화 프로토콜이 시그널 프로토콜과 "동일한 개념을 사용"하는 맞춤형 구현이라고 밝혔다.[44][45] Forsta 개발자들은 자신들의 앱이 시그널 프로토콜의 맞춤형 구현을 사용한다고 말했다.[46][47]
시그널 프로토콜의 일부로 도입된 더블 래칫 알고리즘은 다른 프로토콜에서도 채택되었다. OMEMO는 컨버세이션스(Conversations) 메시징 앱에 도입되어 2016년 12월 XMPP Standards Foundation (XSF)에 의해 XEP-0384로 승인된 XMPP 확장 프로토콜(XEP)이다.[48][2] 매트릭스는 더블 래칫 알고리즘 구현을 통해 방 단위로 선택적 단대단 암호화를 제공하는 라이브러리인 Olm을 포함하는 개방형 통신 프로토콜이다.[2] 와이어 개발자들은 자신들의 앱이 더블 래칫 알고리즘의 맞춤형 구현을 사용한다고 밝혔다.[49][50][51]
IETF 제안인 메시징 레이어 시큐리티(Messaging Layer Security)는 비동기 래칫 트리를 사용하여 시그널의 Double Ratchet에 비해 보안 보장을 효율적으로 향상시킨다.[52]
Remove ads
구현
시그널 메신저는 깃허브에서 AGPLv3 라이선스 하에 러스트로 작성된 시그널 프로토콜 라이브러리의 참조 구현을 유지 관리한다. 참조 러스트 구현을 사용하는 Swift, Java, TypeScript, C 및 기타 언어에 대한 바인딩이 있다.
시그널은 이전에 다음과 같은 더 이상 사용되지 않는 라이브러리를 유지 관리했다.
- libsignal-protocol-c: 애플의 앱 스토어에 대한 추가 라이선스 권한이 있는 C로 작성된 라이브러리.
- libsignal-protocol-java: 자바로 작성된 라이브러리.
- libsignal-protocol-javascript: 자바스크립트로 작성된 라이브러리.
같이 보기
- 인스턴트 메시징 프로토콜 비교
- 암호화 라이브러리 비교
각주
참고 자료
외부 링크
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads
