KR102395799B1 - 메신저 서비스를 제공하는 장치 및 방법 - Google Patents

메신저 서비스를 제공하는 장치 및 방법 Download PDF

Info

Publication number
KR102395799B1
KR102395799B1 KR1020150098023A KR20150098023A KR102395799B1 KR 102395799 B1 KR102395799 B1 KR 102395799B1 KR 1020150098023 A KR1020150098023 A KR 1020150098023A KR 20150098023 A KR20150098023 A KR 20150098023A KR 102395799 B1 KR102395799 B1 KR 102395799B1
Authority
KR
South Korea
Prior art keywords
user
chat room
electronic device
server
message
Prior art date
Application number
KR1020150098023A
Other languages
English (en)
Other versions
KR20170006813A (ko
Inventor
김보성
강동훈
강진석
김민균
윤수정
이재영
김남인
이범준
이성미
이형석
한예슬
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150098023A priority Critical patent/KR102395799B1/ko
Priority to US15/205,727 priority patent/US10484347B2/en
Publication of KR20170006813A publication Critical patent/KR20170006813A/ko
Application granted granted Critical
Publication of KR102395799B1 publication Critical patent/KR102395799B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/69Identity-dependent
    • H04W12/75Temporary identity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Theoretical Computer Science (AREA)

Abstract

전자 장치가 개시된다. 전자 장치는 프로세서, 메신저 어플리케이션이 저장되는 메모리, 및 상기 메신저 어플리케이션의 실행 화면이 출력되는 디스플레이를 포함하고, 상기 프로세서는 제1 사용자 계정으로 참여한 복수의 대화방 목록을 상기 디스플레이에 표시하고, 상기 복수의 대화방 목록은 상기 전자 장치에서 참여가 이루어진 제1 대화방과 다른 전자 장치에서 참여가 이루어진 제2 대화방을 포함할 수 있다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.

Description

메신저 서비스를 제공하는 장치 및 방법{Method and Apparatus for Supporting Secure Chat}
본 문서에서 개시되는 실시 예들은, 동일 사용자 계정으로 연동되는 복수의 사용자 단말을 이용하여 메신저 서비스를 제공하는 기술과 관련된다.
PC나 스마트폰과 같은 사용자 단말은 메신저 프로그램을 통해 사용자들 사이의 대화 서비스를 지원할 수 있다. 이러한 메신저 서비스가 발달함에 따라, 대화 당사자를 제외한 제3자가 대화 내용을 확인하지 못하도록 하기 위하여 대화 내용을 암호화 하는 보안 기술도 함께 발달하고 있다. 예를 들어, 대칭 키 또는 비대칭 키를 이용하여 대화 내용을 암호화하는 기술이 활용될 수 있다. 또한, 서버 또는 메시지가 단말에서 단말로 전달되는 중간 과정에서 대화 내용이 공개되지 않도록, 단말에서 암호화/복호화를 수행하는 종단간 암호화(end-to-end) 기술이 활용될 수 있다.
하나의 사용자 계정으로 복수 개의 단말을 사용하게 되면서, 대화 내용이 노출될 가능성이 증가하고 있다. 예를 들어, 사용자가 메신저 어플리케이션을 이용하여 스마트폰으로 대화를 수행하더라도, 동일 메신저 어플리케이션이 설치된 (사용자와 다른 장소에 위치한) PC나 태블릿에서도 대화 내용이 표시 될 수 있다.
이와 같이, 사용자가 여러 단말을 사용하는 경우, 여러 단말에서 대화 내용이 모두 동기화 및 제공되는 지금의 방식은 보안에 취약할 수 있다.
본 문서에서 개시되는 실시 예들은, 전술한 문제 및 본 문서에서 제기되는 과제들을 해결하기 위한 방법 및 전자 장치를 제공할 수 있다.
본 문서에 개시되는 일 실시 예에 따른 전자 장치는, 프로세서, 메신저 어플리케이션이 저장되는 메모리, 및 상기 메신저 어플리케이션의 실행 화면이 출력되는 디스플레이를 포함하고, 상기 프로세서는 제1 사용자 계정으로 참여한 복수의 대화방 목록을 상기 디스플레이에 표시하고, 상기 복수의 대화방 목록은 상기 전자 장치에서 참여가 이루어진 제1 대화방과 다른 전자 장치에서 참여가 이루어진 제2 대화방을 포함할 수 있다
또한, 본 문서에 개시되는 일 실시 예에 전자 장치는, 통신 모듈, 프로세서, 및 제1 사용자의 계정 정보와 연관되는 메신저 어플리케이션이 저장되는 메모리를 포함하고, 상기 프로세서는, 상기 메신저 어플리케이션에서 상기 제1 사용자와 제2 사용자를 포함하는 대화방의 생성을 서버로 요청하고, 상기 제2 사용자의 계정 정보에 대응되는 복수의 제2 사용자 단말들의 공개 키 각각을 이용하여 상기 대화방의 세션 키를 각각 암호화하고, 상기 통신 모듈로 하여금 상기 복수의 제2 사용자 단말들의 공개 키 각각을 이용하여 암호화된 세션 키들을 상기 복수의 제2 사용자 단말들로 전송 요청할 수 있다.
또한, 본 문서에 개시되는 일 실시 예에 따른 메신저 서비스 제공 방법은, 제1 사용자 장치(a first user device)로부터 제1 사용자 및 제2 사용자를 포함하는 대화방의 생성 요청을 수신하는 동작, 상기 제2 사용자에 대응하는 복수의 제2 사용자 장치들(a plurality of second user devices)로 상기 대화방으로의 초대 요청을 전송하는 동작, 상기 복수의 제2 사용자 장치들 중 적어도 하나의 장치(at least one device)로부터 상기 초대 요청을 수락하는 초대 수락 메시지를 수신하는 동작, 및 상기 서버는, 상기 제1 사용자 장치로부터 수신된 대화 메시지가 상기 적어도 하나의 장치만을 통하여 표시되도록, 상기 대화 메시지를 상기 적어도 하나의 장치로 전송하는 동작을 포함할 수 있다.
본 문서에 개시되는 실시 예들에 따르면, 사용자가 동일 사용자 계정으로 복수의 단말을 사용하더라도, 하나의 단말에서만 대화가 이루어지도록 하여 메시지 보안을 높일 수 있다.
또한, 설정에 의해 대화방에 참여가 가능한 단말의 수를 조정하거나, 대화방에 참여하고 있는 단말을 변경할 수 있어서 사용자 편의성을 향상시킬 수 있다.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1은 일 실시 예에 따른 메신저 서비스를 제공하기 위한 네트워크 환경을 나타낸다.
도 2는 일 실시 예에 따른 메신저 서비스를 제공하기 위한 전자 장치의 하드웨어 구성을 나타낸다.
도 3은 일 실시 예에 따른 메신저 서비스를 제공하기 위한 전자 장치의 소프트웨어 구성을 나타낸다.
도 4는 일 실시 예에 따른 사용자 단말의 등록 프로세스를 나타낸다.
도 5는 일 실시 예에 따른 서버와 다수 단말 사이의 공개 키 및 개인 키의 관계를 나타낸다.
도 6은 일 실시 예에 따른 대화방 생성 프로세스를 나타낸다.
도 7은 일 실시 예에 따른 일반 대화방의 보안 대화방 전환 인터페이스를 나타낸다.
도 8은 일 실시 예에 따른 대화방 입장 프로세스를 나타낸다.
도 9는 일 실시 예에 따른 대화방 초대 화면을 나타낸다.
도 10은 일 실시 예에 따른 대화방에서의 메시지 전달 프로세스를 나타낸다.
도 11은 일 실시 예에 따른 동일 사용자의 복수의 장치에서 대화방에 참여하는 프로세스를 나타낸다.
도 12는 일 실시 예에 따른 대화방 목록의 표시 화면을 나타낸다.
도 13은 일 실시 예에 따른 대화방 참여 거부 화면을 나타낸다.
도 14는 일 실시 예에 따른 대화방을 한 단말에서 다른 단말로 이전하는 프로세스를 나타낸다.
도 15는 일 실시 예에 따른 대화방을 이전할 단말을 선택하는 화면을 나타낸다.
도 16은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 17는 다양한 실시 예에 따른 전자 장치 1701의 블록도 1700을 나타낸다.
도 18은 다양한 실시 예에 따른 프로그램 모듈의 블록도를 나타낸다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다", 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B", "A 또는/및 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", "A 및 B 중 적어도 하나", 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 "제1", "제2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성(또는 설정)된"은 하드웨어적으로 "특별히 설계된(specifically designed to)"것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성(또는 설정)된 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시 예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크탑 PC (desktop PC), 랩탑 PC(laptop PC), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라, 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에 따르면 웨어러블 장치는 엑세서리 형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체 형(예: 전자 의복), 신체 부착 형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식 형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에서, 전자 장치는 가전 제품(home appliance)일 수 있다. 가전 제품은, 예를 들면, 텔레비전, DVD 플레이어(Digital Video Disk player), 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 게임 콘솔(예: Xbox™, PlayStation™), 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션(navigation) 장치, 위성 항법 시스템(GNSS(Global Navigation Satellite System)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시 예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시 예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치 (예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 일 실시 예에 따른 메신저 서비스를 제공하기 위한 네트워크 환경을 나타낸다.
일 실시 예에 따른 메신저 서비스를 제공하기 위한 네트워크 환경은 대화방을 생성하는 제1 클라이언트 장치, 대화방에 초대되는 제2 클라이언트 장치, 및 상기 제1 클라이언트 장치와 상기 제2 클라이언트를 중계하는 서버를 포함할 수 있다. 도 1에서 제1 클라이언트 장치는 클라이언트 단말 100에, 서버는 프록시 서버 110, 푸시 시스템 120, 및 메신저 서버 130에 해당할 수 있다. 일 실시 예에서, 프록시 서버 110과 푸시 시스템 120은 메신저 서버 130의 일부를 구성할 수도 있고, 각각의 독립된 서버로 구현될 수도 있다. 일 실시 예에 따르면, 클라이언트 단말 100은 네트워크 10을 통해 메신저 서버 130과 연결될 수 있다. 제2 클라이언트 장치는 제1 클라이언트 장치와 동등하거나 대응되는 구성 요소로 이해될 수 있으므로, 도 1에서는 그 도시를 생략한다.
일 실시 예에 따르면, 다수 장치 서비스(multi-device service)(예: N 스크린 장치(N-screen devices))는, 하나의 사용자 계정을 통해 적어도 일부 기능이 공유되거나 일부 데이터가 동기화될 수 있는 장치에 해당한다. 예를 들어, 클라이언트 단말 100은 하나의 사용자 계정에 대응되는(하나의 사용자 계정으로 로그인되는) 랩탑 101, 데스크톱 102, 웨어러블 장치 103, 태블릿 104, 및 스마트폰 105 중 적어도 하나에 해당할 수 있다. 예를 들어, 태블릿 104와 스마트폰 105에 동일한 메신저 어플리케이션이 설치되어 있고, 각 메신저 어플리케이션에는 제1 사용자 계정이 로그인된 경우, 제2 사용자로부터 대화방 초대 또는 대화 메시지가 수신되면, 태블릿 104와 스마트폰 105 모두 대화방 초대 또는 대화 메시지를 출력할 수 있다. 이하에서는, 도 1에 도시된 네트워크 환경을 구성하는 시스템/구성요소를 설명한다.
일 실시 예에 따르면, 클라이언트 단말 100은 메신저 프로그램(어플리케이션)을 실행하는 장치에 해당할 수 있다. 클라이언트 단말 100은 복수의 N 스크린 장치에 해당할 수 있다. 본 문서에서 클라이언트 단말 100에 대한 설명은 전술한 제1 클라이언트 장치 또는 제2 클라이언트 장치에 대응될 수 있다. 클라이언트 단말 100은 단순하게 전자 장치, 또는 사용자 단말로 참조될 수 있다. 전자 장치의 하드웨어 구성에 대한 예시가 도 2에, 소프트웨어 구성에 대한 예시가 도 3에 각각 도시된다. 또한 전자 장치의 하드웨어 및 소프트웨어에 대한 확장 실시 예가 도 16 내지 도 18을 참조하여 설명된다.
네트워크 10은 Wi-Fi나 셀룰러 네트워크와 같이 서버와 클라이언트 사이를 연결하는 유선 또는 무선 네트워크를 포함한다. 유선 또는 무선 네트워크의 다양한 예시들이 도 16을 참조하여 설명된다.
일 실시 예에 따르면, 프록시 서버(Proxy Server, PS) 110은 클라이언트 단말 100과 TCP(Transmission Control Protocol, 전송 제어 프로토콜) 연결 관리를 담당할 수 있다. 예를 들어, 클라이언트 단말 100과 TCP 연결 관리를 위해 주기적으로 keep-alive message를 주고 받거나, 클라이언트 단말 100과 메신저 서버 130 사이의 데이터 송수신의 중계(relay) 역할을 수행할 수 있다. 또한 클라이언트 단말 100과 TCP 사이의 연결 수립/연결 해제 이벤트를 프록시 서버 110과 연결된 다른 서버들(예: 메신저 서버 130)에 전송하는 기능을 수행할 수 있다. 일 실시 예에 따르면, 프록시 서버 110 없이 클라이언트 단말 100과 메신저 서버 130이 네트워크 10을 통해 직접 연결되는 것도 가능하다. 또한 프록시 서버 110이 메신저 서버 130의 하나의 구성 요소로 포함될 수도 있다. 또한, 프록시 서버 110은 복수의 서버로 구성될 수도 있다.
일 실시 예에 따르면, 푸시 시스템(Push System) 120 또는 푸시 서버는, 예를 들어 GCM(Google Cloud Messaging), SPP(Samsung Push Protocol), 또는 APNS(Apple Push Notification Service)와 같이 푸시 서비스를 제공하는 시스템이다. 푸시 시스템 120은 상기 복수의 서비스를 이용할 수도 있고, 복수의 서버로 구성될 수도 있다.
일 실시 예에 따르면, 메신저 서버(Messenger Server) 130은 대화방(chatting room) 및 메시지 처리와 관련된 기능을 수행할 수 있다. 일 실시 예에 따르면, 메신저 서버 130은 내/외부에 위치한 각종 인프라 시스템(예: RDB, No-SQL, 푸시 시스템 120 등)과 연동하여 대화방 생성, 관리, 및 메시지 송/수신을 수행할 수 있다. 예를 들어, 대화방 라이프사이클(lifecycle) 관리 및 대화방 참여 멤버 관리 기능(예: 대화방 생성, 삭제, 초대, 입장, 퇴장, 강제 퇴장, 방장(host) 권한 위임 또는 방장 변경 등)을 수행할 수 있다. 또한 대화방 멤버들에게 메시지를 전달하는 기능(예: 실시간 전송, 메시지 저장, 복구, 전달 기능)을 수행할 수 있다. 또한 메신저 서버 130은 대화방 멤버들의 사용자 계정 및 사용자 단말과 관련된 각종 이벤트를 수신하고 이벤트 처리(예: 계정 탈퇴, 단말 속성 변경, 단말 등록, 해지 등)를 수행할 수 있다. 이하에서는 메신저 서버 130의 예시적인 구성 요소들을 설명한다. 일 실시 예에서, 메신저 서버 130은 별도의 서버로 구현될 수 있다.
일 실시 예에 따르면, 백엔드 연결 매니저(backend connection manager) 131은 메신저 서버 130과 프록시 서버 110 사이의 연결을 관리할 수 있다. 일 실시 예에 따르면, 대화방 목록 동기화 매니저(chatroom list sync manager) 132는 클라이언트 단말 100에서 대화방 동기화가 요청될 때 메신저 서버 130에 저장된 대화방 리스트를 클라이언트 단말 100과 동기화하는 기능을 수행할 수 있다. 일 실시 예에 따르면, 메시지 복구 매니저(message restore manager) 133은 클라이언트 단말 100으로부터 메시지 복원이 요청되는 경우, 대화방에서 주고 받은 메시지를 복원하는 기능을 수행할 수 있다.
일 실시 예에 따르면, 보안 대화방 매니저(secure chatroom manager) 133은 동일 사용자 계정으로 관리되는 복수의 클라이언트 단말들 중에서 대화방에서 참여한 특정 클라이언트 단말을 관리하는 기능을 수행할 수 있다. 예를 들어, 제1 사용자가 제2 사용자를 초대하여 보안 대화방을 생성한 경우, 제2 사용자 계정에 대응되는 단말은 단말 A, 단말 B, 단말 C와 같이 3개(예: 스마트폰, 태블릿, 노트북)가 있을 수 있다. 제2 사용자가 3개의 단말 중 단말 A(예: 스마트폰)를 이용하여 상기 보안 대화방에 참여하는 경우, 보안 대화방 매니저 133은 상기 단말 A에 대한 관리를 수행할 수 있다. 이하에서 구체적으로 살펴본다.
(1) 보안 대화방 초대 수락 (입장)
일 실시 예에 따르면, 보안 대화방 매니저 134은 단말 A가 보안 대화방에 대한 참여(초대)를 수락한 경우, 보안 대화방 데이터 145의 수락 테이블(accept table)에 초대를 수락한 단말 A를 추가할 수 있다. 또한 보안 대화방 매니저 134은 단말 A의 수락이 발생하면, 현재 보안 대화방에 참여하고 있는 다른 사용자들(예: 제1 사용자) 및/또는 제2 사용자의 다른 단말 B나 C(예: 태블릿, 노트북)로 수락 제어 메시지를 전송할 수 있다. 각 클라이언트는 메시지 서버 130으로부터 다른 단말의 수락에 대한 제어 메시지를 수신할 때마다, 수락 상황을 업데이트할 수 있다. 이 정보는, 예를 들어, 추후에 대화방 세션 키 갱신에 활용될 수 있다. 예를 들어, 제1 사용자 단말은 대화방의 대화 내용을 암호화하는 세션 키를 갱신하고, 제2 사용자의 3개의 단말 중 대화방 참여를 수락한 단말 A에 대응하는 공개 키로 갱신된 대화방의 세션 키를 암호화하고, 이를 메신저 서버 130을 통해 제2 사용자의 단말 A로 전송할 수 있다. 단말 A는 저장하고 있는 개인 키로 암호화된 세션 키를 복호화하고, 획득된 세션 키를 이용하여 대화 내용을 복호화 할 수 있다.
(2) 보안 대화방 초대 수락 취소 (퇴장)
일 실시 예에 따르면, 보안 대화방 매니저 134은 보안 대화방에 참여한 단말 A에서, 또는 참여하지 않은 단말 B나 C에서 수락 취소(예: 대화방 퇴장)가 발생하면, 보안 대화방 데이터 145의 수락 테이블에서 수락 취소된 장치(예: 단말 A)를 제거할 수 있다. 또한 보안 대화방 매니저 134은 단말 A의 수락 취소가 발생하면, 현재 보안 대화방에 참여하고 있는 다른 사용자들(예: 제1 사용자) 및/또는 제2 사용자의 다른 단말 B나 C(예: 태블릿, 노트북)로 수락 취소 제어 메시지를 전송할 수 있다. 각 클라이언트는 메시지 서버 130으로부터 다른 단말의 수락 취소에 대한 제어 메시지를 수신할 때마다, 수락 테이블을 업데이트할 수 있다. 이 정보는 추후에 대화방 세션 키 갱신에 활용될 수 있다.
위의 예시에서 제2 사용자의 단말 A를 기준으로 수락 취소의 실시 예를 설명하였으나, 일 실시 예에 따르면, 제1 사용자의 단말에서도 수락 취소가 발생할 수 있다. 예를 들어, 제1 사용자는 단말 1과 단말 2에 제1 사용자 계정으로 로그인 되어 있고 현재 보안 대화방에는 단말 1로 참여하고 있는 경우, 단말 1 또는 단말 2에서 단말 1의 수락 취소(대화방 퇴장)가 발생하는 경우, 전술한 수락 테이블 변경 및 수락 취소 제어 메시지 발송이 유사한 방식으로 수행될 수 있다. 만약 제1 사용자가 대화방 생성자(또는 방장)인 경우, 대화방 생성자의 권한이 제2 사용자에게 양도될 수 있다.
일 실시 예에서, 수락 테이블은 메신저 서버 130에서 접근할 수 있는, 또는 메신저 서버 130 내에 구성된 데이터베이스 140에 저장될 수 있다. 추가적으로, 클라이언트 단말 100의 저장소에도 수락 테이블이 저장될 수 있다. 서버와 단말에 저장되는 수락 테이블은 서로 동기화될 수 있으며, 데이터의 충돌이 발생하는 경우, 서버에 저장된 수락 테이블이 우선할 수 있다.
일 실시 예에 따르면, 세션 매니저(session manager) 135는 대화방 생성, 대화방 초대, 퇴장, 입장, 대화(채팅), 강제 퇴장과 같은 요청에 따라 대화방에 대한 액세스(접근)이 필요한 경우, 요청된 대화방에 대한 세션을 정의할 수 있다. 세션 매니저 135는 대화 세션에서 대화방을 구성하는 멤버들의 사용자 계정 정보 및 각 멤버들의 TCP 연결 상태와 같은 부가 정보를 관리하고, 대화 세션과 관련된 요청을 처리할 수 있다.
일 실시 예에 따르면, 세션 매니저 135는 세션 키 업데이트 컨트롤러(session key update controller) 136을 포함할 수 있다. 일 실시 예에 따르면, 세션 키 업데이트 컨트롤러 136은 상황에 따른 세션 키 배포를 처리할 수 있다. 구체적인 상황의 예시는 다음과 같다. 설명의 편의 상 대화방을 생성하는 주체는 제1 사용자, 대화방에 초대되는 사용자는 제2 사용자로 가정한다.
(1) 최초 대화방 개설
제1 사용자가, 제1 사용자와 제2 사용자를 멤버로 하는 대화방을 개설한 경우, 제1 사용자 단말은 대화방의 세션 키를 생성할 수 있다. 제1 사용자 단말은 상기 세션 키를 암호화하여 메신저 서버 130으로 제공할 수 있다. 제1 사용자 단말은 세션 키를 제2 사용자의 단말 A, B, 및 C의 공개 키로 각각 암호화할 수 있다. 다시 말해서, 제1 사용자 단말은, 제2 사용자의 단말의 개수만큼 암호화된 세션 키를 생성하고 메신저 서버 130으로 제공할 수 있다. 이 경우, 제1 사용자 단말은 제2 사용자 단말들 각각의 공개 키로 암호화된 세션 키들을 개별적으로 메신저 서버 130으로 전송하거나, 효율성을 위하여 모든 세션 키들을 모아서 한번에 전송할 수 있다. 이 세션 키 전송은 초대 요청과 함께 전달될 수 있다. 각각의 암호화된 세션 키는 제2 사용자의 각각의 단말에서 보유한 개인 키를 통해 복호화될 수 있다.
세션 매니저 업데이트 컨트롤러 136은 초대 요청을 수신할 제2 사용자의 각 단말에 적합한 세션 키를 결정할 수 있다. 메신저 서버 130은 각각의 단말로 각각의 단말의 공개 키로 암호화된 세션 키를 전송할 수 있다.
(2) 신규 사용자 초대
일 실시 예에 따르면, 제1 사용자와 제2 사용자를 포함하는 대화방에, 제3 사용자를 추가할 수 있다. 예를 들어, 제1 사용자의 단말은 기존 대화방 멤버인 제2 사용자의 모든 단말들에 대하여 세션 키 갱신을 수행할 수 있다. 또는, 제2 사용자의 모든 단말 중, 대화방에 참여를 수락한 단말 A에 대해서 세션 키 갱신을 수행할 수 있다. 제1 사용자 단말은 갱신된 세션 키 값을 포함하여 초대하고자 하는 제3 사용자의 모든 연동 단말들로 초대 메시지를 전송 요청할 수 있다. 예를 들어, 세션 매니저 135는 제1 사용자 단말로부터 제3 사용자를 초대하는 요청을 수신하면, 메신저 서버 130에 등록된 제3 사용자의 모든 단말로 초대 메시지를 전송할 수 있다.
(3) 대화방 멤버 강제 퇴장
일 실시 예에 따르면, 제1 사용자가 제2 사용자를 대화방에서 제거하고자 하는 경우, 제1 사용자 단말은 메신저 서버 130으로 제거할 사용자인 제2 사용자의 정보를 포함하여 강제 퇴장 요청을 전송할 수 있다. 이 강제 퇴장 요청과 함께, 또는 강제 퇴장 요청 직후에 제1 사용자 단말은 나머지 멤버(예: 제3 사용자)들의 연동 기기들에 대하여 세션 키 갱신을 수행할 수 있다. 갱신된 세션 키는 제2 사용자의 어떤 단말로도 전달되지 않고, 전달된다 하더라도 제2 사용자 단말의 공개 키로 암호화된 세션 키는 존재하지 않기 때문에 제2 사용자 단말은 강제 퇴장 이후의 대화 내용을 확인할 수 없다.
(4) 대화방 멤버의 자발적 퇴장
메신저 서버 130은, 예를 들어, 제2 사용자의 자발적인 퇴장이 발생하는 경우, 퇴장 이벤트를 대화방에 참여 중인 다른 사용자에게 전달할 수 있다. 대화방의 방장(호스트) 또는 세션 키 갱신 권한을 가지고 있는 사용자(편의상 제1 사용자로 가정한다)는 메신저 서버 130으로부터 제2 사용자의 퇴장 이벤트를 전달받으면, 세션 키를 갱신하고, 갱신된 세션 키를 대화방에 남은 각 사용자 단말의 공개 키로 암호화하고, 메신저 서버 130으로 전송할 수 있다. 일 실시 예에 따르면, 메신저 서버 130은 암호화된 세션 키들을 암호화에 사용된 공개 키에 대응하는 각각의 다른 사용자들의 단말로 전송할 수 있다.
전술한 예시들에서, 임의의 사용자의 대화방 입장/퇴장이 발생할 때마다 세션 키는 갱신되고, 갱신된 세션 키는 대화방에 존재하는 모든 사용자들의 모든 단말로 전송될 수 있다. 그러나 일 실시 예에서, 갱신된 세션 키는 대화방에 존재하는 모든 사용자들의 단말들 중에서, 대화방 초대를 수락한 단말(현재 대화방에 참여중인 단말)로만 전송될 수도 있다.
또한 일 실시 예에서, 세션 키는 입장/퇴장 이벤트에 대응하여 갱신될 수도 있으나, 메시지가 전송될 때마다, 일정 수의 메시지가 전송될 때마다(예: 300개의 메시지마다), 또는 일정 주기(예: 60초)마다 갱신될 수도 있다.
일 실시 예에 따르면, 메시지 매니저(message manager) 137은 클라이언트 단말 100에서 요청되거나 메신저 서버 130 내부에서 생성되는 각종 일반 메시지 또는 제어 메시지를 수신 단말로 전달하는 저장 및 전달(store and forward) 동작을 수행하기 위해 상위 구성 요소에게 저장 동작에 대한 추상화(abstraction)를 제공할 수 있다. 예를 들어, 메신저 서버 130가 제1 사용자 단말에서 제2 사용자 단말로의 메시지 전송 요청을 처리하는 과정에서, 제2 사용자 단말에게 TCP 또는 푸시로 전달하기 전에 메시지 매니저 137를 통해 메시지의 저장을 수행할 수 있다. 이때 메시지 매니저 137은 제2 사용자 단말의 TCP 연결 상태에 따라서 수신함(inbox) 143에 저장할 지, 메신저 서버 130 내에 위치한 in-memory에 캐싱(caching)할지 여부를 판단할 수 있다. 예를 들어, 메시지 매니저 137은 메시지 전달 과정에서 매번 메시지를 수신함 143에 저장하는 대신, 수신 단말이 TCP 연결된 경우에는 in-memory에 일시적으로 캐싱해두고, 수신 단말로부터 수신 확인이 전달되면 in-memory에 캐싱된 데이터를 제거할 수 있다.
일 실시 예에 따르면, 데이터 매니저(data manager) 138은 RDB(relational database) 또는 No-SQL 등의 데이터베이스에 액세스 하는 동작을 담당할 수 있다. 예를 들어, 데이터 매니저 138은 메신저 서버 130 외부로부터 수신되는 쿼리(query)에 대한 처리를 담당할 수 있다.
푸시 매니저(push manager) 139는 클라이언트 단말이 프록시 서버 110과 TCP 연결이 끊어진 경우에 푸시 메시지 전송을 푸시 시스템 120에 요청할 수 있다.
일 실시 예에 따르면, 데이터베이스(database) 140은 메신저/메시지 관련 정보를 저장할 수 있다. 일 실시 예에 따르면, 데이터베이스 140은 메신저 서버 130과 연결되는 별도의 데이터베이스 서버일 수도 있고, 메신저 서버 130의 내부에 구현될 수도 있다.
일 실시 예에 따르면, 데이터베이스 140에는 사용자 정보 141, 장치 정보 142, 수신함 143, 메시지함 144, 보안대화방 데이터 145, 및 보안 저장소 146이 저장 또는 구비될 수 있다. 일 실시 예에 따르면, 사용자 정보 141은 메신저 어플리케이션을 통해 등록된 사용자 계정에 대한 정보를 포함할 수 있다. 일 실시 예에 따르면, 장치 정보 142는 사용자 정보 141에 포함되는 각각의 사용자의 다수의 장치 정보를 포함할 수 있다. 예를 들어, 어떤 사용자는 하나의 장치가 등록될 수 있지만, 다른 사용자는 여러 개의 장치가 동일한 계정으로 메신저 서버 130에 등록될 수 있다.
일 실시 예에 따르면, 수신함(inbox) 143에는 발신 단말로부터 메시지 전송 요청이 접수되었으나 아직 수신 단말로 전달이 완료되지 않은 메시지가 저장될 수 있다. 또는 클라이언트 단말 100에서 삭제되지 않은 메시지가 저장될 수 있다. 일 실시 예에 따르면, 메시지함(msgbox) 144에는 메시지 복원 기능을 위해 사용자 계정이 참여한 대화방의 대화 내용(메시지들)이 저장될 수 있다. 메시지 복원 기능은 사용자 의사에 따라 사용되거나, 기본으로 모든 사용자에게 지원될 수도 있고, 하나의 사용자 계정에 다수의 장치가 등록된 경우에 사용될 수도 있다.
일 실시 예에 따르면, 보안 대화방 데이터(secure chat room data) 145는 보안 대화방 테이블 및 수락 테이블에 대한 정보가 저장될 수 있다. 예를 들어, 보안 대화방 생성, 보안 대화방 삭제, 보안 대화방에 대한 멤버 추가, 보안 대화방에서의 멤버 삭제, 보안 대화방 참여 멤버의 단말 등에 대한 정보가 보안 대화방 테이블/수락 테이블에 기록될 수 있다. 대화방에 참여한 특정 사용자가 대화방 나가기를 요청한 경우 또는 대화방에 참여한 특정 사용자가 사용자 계정 탈퇴를 요청한 경우, 해당 사용자 계정과 관련된 모든 수락 테이블 정보가 삭제될 수 있다. 예를 들어, 만약 대화방에 참여중인 장치의 맵핑이 해제되는 경우(예: 상기 장치가 사용자 계정에서 해제되는 경우), 명시적인 대화방 퇴장이 발생한 것은 아니고 단순한 장치의 해제이므로, 해당 계정과 관련된 수락 테이블에서 해제된 장치의 정보만 삭제될 수 있다.
또한, 보안 대화방에 초대되어 수락 대기중인 사용자 계정에서 초대를 수락한 경우, 해당 사용자 계정과 관련된 수락 테이블에 대해 수락이 발생한 단말 정보가 수락 테이블에 추가될 수 있다. 또한 수락을 통해 보안 대화방에 참여 중인 사용자가 다른 장치에서 간접적으로 또는 수락한 장치에서 직접적으로 수락 취소를 요청한 경우, 해당 계정과 관련된 수락 테이블에 대해 수락이 취소한 장치 정보가 수락 테이블에서 제거될 수 있다.
일 실시 예에 따르면, 보안 저장소 146에는 사용자 계정의 보안 키(예: 공개 키(public key)) 또는 사용자 계정에 대응하는 장치 각각의 보안 키 등 보안 관련 데이터가 저장될 수 있다. 예를 들어, 제2 사용자가 단말 A에서 메신저 서버 130에 계정 정보를 등록하는 경우, 메신저 서버 130은 단말 A의 공개 키를 획득하고, 보안 저장소 146에 저장할 수 있다.
이상의 설명에서, 보안 대화방과 관련되어 설명된 내용은, 일반 대화를 수행하는 경우에도 적용될 수 있다. 또한, 본 문서에 개시되는 실시 예에서, 보안 또는 보안 대화와 관련된 내용은, 사용자 간의 메신저 서비스의 보안을 향상시키기 위한 것이며, 일반적인 대화에 있어서 그 적용을 배제하는 것으로 해석되어서는 안 된다.
도 1에 도시된 메신저 서버 130 및 메신저 서비스 시스템 환경은 예시적인 것이며, 본 문서에 개시되는 실시 예를 구현할 수 있도록 적절한 형태로 변형될 수 있다. 예를 들어, 도 1에 도시된 구성 중 일부 구성이 생략되거나, 당업자에게 자명한 구성이 추가될 수 있다. 일 실시 예에 따르면, 프록시 서버 110, 푸시 시스템 120, 메신저 서버 130, 및 데이터 베이스 140는 하나 또는 그 이상의 장치에 포함될 수 있다. 예를 들어, 프록시 서버 110 및 푸시 시스템 120은 하나의 서버에 포함될 수 있고, 메신저 서버 130 및 데이터 베이스 140은 또 다른 서버에 포함될 수 있다.
일 실시 예에 따르면, 메신저 서버 130에 포함된 매니저 131-139 중 적어도 일부는 클라이언트 단말 100에 포함될 수 있다. 예를 들어, 세션 매니저 135는 클라이언트 단말 100에 포함되고 나머지 매니저 131-134, 137-139는 메신저 서버 130에 포함될 수 있다. 이하에서는 도 2 및 도 3을 참조하여 클라이언트 단말의 동작 환경을 설명한다.
도 2는 일 실시 예에 따른 메신저 서비스를 제공하기 위한 전자 장치의 하드웨어 구성을 나타낸다. 본 문서의 여러 실시 예에서, 클라이언트 단말은 사용자 단말, 또는 단순히 전자 장치로 참조될 수 있다.
전자 장치 200은, 예를 들어 클라이언트 단말 100의 일 예시에 해당할 수 있다. 전자 장치 200의 확장 가능한 실시 예가 도 16 내지 도 18을 참조하여 설명된다.
일 실시 예에 따르면, 전자 장치 200은 제어 모듈 210, 통신 모듈 220, 입력 모듈 230, 출력 모듈 240, 메모리 250, 및 전원 공급부 260을 포함할 수 있다.
제어 모듈 210은, 예를 들어, AP(application processor)와 같은 프로세서에 해당할 수 있다. 일 실시 예에 따르면, 제어 모듈 210은 전자 장치 200에서 동작하는 메신저 어플리케이션을 실행/제어하기 위한 동작 및 및 보안이 요구되는 데이터에 대한 접근 및 처리를 수행할 수 있다.
일 실시 예에 따르면, 통신 모듈 220은 서버(예: 메신저 서버 130)로부터 메시지를 수신하거나, 서버로 메시지를 발송하는 기능을 수행할 수 있다. 또한, 통신 모듈 220은 서버로부터 보안 대화방에 대한 참여 요청을 수신하거나 서버로 전송할 수 있다. 이 외에도 통신 모듈 220은 서버와 사용자 단말 사이에 발생하는 데이터 교환을 수행할 수 있다.
일 실시 예에 따르면, 입력 모듈 230은 사용자로부터 사용자 입력을 수신할 수 있다. 예를 들어, 보안 대화방 생성/수락 입력이나 메시지 작성 입력 등을 수신할 수 있다. 입력 모듈 230은, 예를 들어, 물리 키보드 또는 SIP(software input panel), 또는 디스플레이 242와 함께 구현되는 터치 스크린 패널(touch screen panel, TSP)을 포함할 수 있다.
일 실시 예에 따르면, 출력 모듈 240은 디스플레이 242, 스피커 244, 진동부(vibration unit) 244, 햅틱부(haptic unit) 248 중 하나 이상을 포함할 수 있다. 예를 들어, 메시지가 수신되거나 대화방 초대 알림이 발생하는 경우, 전자 장치 200은 스피커 244를 통해 소리로 알림을 제공하거나, 진동부 244를 이용하여 전자 장치 200에 진동을 발생시킬 수 있다. 또한 대화 내용 또는 초대 알림에 대한 시각적인 알림/메시지를 디스플레이 242를 통해 제공할 수 있다.
일 실시 예에 따르면, 메모리 250은 메신저 어플리케이션 관련 데이터, 메시지 내용, 사용자 계정 정보 등을 저장할 수 있다. 일 실시 예에 따르면, 일부 데이터는 서버에 저장되는 데이터와 동기화될 수 있다. 예를 들어, 일 실시 예에서는 메모리 250에도 수락 테이블이 저장될 수 있다.
일 실시 예에 따르면, 전원 공급부 260은, 예를 들어 배터리나 유선 또는 무선 충전 회로에 해당할 수 있다. 일 실시 예에 따르면, 전원 공급부 260은, 달리 전자 장치 200을 구성하는 하드웨어에 직접 또는 간접적으로 연결되어 전력을 공급할 수 있다.
도 3은 일 실시 예에 따른 메신저 서비스를 제공하기 위한 전자 장치(예: 클라이언트 단말 100)의 소프트웨어 구성을 나타낸다.
도 3을 참조하면, 전자 장치 200의 소프트웨어 동작 환경 300은 어플리케이션 레이어(application layer) 310, 프레임워크 레이어(framework layer) 320, 및 커널 레이어(kernel layer) 330을 포함할 수 있다.
일 실시 예에 따르면, 프레임워크 레이어 320은 커널 레이어 330 상에서 동작할 수 있다. 일 실시 예에 따르면, 프레임워크 레이어 320은 푸시 서비스 매니저(push service manager) 321과 연결 매니저(connection manager) 323을 포함할 수 있다. 일 실시 예에 따르면, 푸시 서비스 매니저 321은 전자 장치 200의 푸시 알림을 처리하는 동작을 수행할 수 있다. 예를 들어, 메신저 서버 130으로부터 전자 장치 200으로 메시지를 전송할 때, 전자 장치 200이 프록시 서버 110에 연결되어 있지 않은 경우, 메신저 서버 130은 푸시 시스템 120을 통해 푸시 알림을 전달할 수 있다. 예를 들어, 통신 모듈 220은 푸시 알림을 수신하면 프레임워크 레이어 320의 푸시 서비스 매니저 321로 전달하고, 푸시 서비스 매니저 321은 이 푸시 알림을 처리할 수 있다. 처리 결과, 전자 장치 200의 설정에 따라서 푸시 알림이 출력 모듈 240을 통해 제공될 수 있다.
일 실시 예에 따르면, 연결 매니저 323은 전자 장치 200과 프록시 서버 110 사이의 TCP 연결을 담당할 수 있다. 일 실시 예에 따르면, 연결 매니저 323은 좀비(zombie) 상태의 채널을 감지하기 위해 keep-alive 동작을 수행할 수 있다. 또한 연결 매니저 323은 채널 자체의 암호화를 담당할 수 있다. 채널 자체의 암호화는, 예를 들어, SSL(Secure Sockets Layer)/TSL(Transport Layer Security)와 같은 TCP 바로 상위 계층의 암호화에 해당할 수 있다.
일 실시 예에 따르면, 메신저 어플리케이션 340은 어플리케이션 레이어 310에서 동작할 수 있다. 메신저 어플리케이션 340은 라이프사이클 모듈(lifecycle module) 341, 버디 모듈(buddy module) 342, 세션 키 모듈(session key module) 343, 프로필 모듈(profile module) 344, 보안 대화 모듈(secure chat module) 345를 포함할 수 있다. 각각의 모듈은 수행하는 기능에 기초하여 정의되는 일 예시이며, 일 실시 예에 따르면, 다른 형태로 구현될 수도 있다.
일 실시 예에 따르면, 라이프사이클 모듈 341은 메신저 서비스 가입 이전에는 접속할 서버 리스트를 획득하고, 가입 이후에는 주기적으로 서버 리스트를 갱신하는 기능을 수행할 수 있다. 또한 가입 과정에서 약관 및 라이선스 처리와 사용자 단말에 대한 인증을 수행할 수 있다. 일 실시 예에서, 클라이언트(사용자 계정)의 라이선스에 따라 일부 기능의 활성화/비활성화를 담당할 수 있다. 그 외에도, 사용자 계정의 탈퇴, 사용자 단말의 맵핑/맵핑 해제와 같은 전반적인 라이프사이클 관련 기능을 담당할 수 있다.
일 실시 예에 따르면, 버디 모듈 342는 대화 상대방의 등록, 삭제, 편집, 조회 또는 그룹 관리 등을 수행할 수 있다. 일 실시 예에 따르면, 세션 키 모듈 343은 대화방에서 사용할 세션 키의 생성, 세션 키 갱신, 공개 키 획득 또는 관리, 세션 키 갱신 사실의 인지 등의 기능을 수행할 수 있다.
일 실시 예에 따르면, 프로파일 모듈 344는 사용자를 포함한 대화 상대방의 이름, 닉네임, 이메일, 또는 프로필 사진 등 각종 개인 정보를 관리할 수 있다. 또한 보안 대화 모듈 345는 보안 대화방의 생성, 삭제, 초대, 수락, 퇴장, 강제 퇴장, 채팅 메시지 전송 요청 또는 채팅 메시지 수신 처리를 수행할 수 있다.
이하에서는 도 4 내지 도 15를 참조하여, 전술한 사용자 단말과 서버 사이의 보안 대화방 생성 및 참여와 관련된 프로세스 및 예시적인 사용자 인터페이스(UI, user interface)를 설명한다.
본 문서에 개시되는 여러 실시 예에서, 대화방은 종단 단말간의 암호화 기능을 이용하여 대화 내용(메시지)을 암호화하여 대화 내용을 전달하는 서버도 해당 대화 내용을 열람할 수 없도록 설정되는 대화방을 의미할 수 있다. 또한 본문에 개시되는 여러 실시 예에서 대화방은 대화 내용이 암호화 되지 않은 대화방을 의미할 수 있다. 본 문서의 여러 실시 예에서는, 동일한 세션 키를 사용하는 대칭 키 방식이 사용될 수 있다. 그러나 일부 실시 예에서는 각 종단 단말의 비대칭 키(예: 공개 키 ? 개인 키)를 이용하여 메시지를 암호화하는 방식이 사용될 수도 있다. 다만 본 문서의 여러 실시 예에서는 대칭 키 타입의 세션 키를 사용하더라도, 각 세션 키는 각 사용자 단말의 공개 키로 암호화되어 전달될 수 있다. 이에 따라, 서버는 세션 키를 획득할 수 없고, 결과적으로 대화 내용을 열람할 수 없다.
일 실시 예에 따르면, 본 문서에서 개시되는 다수 장치 서비스를 지원하는 메신저 어플리케이션은 단말들 사이의 메시지를 동기화할 수 있다. 일 실시 예에 따르면, 메신저 어플리케이션은, 대화방 목록을 동기화할 수 있다. 일 실시 예에 따르면, 메신저 어플리케이션은 메시지 복원이 가능할 수 있다. 예를 들어, 메신저 어플리케이션은 전자 장치 200에서 메시지를 삭제하더라도 일정 시간 내에는 삭제된 메시지를 복원할 수 있다. 일 실시 예에 따르면, 상기 기술된 메신저 어플리케이션의 동작은 하나의 사용자 계정에 둘 이상의 사용자 단말이 등록된 경우에 지원될 수 있으나, 일 실시 예에서는 기본적으로 모든 계정의 단말에 지원될 수도 있다.
도 4는 일 실시 예에 따른 사용자 단말의 등록 프로세스를 나타낸다. 도 4에서 제1 사용자 단말은, 예를 들어, 전자 장치 200에, 서버는, 예를 들어, 메신저 서버 130에 해당할 수 있다.
동작 401에서 제1 사용자 단말은 메신저 어플리케이션을 실행할 수 있다. 동작 401에서의 실행은 메신저 어플리케이션의 최초 실행 또는 메신저 어플리케이션에 사용자 계정이 등록되기 전의 실행에 해당할 수 있다. 또한 일 실시 예에서 동작 401의 실행은 기존의 메신저 어플리케이션의 사용자 계정을 삭제하고 새로운 사용자 계정을 등록하기 위한 실행에 해당할 수 있다.
동작 403에서 제1 사용자 단말은 사용자 계정 정보를 획득할 수 있다. 예를 들어, 제1 사용자 단말은 입력 모듈 230을 통해 사용자의 ID, 이름, 비밀번호, 이메일 주소, 지문 인식 정보 등을 획득할 수 있다.
동작 405에서, 제1 사용자 단말은 획득된 사용자 계정 정보를 서버로 전송할 수 있다. 또한, 제1 사용자 단말은 부가적으로 제1 사용자 단말의 장치 정보를 서버로 전송할 수 있다. 상기 장치 정보에는 제1 사용자 단말의 식별 정보(예: 제품 고유 번호, 모델 명, 모델 번호, IMEI(International Mobile Equipment Identity), 또는 서버와 통신 이력이 있는 경우 서버가 보낸 특정 정보 등)가 포함될 수 있다.
동작 407에서 서버는 제1 사용자 단말로부터 계정 정보 및 장치 정보를 획득할 수 있다. 동작 409에서 서버는 사용자 계정 정보와 장치 정보를 이용하여 새로운 장치인지 여부를 판단할 수 있다. 예를 들어, 서버는 장치 정보가 서버에 한번도 등록된 적이 없는 장치인 경우 새로운 장치로 판단할 수 있다. 또는, 장치 정보가 서버에 등록된 적이 있는 경우라 하더라도, 제1 사용자 계정이 아닌 다른 사용자 계정으로 등록된 경우에는, 제1 사용자 단말을 제1 사용자 계정에 대해 새로운 장치로 판단할 수 있다. 후자의 경우, 서버는 상기 다른 사용자 계정과 연관된 장치 정보에서 상기 제1 사용자 단말의 장치 정보를 삭제할 수 있다.
제1 사용자 단말이 새로운 장치가 아니라고 판단된 경우, 서버는 기존 단말에서 제1 사용자 계정으로 로그인을 시도하는 것으로 판단하여 동작 419에서 사용자 로그인 처리를 수행할 수 있다. 만약 제1 사용자 단말이 새로운 장치로 판단된 경우, 서버는 동작 411에서 제1 사용자 단말로 제1 사용자 단말의 공개 키를 요청할 수 있다. 도시되진 않았지만, 다른 실시 예에 따르면, 제1 사용자 단말이 새로운 장치가 아니라고 판단된 경우에도 서버는 제1 사용자 단말로 제1 사용자 단말의 공개 키를 요청할 수 있다.
동작 413에서 서버로부터 공개 키 요청을 수신하면, 제1 사용자 단말은 동작 415에서 제1 사용자 단말의 공개 키를 서버로 전송할 수 있다. 예를 들어, 제1 사용자의 공개 키와 제1 사용자 단말의 공개 키는 다음과 같은 점에서 구별될 수 있다. 제1 사용자의 공개 키는 제1 사용자의 계정 정보에 연관되어 생성될 수 있다. 서버가 제1 사용자의 계정 정보에 접근하는 경우(예: 로그인) 제1 사용자의 개인 키를 획득할 수 있다. 따라서, 제1 사용자가 어느 장치로 로그인하더라도, 제1 사용자의 공개 키로 암호화된 내용은 복호화 될 수 있다. 그러나 제1 사용자 단말의 공개 키는 제1 사용자 계정 및 제1 사용자 단말의 장치 정보에 연관되어 생성될 수 있고, 제1 사용자 단말이 아닌 제1 사용자의 다른 단말에서는 제1 사용자 계정으로 로그인하더라도 제1 사용자 단말의 개인 키를 획득하지 못할 수 있다. 따라서, 사용자가 스마트폰으로 보안 대화방에서 대화 중인 경우, 동일 계정으로 로그인 된 태블릿에서는 보안 대화 내용을 확인할 수 없을 수 있다.
동작 417에서, 서버는 제1 사용자 단말로부터 공개 키를 수신할 수 있다. 수신된 공개 키는, 예를 들어 보안 저장소 146에 저장될 수 있다. 동작 419에서 서버는 제1 사용자 계정 및/또는 제1 사용자 단말에 대한 등록 처리를 포함하여, 사용자 로그인 처리를 수행할 수 있다. 서버에서 사용자 로그인 처리가 완료되면, 동작 421에서 제1 사용자 단말에서도 로그인이 완료되고, 제1 사용자 계정으로 메신저 어플리케이션을 이용할 수 있다.
도 5는 일 실시 예에 따른 서버와 다수 단말 사이의 공개 키 및 개인 키의 관계를 나타낸다.
일 실시 예에서, 제1 사용자는 다른 단말을 이용하여 도 4의 프로세스를 반복 수행할 수 있다. 예를 들어, 제1 사용자가 스마트폰에 메신저 어플리케이션을 설치하고 사용자 등록을 마친 후에, 태블릿에 대응되는 메신저 어플리케이션을 설치하고 사용자 등록을 시도할 수 있다.
예를 들어, 제1 사용자 계정과 연관된 장치 A 510, 장치 B 520, 및 장치 C 530가 서버 500에 대하여 도 4의 프로세스를 반복 수행한 경우, 서버 500에는 제1 사용자에 대한 보안 저장 공간 501에 제1 사용자의 장치 A, B, 및 C에 대한 공개 키 A, B, 및 C가 저장될 수 있다. 각각의 제1 사용자 장치 A, B, 및 C에는 각각의 공개 키에 대응되는(공개 키로 암호화한 내용을 복호화 할 수 있는) 개인 키 A, B, 및 C가 존재할 수 있다. 제2 사용자가 동일한 동작을 수행하는 경우, 서버 500은 제2 사용자에 대한 보안 저장 공간 502에 제2 사용자의 단말에 대한 공개 키를 같은 방식으로 저장할 수 있다. 예를 들어, 보안 저장 공간 501 또는 502는 전술한 메신저 서버 130의 보안 저장소 146에 해당할 수 있다.
일 실시 예에서, 단말의 비대칭 키(asymmetric key) 대신에 사용자 계정의 비대칭 키가 사용될 수도 있다. 이 경우, 최초 사용자 계정이 생성될 때 제1 단말에서 임의로 비대칭 키(공개 키/개인 키)를 생성하고, 서버에 공개 키를 등록시킬 수 있다. 추후 동일 계정에서 다른 단말인 제2 단말이 등록되는 경우, 이전 제1 단말에서 생성된 개인 키를 등록하려는 제2 단말에게 전달함으로써 이후에 해당 계정을 통한 메시지 송/수신 시 계정의 비대칭 키를 사용한 암/복호화가 가능하다. 이때, 계정의 제1 단말에서 제2 단말로 계정의 개인 키를 전달하기 위한 방법으로써 제2 단말 등록 과정에서 제1 단말의 개인 키 값을 직접 입력하도록 할 수 있다. 일 실시 예에서, 단말의 등록 과정에서 사용자가 직접 개인 키 값을 입력하는 대신, 제1 단말에서 제2 단말로 사용자 계정의 개인 키를 전달할 때 임시적으로 (temporary) 비대칭 키를 사용할 수 있다. 예를 들어, 제2 단말은 임시 공개 키와 임시 개인 키를 생성하여 임시 공개 키를 서버를 통해 제1 단말로 제공하고, 제1 단말은 제2 단말의 임시 공개 키로 사용자 계정의 개인 키를 암호화한 후 이를 다시 제2 단말로 전송하면, 제2 단말은 임시 개인 키로 “임시 공개 키로 암호화된 사용자 계정의 개인 키”를 복호화할 수 있다. 이와 같은 방법을 통해 개인 키를 동일 사용자 계정의 여러 단말들 사이에서 공유하는 것도 가능하다.
도 6은 일 실시 예에 따른 대화방 생성 프로세스를 나타낸다. 도 6은, 예를 들어, 제1 사용자 계정이 서버를 통해 제2 사용자 계정을 포함하는 보안 대화방을 생성하는 프로세스일 수 있다. 또한, 일 실시 예에 따르면, 제1 사용자 계정 및 제2 사용자 계정 외에 추가적으로, 제3 사용자나 제4 사용자와 같이 복수의 사용자 계정을 포함하여 보안 대화방이 생성되는 경우에도 각각의 사용자에 대해 동일한 프로세스가 적용될 수 있다.
동작 601에서 제1 사용자 단말은 제1 사용자와 제2 사용자를 포함하는 보안 대화방 생성 요청을 서버로 전송할 수 있다. 서버는 동작 603에서 제1 사용자 단말로부터 보안 대화방 생성 요청을 수신할 수 있다.
동작 605에서, 서버는 보안 대화방의 구성원인 제2 사용자 계정에 대응되는 복수의 단말(예: 장치 A 610, 장치 B 620, 및 장치 C 630)에 각각 대응되는 복수의 공개 키를 제1 사용자 단말로 전송할 수 있다. 예를 들어, 제2 사용자 계정에 대응되는 단말이 3개인 경우, 서버는 3개의 서로 다른 공개 키를 제1 사용자 단말로 전송할 수 있다.
동작 607에서 제1 사용자 단말은 서버로부터 제2 사용자 단말 각각에 대한 공개 키를 수신할 수 있다. 동작 609에서 제1 사용자 단말은 보안 대화방의 세션 키를 생성하고 동작 611에서 각각의 공개 키로 세션 키를 암호화 할 수 있다. 예를 들어, 위의 예시에서는 3개의 서로 다른 암호화된 세션 키가 생성될 수 있다.
동작 613에서 제1 사용자 단말은 서버로 암호화된 세션 키를 전송할 수 있다. 제1 사용자 단말은 각각의 암호화된 세션 키를 별개로 전송할 수 있고, 또는 하나의 데이터 패킷으로 전송할 수도 있다. 이 경우, 각각의 암호화된 세션 키에 대해서 대응되는 제2 사용자 단말의 정보가 데이터 패킷에 포함될 수 있다.
동작 615에서 서버는 암호화된 세션 키를 수신할 수 있다. 동작 617에서 서버(예: 보안 대화방 매니저 134)는 보안 대화방을 생성하고, 생성에 대한 사실을 제1 사용자 단말로 전송할 수 있다. 동작 619에서 서버는 제2 사용자 계정에 대응되는 각각의 단말, 즉 장치 A, 장치 B, 및 장치 C로 대화방 입장 요청을 전송할 수 있다. 이 경우, 서버는 대화방 입장 요청과 함께 각각의 단말로 각 단말에 대응되는 암호화된 세션 키를 전송할 수 있다. 또는, 서버는 대화방 입장 요청을 수락한 제2 사용자 계정에 대응되는 단말에만 해당 단말의 공개 키로 암호화된 세션 키를 전송할 수도 있다.
도 6에 도시된 프로세스는 예시적인 것이며, 변형 가능하다. 예를 들어, 프로세스는 동작 603에서 동작 617 및 동작 619로 진행할 수 있다. 이 상태에서 임의의 제2 사용자 단말(예: 장치 B 620)로부터 대화방 참여 수락 요청이 수신되면, 서버는 장치 B 620에 대한 공개 키만 제1 사용자 단말로 전송하고, 제1 사용자 단말은 장치 B 620에 대한 암호화된 세션 키를 생성하여 서버로 전달할 수 있다. 서버는 다시 장치 B 620으로 암호화 된 세션 키를 전달하고, 장치 B는 장치 B의 개인 키로 암호화된 세션 키를 복호화 하여 대화 내용을 확인할 수 있다.
또한, 변형된 일 실시 예에서, 동작 605 및 607은 생략되거나, 혹은 미리 수행되어 있을 수 있다. 예를 들어, 제1 사용자 단말은 메신저 어플리케이션에 등록된 제1 사용자의 대화 상대들의 등록된 단말의 모든 공개 키를 미리 서버로부터 수신하여 제1 사용자 단말의 메모리(예: 보안 저장부 252)에 저장했을 수 있다. 이 경우 보안 대화방 생성 시 동작 605 및 동작 607은 생략될 수 있다.
도 7은 일 실시 예에 따른 일반 대화방의 보안 대화방 전환 인터페이스를 나타낸다.
일 실시 예에서, 제1 사용자(me)와 제2 사용자(user 2)를 포함하는 일반 대화방이 개설될 수 있다. 일반 대화방의 경우, 예를 들어, 종단 암호화가 적용되지 않거나, 전술한 보안 대화방의 사용자 단말 기반의 암호화 방식이 아닌 다른 암호화 방식(예: 사용자 계정 기반의 암호화)가 적용될 수 있다. 일 실시 예에 따르면, 만약 일반 대화방이 개설된 상태에서, 제1 사용자가 현재의 일반 대화방을 보안 대화방(예: 대화 내용이 암호화되어 전송되는 대화방)으로 전환하기 위한 비밀 대화 메뉴 710을 선택한 경우, 도 6의 프로세스가 수행될 수 있다. 그 결과, 일반 대화방에서의 대화 내용은 제2 사용자 계정에 대응되는 장치 A, B, 및 C에서 모두 확인이 가능하였으나, 보안 대화방으로 전환된 후에는, 대화방 입장 요청을 수락한 장치에서만 대화 내용이 확인 가능할 수 있다.
위 실시 예에서, 보안 대화방으로 전환되기 전의 대화 내용에 대한 암호화는 상대적으로 보안이 낮을 수 있다. 예를 들어, 악의적인 사용자가 사용자의 단말에 대화 내용을 해킹하는 프로그램을 설치한 경우, 해킹되어 탈취된 일반 대화방의 대화 내용은 판독이 가능하지만, 보안 대화방의 대화 내용은 암호화되어 있어 판독이 불가능할 수 있다 그러나 일반 대화방에서 보안 대화방으로 중간에 대화방의 속성이 전환되는 경우, 일반 대화방일 때 교환된 대화 내용은 여전히 탈취될 가능성이 있다. 이 경우, 사용자는 나가기 메뉴 720을 통해 일반 대화방을 빠져 나와 일반 대화방의 대화 내용을 완전히 삭제하고, 새롭게 보안 대화방을, 예를 들어, 도 6의 프로세스에 따라 개설할 수 있다. 일 실시 예에 따르면, 전술한 메시지 복원 기능을 통해 제1 사용자와 제2 사용자 사이의 대화 내용을 서버로부터 다운받고, 보안 대화방의 세션 키를 통해 다시 암호화 하여 메신저 보안을 향상시킬 수 있다.
도 8은 일 실시 예에 따른 대화방 입장 프로세스를 나타낸다. 일 실시 예에 따르면, 도 8의 프로세스는 도 6의 프로세스 619에 후속하여 서버와 제2 사용자 단말 사이에서 진행되는 프로세스로 이해될 수 있다. 도 8에서 서버 800은, 예를 들어, 전술한 메신저 서버 130에 해당할 수 있고, 장치 A 810, 장치 B 820, 및 장치 C 830 각각은, 예를 들어, 제2 사용자 단말인 장치 A 610, 장치 B 620, 및 장치 C 630에 대응될 수 있다. 또한 도 8에 도시된 제2 사용자 단말에는, 예를 들어, 도 2, 3에 도시된 전자 장치의 구성이 역시 적용될 수 있다.
동작 801에서, 서버 800은 장치 A 810, 장치 B 820, 및 장치 C 830으로 대화방 초대 메시지(입장 요청)를 전송할 수 있다. 동작 803에서, 대화방 초대 메시지를 수신한 각각의 제2 사용자 장치는 디스플레이(예: 디스플레이 242)에 대화방에 대한 초대 메시지나 초대 알림 팝업과 같은 초대 UI를 디스플레이 할 수 있다. 예를 들어, 도 9의 화면 900과 같은 UI가 디스플레이 될 수 있다. 도 9를 참조하면, 화면 900에는 비밀 대화방의 이름(title) 910, 비밀 대화방에 대한 안내 920(예: 단말에서 메시지가 암호화 됨, 메시지 복사/공유/전달이 제한됨, 스크린 캡처가 제한됨, 또는 대화방 참여 가능 시간 제한 등), 및 비밀 대화방에 참여를 수락하는 비밀 대화 참여 메뉴 930을 포함할 수 있다. 도 9에 도시된 화면 900은 예시적인 것이며, 다양한 형태로 변형될 수 있다. 예를 들어, 다른 프로그램(어플리케이션)이 실행된 상태나 홈 화면(home screen) 등에서 팝업과 같은 메뉴로 대화방 수락 요청 UI가 제공될 수 있다.
동작 805에서, 장치 B 820에서 대화방에 대한 초대가 수락된 경우, 동작 807에서 장치 B 820은 서버 800으로 초대 수락 메시지를 전송할 수 있다. 이 상태에서, 일 실시 예에 따르면, 장치 A 810과 장치 C 830에 디스플레이 된 초대 UI는 유지될 수 있다.
서버 800은 초대 수락 메시지를 수신하면, 동작 809에서 초대 수락 메시지를 전송한 장치를 확인할 수 있다. 동작 811에서 서버 800은 데이터베이스를 업데이트할 수 있다. 여기서 데이터베이스는 보안 대화방 데이터 145에 저장되는 수락 테이블일 수 있다. 예를 들어, 서버 130은 보안 대화방 데이터 145에 저장된 수락 테이블에, 수락 장치로 장치 B 820에 대한 정보를 추가(등록)할 수 있다.
동작 813에서, 서버 800은 장치 B로 암호화된 세션 키를 전송할 수 있다. 여기서 세션 키는 장치 B의 공개 키로 암호화된 세션 키에 해당한다. (동작 611 참고) 장치 B 820은 이후, 장치 B의 개인 키를 이용하여 세션 키를 복호화 하고, 서버 800으로부터 수신되거나 서버 800으로 전송하는 메시지를 이 세션 키를 이용하여 복호화/암호화 할 수 있다.
동작 815에서 서버는 장치 A 810 및 장치 C 830으로 다른 장치(장치 B)에서 대화방에 입장하였음을 나타내는 입장 메시지를 전송할 수 있다. 장치 A와 장치 C는 이 메시지를 수신하면, 동작 817에서 초대 UI를 제거할 수 있다. 만약 이후에 장치 A나 장치 C에서, 대화방 목록 중 장치 B에서 참여한 보안 대화방 목록을 선택하는 경우, 도 13에 도시된 것과 같은 입장 거부 메시지(또는, 이미지)가 출력될 수 있다.
일 실시 예에 따르면, 도 8의 프로세스는 변형될 수 있다. 예를 들어, 동작 813에서 장치 A 810과 장치 C 830으로도 각각의 공개 키로 암호화된 세션 키가 전달될 수 있다. 다만, 장치 A 810와 장치 C 830는 보안 대화방 참여를 수락한 장치가 아니기 때문에, 예를 들어, 장치 A 810와 장치 C 830는 암호화된 세션 키 및 대화 내용에 대한 복호화를 수행하지 않을 수 있다. 장치 A 810와 장치C 830는, 예를 들어, 저장하는 작업만 수행할 수 있다. 이와 관련하여, 도 10을 참조하여 설명한다.
도 10은 일 실시 예에 따른 대화방에서의 메시지 전달 프로세스를 나타낸다. 도 10은 제1 사용자 계정에서 서버를 통해 제2 사용자 계정으로 메시지를 전달하는 프로세스일 수 있다.
동작 1001에서, 제1 사용자 단말에서 대화 메시지 입력이 발생할 수 있다. 예를 들어, 입력 모듈 230을 통해 메시지가 입력될 수 있다.
동작 1003에서, 제1 사용자 단말은 대화방의 세션 키를 이용하여 메시지를 암호화 할 수 있다. 동작 1005에서, 제1 사용자 단말은 세션 키로 암호화된 메시지를 서버로 전송할 수 있다.
동작 1007에서, 서버는 암호화된 메시지를 수신할 수 있다. 서버는 각 사용자 단말의 공개 키 또는 공개 키로 암호화된 세션 키를 보유하고 있으나, 개인 키는 보유하고 있지 않을 수 있다. 이에 따라, 복호화를 통해 세션 키를 확보할 수 없을 수 있다. 따라서, 서버는 세션 키로 암호화된 메시지를 획득하더라도, 메시지를 복호화 할 수 없을 수 있다.
동작 1009에서, 서버는 등록된 제2 사용자의 단말 중 보안 대화방에 참여하고 있는 장치를 확인할 수 있다. 예를 들어, 서버는 제2 사용자의 단말 중 장치 B가 보안 대화방에 참여한 경우(예: 장치 B에서 최초에 보안 대화방에 대한 초대 요청이 수락된 경우), 또는 수락 테이블에 장치 B가 등록되어 있는 경우, 장치 B를 보안 대화방에 참여하고 있는 장치로서 확인할 수 있다. 동작 1011에서, 서버는 확인된 장치 B로 암호화된 메시지를 전송할 수 있다.
동작 1013에서, 장치 B는 서버로부터 암호화된 메시지를 수신할 수 있다. 동작 1015에서, 장치 B는 장치 B의 개인 키를 통해 획득된 세션 키를 이용하여 메시지를 복호화할 수 있다. 동작 1017에서, 장치 B는 복호화된 메시지를 장치 B의 디스플레이에 출력할 수 있다.
일 실시 예에 따르면, 수락 테이블에 등록되지 않은 장치 A로는 암호화된 메시지가 전송되지 않을 수 있다. 다른 실시 예에 따르면, 수락 테이블에 등록되지 않은 장치 A로 암호화된 메시지가 전송될 수 있다. 동작 1011에서 암호화된 메시지가 장치 A로도 전송될 수 있다. 이 경우, 서버는 장치 A로 암호화된 메시지를 저장하고, 복호화를 금지하는 제어 메시지를 전송할 수 있다. 이 제어 메시지는 암호화된 메시지의 수신에 대한 알림을 금지하는 명령도 포함할 수 있다. 동작 1019에서 장치 A는 암호화된 메시지를 수신할 수 있다. 동작 1021에서 장치 A는 단순히 수신된 메시지를 저장할 수 있다. 즉, 장치 A는 암호화된 메시지를 수신하고 있고, 세션 키도 보유할 수 있지만 메시지의 수신을 알리거나 메시지를 복호화하여 디스플레이에 표시하지는 않기 때문에 사용자는 참여 수락 장치(예: 장치 B)가 아닌 장치 A에서는 보안 대화방의 내용을 확인할 수 없을 수 있다.
예를 들어, 동작 1013 내지 1017만 수행하는 경우와 동작 1019와 1021이 같이 수행되는 경우를 비교하면, 전자의 경우가 더 높은 보안을 제공할 수 있다. 후자의 경우에는 사용자는 보안 대화방의 내용을 확인할 수 없지만 악의적인 프로그램 등에 의해 대화 내용이 탈취될 수 있다. 그러나 도 11에서 설명되는 복수의 장치에서 참여 수락이 가능한 경우, 또는 도 14에서 설명되는 보안 대화방을 다른 장치로 이전하는 경우 등에 있어서, 장치 A는 이미 대화 내용을 보유하고 있고 서버는 복호화 및 디스플레이를 허용하는 제어 메시지만 전송하면 되기 때문에, 예를 들어, 효율성이 증가할 수 있다.
도 11은 일 실시 예에 따른 동일 사용자의 복수의 장치에서 대화방에 참여하는 프로세스를 나타낸다. 도 11은 제1 사용자 계정의 다른 단말(예: 단말 1)에서 이미 보안 대화방에 대한 참여 수락이 발생하였는데, 제1 사용자 단말(예: 단말 2)에서 보안 대화방에 참여하는 상황일 수 있다.
동작 1101에서, 제1 사용자 단말(예: 단말 2)은 보안 대화방에 참여를 요청할 수 있다. 예를 들어, 제1 사용자 단말은 메신저 어플리케이션에 의해 제공되는 대화방 목록 중 다른 장치(예: 단말 1)에서 이미 참여가 이루어진 보안 대화방을 선택할 수 있다. 예를 들어, 제1 사용자 단말은 메신저 어플리케이션에서 제1 사용자 계정으로 참여한 복수의 대화방 목록을 디스플레이에 표시할 수 있다. 도 12에서와 같이, 제1 사용자 단말(예: 단말 2)에서 참여가 이루어진 대화방(예: 제1 대화방 타입)과 제1 사용자의 다른 단말(예: 단말 1)에서 참여가 이루어진 대화방(예: 제2 대화방 타입)이 함께 대화방 목록에 표시될 수 있다. 이 경우, 일 실시 예에 따르면, 각 대화방은 대화방의 타입에 따라서 서로 다른 방식으로 표시될 수 있다. 예를 들어, 도 12의 예시에서는 제2 대화방 타입과 제1 대화방 타입의 대화방 이름 앞에 서로 다른 형태의 아이콘 1220 및 1210이 배치될 수 있다. 그러나 다른 예시에서는, 예를 들어 제1 대화방 타입과 제2 대화방 타입이 서로 다른 색상이나 플래그 등으로 구분되도록 표시될 수 있다.
동작 1103에서, 서버는 제1 사용자 단말로부터 보안 대화방 참여 요청을 수신할 수 있다. 서버는 동작 1105에서 하나의 사용자 계정(제1 사용자 계정)에서 초대 수락이 가능한(보안 대화방 참여가 가능한) 최대 디바이스의 개수(n)(예: 1개)를 확인할 수 있다.
동작 1105에서, 서버는 n이 1에 해당하는지 여부를 판단할 수 있다. 다시 말해서, 서버는 하나의 사용자 계정 당 하나의 사용자 단말에서만 보안 대화방 참여가 가능하도록 설정되어 있는지 확인할 수 있다. 일 실시 예에 따르면, 이 설정은 사용자에 의해 수행될 수도 있고, 메신저 어플리케이션 자체 또는 메신저 서버, 혹은 시스템 관리자(예: 회사의 보안 관리자)에 의해 설정될 수도 있다.
예를 들어, n = 1인 경우, 동작 1107에서 서버는 이미 보안 대화방에 참여를 수락한 적이 있는 장치와 제1 사용자 단말이 동일한 장치인지 판단할 수 있다. 만약 동일한 장치인 경우, 동작 1109에서 서버는 제1 사용자 단말의 참여를 수락할 수 있다. 다시 말해서, 제1 사용자 단말의 보안 대화방 입장을 허용할 수 있다. 이 경우는, 예를 들어, 제1 사용자 단말에서 보안 대화방 초대를 수락한 후, 메신저 어플리케이션을 종료 하였다가, 다시 보안 대화방에 입장하는 경우에 해당할 수 있다.
예를 들어, n = 1이고, 참여를 수락한 장치와 제1 사용자 단말이 서로 다른 장치인 경우, 동작 1113에서 서버는 보안 대화방 참여를 거부할 수 있다. 이 경우는, 예를 들어 스마트폰에서 보안 대화방 참여를 수락하였는데, 나중에 태블릿에서 보안 대화방에 참여를 시도하는 경우에 해당할 수 있다.
일 실시 예에 따르면, n = 1인 경우, 메신저 어플리케이션은 최초에 초대 요청을 수락한 장치에서만 재입장을 허용하는 제한된 모드(restricted mode)로 동작할 수 있다. 이 경우에는 후술하는 보안 대화방 이전이 지원되지 않을 수 있다.
일 실시 예에 따르면, 초대 수락이 가능한(보안 대화방 참여가 가능한) 최대 디바이스의 개수(n)에 기반하여 대화방의 사용성을 결정할 수 있다. 예를 들어, n이 1인 경우 (보안) 대화방의 데이터가 하나의 장치에만 저장될 수 있기 때문에, 대화 내용의 유출 위험을 낮출 수 있다. n이 1이 아닌 경우, 예를 들어, 5대의 장치에 대화방 참여를 허용하는 경우(n=5)에, 일 실시 예에 따르면, 이는 일반 대화방과 동일한 수준의 사용성을 제공할 수 있다. 그러나 본 문서에 개시되는 실시 예에 따르면 대화 내용은 종단 암호화(end-to-end 암호화 시스템을 사용할 수 있다. 이에 따라예를 들어, 대화방의 보안성이 취약해지지 않을 수 있다.
일 실시 예에 따르면, 참여가 허용된 여러 장치들 중 하나 이상을 분실하거나 소유권이 타인에게 이전되는 경우에는 다른 사람이 메시지를 볼 가능성이 있기 때문에, 다른 장치에서 해당 장치를 맵핑 해제 처리하거나, 유휴 상태를 감지하고 시스템(메신저 서버 130)에서 맵핑 해제 처리하도록 할 수 있다.
일 실시 예에 따르면, 수락 취소를 통해 암호화된 메시지의 노출에 대한 위협을 최소화 할 수 있다. 예를 들어, 특정 장치에서 수락 취소를 수행하거나, 수락 상태인 사용자 계정의 다른 장치(예: 미러 장치(mirror devices)에서 특정 장치를 수락 취소 시킬 수 있다. 또한, 일단 수락 취소가 수행되면 수락이 취소된 장치에서는 더 이상 보안 대화방을 액세스에서 메시지를 열람하는 것이 불가능하도록 설정될 수 있다. 일 실시 예에서, 수락이 취소된 이후에도 재-수락이 가능하도록 설정될 수 있다. 다만 최소 1개의 장치가 수락된 상태에서만 재-수락이 가능할 수 있다. 수락 취소된 장치는 해당 보안 대화방의 모든 대화 내용을 삭제하고 보안 대화방 자체는 유지할 수 있다. 이 상태에서 재-수락을 위한 버튼이 사용자에게 제공될 수 있다.
n이 1이 아닌 경우, 서버는 동작 1111에서 제1 사용자 단말이 보안 대화방에 참여 가능한 조건을 만족하는지 판단할 수 있다. 예를 들어, 설정된 n 값과 현재 보안 대화방에 참여한 단말의 수를 비교하여, 참여 여유가 존재하는지 판단할 수 있다. 판단 결과, 참여 가능한 경우 동작 1109에서 참여를 수락 처리 할 수 있고, 참여 가능하지 않은 경우 동작 1113에서 수락 거부 처리를 할 수 있다.
제1 사용자 단말은 동작 1115에서 서버로부터 수신된 메시지가 참여 수락인지 참여 거부인지 판단할 수 있다. 참여 수락된 경우, 제1 사용자 단말은 서버로부터 보안 대화방의 대화 내용을 암호화된 세션 키와 함께 전달받고, 동작 1117에서 복호화하여 대화 내용을 디스플레이에 표시할 수 있다. 전술한 바 있는 다른 예시에서는, 제1 사용자 단말의 메모리에 저장된 암호화된 대화 내용을 복호화하고 대화 내용을 디스플레이에 표시할 수도 있다. 만약 참여 거부된 경우, 동작 1119에서 제1 사용자 단말은 참여가 거부되었음을 나타내는 화면을 표시할 수 있다. 예를 들어, 제1 사용자 단말은 도 13에서와 같이 다른 장치에서 보안 대화방에 참여하였기 때문에, 이 장치에서는 보안 대화방에 참여할 수 없다는 메시지 1320을 출력할 수 있다.
도 13은 일 실시 예에 따른 대화방 참여 거부 화면을 나타낸다. 일 실시 예에 따르면, 화면 1300은 대화방 이름 1310 및 이 장치에서는 대화방에 참여할 수 없다는 메시지 1320과 함께 대화방 이전 메뉴 1330 또는 종료 메뉴 1340을 포함할 수 있다. 일 실시 예에 따르면, 보안 대화방 이전 메뉴 1330이 선택되는 경우, 보안 대화방을 동일 사용자 단말의 제1 장치에서 제2 장치로 이전하는 프로세스가 진행될 수 있다. 이 프로세스와 관련하여 도 14를 참조하여 설명한다. 일 실시 예에 따르면, 종료 메뉴 1340이 선택되는 경우, 도 12와 같은 대화방 목록 화면으로 복귀할 수 있다.
도 14는 일 실시 예에 따른 대화방을 한 단말에서 다른 단말로 이전하는 프로세스를 나타낸다. 도 14의 실시 예에서, 장치 A 810과 장치 B 820은, 예를 들어, 도 8에서 언급된 제2 사용자 계정에 연관된 단말일 수 있다. 또한, 현재 제1 사용자로부터의 대화방 초대 수락이 이루어진(수락 테이블에 등록되어 있는) 단말은 장치 B 820일 수 있다. 현재 보안 대화방에 참여 중인 제2 사용자 단말은 복수개(n = 1이 아닌 경우)일 수 있으나, 이하의 설명에서는, n=1이며 장치 B 820이 유일하게 보안 대화방에 참여 중인 장치인 경우를 기준으로 설명한다. n=1이 아니고, 복수의 제2 사용자 단말이 보안 대화방에 참여중인 실시 예에 대하여 도 15를 참조하여 설명한다.
동작 1401에서, 장치 A 810은 서버 800으로 대화방 이전 요청을 전송할 수 있다. 예를 들어, 장치 A 810은 도 13에 도시된 보안 대화방 이전 메뉴 1330이 선택되는 것에 응답하여 서버 800으로 대화방 이전 요청을 전송할 수 있다.
서버 800은 보안 대화방에 참여하고자 하는 장치 A 810이 정당한 제2 사용자의 단말인지 확인하기 위해 동작 1403에서 장치 A 810에 대한 인증을 수행할 수 있다. 예를 들어, 서버 800은 제2 사용자 계정 정보 및 서버 800에 등록된 제2 사용자 단말의 목록을 참고하여, 장치 A 810이 정당한 제2 사용자의 단말인지 확인할 수 있다. 서버 800은 보안 대화방을 이전 받을 장치의 인증이 완료된 이후에만, 다음 프로세스를 진행할 수 있다. 그러나 일 실시 예에서, 인증 과정은 생략되거나, 프로세스 이전에 미리 수행된 상태일 수 있다.
동작 1405에서, 서버 800은 현재 보안 대화방에 참여 중인 장치 B 820로 대화방 이전 요청을 전송할 수 있다. 이때 서버 800은 보안 대화방 참여를 요청한 장치 A에 대한 정보(예: 장치 A 810의 공개 키) 및/또는 이전될 보안 대화방의 정보(예: 대화방 ID 등)를 함께 제공할 수 있다.
동작 1407에서, 장치 B 820은 장치 A 810의 공개 키로 보안 대화방의 세션 키를 암호화 할 수 있다. 동작 1409에서, 장치 B 820은 암호화된 세션 키를 서버 800으로 전달할 수 있다.
동작 1411에서, 서버 800은 장치 B로부터 전달받은 암호화된 세션 키와 서버 800에 저장된 암호화된 대화 내용을 함께, 혹은 별개로 장치 A 810으로 전송할 수 있다.
동작 1413에서, 장치 A 810은 서버 800으로부터 전달 받은 암호화된 세션 키를, 보유 중인 개인 키로 복호화 할 수 있다. 또한, 동작 1415에서, 복호화를 통해 획득된 세션 키로 암호화된 대화 내용을 복호화 할 수 있다. 동작 1415까지 수행되고 나면, 장치 A 810의 디스플레이에 보안 대화방의 대화 내용이 출력되는 것이 가능하다. 다만 일 실시 예에서, 장치 A 810은 일시적으로 복수의 장치에서 보안 대화방의 대화 내용이 확인 되는 것을 방지하기 위하여, 동작 1423에 대한 완료 메시지를 서버를 통해 수신된 후에 대화 내용을 출력할 수 있다.
동작 1417에서, 장치 A 810은 서버 800으로 보안 대화방 이전 완료 메시지를 전송할 수 있다. 서버 800은 동작 1419에서 데이터베이스(예: 수락 테이블)을 업데이트 할 수 있다. 일 실시 예에 따르면, 동작 1419는 동작 1423 이후에 수행될 수도 있다. 동작 1421에서 서버 800은 장치 B 820으로 보안 대화방 이전 완료 메시지 및 보안 요청을 전송할 수 있다. 이 보안 요청은, 예를 들어, 장치 B 820에 저장된 보안 대화방의 대화 내용을 모두 삭제하도록 하는 요청일 수 있다. 또한 보안 요청은 세션 키를 삭제하도록 하는 요청을 포함할 수 있다. 일 실시 예에서, 상기 보안 요청은, 장치 B 820에서는 보안 대화방의 대화 내용의 데이터는 유지하지만, 디스플레이에 출력되지는 않도록 하는 요청일 수 있다. 예를 들어, 도 10의 동작 1011-1019-1021을 수행하는 실시 예의 경우, 보안 요청은 후자에 해당할 수 있다.
동작 1423에서, 이전 완료 메시지 및 보안 요청을 수신한 장치 B 820은 보안 요청에 포함된 내용에 따라서, 대화 내용/세션 키를 삭제하거나, 혹은 대화 내용을 출력하지 않을 수 있다.
일 실시 예에 따르면, 보안 대화방 이전은 다음과 같은 경우도 가능할 수 있다. 위에서 설명한 예시는 보안 대화방에 참여하지 않고 있는 장치에서 보안 대화방의 이전 요청을 수행하는 경우일 수 있다. 만약 보안 대화방에 참여하고 있는 동일 사용자 계정의 단말이 복수 개인 경우(예를 들어, n이 2 이상인 경우), 이 복수 개의 단말 중 어느 단말의 보안 대화방을 이전시킬 것인지 결정할 수 있다. 예를 들어, 도 15를 참조하면, AMS4 보안 대화방에는 이미 DH1과 DH2의 장치가 참여하고 있는 상태에서 새로운 단말로 AMS4 보안 대화방에 진입하고자 하는 경우, DH1과 DH2 중 어느 단말의 보안 대화방을 이전 시킬지 선택하는 메뉴(또는, 이미지 또는 텍스트) 1510이 제공될 수 있다. 예를 들어 사용자에 의해 DH1이 선택되고 보안 대화방 이전 메뉴 1520이 선택되면 상기 새로운 단말과 DH1 단말 사이에서 도 14의 프로세스가 수행될 수 있다. 일 실시 예에 따르면, 만약 도 15의 실시 예에서 n = 3 이상인 경우라면, 메뉴 1510이 제공되는 대신 도 11의 프로세스에 의해 상기 새로운 단말도 보안 대화방에 참여할 수 있다.
일 실시 예에 따르면, 화면 1500을 제공하고 있는 단말이 이미 보안 대화방에 참여하고 있는 단말(예를 들어, 장치 B 820)인 경우, 메뉴 1510에 표시되는 DH1 및 DH2는 모두 동일 사용자 계정에 대응되는 단말 중 보안 대화방에 참여하지 않은 단말일 수 있다. 이 경우, 장치 B 820과 DH1 또는 DH2 단말 사이에서 도 14의 프로세스가 변형되어 수행될 수 있다. 예를 들어, 장치 B 820은 도 14에서 장치 A 810에 의해 수행되는 동작을 수행하고, DH1 또는 DH2 단말은 도 14에서 장치 B 820에 의해 수행되는 동작을 수행할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 프로세서, 메신저 어플리케이션이 저장되는 메모리, 상기 메신저 어플리케이션의 실행 화면이 출력되는 디스플레이를 포함하고, 상기 프로세서는 제1 사용자 계정으로 참여한 복수의 대화방 목록을 상기 디스플레이에 표시하고, 상기 복수의 대화방 목록은 상기 전자 장치에서 참여가 이루어진 제1 대화방과 다른 전자 장치에서 참여가 이루어진 제2 대화방을 포함할 수 있다.
또한 상기 프로세서는 상기 제1 대화방과 상기 제2 대화방을 서로 다른 방식으로 표시할 수 있다. 상기 프로세서는 상기 제2 대화방이 선택되면, 상기 전자 장치에서는 상기 제2 대화방에 참여할 수 없다는 메시지를 출력할 수 있다. 또한 상기 프로세서는 상기 제2 대화방이 선택되면, 상기 메신저 어플리케이션의 대화방 접근 설정에 기초하여, 상기 제2 대화방의 대화 내용을 출력하거나 상기 제2 대화방에 참여할 수 없다는 메시지를 출력할 수 있다. 이 경우, 상기 대화방 접근 설정은 상기 제2 대화방에 참여 가능한 장치의 최대 개수를 포함하고, 상기 최대 개수보다 현재 상기 제2 대화방에 참여한 장치의 개수가 적은 경우 상기 프로세서는 상기 제2 대화방의 대화 내용을 출력할 수 있다.
일 실시 예에 따르면 상기 전자 장치는 통신 모듈을 더 포함하고, 상기 통신 모듈을 통해 서버로부터 제2 사용자에 의해 생성된 대화방에 대한 참여 요청이 수신되면, 상기 프로세서는 상기 디스플레이에 상기 대화방에 대한 초대 메시지를 출력할 수 있다.
일 실시 예에 따르면, 전자 장치는 통신 모듈, 프로세서, 및 제1 사용자의 계정 정보와 연관되는 메신저 어플리케이션이 저장되는 메모리를 포함할 수 있다. 상기 프로세서는, 상기 메신저 어플리케이션에서 상기 제1 사용자와 제2 사용자를 포함하는 대화방의 생성을 서버로 요청하고, 상기 제2 사용자의 계정 정보에 대응되는 복수의 제2 사용자 단말들의 공개 키 각각을 이용하여 상기 대화방의 세션 키를 각각 암호화하고, 상기 통신 모듈로 하여금 상기 복수의 제2 사용자 단말들의 공개 키 각각을 이용하여 암호화된 세션 키들을 상기 복수의 제2 사용자 단말들로 전송 요청할 수 있다. 여기서 각각의 상기 암호화된 세션 키는 각각의 제2 사용자 단말의 개인 키로 복호화될 수 있다.
또한 상기 프로세서는 상기 통신 모듈로 하여금 상기 암호화된 세션 키들을 한번에(at one time) 상기 서버로 전송할 수 있다.
또한 상기 통신 모듈은 서버로부터 상기 복수의 제2 사용자 단말의 공개 키를 획득할 수 있다.
또한 상기 프로세서는, 상기 복수의 제2 사용자 단말 중 상기 초대 요청에 응답한 제2 사용자 단말의 공개 키로 암호화된 세션 키를, 상기 초대 요청에 응답한 제2 사용자 단말로 전송할 수 있다.
다양한 실시 예에 따른 서버의 메신저 서비스 제공 방법은, 제1 사용자 장치(a first user device)로부터 제1 사용자 및 제2 사용자를 포함하는 대화방의 생성 요청을 수신하는 동작, 상기 제2 사용자에 대응하는 복수의 제2 사용자 장치들(a plurality of second user devices)로 상기 대화방으로의 초대 요청을 전송하는 동작, 상기 복수의 제2 사용자 장치들 중 적어도 하나의 장치(at least one device)로부터 상기 초대 요청을 수락하는 초대 수락 메시지를 수신하는 동작, 및 상기 제1 사용자 장치로부터 수신된 대화 메시지가 상기 적어도 하나의 장치만을 통하여 표시되도록, 상기 대화 메시지를 상기 적어도 하나의 장치로 전송하는 동작을 포함할 수 있다.
일 실시 예에 따르면 상기 방법은, 상기 적어도 하나의 장치의 공개 키로 암호화된 상기 대화방의 세션 키를 상기 적어도 하나의 장치로 전송하는 동작을 더 포함할 수 있다.
또한 상기 방법은 상기 복수의 제2 사용자 장치들 중 상기 적어도 하나의 장치를 제외한 나머지 장치로, 상기 초대 요청에 대한 수락 이벤트가 발생하였음을 전달하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 상기 서버는 상기 제1 사용자 장치로부터 상기 복수의 제2 사용자 장치들 각각의 공개 키로 각각 암호화된 세션 키를 획득하고, 상기 초대 요청을 전송하는 동작은, 상기 복수의 제2 사용자 장치들로 상기 각각 암호화된 세션 키를 전송하는 동작을 포함할 수 있다.
또한 상기 방법은, 상기 복수의 제2 사용자 장치들 중 다른 적어도 하나의 장치로부터 상기 대화방의 참여 요청을 수신하는 동작, 상기 복수의 제2 사용자 장치들 중 상기 대화방에 참여 가능한 제 1 장치의 수를 확인하는 동작, 및 상기 제 1 장치의 수와 상기 복수의 제2 사용자 장치들 중 현재 상기 보안 대화방에 참여하고 있는 제2 장치의 수를 비교하고, 비교 결과에 기초하여 상기 다른 적어도 하나의 장치로 참여 수락 또는 참여 거부 메시지를 전송하는 동작을 더 포함할 수 있다.
또한 상기 방법은, 상기 복수의 제2 사용자 장치들 중 다른 적어도 하나의 장치로부터 상기 대화방의 이전 요청을 수신하는 동작, 상기 다른 적어도 하나의 장치의 보안 키를 이용하여 암호화된 상기 대화방의 적어도 일부 정보를, 상기 다른 적어도 하나의 장치로 전송하는 동작을 포함할 수 있다.
또한 상기 방법은 상기 다른 적어도 하나의 장치로부터 보안 대화방 이전 완료 메시지를 수신하면, 상기 적어도 하나의 장치로 보안 요청을 전송하는 동작을 더 포함할 수 있다. 이 경우 상기 보안 요청은, 상기 제1 단말에 저장된 보안 대화방의 대화 내용의 삭제, 세션 키의 삭제, 대화 내용의 디스플레이 금지 중 적어도 하나를 포함할 수 있다.
또한 상기 방법은 상기 제1 사용자 장치로부터 상기 적어도 하나의 장치의 공개 키로 암호화된 갱신된 세션 키를 수신하는 동작, 및 상기 암호화된 갱신된 세션 키를 상기 적어도 하나의 장치로 전송하는 동작을 더 포함할 수 있다.
일 실시 예에 따른 전자 장치는, 디스플레이, 및 상기 디스플레이와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는 외부 전자 장치로부터 상기 전자 장치의 사용자 계정에 대한 대화방의 초대 요청을 수신하고, 상기 전자 장치에서 상기 초대 요청에 대한 수락 이벤트가 발생한 것에 기반하여, 상기 외부 전자 장치로부터 상기 사용자 계정에 대응하는 복수의 사용자 단말 중 상기 전자 장치로만 전송되는 대화 메시지를 수신하고, 상기 전자 장치에 대응하는 개인 키를 이용하여 상기 대화 메시지를 복호화하고, 상기 디스플레이를 통하여 상기 복호화된 대화 메시지를 표시할 수 있다.
도 16은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 16을 참조하여, 다양한 실시 예에서의 네트워크 환경 1600 내의 전자 장치 1601이 기재된다. 전자 장치 1601은 버스 1610, 프로세서 1620, 메모리 1630, 입출력 인터페이스 1650, 디스플레이 1660, 및 통신 인터페이스 1670을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 1601은, 구성요소들 중 적어도 하나를 생략하거나 다른 구성 요소를 추가적으로 구비할 수 있다.
버스 1610은, 예를 들면, 구성요소들 1610-1670을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
프로세서 1620은, 중앙처리장치(Central Processing Unit (CPU)), 어플리케이션 프로세서(Application Processor (AP)), 또는 커뮤니케이션 프로세서(Communication Processor (CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서 1620은, 예를 들면, 전자 장치 1601의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리 1630은, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리 1630은, 예를 들면, 전자 장치 1601의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시 예에 따르면, 메모리 1630은 소프트웨어 및/또는 프로그램 1640을 저장할 수 있다. 프로그램 1640은, 예를 들면, 커널 1641, 미들웨어 1643, 어플리케이션 프로그래밍 인터페이스(Application Programming Interface (API)) 1645, 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 1647 등을 포함할 수 있다. 커널 1641, 미들웨어 1643, 또는 API 1645의 적어도 일부는, 운영 시스템(Operating System (OS))으로 지칭될 수 있다.
커널 1641은, 예를 들면, 다른 프로그램들(예: 미들웨어 1643, API 1645, 또는 어플리케이션 프로그램 1647)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스 1610, 프로세서 1620, 또는 메모리 1630 등)을 제어 또는 관리할 수 있다. 또한, 커널 1641은 미들웨어 1643, API 1645, 또는 어플리케이션 프로그램 1647에서 전자 장치 1601의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어 1643은, 예를 들면, API 1645 또는 어플리케이션 프로그램 1647이 커널 1641과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다.
또한, 미들웨어 1643은 어플리케이션 프로그램 1647로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어 1643은 어플리케이션 프로그램 1647 중 적어도 하나에 전자 장치 1601의 시스템 리소스(예: 버스 1610, 프로세서 1620, 또는 메모리 1630 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어 1643은 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다.
API 1645는, 예를 들면, 어플리케이션 1647이 커널 1641 또는 미들웨어 1643에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
입출력 인터페이스 1650은, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치 1601의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 입출력 인터페이스 1650은 전자 장치 1601의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이 1660은, 예를 들면, 액정 디스플레이(Liquid Crystal Display (LCD)), 발광 다이오드(Light-Emitting Diode (LED)) 디스플레이, 유기 발광 다이오드(Organic LED (OLED)) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems, MEMS) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이 1660은, 예를 들면, 사용자에게 각종 컨텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)을 표시할 수 있다. 디스플레이 1660은, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스처, 근접, 또는 호버링(hovering) 입력을 수신할 수 있다.
통신 인터페이스 1670은, 예를 들면, 전자 장치 1601과 외부 장치(예: 제1 외부 전자 장치 1602, 제2 외부 전자 장치 1604, 또는 서버 1606) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스 1670은 무선 통신 또는 유선 통신을 통해서 네트워크 1662에 연결되어 상기 외부 장치 (예: 제2 외부 전자 장치 1604 또는 서버 1606)와 통신할 수 있다.
무선 통신은, 예를 들면 셀룰러 통신 프로토콜로서, 예를 들면 LTE(Long-Term Evolution), LTE-A(LTE-Advanced), CDMA(Code Division Multiple Access), WCDMA(Wideband CDMA), UMTS(Universal Mobile Telecommunications System), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 중 적어도 하나를 사용할 수 있다. 또한 무선 통신은, 예를 들면, 근거리 통신 1664를 포함할 수 있다. 근거리 통신 1664는, 예를 들면, Wi-Fi(Wireless Fidelity), Bluetooth, NFC(Near Field Communication), 또는 GNSS 중 적어도 하나를 포함할 수 있다. GNSS는 사용 지역 또는 대역폭 등에 따라, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 "Beidou") 또는 Galileo(the European global satellite-based navigation system) 중 적어도 하나를 포함할 수 있다. 이하, 본 문서에서는, "GPS"는 "GNSS"와 혼용되어 사용(interchangeably used)될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 1732), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크 1662는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 망(telephone network) 중 적어도 하나를 포함할 수 있다.
제1 및 제2 외부 전자 장치 1602, 1604 각각은 전자 장치 1601과 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 서버 1606은 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예에 따르면, 전자 장치 1601에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치 1602, 1604, 또는 서버 1606)에서 실행될 수 있다. 한 실시 예에 따르면, 전자 장치 1601이 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치 1601은 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치 1602, 1604, 또는 서버 1606)에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치 1602, 1604, 또는 서버 1606)는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치 1601로 전달할 수 있다. 전자 장치 1601은 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 17은 다양한 실시 예에 따른 전자 장치 1701의 블록도 1700을 나타낸다.
도 17을 참조하면, 전자 장치 1701은, 예를 들면, 도 16에 도시된 전자 장치 1601의 전체 또는 일부를 포함할 수 있다. 전자 장치 1701은 하나 이상의 프로세서(예: AP) 1710, 통신 모듈 1720, 가입자 식별 모듈 1724, 메모리 1730, 센서 모듈 1740, 입력 장치 1750, 디스플레이 1760, 인터페이스 1770, 오디오 모듈 1780, 카메라 모듈 1791, 전력 관리 모듈 1795, 배터리 1796, 인디케이터 1797, 및 모터 1798을 포함할 수 있다.
프로세서 1710은, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서 1710에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서 1710은, 예를 들면, SoC(system on chip)로 구현될 수 있다. 한 실시 예에 따르면, 프로세서 1710은 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서(image signal processor)를 더 포함할 수 있다. 프로세서 1710은 도 17에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈 1721)를 포함할 수도 있다. 프로세서 1710은 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
통신 모듈 1720은, 도 16의 상기 통신 인터페이스 1670과 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈 1720은, 예를 들면, 셀룰러 모듈 1721, Wi-Fi 모듈 1723, 블루투스 모듈 1725, GNSS 모듈 1727(예: GPS 모듈, Glonass 모듈, Beidou 모듈, 또는 Galileo 모듈), NFC 모듈 1728 및 RF(radio frequency) 모듈 1729를 포함할 수 있다.
셀룰러 모듈 1721은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 1721은 가입자 식별 모듈(예: SIM 카드) 1724을 이용하여 통신 네트워크 내에서 전자 장치 1701의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 1721은 프로세서 1710이 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 1721은 커뮤니케이션 프로세서(CP)를 포함할 수 있다.
Wi-Fi 모듈 1723, 블루투스 모듈 1725, GNSS 모듈 1727, 또는 NFC 모듈 1728 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈 1721, Wi-Fi 모듈 1723, 블루투스 모듈 1725, GNSS 모듈 1727 또는 NFC 모듈 1728 중 적어도 일부(예: 두 개 이상)는 하나의 IC(integrated chip) 또는 IC 패키지 내에 포함될 수 있다.
RF 모듈 1729는, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈 1729는, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter), LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈 1721, Wi-Fi 모듈 1723, 블루투스 모듈 1725, GNSS 모듈 1727 또는 NFC 모듈 1728 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
가입자 식별 모듈 1724는, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM(embedded SIM)을 포함할 수 있으며, 고유한 식별 정보(예: ICCID (integrated circuit card identifier)) 또는 가입자 정보(예: IMSI (international mobile subscriber identity))를 포함할 수 있다.
메모리 1730(예: 메모리 1630)는, 예를 들면, 내장 메모리 1732 또는 외장 메모리 1734를 포함할 수 있다. 내장 메모리 1732는, 예를 들면, 휘발성 메모리(예: DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등), 비-휘발성(non-volatile) 메모리 (예: OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), 마스크(mask) ROM, 플래시(flash) ROM, 플래시 메모리(예: 낸드플래시(NAND flash) 또는 노아플래시(NOR flash) 등), 하드 드라이브, 또는 SSD(solid state drive) 중 적어도 하나를 포함할 수 있다.
외장 메모리 1734는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(MultiMediaCard), 또는 메모리 스틱(memory stick) 등을 더 포함할 수 있다. 외장 메모리 1734는 다양한 인터페이스를 통하여 전자 장치 1701과 기능적으로 및/또는 물리적으로 연결될 수 있다.
센서 모듈 1740은, 예를 들면, 물리량을 계측하거나 전자 장치 1701의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈 1740은, 예를 들면, 제스처 센서 1740A, 자이로 센서 1740B, 기압 센서 1740C, 마그네틱 센서 1740D, 가속도 센서 1740E, 그립 센서 1740F, 근접 센서 1740G, 컬러 센서 1740H(예: RGB 센서), 생체 센서 1740I, 온/습도 센서 1740J, 조도 센서 1740K, 또는 UV(ultra violet) 센서 1740M 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈 1740은, 예를 들면, 후각 센서(E-nose sensor), EMG(electromyography) 센서, EEG(electroencephalogram) 센서, ECG(electrocardiogram) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈 1740은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 1701은 프로세서 1710의 일부로서 또는 별도로, 센서 모듈 1740을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서 1710이 슬립(sleep) 상태에 있는 동안, 센서 모듈 1740을 제어할 수 있다.
입력 장치 1750은, 예를 들면, 터치 패널(touch panel) 1752, (디지털) 펜 센서(pen sensor) 1754, 키(key) 1756, 또는 초음파(ultrasonic) 입력 장치 1758을 포함할 수 있다. 터치 패널 1752는, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널 1752는 제어 회로를 더 포함할 수도 있다. 터치 패널 1752는 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
(디지털) 펜 센서 1754는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 시트(sheet)를 포함할 수 있다. 키 1756은, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치 1758은 마이크(예: 마이크 1788)를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이 1760(예: 디스플레이 1660)은 패널 1762, 홀로그램 장치 1764, 또는 프로젝터 1766을 포함할 수 있다. 패널 1762는, 도 16의 디스플레이 1660과 동일 또는 유사한 구성을 포함할 수 있다. 패널 1762는, 예를 들면, 유연하게(flexible), 투명하게(transparent), 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널 1762는 터치 패널 1752와 하나의 모듈로 구성될 수도 있다. 홀로그램 장치 1764는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터 1766은 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치 1701의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 디스플레이 1760은 상기 패널 1762, 상기 홀로그램 장치 1764, 또는 프로젝터 1766를 제어하기 위한 제어 회로를 더 포함할 수 있다.
인터페이스 1770은, 예를 들면, HDMI 1772, USB 1774, 광 인터페이스(optical interface) 1776, 또는 D-sub(D-subminiature) 1778을 포함할 수 있다. 인터페이스 1770은, 예를 들면, 도 16에 도시된 통신 인터페이스 1670에 포함될 수 있다. 추가적으로 또는 대체적으로, 인터페이스 1770은, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD 카드/MMC 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈 1780은, 예를 들면, 소리(sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈 1780의 적어도 일부 구성요소는, 예를 들면, 도 16에 도시된 입출력 인터페이스 1650에 포함될 수 있다. 오디오 모듈 1780은, 예를 들면, 스피커 1782, 리시버 1784, 이어폰 1786, 또는 마이크 1788 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈 1791은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, ISP(image signal processor), 또는 플래시(flash)(예: LED 또는 제논 램프(xenon lamp))를 포함할 수 있다.
전력 관리 모듈 1795는, 예를 들면, 전자 장치 1701의 전력을 관리할 수 있다. 한 실시 예에 따르면, 전력 관리 모듈 1795는 PMIC(power management integrated circuit), 충전 IC(charger integrated circuit), 또는 배터리 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리 1796의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리 1796은, 예를 들면, 충전식 전지(rechargeable battery) 및/또는 태양 전지(solar battery)를 포함할 수 있다.
인디케이터 1797은 전자 장치 1701 혹은 그 일부(예: 프로세서 1710)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터 1798은 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동(vibration), 또는 햅틱(haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 전자 장치 1701은 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV 지원을 위한 처리 장치는, 예를 들면, DMB(Digital Multimedia Broadcasting), DVB(Digital Video Broadcasting), 또는 미디어플로(MediaFLOTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 본 문서에서 기술된 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
도 18은 다양한 실시 예에 따른 프로그램 모듈의 블록도를 나타낸다.
도 18을 참조하면, 한 실시 예에 따르면, 프로그램 모듈 1810(예: 프로그램 1640)은 전자 장치(예: 전자 장치 1601)에 관련된 자원을 제어하는 운영 체제(operating system, OS) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램 1647)을 포함할 수 있다. 운영 체제는, 예를 들면, 안드로이드(android), iOS, 윈도우즈(windows), 심비안(symbian), 타이젠(tizen), 또는 바다(bada) 등이 될 수 있다.
프로그램 모듈 1810은 커널 1820, 미들웨어 1830, API 1860, 및/또는 어플리케이션 1870을 포함할 수 있다. 프로그램 모듈 1810의 적어도 일부는 전자 장치 상에 프리로드(preload) 되거나, 외부 전자 장치(예: 전자 장치 1602, 1604, 서버 1606 등)로부터 다운로드 가능하다.
커널 1820(예: 커널 1641)은, 예를 들면, 시스템 리소스 매니저 1821 또는 디바이스 드라이버 1823를 포함할 수 있다. 시스템 리소스 매니저 1821은 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 시스템 리소스 매니저 1821은 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 디바이스 드라이버 1823은, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, Wi-Fi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다.
미들웨어 1830은, 예를 들면, 어플리케이션 1870이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션 1870이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 API 1860을 통해 다양한 기능들을 어플리케이션 1870으로 제공할 수 있다. 한 실시 예에 따르면, 미들웨어 1830(예: 미들웨어 1643)은 런타임 라이브러리 1835, 어플리케이션 매니저(application manager) 1841, 윈도우 매니저(window manager) 1842, 멀티미디어 매니저(multimedia manager) 1843, 리소스 매니저(resource manager) 1844, 파워 매니저(power manager) 1845, 데이터베이스 매니저(database manager) 1846, 패키지 매니저(package manager) 1847, 연결 매니저(connectivity manager) 1848, 통지 매니저(notification manager) 1849, 위치 매니저(location manager) 1850, 그래픽 매니저(graphic manager) 1851, 또는 보안 매니저(security manager) 1852 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리 1835는, 예를 들면, 어플리케이션 1870이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리 1835는 입출력 관리, 메모리 관리, 또는 산술 함수에 대한 기능 등을 수행할 수 있다.
어플리케이션 매니저 1841은, 예를 들면, 어플리케이션 1870 중 적어도 하나의 어플리케이션의 생명 주기(life cycle)를 관리할 수 있다. 윈도우 매니저 1842는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저 1843은 다양한 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱(codec)을 이용하여 미디어 파일의 인코딩(encoding) 또는 디코딩(decoding)을 수행할 수 있다. 리소스 매니저 1844는 어플리케이션 1870 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.
파워 매니저 1845는, 예를 들면, 바이오스(BIOS: basic input/output system) 등과 함께 동작하여 배터리 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보 등을 제공할 수 있다. 데이터베이스 매니저 1846은 어플리케이션 1870 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저 1847은 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.
연결 매니저 1848은, 예를 들면, Wi-Fi 또는 블루투스 등의 무선 연결을 관리할 수 있다. 통지 매니저 1849는 도착 메시지, 약속, 근접성 알림 등의 사건(event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 위치 매니저 1850은 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저 1851은 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저 1852는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시 예에 따르면, 전자 장치(예: 전자 장치 1601)가 전화 기능을 포함한 경우, 미들웨어 1830은 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저(telephony manager)를 더 포함할 수 있다.
미들웨어 1830은 전술한 구성요소들의 다양한 기능의 조합을 형성하는 미들웨어 모듈을 포함할 수 있다. 미들웨어 1830은 차별화된 기능을 제공하기 위해 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 또한, 미들웨어 1830은 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다.
API 1860(예: API 1645)은, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션 1870(예: 어플리케이션 프로그램 1647)은, 예를 들면, 홈 1871, 다이얼러 1872, SMS/MMS 1873, IM(instant message) 1874, 브라우저 1875, 카메라 1876, 알람 1877, 컨택트 1878, 음성 다이얼 1879, 이메일 1880, 달력 1881, 미디어 플레이어 1882, 앨범 1883, 또는 시계 1884, 건강 관리(health care)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보 제공(예: 기압, 습도, 또는 온도 정보 등을 제공) 등의 기능을 수행할 수 있는 하나 이상의 어플리케이션을 포함할 수 있다.
한 실시 예에 따르면, 어플리케이션 1870은 전자 장치(예: 전자 장치 1601)와 외부 전자 장치(예: 전자 장치 1602, 1604) 사이의 정보 교환을 지원하는 어플리케이션(이하, 설명의 편의상, "정보 교환 어플리케이션")을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달(notification relay) 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리(device management) 어플리케이션을 포함할 수 있다.
예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션(예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션, 또는 환경 정보 어플리케이션 등)에서 발생된 알림 정보를 외부 전자 장치(예: 전자 장치 1602, 1604)로 전달하는 기능을 포함할 수 있다. 또한, 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치(예: 전자 장치 1602, 1604)의 적어도 하나의 기능(예: 외부 전자 장치 자체(또는 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는 해상도) 조절), 외부 전자 장치에서 동작하는 어플리케이션 또는 외부 전자 장치에서 제공되는 서비스(예: 통화 서비스 또는 메시지 서비스 등)를 관리(예: 설치, 삭제, 또는 업데이트)할 수 있다.
한 실시 예에 따르면, 어플리케이션 1870은 외부 전자 장치(예: 전자 장치 1602, 1604)의 속성에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 1870은 외부 전자 장치(예: 서버 1606 또는 전자 장치 1602, 1604)로부터 수신된 어플리케이션을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 1870은 프리로드 어플리케이션(preloaded application) 또는 서버로부터 다운로드 가능한 제3자 어플리케이션(third party application)을 포함할 수 있다. 도시된 실시 예에 따른 프로그램 모듈 1810의 구성요소들의 명칭은 운영 체제의 종류에 따라서 달라질 수 있다.
다양한 실시 예에 따르면, 프로그램 모듈 1810의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 프로그램 모듈 1810의 적어도 일부는, 예를 들면, 프로세서(예: 프로세서 1710)에 의해 구현(implement)(예: 실행)될 수 있다. 프로그램 모듈 1810의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서 1620)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리 1630이 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM, DVD(Digital Versatile Disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM, RAM, 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시 예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
그리고 본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 발명의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 발명의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.

Claims (21)

  1. 전자 장치에 있어서,
    통신 모듈,
    프로세서, 및
    제1 사용자의 계정 정보와 연관되는 메신저 어플리케이션이 저장되는 메모리를 포함하고,
    상기 프로세서는,
    상기 메신저 어플리케이션에서 상기 제1 사용자와 제2 사용자를 포함하는 대화방의 생성을 서버로 요청하고,
    상기 제2 사용자의 계정 정보에 대응되는 복수의 제2 사용자 단말들의 공개 키 각각을 이용하여 상기 대화방의 세션 키를 각각 암호화하고,
    상기 통신 모듈로 하여금 상기 복수의 제2 사용자 단말들의 공개 키 각각을 이용하여 암호화된 세션 키들을 상기 복수의 제2 사용자 단말들로 전송 요청하도록 하는, 전자 장치.
  2. 청구항 1에 있어서,
    디스플레이를 더 포함하며,
    상기 프로세서는,
    상기 제1 사용자 계정으로 로그인된 상기 메신저 어플리케이션이 실행되는 동안 대화방 목록의 표시 요청이 수신되면, 상기 제1 사용자 계정으로 참여한 복수의 대화방 목록을 상기 디스플레이에 표시하도록 설정되며,
    상기 복수의 대화방 목록은 상기 전자 장치에서 상기 제1 사용자 계정으로 참여가 이루어진 제1 대화방과 상기 제1 사용자 계정으로 로그인된 메신저 어플리케이션이 실행된 다른 전자 장치에서 상기 제1 사용자 계정으로 참여가 이루어진 제2 대화방을 포함하고,
    상기 전자 장치는 상기 제1 사용자 계정에 등록된 복수의 전자 장치 중 하나이고, 상기 다른 전자 장치는 상기 제1 사용자 계정에 등록된 복수의 전자 장치 중 상기 전자 장치와 다른 하나인, 전자 장치.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 2에 있어서,
    상기 프로세서는 상기 제1 대화방과 상기 제2 대화방을 서로 다른 방식으로 표시하도록 설정되는, 전자 장치.
  4. 청구항 2에 있어서,
    상기 프로세서는 상기 제2 대화방이 선택되면, 상기 메신저 어플리케이션의 대화방 접근 설정에 기초하여, 상기 제2 대화방의 대화 내용을 출력하거나 상기 제2 대화방에 참여할 수 없다는 메시지를 출력하도록 설정되며,
    상기 대화방 접근 설정은 상기 제2 대화방에 참여 가능한 장치의 최대 개수를 포함하는, 전자 장치.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 청구항 1에 있어서,
    각각의 상기 암호화된 세션 키는 각각의 제2 사용자 단말의 개인 키로 복호화 가능한 것을 특징으로 하는, 전자 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 1에 있어서,
    상기 프로세서는 상기 통신 모듈로 하여금 상기 암호화된 세션 키들을 한번에(at one time) 상기 서버로 전송하도록 하는, 전자 장치.
  10. 청구항 1에 있어서,
    상기 통신 모듈은 서버로부터 상기 복수의 제2 사용자 단말의 공개 키를 획득하도록 설정되는, 전자 장치.
  11. 청구항 1에 있어서,
    상기 프로세서는, 상기 복수의 제2 사용자 단말 중 초대 요청에 응답한 제2 사용자 단말의 공개 키로 암호화된 세션 키를, 상기 초대 요청에 응답한 제2 사용자 단말로 전송하도록 설정되는, 전자 장치.
  12. 서버의 메신저 서비스 제공 방법에 있어서,
    제1 사용자 장치(a first user device)로부터 제1 사용자 및 제2 사용자를 포함하는 대화방의 생성 요청을 수신하는 동작,
    상기 제2 사용자의 계정에 대응하는 복수의 제2 사용자 장치들(a plurality of second user devices)로 상기 대화방으로의 초대 요청을 전송하는 동작,
    상기 복수의 제2 사용자 장치들 중 적어도 하나의 장치(at least one device)로부터 상기 초대 요청을 수락하는 초대 수락 메시지를 수신하는 동작, 및
    상기 제1 사용자 장치로부터 수신된 대화 메시지가 상기 적어도 하나의 장치만을 통하여 표시되도록, 상기 대화 메시지를 상기 적어도 하나의 장치로 전송하는 동작을 포함하며,
    상기 서버는, 상기 적어도 하나의 장치의 공개 키로 암호화된 상기 대화방의 세션 키를 상기 적어도 하나의 장치로 전송하는 동작을 더 포함하는 방법.
  13. 삭제
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 12에 있어서,
    상기 복수의 제2 사용자 장치들 중 상기 적어도 하나의 장치를 제외한 나머지 장치로, 상기 초대 요청에 대한 수락 이벤트가 발생하였음을 전달하는 동작을 포함하는, 방법.
  15. 청구항 12에 있어서,
    상기 서버는 상기 제1 사용자 장치로부터 상기 복수의 제2 사용자 장치들 각각의 공개 키로 각각 암호화된 세션 키를 획득하고,
    상기 초대 요청을 전송하는 동작은, 상기 복수의 제2 사용자 장치들로 상기 각각 암호화된 세션 키를 전송하는 동작을 포함하는, 방법.
  16. 청구항 12에 있어서,
    상기 복수의 제2 사용자 장치들 중 다른 적어도 하나의 장치로부터 상기 대화방의 참여 요청을 수신하는 동작,
    상기 복수의 제2 사용자 장치들 중 상기 대화방에 참여 가능한 제 1 장치의 수를 확인하는 동작, 및
    상기 제 1 장치의 수와 상기 복수의 제2 사용자 장치들 중 현재 상기 대화방에 참여하고 있는 제2 장치의 수를 비교하고, 비교 결과에 기초하여 상기 다른 적어도 하나의 장치로 참여 수락 또는 참여 거부 메시지를 전송하는 동작을 더 포함하는 방법.
  17. 청구항 12에 있어서,
    상기 복수의 제2 사용자 장치들 중 다른 적어도 하나의 장치로부터 상기 대화방의 이전 요청을 수신하는 동작,
    상기 다른 적어도 하나의 장치의 보안 키를 이용하여 암호화된 상기 대화방의 적어도 일부 정보를, 상기 다른 적어도 하나의 장치로 전송하는 동작을 포함하는, 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 17에 있어서,
    상기 다른 적어도 하나의 장치로부터 보안 대화방 이전 완료 메시지를 수신하면, 상기 적어도 하나의 장치로 보안 요청을 전송하는 동작을 더 포함하는, 방법.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 18에 있어서,
    상기 보안 요청은, 상기 적어도 하나의 장치에 저장된 보안 대화방의 대화 내용의 삭제, 세션 키의 삭제, 대화 내용의 디스플레이 금지 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    청구항 12에 있어서,
    상기 제1 사용자 장치로부터 상기 적어도 하나의 장치의 공개 키로 암호화된 갱신된 세션 키를 수신하는 동작, 및
    상기 암호화된 갱신된 세션 키를 상기 적어도 하나의 장치로 전송하는 동작을 더 포함하는, 방법.
  21. ◈청구항 21은(는) 설정등록료 납부시 포기되었습니다.◈
    전자 장치에 있어서,
    디스플레이, 및
    상기 디스플레이와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는
    외부 전자 장치로부터 상기 전자 장치의 사용자 계정에 대한 대화방의 초대 요청 및 상기 전자 장치에 대응하는 공개 키에 의해 암호화된 상기 대화방과 관련된 세션 키를 수신하고,
    상기 전자 장치에서 상기 초대 요청에 대한 수락 이벤트가 발생한 것에 기반하여, 상기 외부 전자 장치로부터 상기 사용자 계정에 대응하는 복수의 사용자 단말 중 상기 전자 장치로만 전송되는 대화 메시지를 수신하고,
    상기 전자 장치에 대응하는 개인 키를 이용하여 상기 세션 키를 복호화하고,
    상기 복호화된 세션 키를 이용하여 상기 대화 메시지를 복호화하고,
    상기 디스플레이를 통하여 상기 복호화된 대화 메시지를 표시하도록 설정된 전자 장치.
KR1020150098023A 2015-07-09 2015-07-09 메신저 서비스를 제공하는 장치 및 방법 KR102395799B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150098023A KR102395799B1 (ko) 2015-07-09 2015-07-09 메신저 서비스를 제공하는 장치 및 방법
US15/205,727 US10484347B2 (en) 2015-07-09 2016-07-08 Method and apparatus for supporting secure chat

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150098023A KR102395799B1 (ko) 2015-07-09 2015-07-09 메신저 서비스를 제공하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170006813A KR20170006813A (ko) 2017-01-18
KR102395799B1 true KR102395799B1 (ko) 2022-05-10

Family

ID=57731464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150098023A KR102395799B1 (ko) 2015-07-09 2015-07-09 메신저 서비스를 제공하는 장치 및 방법

Country Status (2)

Country Link
US (1) US10484347B2 (ko)
KR (1) KR102395799B1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707454B1 (en) 2012-07-16 2014-04-22 Wickr Inc. Multi party messaging
CN106412681B (zh) * 2015-07-31 2019-12-24 腾讯科技(深圳)有限公司 弹幕视频直播方法及装置
US9590956B1 (en) 2015-12-18 2017-03-07 Wickr Inc. Decentralized authoritative messaging
US9602477B1 (en) 2016-04-14 2017-03-21 Wickr Inc. Secure file transfer
KR101796289B1 (ko) * 2016-07-27 2017-11-10 주식회사 카카오 상담용 채팅방을 제공하는 방법 및 장치
US10230524B2 (en) 2017-01-26 2019-03-12 Wickr Inc. Securely transferring user information between applications
US20180241580A1 (en) * 2017-02-18 2018-08-23 Seng-Feng Chen Method and apparatus for spontaneously initiating real-time interactive groups on network
US10361852B2 (en) 2017-03-08 2019-07-23 Bank Of America Corporation Secure verification system
US10374808B2 (en) 2017-03-08 2019-08-06 Bank Of America Corporation Verification system for creating a secure link
US10432595B2 (en) * 2017-03-08 2019-10-01 Bank Of America Corporation Secure session creation system utililizing multiple keys
US10425417B2 (en) 2017-03-08 2019-09-24 Bank Of America Corporation Certificate system for verifying authorized and unauthorized secure sessions
KR102339857B1 (ko) * 2017-03-29 2021-12-16 삼성전자주식회사 외부의 IoT 장치를 관리 및 제어하는 방법 및 이를 지원하는 전자 장치
KR102055755B1 (ko) * 2017-06-07 2019-12-13 (주)아이알에스씨 커뮤니케이션 애플리케이션을 이용한 홈 오토메이션 방법
US11107141B1 (en) * 2017-07-20 2021-08-31 Wells Fargo Bank, N.A. Bot-to-bot intelligence for transactions and interactions
FR3068854A1 (fr) * 2017-08-11 2019-01-11 Orange Gestion de communication entre un terminal et un serveur reseau
CN111279655B (zh) * 2017-11-06 2023-03-31 日本电信电话株式会社 数据共享方法、系统及服务器、通信终端、记录介质
JP7187984B2 (ja) * 2018-10-30 2022-12-13 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
KR101998378B1 (ko) * 2018-12-06 2019-10-01 주식회사 원클랙 다중 프로필 및 지정 그룹채팅 호출을 이용한 메신저 서비스 제공 방법
US11133932B2 (en) * 2018-12-20 2021-09-28 Sony Interactive Entertainment LLC Secure data channel in a networked gaming system
KR20200113750A (ko) 2019-03-26 2020-10-07 라인플러스 주식회사 대화 스레드를 표시하기 위한 방법 및 시스템
RU2759742C2 (ru) * 2019-04-29 2021-11-17 Общество с ограниченной ответственностью "АйТи Бизнес Проект" Способ обмена текстовыми и мультимедийными сообщениями между абонентами А и В с возможностью приглашения абонента С в режиме приватного чата
US11038830B2 (en) * 2019-06-28 2021-06-15 Nextiva, Inc. Creating and sharing customizable chat spaces
KR102179865B1 (ko) * 2019-10-04 2020-11-17 (주)씰커뮤니케이션 보안 기능이 강화된 모바일 sns 메신저 시스템
KR102254253B1 (ko) * 2019-12-18 2021-05-20 라인플러스 주식회사 인스턴트 메시징 어플리케이션을 통한 그룹 이벤트 참여 방법
KR102168649B1 (ko) * 2019-12-31 2020-10-21 주식회사 슈빅 행사 관리 방법 및 시스템
KR20210098190A (ko) * 2020-01-31 2021-08-10 (주)픽뱅 폐쇄형 커뮤니티 구성원 추가 방법 및 장치
KR102306308B1 (ko) * 2020-06-12 2021-09-29 손금영 채팅 서비스 제공 방법
KR102387911B1 (ko) * 2020-09-15 2022-04-18 주식회사 카카오엔터프라이즈 보안 인스턴트 메시징 방법 및 장치
CN114765595B (zh) * 2021-01-04 2024-04-26 腾讯科技(深圳)有限公司 聊天消息的显示方法、发送方法、装置、电子设备及介质
KR102329456B1 (ko) * 2021-01-21 2021-11-22 이동엽 모바일 앱 기반의 민간 조사 기관 중개시스템
US20220321617A1 (en) * 2021-03-30 2022-10-06 Snap Inc. Automatically navigating between rooms within a virtual conferencing system
US11843636B1 (en) * 2021-06-15 2023-12-12 Whatsapp Llc Methods, mediums, and systems for verifying devices in an encrypted messaging system
US11743035B2 (en) 2021-06-15 2023-08-29 Whatsapp Llc Methods, mediums, and systems for verifying devices in an encrypted messaging system
US11848930B1 (en) * 2021-06-15 2023-12-19 Whatsapp Llc Methods, mediums, and systems for verifying devices in an encrypted messaging system
US11658955B1 (en) 2021-06-15 2023-05-23 Whatsapp Llc Methods, mediums, and systems for verifying devices in an encrypted messaging system
US20230041924A1 (en) * 2021-08-06 2023-02-09 Airship Group, Inc. In-application user interface messaging
US20230388112A1 (en) * 2022-05-26 2023-11-30 Samsung Sds Co., Ltd. Method and apparatus for providing secure messaging service
US20230396658A1 (en) * 2022-06-03 2023-12-07 Apple Inc. Cryptographic participant vouching
CN115529127B (zh) * 2022-09-23 2023-10-03 中科海川(北京)科技有限公司 基于sd-wan场景的设备认证方法、装置、介质、设备
KR102658902B1 (ko) * 2023-12-29 2024-04-18 주식회사 티맥스와플 그룹채팅방의 메시지 읽음 여부를 판단하기 위한 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242232A1 (en) * 2005-03-31 2006-10-26 International Business Machines Corporation Automatically limiting requests for additional chat sessions received by a particula user
US20080034040A1 (en) * 2006-08-04 2008-02-07 Meebo, Inc. Method and system for embedded group communication

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442590B1 (en) * 1999-05-27 2002-08-27 Yodlee.Com, Inc. Method and apparatus for a site-sensitive interactive chat network
US7502825B2 (en) * 2001-02-21 2009-03-10 Adobe Systems Incorporated Populating online forums
US7675874B2 (en) * 2005-02-24 2010-03-09 International Business Machines Corporation Peer-to-peer instant messaging and chat system
US20070112918A1 (en) * 2005-11-15 2007-05-17 Viktors Berstis Systems and methods for screening chat requests
US20080059986A1 (en) * 2006-08-30 2008-03-06 Brian Kalinowski Online video/chat applications
CN101237336B (zh) * 2007-02-01 2011-10-05 华为技术有限公司 进行多方通信的方法、系统及装置
US9137257B2 (en) * 2007-05-04 2015-09-15 Gary Stephen Shuster Anti-phishing filter
US8417785B2 (en) * 2008-02-19 2013-04-09 International Business Machines Corporation Device, system, and method of electronic communication to facilitate collaboration and meeting
US8131828B2 (en) * 2008-10-03 2012-03-06 Cisco Technology, Inc. Selectively joining clients to meeting servers
US8539359B2 (en) * 2009-02-11 2013-09-17 Jeffrey A. Rapaport Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic
JP5534469B2 (ja) * 2009-03-23 2014-07-02 株式会社ソニー・コンピュータエンタテインメント チャットシステム、チャット方法、チャット実行プログラム、チャット実行プログラムが記憶された記憶媒体、情報処理装置、画像表示方法、画像処理プログラム、画像処理プログラムが記憶された記憶媒体
US9083557B2 (en) * 2010-06-18 2015-07-14 International Business Machines Corporation User initiated rule-based restrictions on messaging applications
US20120182384A1 (en) * 2011-01-17 2012-07-19 Anderson Eric C System and method for interactive video conferencing
US9325644B2 (en) * 2011-05-17 2016-04-26 International Business Machines Corporation Systems and methods for managing interactive communications
US8958559B2 (en) 2011-06-03 2015-02-17 Apple Inc. System and method for secure instant messaging
US9245253B2 (en) * 2011-08-19 2016-01-26 Disney Enterprises, Inc. Soft-sending chat messages
US9405887B2 (en) * 2011-12-08 2016-08-02 Verizon Patent And Licensing Inc. Limiting concurrent viewing sessions on multiple user devices
US8788680B1 (en) * 2012-01-30 2014-07-22 Google Inc. Virtual collaboration session access
US8707454B1 (en) 2012-07-16 2014-04-22 Wickr Inc. Multi party messaging
KR20140047491A (ko) * 2012-10-11 2014-04-22 (주)카카오 봇을 이용한 인스턴트 메시지 서비스 제공 방법
US8903933B1 (en) * 2014-07-21 2014-12-02 ConnectWise Inc. Systems and methods for prioritizing and servicing support tickets using a chat session
US20160134428A1 (en) * 2014-11-11 2016-05-12 Cisco Technology, Inc. User Device Evaluation for Online Meetings
US9912676B1 (en) * 2017-06-30 2018-03-06 Study Social, Inc. Account sharing prevention and detection in online education

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060242232A1 (en) * 2005-03-31 2006-10-26 International Business Machines Corporation Automatically limiting requests for additional chat sessions received by a particula user
US20080034040A1 (en) * 2006-08-04 2008-02-07 Meebo, Inc. Method and system for embedded group communication

Also Published As

Publication number Publication date
KR20170006813A (ko) 2017-01-18
US10484347B2 (en) 2019-11-19
US20170012950A1 (en) 2017-01-12

Similar Documents

Publication Publication Date Title
KR102395799B1 (ko) 메신저 서비스를 제공하는 장치 및 방법
KR102526596B1 (ko) 외부의 IoT 장치를 관리 및 제어하는 방법 및 이를 지원하는 전자 장치
US10728222B2 (en) System and method for providing vehicle information based on personal authentication and vehicle authentication
AU2016224183B2 (en) Method and apparatus for providing card service using electronic device
KR102604046B1 (ko) 전자 기기의 프로그램 관리 방법 및 장치
KR102530888B1 (ko) 결제 거래를 수행하는 방법 및 장치
KR102281019B1 (ko) 전자 장치 및 전자 장치에서 데이터를 처리하는 방법
US10275581B2 (en) Method and apparatus for sharing content between electronic devices
KR102309070B1 (ko) 전자 장치 및 전자 장치에서의 통신 관련 정보 제공 방법
US9706401B2 (en) User-authentication-based approval of a first device via communication with a second device
US10548003B2 (en) Electronic device for controlling an external device using a number and method thereof
US10187359B2 (en) Secure message transmission apparatus and processing method thereof
KR20180072389A (ko) 액세서리에 대응하는 콘텐트를 제공하기 위한 방법 및 그 전자 장치
KR102373225B1 (ko) 전자 장치 및 전자 장치에서 기능 제공 방법
KR102329258B1 (ko) 보안 모듈을 이용한 결제 방법 및 장치
KR20170092877A (ko) 기능 동기화 방법 및 이를 지원하는 전자 장치
KR20170106090A (ko) 콘텐츠 공유 방법 및 장치
KR102587726B1 (ko) 외부 장치를 연결하는 방법 및 이를 지원하는 전자 장치
KR102374018B1 (ko) 전자 장치들 사이의 연결을 수행하기 위한 방법 및 전자 장치
KR102430528B1 (ko) 이모지가 포함된 메시지를 송수신하는 전자 장치 및 그 전자 장치를 제어하는 방법
US10366246B2 (en) Electronic device and operating method thereof
KR102462427B1 (ko) 메시지 통합 관리 방법 및 이를 구현한 전자 장치
KR102341162B1 (ko) 전자 장치 및 전자 장치의 공동 사용을 위한 방법
KR102495652B1 (ko) 전자 장치 및 전자 장치에서의 컨테이너 기반의 데이터 관리 방법
CN105933891B (zh) 使用电子设备提供卡服务的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant