KR102175806B1 - Method for providing contents certification in social media service and, server, user device and application implementing the method - Google Patents

Method for providing contents certification in social media service and, server, user device and application implementing the method Download PDF

Info

Publication number
KR102175806B1
KR102175806B1 KR1020190009500A KR20190009500A KR102175806B1 KR 102175806 B1 KR102175806 B1 KR 102175806B1 KR 1020190009500 A KR1020190009500 A KR 1020190009500A KR 20190009500 A KR20190009500 A KR 20190009500A KR 102175806 B1 KR102175806 B1 KR 102175806B1
Authority
KR
South Korea
Prior art keywords
message
token
information
messages
server
Prior art date
Application number
KR1020190009500A
Other languages
Korean (ko)
Other versions
KR20200092216A (en
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 KR1020190009500A priority Critical patent/KR102175806B1/en
Publication of KR20200092216A publication Critical patent/KR20200092216A/en
Application granted granted Critical
Publication of KR102175806B1 publication Critical patent/KR102175806B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/30Transportation; Communications
    • G06Q50/50
    • H04L51/16
    • 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/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos

Abstract

소셜 미디어 서비스를 제공하는 서버가 대화 내용을 증명하는 방법으로서, 상기 소셜 미디어 서비스를 이용하는 제1 참여자 단말로부터, 채팅방에서 입력된 요청을 받는 단계, 상기 요청에 해당하는 내용을 포함하는 제1 메시지를 상기 채팅방의 참여자 단말들로 전송하는 단계, 그리고 상기 제1 메시지를 챗로그 데이터베이스에 저장하는 단계를 포함한다. 상기 제1 메시지는 메시지 정보 그리고 제1 토큰을 포함한다. 상기 제1 토큰은 상기 제1 메시지 전에 전송된 제2 메시지의 제2 토큰과 상기 제1 메시지의 정보를 이용하여 계산된다.A method in which a server providing a social media service verifies the contents of a conversation, the step of receiving a request input in a chat room from a first participant terminal using the social media service, and sending a first message including a content corresponding to the request And transmitting the first message to the participant terminals of the chat room, and storing the first message in a chat log database. The first message includes message information and a first token. The first token is calculated using the second token of the second message transmitted before the first message and the information of the first message.

Description

소셜 미디어 서비스의 대화 내용을 증명하는 방법, 이를 구현한 서버, 사용자 단말, 그리고 어플리케이션{METHOD FOR PROVIDING CONTENTS CERTIFICATION IN SOCIAL MEDIA SERVICE AND, SERVER, USER DEVICE AND APPLICATION IMPLEMENTING THE METHOD} A method of proving the conversation contents of a social media service, the server that implemented it, the user terminal, and the application {METHOD FOR PROVIDING CONTENTS CERTIFICATION IN SOCIAL MEDIA SERVICE AND, SERVER, USER DEVICE AND APPLICATION IMPLEMENTING THE METHOD}

본 발명은 소셜 미디어 서비스에 관한 것이다.The present invention relates to a social media service.

카카오톡, 트위터, 페이스북, 인스타그램 등 다양한 소셜 미디어 서비스가 존재한다. 사용자는 소셜 미디어 서비스를 통해 상대방과 대화할 수 있고, 자신의 생각을 표현할 수 있다. 사용자는 카카오톡 등의 인스턴트 메시징 서비스를 통해 채팅방에서 친구들과 메시지를 교환한다. There are various social media services such as KakaoTalk, Twitter, Facebook, and Instagram. Users can communicate with others through social media services and can express their thoughts. Users exchange messages with friends in chat rooms through instant messaging services such as KakaoTalk.

지금까지 사용자는 채팅방에서 교환되는 메시지들을 보관하고자 하는 경우, 메시지들이 기록된 채팅방을 지우지 않고 계속 보관하거나, 채팅방을 캡쳐하여 이미지로 보관했다. 채팅방을 계속 유지하는 방법은 대화 내용이 계속 쌓이면 보관 대상인 메시지들을 찾기 어려울 수 있고, 상대방이 채팅방을 나갈 수 있으며, 상대방이 카카오톡을 탈퇴하는 경우, 상대방이 "알수없음"으로 표시되어 상대방 특정이 쉽지 않을 수 있다. 채팅방을 캡쳐하여 이미지로 저장하는 방법은 한 화면씩만 캡쳐되므로, 긴 대화 내용을 일일이 화면 캡쳐하여야 하는 단점이 있다. 또한, 이러한 보관 방법은 메시지 삭제나 이미지 변조가 가능해서, 대화 내용 증명으로서 법적 효력을 부여하는데 한계가 있거나 다툼이 있을 수 있다. Until now, if users wanted to keep messages exchanged in chat rooms, they kept them without deleting the chat rooms in which messages were recorded, or captured chat rooms and kept them as images. As for how to keep the chat room, it may be difficult to find the messages that are to be archived if the chat contents continue to accumulate, the other party can leave the chat room, and if the other party leaves KakaoTalk, the other party is marked as "unknown" and the other party is specific. It may not be easy. The method of capturing a chat room and saving it as an image is capturing only one screen at a time, so there is a disadvantage of requiring screen capture of long conversation contents one by one. In addition, since such a storage method can delete messages or alter images, there may be limitations or disputes in granting legal effect as proof of conversation contents.

또한, 소셜 미디어 서비스를 제공하는 서버는 채팅방에서 교환되는 메시지들을 일정 기간 동안 보관하고 삭제한다. 따라서, 서버 보관 기간이 지난 메시지들에 대해서 서버가 대화 내용을 증명할 수 없는 한계가 있다.In addition, a server providing a social media service stores and deletes messages exchanged in chat rooms for a certain period of time. Therefore, there is a limit that the server cannot prove the contents of the conversation for messages that have passed the server storage period.

본 발명이 해결하고자 하는 과제는 인스턴트 메시징 서비스 등의 소셜 미디어 서비스를 제공하는 서버가 채팅방에서 전송된 메시지마다 내용 및 순서를 증명하는 토큰을 생성하고, 토큰이 부가된 메시지를 채팅방 참여자들 단말로 전송하며, 증명 요청된 메시지들에 포함된 토큰들의 연속성을 검증하여 증명 요청된 메시지들의 무결성을 증명하는 방법을 제공하는 것이다.The problem to be solved by the present invention is that a server providing a social media service such as an instant messaging service generates a token that certifies the content and order of each message transmitted from the chat room, and transmits the message with the token added to the chat room participants' terminals. And, by verifying the continuity of tokens included in the messages requested for verification, it provides a method of verifying the integrity of the messages requested for verification.

또한 본 발명이 해결하고자 하는 과제는 히든 메시지를 통해 채팅방 참여자 증명 및 참여자의 메시지 수신/미수신 증명 방법을 제공하는 것이다.In addition, the problem to be solved by the present invention is to provide a method of verifying a participant in a chat room and verifying a participant's message reception/non-reception through a hidden message.

한 실시예에 따라 소셜 미디어 서비스를 제공하는 서버가 대화 내용을 증명하는 방법으로서, 상기 소셜 미디어 서비스를 이용하는 제1 참여자 단말로부터, 채팅방에서 입력된 요청을 받는 단계, 상기 요청에 해당하는 내용을 포함하는 제1 메시지를 상기 채팅방의 참여자 단말들로 전송하는 단계, 그리고 상기 제1 메시지를 챗로그 데이터베이스에 저장하는 단계를 포함한다. 상기 제1 메시지는 메시지 정보 그리고 제1 토큰을 포함한다. 상기 제1 토큰은 상기 제1 메시지 전에 전송된 제2 메시지의 제2 토큰과 상기 제1 메시지의 정보를 이용하여 계산된다.According to an embodiment, a method for verifying conversation contents by a server providing a social media service, receiving a request input in a chat room from a first participant terminal using the social media service, including content corresponding to the request And transmitting the first message to the chat room to the participant terminals of the chat room, and storing the first message in a chat log database. The first message includes message information and a first token. The first token is calculated using the second token of the second message transmitted before the first message and the information of the first message.

상기 제1 메시지의 정보는 메시지 인덱스, 메시지 전송 시각, 메시지 발신자, 메시지 종류, 그리고 메시지 내용의 해쉬값 중 적어도 하나를 포함할 수 있다.The information of the first message may include at least one of a message index, a message transmission time, a message sender, a message type, and a hash value of the message content.

상기 요청은 참여 증명 요청이고, 상기 제1 메시지는 상기 제1 참여자 단말의 참여 증명 정보를 포함하는 히든 메시지이며, 상기 히든 메시지는 상기 채팅방에서 표시되지 않는 메시지일 수 있다.The request is a participation proof request, the first message is a hidden message including participation proof information of the first participant terminal, and the hidden message may be a message that is not displayed in the chat room.

상기 참여 증명 정보는 상기 제2 토큰 또는 상기 제2 토큰을 암호화한 정보를 포함할 수 있다.The participation proof information may include information obtained by encrypting the second token or the second token.

상기 대화 내용 증명 방법은 상기 채팅방의 참여자 단말들 각각의 마지막 수신 메시지 정보를 관리하는 단계를 더 포함할 수 있다.The conversation content verification method may further include managing information on the last received message of each of the participant terminals in the chat room.

상기 대화 내용 증명 방법은, 제2 참여자 단말이 접속한 경우, 상기 제2 참여자 단말의 마지막 수신 메시지를 확인하는 단계, 상기 챗로그 데이터베이스에 저장된 메시지들과 상기 제2 참여자 단말의 마지막 수신 메시지를 비교하고, 미전송 메시지들 중 삭제된 메시지 정보를 추출하는 단계, 그리고 상기 삭제된 메시지 정보를 포함하는 제1 히든 메시지를 전송하는 단계를 포함할 수 있다. 상기 삭제된 메시지 정보는 삭제된 메시지들 중 최신 메시지의 토큰을 포함할 수 있다.The conversation content verification method, when the second participant terminal accesses, confirming the last received message of the second participant terminal, comparing messages stored in the chatlog database with the last received message of the second participant terminal And extracting deleted message information from among untransmitted messages, and transmitting a first hidden message including the deleted message information. The deleted message information may include a token of the latest message among deleted messages.

상기 삭제된 메시지 정보는 상기 제2 참여자 단말이 미수신한 메시지 정보를 더 포함할 수 있다.The deleted message information may further include message information not received by the second participant terminal.

상기 대화 내용 증명 방법은, 상기 제1 히든 메시지를 상기 제2 참여자 단말로 전송한 정보를 포함하는 제2 히든 메시지를 상기 채팅방의 참여자 단말들로 전송하는 단계, 그리고 상기 제2 히든 메시지를 챗로그 데이터베이스에 저장하는 단계를 더 포함할 수 있다.The conversation content verification method includes transmitting a second hidden message including information about transmitting the first hidden message to the second participant terminal to the participant terminals of the chat room, and the second hidden message as a chat log. It may further include storing in the database.

다른 실시예에 따라 소셜 미디어 서비스를 제공하는 서버가 대화 내용을 증명하는 방법으로서, 채팅방의 참여자 단말들로 전송한 메시지들을 챗로그 데이터베이스에 저장하는 단계, 임의 참여자 단말로부터, 특정 메시지들에 대한 무결성 증명 요청을 수신하는 단계, 그리고 증명 요청된 메시지들에 포함된 토큰들과 상기 챗로그 데이터베이스에 저장된 토큰을 기초로 상기 증명 요청된 메시지들의 무결성을 검증하는 단계를 포함한다. 각 메시지는 메시지 정보 그리고 토큰을 포함한다. 상기 토큰은 해당 메시지 이전에 전송된 메시지의 토큰과 해당 메시지의 정보를 이용하여 계산된다.According to another embodiment, as a method of verifying the content of a conversation by a server providing a social media service, storing messages sent to the participant terminals of a chat room in a chatlog database, integrity of specific messages from a random participant terminal Receiving a verification request, and verifying integrity of the verification-requested messages based on tokens included in the verification-requested messages and tokens stored in the chatlog database. Each message contains message information and a token. The token is calculated using the token of the message transmitted before the message and the information of the message.

상기 무결성을 검증하는 단계는 상기 증명 요청된 메시지들에 포함된 메시지 정보 및 토큰을 이용하여 상기 증명 요청된 메시지들의 토큰들이 연속적으로 계산되는지 검증하는 단계, 그리고 상기 증명 요청된 메시지들 중 최신 메시지의 토큰과 상기 챗로그 데이터베이스에 저장된 토큰을 비교하여 상기 증명 요청된 메시지들의 무결성을 검증하는 단계를 포함할 수 있다.The verifying the integrity includes verifying whether tokens of the messages requested for verification are continuously calculated using message information and tokens included in the messages requested for verification, and the latest message among the messages requested for verification It may include comparing the token and the token stored in the chatlog database to verify the integrity of the messages requested for verification.

상기 대화 내용 증명 방법은, 상기 증명 요청된 메시지들 중 특정 참여자의 참여 증명 정보를 포함하는 히든 메시지가 존재하는 경우, 상기 히든 메시지를 기초로 상기 특정 참여자가 채팅방에 참여한 사실을 증명하는 단계를 더 포함할 수 있다.The conversation content verification method further includes the step of verifying that the specific participant participated in the chat room based on the hidden message when a hidden message including participation proof information of a specific participant exists among the messages requested for authentication. Can include.

상기 대화 내용 증명 방법은 상기 증명 요청된 메시지들 중 특정 참여자의 채팅방 나가기 정보를 포함하는 메시지가 존재하는 경우, 상기 특정 참여자가 채팅방을 나간 사실을 증명하는 단계를 더 포함할 수 있다.The conversation content verification method may further include verifying that the specific participant has left the chat room if there is a message including information about leaving the chat room of a specific participant among the messages requested for authentication.

상기 대화 내용 증명 방법은 상기 증명 요청된 메시지들 중 특정 참여자에게 삭제된 메시지 정보를 전송한 히든 메시지가 존재하는 경우, 상기 히든 메시지를 기초로 상기 특정 참여자의 미수신 메시지 정보를 증명하는 단계를 더 포함할 수 있다.The conversation content verification method further includes the step of verifying unreceived message information of the specific participant based on the hidden message when there is a hidden message that has transmitted deleted message information to a specific participant among the messages requested for authentication. can do.

실시예에 따르면, 서버가 증명 요청된 메시지들에 부가된 토큰들의 연속성을 판단하여 증명 요청된 메시지들의 무결성을 검증하므로, 사용자는 채팅방의 대화 내용을 증명하기 위해 화면 저장이나 텍스트 저장 등을 별도로 할 필요 없이, 연속된 메시지들을 선택한 후 서버로 전송함으로써, 채팅방에서 전송된 연속된 메시지들을 증명할 수 있다.According to an embodiment, since the server verifies the integrity of the messages requested for verification by determining the continuity of the tokens added to the messages requested for verification, the user may separately save a screen or save text to prove the content of the chat room. Without the need, by selecting consecutive messages and sending them to the server, it is possible to prove the consecutive messages transmitted in the chat room.

실시예에 따르면, 서버는 채팅방에서 교환되는 최신의 메시지들만을 저장하더라도, 단말에 저장된 메시지들을 증명할 수 있다.According to the embodiment, even if the server stores only the latest messages exchanged in the chat room, it can prove the messages stored in the terminal.

도 1은 한 실시예에 따른 시스템의 구성도이다.
도 2는 한 실시예에 따른 서버와 채팅방 참여자 단말들 사이의 요청 전송 및 메시지 전송을 설명하는 흐름도이다.
도 3은 다른 실시예에 따른 장기 미접속 시 서버와 채팅방 참여자 단말들 사이의 요청 전송 및 메시지 전송을 설명하는 흐름도이다.
도 4은 한 실시예에 따른 대화 내용 증명 방법의 흐름도이다.
1 is a block diagram of a system according to an embodiment.
2 is a flowchart illustrating a request transmission and a message transmission between a server and a chat room participant terminals according to an embodiment.
3 is a flowchart illustrating request transmission and message transmission between a server and a chat room participant terminal when a long-term non-connection according to another embodiment.
4 is a flowchart of a method for verifying conversation contents according to an embodiment.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those of ordinary skill in the art can easily implement the embodiments of the present invention. However, the present invention may be implemented in various different forms and is not limited to the embodiments described herein. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and similar reference numerals are assigned to similar parts throughout the specification.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Throughout the specification, when a part "includes" a certain component, it means that other components may be further included rather than excluding other components unless otherwise stated. In addition, terms such as "... unit", "... group", and "module" described in the specification mean units that process at least one function or operation, which can be implemented by hardware or software or a combination of hardware and software. have.

단말은 컴퓨터 판독 가능한 저장 매체에 저장되는 소프트웨어인 어플리케이션, 그리고 프로세서, 메모리, 디스플레이, 통신 모듈 등의 하드웨어를 포함한다. 프로세서는 하드웨어들과 협력하여 어플리케이션을 구동한다. 디스플레이는 어플리케이션에서 제공하는 사용자 인터페이스 화면을 표시하고, 사용자 입력을 수신할 수 있고, 예를 들면 터치 입력을 수신할 수 있다. 통신 모듈은 통신망을 통해 메시징 서버와 통신한다.The terminal includes an application, which is software stored in a computer-readable storage medium, and hardware such as a processor, memory, display, and communication module. The processor runs the application in cooperation with the hardware. The display may display a user interface screen provided by an application, receive a user input, and may receive, for example, a touch input. The communication module communicates with the messaging server through a communication network.

단말은 다양한 형태로 구현될 수 있고, 모바일 단말을 예로 들어 설명하나, 스마트패드와 같은 패드형 단말, 랩탑 컴퓨터 등 각종 형태의 컴퓨터, 웨어러블 디바이스, TV 단말 등의 형태로 구현될 수 있다. The terminal may be implemented in various forms, and described using a mobile terminal as an example, but may be implemented in the form of various types of computers such as a pad-type terminal such as a smart pad, a laptop computer, a wearable device, a TV terminal, and the like.

소셜 미디어 서비스로서 인스턴트 메시징 어플리케이션을 이용한 인스턴트 메시징 서비스를 예로 들어 설명하나, 콘텐츠(텍스트, 이미지, 동영상 등)를 포함하는 메시지가 연속적으로 송수신되는 각종 서비스에서 본 발명이 적용될 수 있음은 당연하다.An instant messaging service using an instant messaging application as a social media service is described as an example, but it is natural that the present invention can be applied to various services in which messages including content (text, images, videos, etc.) are continuously transmitted and received.

도 1은 한 실시예에 따른 시스템의 구성도이다.1 is a block diagram of a system according to an embodiment.

도 1을 참고하면, 소셜 미디어 어플리케이션을 설치한 단말들(100, 110, 120)은 서버(200)에 접속하여 소셜 미디어 어플리케이션에서 제공하는 기능들을 이용한다. Referring to FIG. 1, terminals 100, 110, and 120 installed with a social media application access the server 200 and use functions provided by the social media application.

소셜 미디어 어플리케이션으로서 인스턴트 메시징 어플리케이션을 예로 들어 설명하고, 서버(200)는 메시징 서버라고 부른다. 인스턴트 메시징 어플리케이션은 채팅방을 개설하고, 채팅방에서 참여자들이 메시지들을 교환하는 인터페이스 화면을 제공하고, 본 발명에서 설명하는 바에 따라 대화 내용 증명 서비스를 제공하는 프로그램이다. 인스턴트 메시징 어플리케이션은 사용자가 대화 내용을 편리하게 증명 요청하는 메시지들을 선택하는 인터페이스 화면을 제공하고, 서버에 의해 증명된 메시지들을 공유하는 인터페이스 화면을 제공한다. An instant messaging application will be described as an example as a social media application, and the server 200 is referred to as a messaging server. The instant messaging application is a program that opens a chat room, provides an interface screen for participants to exchange messages in the chat room, and provides a service for verifying conversation contents as described in the present invention. The instant messaging application provides an interface screen in which a user selects messages for conveniently requesting verification of conversation contents, and provides an interface screen for sharing messages verified by a server.

본 발명에서 "증명"은 연속 메시지들의 내용 및 순서가 변조되지 않았다는 무결성 증명, 채팅방 참여자 증명, 그리고 메시지 수신 증명을 포함한다. 채팅방 참여자 증명은 무결성 증명된 메시지들이 교환되는 당시에 채팅방 참여자임을 증명한다. 메시지 수신 증명은 무결성 증명된 메시지들을 채팅방 참여자가 수신한 것인지 또는 일부를 수신한 것인지를 증명한다. 예를 들어, 어느 채팅방 참여자는 특별한 사유(예를 들면, 출장으로 인한 단말의 비행기 모드 상태, 국가별 특정 어플리케이션 비활성화 처리 정책, 분실 등)로 메시지를 수신하지 못하였다는 것을 증명하고, 이를 통해 상대방으로부터 계약 변경 사실을 고지받지 못했음을 증명할 수 있다.In the present invention, "proof" includes proof of integrity that the contents and order of consecutive messages have not been altered, proof of chat room participant, and proof of message reception. The chat room participant authentication proves that the chat room participant is at the time when messages with verified integrity are exchanged. The message proof of receipt proves whether the chat room participant has received or partially received messages whose integrity has been verified. For example, a participant in a chat room proves that he did not receive a message due to a special reason (e.g., the terminal's airplane mode status due to a business trip, country specific application deactivation processing policy, loss, etc.), and through this It can be proved that it has not been notified of the change of the contract from

설명을 위해, 단말A(100)는 Aiden 단말, 단말B(110)는 Brian 단말, 단말C(120)는 Cindy 단말이고, Aiden, Brian, Cindy가 채팅방의 참여자라고 가정한다.For explanation, it is assumed that terminal A 100 is an Aiden terminal, terminal B 110 is a Brian terminal, terminal C 120 is a Cindy terminal, and Aiden, Brian, and Cindy are participants in a chat room.

채팅방의 참여자 단말들(100, 110, 120)이 채팅방에서 입력된 요청(request)을 서버(200)로 전송하고, 서버(200)는 채팅방의 참여자 단말들(100, 110, 120)로 요청에 해당하는 메시지를 전송한다. Participant terminals 100, 110, and 120 of the chat room transmit the request input in the chat room to the server 200, and the server 200 responds to the request to the participant terminals 100, 110, and 120 of the chat room. Send the corresponding message.

서버(200)는 채팅방 개설 요청, 참여자 초대 요청, 참여자 나가기 요청, 메시지 추가 요청을 수신하고, 채팅방 참여자 단말들(100, 110, 120)로 채팅방 개설 알림 메시지, 참여자 초대 알림 메시지, 참여자 나가기 알림 메시지, 대화 내용에 해당하는 콘텐츠 메시지를 전송한다. 서버(200)는 채팅방 개설, 참여자 초대, 참여자 나가기 등을 나타내는 상태 메시지, 그리고 참여자들이 입력한 콘텐츠 메시지의 챗로그(Chatlog)를 챗로그 데이터베이스에 순서대로 저장한다. 또한, 서버(200)는 대화 내용 증명 서비스를 위해 채팅방에 표시되지 않고 서버나 단말 사이에서 전송되는 메시지의 챗로그를 챗로그 데이터베이스에 순서대로 저장한다. 채팅방에 표시되지 않고 서버나 단말 사이에서 전송되는 메시지를 “히든 메시지”라고 부를 수 있다.The server 200 receives a chat room opening request, a participant invitation request, a participant exit request, a message addition request, and a chat room opening notification message, a participant invitation notification message, a participant exit notification message to the chat room participant terminals 100, 110, 120 , Transmit a content message corresponding to the conversation. The server 200 stores a status message indicating a chat room opening, a participant invitation, a participant leaving, and the like, and a chat log of a content message input by the participants in the chat log database in order. In addition, the server 200 stores chat logs of messages transmitted between servers or terminals in order in the chat log database without being displayed in the chat room for the service to verify the contents of the conversation. Messages that are not displayed in a chat room and transmitted between servers or terminals can be called "hidden messages".

서버(200)는 채팅방별로 챗로그를 기록하고, 챗로그는 메시지별로 표 1과 같은 항목으로 기록될 수 있다. 표 1에서 사용되는 값은 변경될 수 있다. 참여자 단말들 역시, 서버(200)로부터 수신한 메시지들을 로컬 저장소에 기록한다. 표 1에서 토큰은 메시지 내용 해쉬값을 이용해 생성될 수 있다.The server 200 may record chat logs for each chat room, and chat logs may be recorded as items shown in Table 1 for each message. The values used in Table 1 can be changed. Participant terminals also record messages received from the server 200 in a local storage. In Table 1, the token can be generated using the hash value of the message content.

항목Item 설명Explanation 인덱스index 채팅방 내 메시지 번호로서 순차적으로 증가하는 값이 할당되고,
예를 들면, 0001, 0002, 0003과 같이 단조 증가함
As the message number in the chat room, a sequentially increasing value is assigned,
Monotonically increasing, for example, 0001, 0002, 0003
시각Time 메시지 전송 시각Message transmission time 발신자Caller 메시지 발신자Message sender 메시지 종류Message type 1: Reinit(채팅방 개설 알림 메시지)
2: Join(참여자 초대 알림 메시지)
3: Leave(참여자 나가기 알림 메시지)
100: Text(입력 메시지)
101: Attachment(첨부파일)
1: Reinit (chat room opening notification message)
2: Join (participant invitation notification message)
3: Leave (Notification of leaving the participant)
100: Text (input message)
101: Attachment
-1: Sign(서버가 채팅방 참여자 참여 상태를 알리는 메시지)
-2: Missing(서버가 메시지 미수신 단말로 미수신 메시지 토큰을 전송하는 메시지)
-3: MissingNoti(서버가 메시지 미수신 단말로 Missing 메시지를 전송한 사실을 다른 참여자 단말에게 알리는 메시지)
-1: Sign (a message from the server notifying the chat room participant participation status)
-2: Missing (message in which the server transmits an unreceived message token to a terminal that has not received a message)
-3: MissingNoti (message informing other participant terminals that the server sent a Missing message to the terminal that did not receive the message)
내용Contents 메시지 내용Message content 내용 해쉬값Content hash value 메시지 내용의 해쉬값=hash(메시지 내용)Hash value of the message content = hash (message content) 토큰token N번째 메시지의 토큰은 N-1번째 메시지의 토큰과 N번째 메시지 정보(예를 들면, 인덱스, 시간, 발신자, 메시지 종류, 내용 해쉬값 중 적어도 하나)의 해쉬값,
예를 들면, N번째 메시지 토큰 = hash(N-1번째 메시지 토큰 xor N번째 메시지 정보)
The token of the Nth message is the hash value of the token of the N-1th message and the information of the Nth message (for example, at least one of index, time, sender, message type, content hash value),
For example, Nth message token = hash (N-1th message token xor Nth message information)

서버(200)는 최근 일정 기간 동안의 챗로그를 저장한다고 가정하고, 예를 들면, 최근 3일 동안에 수신한 메시지들을 저장하고, 보관 기간이 지난 메시지들은 삭제한다고 가정한다. 이때, 보관 기간이 지난 메시지들이 삭제되면, 미보관 메시지들에 대한 증명을 할 수 없으므로, 서버(200)는 보관 기간이 지난 메시지들을 삭제하더라도, 삭제 메시지들의 토큰을 일정 기간 동안 별도 저장할 수 있다. 또는, 서버(200)는 일정 주기(예를 들면, 1일)마다 적어도 하나의 토큰을 별도 저장하고, 이를 통해 보관 기간이 지난 메시지들이 삭제되더라도 별도 저장된 토큰으로 무결성 증명 요청된 메시지들을 검증할 수 있다. It is assumed that the server 200 stores chat logs for a recent certain period, for example, stores messages received during the last 3 days, and deletes messages that have passed the storage period. In this case, if messages that have passed the storage period are deleted, since it is not possible to prove unarchived messages, the server 200 may separately store tokens of the deleted messages for a certain period even if messages that have passed the storage period are deleted. Alternatively, the server 200 separately stores at least one token every certain period (eg, 1 day), and through this, even if messages that have passed the storage period are deleted, the messages requested for integrity verification can be verified with a separately stored token. have.

서버(200)는 채팅방의 참여자별로 마지막 수신 메시지 정보를 관리한다. 마지막 수신 메시지 정보는 마지막 수신 메시지의 인덱스나 마지막 수신 메시지의 토큰일 수 있으나, 설명에서는 인덱스라고 가정한다. 모든 참여자들이 마지막 메시지를 확인한 경우, 참여자별 마지막 수신 메시지는 동일하다. 하지만, Brian이 특정 사유로 인해 메시지를 수신하지 못하는 경우, 참여자별 마지막 수신 메시지 정보가 다를 수 있다.The server 200 manages the last received message information for each participant in the chat room. The last received message information may be the index of the last received message or the token of the last received message, but the description assumes that it is an index. When all participants have confirmed the last message, the last received message for each participant is the same. However, if Brian cannot receive the message for a specific reason, the last received message information for each participant may be different.

서버(200)는 참여자 단말들(100, 110, 120) 각각으로부터 주기적으로 참여 증명 정보를 수신한다. 서버(200)는 참여 증명 정보를 포함하는 Sign 메시지를 참여자 단말들(100, 110, 120)로 전송한다. Sign 메시지는 참여자가 채팅방에 있음을 증명하는 참여 증명 메시지이다. Sign 메시지의 내용은 참여자 증명 정보를 포함하되, 채팅방에 표시되지 않는 히든 메시지이다. 참여자 증명 정보는 예를 들면, 이전 메시지 토큰을 참여자의 비밀키로 암호화한 정보일 수 있다.The server 200 periodically receives participation proof information from each of the participant terminals 100, 110, and 120. The server 200 transmits a Sign message including participation proof information to the participant terminals 100, 110, and 120. Sign message is a participation proof message proving that the participant is in the chat room. The content of the Sign message is a hidden message that includes participant authentication information, but is not displayed in the chat room. The participant identification information may be, for example, information obtained by encrypting a previous message token with the participant's secret key.

서버(200)는 메시지 미수신 단말로 미수신 메시지 토큰을 포함하는 Missing 메시지를 전송할 수 있다. Missing 메시지는 메시지를 수신하지 못한 단말의 토큰 연속성을 보완하기 위한 메시지로서, 메시지 내용은 최신 미수신 메시지의 토큰을 포함한다. 예를 들어, Brian이 서버 보관 기간보다 장기간 동안 채팅방에 미접속한 경우, 단말B(110)는 서버 보관 기간을 경과하여 삭제된 메시지들을 수신하지 못한다. 이 경우, 미수신 메시지로 인해 단말B(110)의 챗로그는 토큰 연속성이 깨진다. 따라서, 서버(200)는 삭제된 메시지를 전송할 수는 없으므로, Missing 메시지를 통해 장기 미수신 정보를 기록하고, 최신 미수신 메시지의 토큰을 전달한다. 단말B(110)는 Missing 메시지를 챗로그에 기록한다. The server 200 may transmit a Missing message including a non-received message token to a message non-receiving terminal. The Missing message is a message for supplementing the token continuity of the terminal that has not received the message, and the message content includes the token of the latest unreceived message. For example, if Brian does not access the chat room for a longer period than the server storage period, the terminal B 110 does not receive the deleted messages after the server storage period. In this case, token continuity is broken in the chat log of terminal B 110 due to unreceived messages. Accordingly, since the server 200 cannot transmit the deleted message, it records long-term non-received information through the Missing message and delivers the token of the latest unreceived message. Terminal B 110 records the Missing message in the chat log.

서버(200)는 단말B(110)로 Missing 메시지를 전송한 사실을 다른 참여자 단말에게 알리는 MissingNoti 메시지를 전송할 수 있다. MissingNoti 메시지는 Missing 메시지와 동일한 내용을 포함할 수 있다. The server 200 may transmit a MissingNoti message informing other participant terminals of the fact that the Missing message has been transmitted to the terminal B 110. The MissingNoti message may include the same content as the Missing message.

다음에서, 서버(200)와 채팅방의 참여자 단말들(100, 110, 120)이 메시지를 송수신하고, 챗로그를 기록하는 방법을 설명한다.In the following, a method of transmitting and receiving a message between the server 200 and the participant terminals 100, 110, and 120 of the chat room and recording a chat log will be described.

도 2는 한 실시예에 따른 서버와 채팅방 참여자 단말들 사이의 요청 전송 및 메시지 전송을 설명하는 흐름도이다.2 is a flowchart illustrating a request transmission and a message transmission between a server and a chat room participant terminals according to an embodiment.

도 2를 참고하면, 단말A(100)가 서버(200)로 채팅방 개설을 요청한다(S110). 채팅방 개설 요청은 참여자 정보를 포함한다.Referring to FIG. 2, the terminal A 100 requests the server 200 to open a chat room (S110). The request to open a chat room includes participant information.

서버(200)는 채팅방 개설 요청에 따라 개설한 채팅방 개설 정보를 포함하는 메시지를 각 참여자 단말로 전송하고, 표 2와 같이 전송한 메시지들을 챗로그 데이터베이스에 기록한다(S120). 전송과 기록의 순서는 바뀌거나 동시에 진행될 수 있는데, 전송한 메시지를 챗로그 데이터베이스에 기록(저장)한다고 설명한다. 서버(200)는 표 1의 항목(인덱스:시각:발신자:종류:내용:해쉬값:토큰)으로 구성된 메시지의 챗로그를 표 2와 같이 기록한다. 서버(200)는 참여자별 마지막 수신 메시지 정보를 채팅방 정보로 관리한다.The server 200 transmits a message including information about opening a chat room opened in response to a chat room opening request to each participant's terminal, and records the transmitted messages in the chat log database as shown in Table 2 (S120). The order of transmission and recording can be changed or performed simultaneously. Explain that the transmitted message is recorded (stored) in the chatlog database. The server 200 records a chat log of a message composed of the items in Table 1 (index: time: sender: type: content: hash value: token) as shown in Table 2. The server 200 manages the last received message information for each participant as chat room information.

채팅방 정보Chat room information RoomInfo=LastChat{A:Nil, B:Nil, C:Nil}RoomInfo=LastChat{A:Nil, B:Nil, C:Nil} 챗로그Chat log 0000:시각0:Server:1(Reinit):--:ContentHash0:Token0
0001:시각1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:시각2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:시각3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0000:Time 0:Server:1(Reinit):--:ContentHash0:Token0
0001:Time1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:Time2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:Time3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3

각 메시지의 토큰은 이전 메시지 토큰을 이용하여 계산된다. 토큰값을 연산하는 방법은 다양할 수 있고, 본 발명에서는 “xor” 연산을 예로 들어 설명한다. 예를 들면, Token0은 hash(0000+시각0+Server+1+ContentHash0)으로 계산될 수 있다. Token1은 hash(Token0 xor (0001+시각1+Server+2+ContentHash1))으로 계산될 수 있다. Token2는 hash(Token1 xor (0002+시각2+Server+2+ContentHash2))으로 계산될 수 있다. Token3은 hash(Token2 xor (0003+시각3+Server+2+ContentHash3))으로 계산될 수 있다.Each message's token is calculated using the previous message token. The method of calculating the token value may be various, and in the present invention, the “xor” operation will be described as an example. For example, Token0 can be calculated as hash(0000+time 0+Server+1+ContentHash0). Token1 can be calculated as hash(Token0 xor (0001+time 1+Server+2+ContentHash1)). Token2 can be calculated as hash(Token1 xor (0002+time 2+Server+2+ContentHash2)). Token3 can be calculated as hash(Token2 xor (0003+time 3+Server+2+ContentHash3)).

참여자들이 채팅방에서 대화 내용을 입력한다.Participants enter conversation content in the chat room.

예를 들어, 단말A(100)는 채팅방에서 "안녕하세요"가 입력되면, 입력 내용을 포함하는 메시지 추가요청[예를 들면, AddMsg(100(Text), "안녕하세요")]을 서버(200)로 전송한다(S130). For example, when "Hello" is input in a chat room, terminal A 100 sends a request for adding a message including the input content [eg, AddMsg(100(Text), "Hello")] to the server 200 Transmit (S130).

서버(200)는 메시지 추가요청에 해당하는 메시지(인덱스 0004)를 각 참여자 단말로 전송하고, 표 3과 같이 전송한 메시지(인덱스 0004)를 챗로그 데이터베이스에 기록한다(S132). 각 참여자 단말로 전송된 메시지는 Token4를 포함하고, Token4는 hash(Token3 xor (0004+시각4+A+100+ContentHash4))으로 계산될 수 있다.The server 200 transmits a message (index 0004) corresponding to the message addition request to each participant's terminal, and records the transmitted message (index 0004) in the chatlog database as shown in Table 3 (S132). The message transmitted to each participant's terminal includes Token4, and Token4 can be calculated as hash(Token3 xor (0004+time 4+A+100+ContentHash4)).

이후, 단말B(110)는 채팅방에서 "반가워요"가 입력되면, 입력 내용을 포함하는 메시지 추가요청[예를 들면, AddMsg(100(Text), "반가워요")]을 서버(200)로 전송한다(S140). Thereafter, when "nice to meet you" is input in the chat room, the terminal B 110 transmits a message addition request including the input content (eg, AddMsg(100(Text), "nice to meet you")) to the server 200. (S140).

서버(200)는 메시지 추가요청에 해당하는 메시지(인덱스 0005)를 각 참여자 단말로 전송하고, 표 3과 같이 전송한 메시지(인덱스 0005)를 챗로그 데이터베이스에 기록한다(S142). 각 참여자 단말로 전송된 메시지는 Token5를 포함하고, Token5는 hash(Token4 xor (0005+시각5+B+100+ContentHash5))으로 계산될 수 있다.The server 200 transmits a message (index 0005) corresponding to the message addition request to each participant's terminal, and records the transmitted message (index 0005) in the chatlog database as shown in Table 3 (S142). The message transmitted to each participant's terminal includes Token5, and Token5 can be calculated as hash(Token4 xor (0005+time 5+B+100+ContentHash5)).

단말C(120)는 채팅방에서 그림파일이 입력되면, 입력 내용을 포함하는 메시지 추가요청[예를 들면, AddMsg(101(Attachment), {그림파일})]을 서버(200)로 전송한다(S150). When a picture file is input in the chat room, the terminal C 120 transmits a message addition request [eg, AddMsg (101(Attachment), {picture file})]) to the server 200 (S150). ).

서버(200)는 메시지 추가요청에 해당하는 메시지(인덱스 0006)를 각 참여자 단말로 전송하고, 표 3과 같이 전송한 메시지(인덱스 0006)를 챗로그 데이터베이스에 기록한다(S152). 각 참여자 단말로 전송된 메시지는 Token6을 포함하고, Token6은 hash(Token5 xor (0006+시각6+C+101+ContentHash6))으로 계산될 수 있다. The server 200 transmits a message (index 0006) corresponding to the message addition request to each participant's terminal, and records the transmitted message (index 0006) in the chatlog database as shown in Table 3 (S152). The message transmitted to each participant terminal includes Token6, and Token6 can be calculated as hash(Token5 xor (0006+time 6+C+101+ContentHash6)).

참여자들이 채팅방에서 대화 내용을 입력한 이후, 표 2의 챗로그 데이터베이스는 표 3과 같이 갱신된다. 각 메시지의 토큰은 이전 메시지 토큰을 이용하여 계산된다. 서버(200)는 참여자별 마지막 수신 메시지 정보를 채팅방 정보로 관리한다.After the participants input the content of the conversation in the chat room, the chatlog database in Table 2 is updated as shown in Table 3. Each message's token is calculated using the previous message token. The server 200 manages the last received message information for each participant as chat room information.

RoomInfo=LastChat{A:0006, B:0006, C:0006}RoomInfo=LastChat{A:0006, B:0006, C:0006} 0000:시각0:Server:1(Reinit):--:ContentHash0:Token0
0001:시각1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:시각2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:시각3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0004:시각4:A:100(text):안녕하세요:ContentHash4=hash(안녕하세요):Token4
0005:시각5:B:100(text):반가워요:ContentHash5=hash(반가워요):Token5
0006:시각6:C:101(Attach.):{그림파일}:ContentHash6=hash({그림파일}):Token6
0000:Time 0:Server:1(Reinit):--:ContentHash0:Token0
0001:Time1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:Time2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:Time3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0004:Time4:A:100(text):Hello:ContentHash4=hash(Hello):Token4
0005:Time5:B:100(text):nice to meet you:ContentHash5=hash(nice to meet you):Token5
0006:Time 6:C:101(Attach.):{Picture File}:ContentHash6=hash({Picture File}):Token6

참여자 단말들(100, 110, 120) 각각은 주기적으로 참여 증명 요청을 서버(200)로 전송한다. 참여 증명 요청은 채팅방에 참여 중임을 증명하는 용도로 발신되고, 어플리케이션에서 주기적으로 발신될 수 있다. 단말A(100), 단말B(110), 단말C(120) 순서로 참여 증명 요청을 서버(200)로 전송한다고 가정한다.Each of the participant terminals 100, 110, and 120 periodically transmits a request for proof of participation to the server 200. The participation proof request is sent for the purpose of proving that you are participating in the chat room, and may be periodically sent from the application. It is assumed that a request for proof of participation is transmitted to the server 200 in the order of the terminal A 100, the terminal B 110, and the terminal C 120.

예를 들어, 단말A(100)가 참여 증명 요청(예를 들면, addMsg(-1(sign), [Encode(Token6, 비밀키A)])을 서버(200)로 전송한다(S160). 참여 증명 요청은 참여자 증명 정보를 포함할 수 있고, 예를 들면, 이전 메시지 토큰(Token6)을 Aiden의 비밀키로 암호화한 정보[Encode(Token6, 비밀키A)]일 수 있다. For example, the terminal A100 transmits a participation proof request (eg, addMsg(-1(sign), [Encode(Token6, secret key A)]) to the server 200 (S160). The authentication request may include participant authentication information, and may be, for example, information [Encode(Token6, private key A)] of the previous message token (Token6) encrypted with Aiden's private key.

서버(200)는 단말A(100)의 참여 증명 요청에 해당하는 Sign 메시지(인덱스 0007)를 각 참여자 단말로 전송하고, 표 4와 같이 전송한 Sign 메시지(인덱스 0007)를 챗로그 데이터베이스에 기록한다(S162). 각 참여자 단말로 전송된 Sign 메시지는 참여자 증명 정보를 및 Token7을 포함하고, Token7은 이전 메시지 토큰인 Token6을 이용하여 계산된다.The server 200 transmits a sign message (index 0007) corresponding to the request for proof of participation from terminal A 100 to each participant terminal, and records the transmitted sign message (index 0007) in the chatlog database as shown in Table 4. (S162). The Sign message sent to each participant's terminal includes participant proof information and Token7, and Token7 is calculated using Token6, the previous message token.

이후, 다른 단말에서도 동일하게 참여 증명 요청을 전송하고, 서버(200)가 참여 증명 요청에 해당하는 Sign 메시지를 각 참여자 단말로 전송한다. Thereafter, the other terminal also transmits the participation proof request in the same manner, and the server 200 transmits a Sign message corresponding to the participation proof request to each participant terminal.

구체적으로, 단말B(110)가 Sign 메시지(인덱스 0007)를 수신한 이후, 참여 증명 요청을 서버(200)로 전송하는데, 이전 메시지 토큰(Token7)을 Brian의 비밀키로 암호화한 정보[Encode(Token7, 비밀키B)]를 참여자 증명 정보로 전송한다. 서버(200)는 단말B(110)의 참여 증명 요청에 해당하는 Sign 메시지(인덱스 0008)를 각 참여자 단말로 전송하고, 표 4와 같이 전송한 Sign 메시지(인덱스 0008)를 챗로그 데이터베이스에 기록한다. Specifically, after the terminal B 110 receives the Sign message (index 0007), it transmits a participation proof request to the server 200, and the information obtained by encrypting the previous message token (Token7) with Brian's secret key [Encode (Token7 , Secret key B)] as participant identification information. The server 200 transmits a sign message (index 0008) corresponding to the participation proof request of the terminal B 110 to each participant terminal, and records the transmitted sign message (index 0008) in the chatlog database as shown in Table 4. .

단말C(120)가 sign 메시지(인덱스 0008)를 수신한 이후, 참여 증명 요청을 서버(200)로 전송하는데, 이전 메시지 토큰(Token8)을 Cindy의 비밀키로 암호화한 정보[Encode(Token8, 비밀키C)]를 참여자 증명 정보로 전송한다. 서버(200)는 단말C(120)의 참여 증명 요청에 해당하는 Sign 메시지(인덱스 0009)를 각 참여자 단말로 전송하고, 표 4와 같이 전송한 Sign 메시지(인덱스 0009)를 챗로그 데이터베이스에 기록한다. 서버(200)는 참여자별 마지막 수신 메시지 정보를 채팅방 정보에서 갱신한다. After the terminal C 120 receives the sign message (index 0008), it transmits the participation proof request to the server 200. Information obtained by encrypting the previous message token (Token8) with Cindy's secret key [Encode (Token8, secret key C)] is transmitted as participant identification information. The server 200 transmits a sign message (index 0009) corresponding to the participation proof request of the terminal C 120 to each participant terminal, and records the transmitted sign message (index 0009) in the chatlog database as shown in Table 4. . The server 200 updates the last received message information for each participant in the chat room information.

RoomInfo=LastChat{A:0009, B:0009, C:0009}RoomInfo=LastChat{A:0009, B:0009, C:0009} 0000:시각0:Server:1(Reinit):--:ContentHash0:Token0
0001:시각1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:시각2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:시각3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0004:시각4:A:100(text):안녕하세요:ContentHash4=hash(안녕하세요):Token4
0005:시각5:B:100(text):반가워요:ContentHash5=hash(반가워요):Token5
0006:시각6:C:101(Attach.):{그림파일}:ContentHash6=hash({그림파일}):Token6
0007:시각7:A:-1(Sign):Encode(Token6, 비밀키A):ContentHash7:Token7
0008:시각8:B:-1(Sign):Encode(Token7, 비밀키B):ContentHash8:Token8
0009:시각9:C:-1(Sign):Encode(Token8, 비밀키C):ContentHash9:Token9
0000:Time 0:Server:1(Reinit):--:ContentHash0:Token0
0001:Time1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:Time2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:Time3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0004:Time4:A:100(text):Hello:ContentHash4=hash(Hello):Token4
0005:Time5:B:100(text):nice to meet you:ContentHash5=hash(nice to meet you):Token5
0006:Time 6:C:101(Attach.):{Picture File}:ContentHash6=hash({Picture File}):Token6
0007:Time 7:A:-1(Sign):Encode(Token6, secret key A):ContentHash7:Token7
0008:Time 8:B:-1(Sign):Encode(Token7, secret key B):ContentHash8:Token8
0009:Time 9:C:-1(Sign):Encode(Token8, secret key C):ContentHash9:Token9

단말C(120)가 채팅방 나가기 요청(예를 들면, addMsg(3(Leave), [Encode(Token9, 비밀키C)])을 서버(200)로 전송한다(S170). 채팅방 나가기 요청은 예를 들면, 이전 메시지 토큰(Token9)을 Cindy의 비밀키로 암호화한 정보[Encode(Token9, 비밀키C)]를 포함할 수 있다. Terminal C 120 transmits a request to leave the chat room (eg, addMsg(3(Leave), [Encode(Token9, secret key C)]) to the server 200 (S170). For example, it may include information [Encode (Token9, secret key C)] of the previous message token (Token9) encrypted with Cindy's secret key.

서버(200)는 단말C(120)의 채팅방 나가기 요청에 해당하는 메시지(인덱스 0010)를 각 참여자 단말로 전송하고, 표 5와 같이 전송한 메시지(인덱스 0010)를 챗로그 데이터베이스에 기록한다(S172). 채팅방 나가기 알림 메시지는 참여자 증명에 사용될 수 있다.The server 200 transmits a message (index 0010) corresponding to the request to leave the chat room from the terminal C 120 to each participant terminal, and records the transmitted message (index 0010) in the chat log database as shown in Table 5 (S172). ). The message to leave the chat room can be used to verify participants.

RoomInfo=LastChat{A:0010, B:0010}RoomInfo=LastChat{A:0010, B:0010} 0000:시각0:Server:1(Reinit):--:ContentHash0:Token0
0001:시각1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:시각2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:시각3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0004:시각4:A:100(text):안녕하세요:ContentHash4=hash(안녕하세요):Token4
0005:시각5:B:100(text):반가워요:ContentHash5=hash(반가워요):Token5
0006:시각6:C: 101(Attach.):{그림파일}:ContentHash6=hash({그림파일}):Token6
0007:시각7:A:-1(Sign):Encode(Token6, 비밀키A):ContentHash7:Token7
0008:시각8:B:-1(Sign):Encode(Token7, 비밀키B):ContentHash8:Token8
0009:시각9:C:-1(Sign):Encode(Token8, 비밀키C):ContentHash9:Token9
0010:시각10:C:3(Leave):Encode(Token9, 비밀키C):ContentHash10:Token10
0000:Time 0:Server:1(Reinit):--:ContentHash0:Token0
0001:Time1:Server:2(Join):{A}:ContentHash1=hash({A}):Token1
0002:Time2:Server:2(Join):{B}:ContentHash2=hash({B}):Token2
0003:Time3:Server:2(Join):{C}:ContentHash3=hash({C}):Token3
0004:Time4:A:100(text):Hello:ContentHash4=hash(Hello):Token4
0005:Time5:B:100(text):nice to meet you:ContentHash5=hash(nice to meet you):Token5
0006:Time6:C:101(Attach.):{picture file}:ContentHash6=hash({picturefile}):Token6
0007:Time 7:A:-1(Sign):Encode(Token6, secret key A):ContentHash7:Token7
0008:Time 8:B:-1(Sign):Encode(Token7, secret key B):ContentHash8:Token8
0009:Time 9:C:-1(Sign):Encode(Token8, secret key C):ContentHash9:Token9
0010:Time 10:C:3(Leave):Encode(Token9, secret key C):ContentHash10:Token10

서버(200)는 일정 시간이 지나면, 표 6과 같이 서버 보관 기간을 경과한 메시지들(인덱스 0000-0014)을 삭제하고, 최신 메시지들(인덱스 0015)만을 저장할 수 있다. 만약, Brian이 서버 보관 기간보다 장기간 동안 채팅방에 미접속한 경우, 단말B(110)는 메시지(인덱스 0010)가 최근 수신 메시지로 기록될 수 있다.After a predetermined time elapses, the server 200 may delete messages (index 0000-0014) that have passed the server storage period as shown in Table 6 and store only the latest messages (index 0015). If Brian does not access the chat room for a longer period than the server storage period, the terminal B 110 may record a message (index 0010) as a recently received message.

RoomInfo=LastChat{A:0015, B:0010}RoomInfo=LastChat{A:0015, B:0010} 0015:시각15:A:-1(Sign): Encode(Token14, 비밀키A):CH15:Token150015:Time 15:A:-1(Sign): Encode(Token14, Secret Key A):CH15:Token15

이렇게, Brian이 서버 보관 기간보다 장기간 동안 채팅방에 미접속한 경우, 단말B(110)는 메시지(인덱스 0010)를 수신한 이후, 서버 보관 기간이 경과하여 삭제된 메시지(인덱스 0011부터 0014)를 수신하지 못하고, 메시지(인덱스 0015)부터 수신할 수 있다. In this way, if Brian does not access the chat room for a longer period of time than the server storage period, terminal B 110 receives the message (index 0010) and then the deleted message (index 0011 to 0014) after the server storage period has elapsed. It cannot be done, and it can be received from the message (index 0015).

메시지(인덱스 0010)와 메시지(인덱스 0015) 사이에 유실된 메시지들로 인해, 메시지(인덱스 0010)의 토큰 Token10과 메시지(인덱스 0015)의 Token15의 연속성이 깨진다. 즉, Token15는 Token14로부터 계산된 값이기 때문이다. Due to the lost messages between the message (index 0010) and the message (index 0015), the continuity of the token Token10 of the message (index 0010) and the Token15 of the message (index 0015) is broken. That is, because Token15 is a value calculated from Token14.

다음에서, 메시지를 수신하지 못한 단말의 토큰 연속성을 보완하기 위한 방법에 대해 설명한다.In the following, a method for supplementing token continuity of a terminal that has not received a message will be described.

도 3은 다른 실시예에 따른 장기 미접속 시 서버와 채팅방 참여자 단말들 사이의 요청 전송 및 메시지 전송을 설명하는 흐름도이다.3 is a flowchart illustrating request transmission and message transmission between a server and a chat room participant terminal when a long-term non-connection according to another embodiment.

도 3을 참고하면, 단말B(110)이 서버(200)에 접속한다(S210).Referring to FIG. 3, terminal B 110 accesses the server 200 (S210).

서버(200)는 채팅방 정보에서 단말B(110)의 마지막 수신 메시지 정보(인덱스 0010)를 확인한다(S220).The server 200 checks the last received message information (index 0010) of the terminal B 110 in the chat room information (S220).

서버(200)는 챗로그 데이터베이스(표 6)에 저장된 메시지들과 단말B(110)의 마지막 수신 메시지를 비교하여 미전송 메시지들을 추출한다(S222). 미전송 메시지들 중에는 이미 삭제된 메시지, 예를 들면, 메시지(인덱스 0011)부터 메시지(인덱스 0014)가 포함될 수 있다.The server 200 compares the messages stored in the chatlog database (Table 6) with the last received message of the terminal B 110 to extract unsent messages (S222). Among the untransmitted messages, messages that have already been deleted, for example, messages (index 0011) to messages (index 0014) may be included.

서버(200)는 토큰 연속성 정보 및 메시지 미수신 정보를 포함하는 Missing 메시지를 단말B(110)로 전송한다(S230). Missing 메시지는 Brian이 수신한 메시지 정보(서버 인덱스 및 토큰), 토큰 연속성 정보(미수신 메시지 인덱스 및 토큰)을 포함할 수 있다.The server 200 transmits a Missing message including token continuity information and message not received information to the terminal B 110 (S230). The Missing message may include message information (server index and token) received by Brian, and token continuity information (not received message index and token).

서버(200)는 챗로그 데이터베이스(표 6)에 저장된 메시지(메시지 0015)를 단말B(110)로 전송한다(S232). 또는, 서버(200)가 순서와 무관하게 Missing 메시지와 저장된 메시지(인덱스 0015)를 단말B(110)로 전송하고, 단말B(110)이 챗로그 저장 시 메시지 순서를 수정할 수 있다.The server 200 transmits the message (message 0015) stored in the chat log database (Table 6) to the terminal B 110 (S232). Alternatively, the server 200 may transmit the Missing message and the stored message (index 0015) to the terminal B 110 regardless of the order, and the message order may be modified when the terminal B 110 stores the chat log.

서버(200)는 단말B(110)로 Missing 메시지를 전송한 사실을 다른 참여자 단말이 알 수 있도록, 참여자 단말들에게 MissingNoti 메시지를 전송하고, 챗로그 데이터베이스에 MissingNoti 메시지를 기록한다(S240). MissingNoti 메시지의 내용은 Missing 메시지의 내용을 포함하여, 다른 참여자들이 Missing 메시지의 내용을 알 수 있도록 한다.The server 200 transmits the MissingNoti message to the participant terminals so that the other participant terminals can know that the Missing message has been transmitted to the terminal B 110, and records the MissingNoti message in the chatlog database (S240). The content of the MissingNoti message includes the content of the Missing message, allowing other participants to know the content of the Missing message.

서버(200)의 챗로그 데이터베이스는 표 7과 같다.The chatlog database of the server 200 is shown in Table 7.

RoomInfo=LastChat{A:0016, B:0016}RoomInfo=LastChat{A:0016, B:0016} 0015:시각15:A:-1(Sign): Encode(Token14, 비밀키A):CH15:Token15
0016:시각16:Server:-3(MissingNoti): {B, 10:Token10, 14:Token14}:CH16:Token16
0015:Time 15:A:-1(Sign): Encode(Token14, Secret Key A):CH15:Token15
0016:Time 16:Server:-3(MissingNoti): {B, 10:Token10, 14:Token14}:CH16:Token16

단말A(100)의 챗로그 데이터베이스는 표 8과 같다.The chat log database of terminal A 100 is shown in Table 8.

0000:시각0:Server:1(Reinit):--:CH0:Token0
0001:시각1:Server:2(Join):{A}:CH1:Token1
0002:시각2:Server:2(Join):{B}:CH2:Token2
0003:시각3:Server:2(Join):{C}:CH3:Token3
0004:시각4:A:100(text):안녕하세요:CH4:Token4
0005:시각5:B:100(text):반가워요:CH5:Token5
0006:시각6:C:101(Attach.):{그림파일}:CH6:Token6
0007:시각7:A:-1(Sign):Encode(Token6, 비밀키A):CH7:Token7
0008:시각8:B:-1(Sign):Encode(Token7, 비밀키B):CH8:Token8
0009:시각9:C:-1(Sign):Encode(Token8, 비밀키C):CH9:Token9
0010:시각10:C:3(Leave):Encode(Token9, 비밀키C):CH10:Token10
0011:시각11:A:100(text):재미난 사진이네요:CH11:Token11
0012:시각12:A:100(text):오늘 날씨 좋네요:CH12:Token12
0013:시각13:B:100(text):네:CH13:Token13
0014:시각14:B:100(text):그런데 오후에 비가 온데요:CH14:Token14
0015:시각15:A:-1(Sign):Encode(Token14, 비밀키A):CH15:Token15
0016:시각16:Server:-3(MissingNoti):{B, 10:Token10, 14:Token14}:CH16:Token16
0000:Time 0:Server:1(Reinit):--:CH0:Token0
0001:Time 1: Server:2(Join):{A}:CH1:Token1
0002:Time2:Server:2(Join):{B}:CH2:Token2
0003:Time3:Server:2(Join):{C}:CH3:Token3
0004:Time4:A:100(text):Hello:CH4:Token4
0005:Time5:B:100(text):nice to see you:CH5:Token5
0006:Time 6:C:101(Attach.):{Picture File}:CH6:Token6
0007:Time 7:A:-1(Sign):Encode(Token6, secret key A):CH7:Token7
0008:Time 8:B:-1(Sign):Encode(Token7, secret key B):CH8:Token8
0009:Time 9:C:-1(Sign):Encode(Token8, secret key C):CH9:Token9
0010:Time 10:C:3(Leave):Encode(Token9, Secret key C):CH10:Token10
0011:Time 11:A:100(text):This is an interesting photo:CH11:Token11
0012:Time 12:A:100(text):The weather is nice today:CH12:Token12
0013:Time 13:B:100(text):Yes:CH13:Token13
0014:Time 14:B:100(text): But it rains in the afternoon: CH14:Token14
0015:Time 15:A:-1(Sign):Encode(Token14, Secret Key A):CH15:Token15
0016:Time 16:Server:-3(MissingNoti):{B, 10:Token10, 14:Token14}:CH16:Token16

단말B(110)의 챗로그 데이터베이스는 표 9와 같다.The chat log database of terminal B 110 is shown in Table 9.

0000:시각0:Server:1(Reinit):--:CH0:Token0
0001:시각1:Server:2(Join):{A}:CH1:Token1
0002:시각2:Server:2(Join):{B}:CH2:Token2
0003:시각3:Server:2(Join):{C}:CH3:Token3
0004:시각4:A:100(text):안녕하세요:CH4:Token4
0005:시각5:B:100(text):반가워요:CH5:Token5
0006:시각6:C:101(Attach.):{그림파일}:CH6:Token6
0007:시각7:A:-1(Sign):Encode(Token6, 비밀키A):CH7:Token7
0008:시각8:B:-1(Sign):Encode(Token7, 비밀키B):CH8:Token8
0009:시각9:C:-1(Sign):Encode(Token8, 비밀키C):CH9:Token9
0010:시각10:C:3(Leave):Encode(Token9, 비밀키C):CH10:Token10
0011:시각11:Server:-2(Missing):{B, 10:Token10, 14:Token14}:CH11:Nil
0015:시각15:A:-1(Sign):Encode(Token14, 비밀키A):CH15:Token15
0016:시각16:Server:-3(MissingNoti):{B, 10:Token10, 14:Token14}:CH16:Token16
0000:Time 0:Server:1(Reinit):--:CH0:Token0
0001:Time 1: Server:2(Join):{A}:CH1:Token1
0002:Time2:Server:2(Join):{B}:CH2:Token2
0003:Time3:Server:2(Join):{C}:CH3:Token3
0004:Time4:A:100(text):Hello:CH4:Token4
0005:Time5:B:100(text):nice to see you:CH5:Token5
0006:Time 6:C:101(Attach.):{Picture File}:CH6:Token6
0007:Time 7:A:-1(Sign):Encode(Token6, secret key A):CH7:Token7
0008:Time 8:B:-1(Sign):Encode(Token7, secret key B):CH8:Token8
0009:Time 9:C:-1(Sign):Encode(Token8, secret key C):CH9:Token9
0010:Time 10:C:3(Leave):Encode(Token9, Secret key C):CH10:Token10
0011:Time 11:Server:-2(Missing):{B, 10:Token10, 14:Token14}:CH11:Nil
0015:Time 15:A:-1(Sign):Encode(Token14, Secret Key A):CH15:Token15
0016:Time 16:Server:-3(MissingNoti):{B, 10:Token10, 14:Token14}:CH16:Token16

도 4은 한 실시예에 따른 대화 내용 증명 방법의 흐름도이다.4 is a flowchart of a method for verifying conversation contents according to an embodiment.

도 4를 참고하면, 단말A(100)가 자신이 저장하고 있는 메시지들을 선택하고, 서버(200)로 무결성 증명을 요청한다(S310). 증명 요청된 메시지들은 예를 들면, 표 8의 메시지(인덱스 0006)부터 메시지(인덱스 0016)라고 한다. 무결성 증명 요청은 채팅방 참여자 단말뿐만 아니라, 증명 요청된 메시지들을 전송할 수 있는 다양한 장치들에서 전송될 수 있다.Referring to FIG. 4, terminal A 100 selects messages stored therein, and requests integrity verification to server 200 (S310). The messages requested for authentication are, for example, from the message (index 0006) in Table 8 to the message (index 0016). The integrity verification request may be transmitted not only from the chat room participant terminal, but also from various devices capable of transmitting the messages requested for verification.

서버(200)는 증명 요청된 메시지들에 포함된 토큰들의 토큰 연속성을 검증한다(S320). 이때, 서버(200)는 전송된 각 메시지의 토큰이 메시지 내용으로부터 생성된 것인지 토큰 무결성을 확인하면서, 토큰 연속성을 단계적으로 검증할 수 있다. 토큰 연속성이 부정된 경우, 메시지 위변조가 있는 것이므로, 서버(200)는 증명 요청된 메시지들의 무결성 검증 실패를 전송한다.The server 200 verifies the token continuity of tokens included in the messages for which authentication is requested (S320). In this case, the server 200 may verify the token continuity step by step while confirming the integrity of the token whether the token of each transmitted message is generated from the content of the message. When the token continuity is denied, since there is a forgery of a message, the server 200 transmits a failure to verify the integrity of the messages requested for verification.

서버(200)는 토큰 연속성이 확인된 경우, 증명 요청된 메시지들의 최신 메시지의 토큰(Token16)과 챗로그 데이터베이스에 저장된 해당 메시지의 토큰(Token16)을 비교한다(S330).When the token continuity is confirmed, the server 200 compares the token 16 of the latest message of the messages requested for verification with the token 16 of the corresponding message stored in the chatlog database (S330).

서버(200)는 단말로부터 수신한 최신 메시지 토큰과 저장된 메시지 토큰의 비교 결과를 기초로, 증명 요청된 메시지들의 무결성을 검증한다(S340). 단계(S320)과 단계(S330)의 순서는 변경될 수 있다.The server 200 verifies the integrity of the messages requested for verification based on the comparison result of the latest message token received from the terminal and the stored message token (S340). The order of steps S320 and S330 may be changed.

서버(200)는 증명 요청된 메시지들에 대한 무결성 검증 결과를 단말A(100)로 전송한다(S350).The server 200 transmits the results of verifying the integrity of the messages requested for authentication to the terminal A 100 (S350).

즉, 서버(200)는 증명 요청된 메시지들의 Token6과 메시지(인덱스 0007)의 정보(0007:시각7:A:-1(Sign):CH7)를 이용하여 Token7이 계산되는지 확인하고, Token7와 다음 메시지(인덱스 0008)의 정보를 이용하여 Token8이 계산되는지 확인해 나가면서, 증명 요청된 마지막 메시지(인덱스 0016)의 토큰값(Token16)을 도출한다. 단말에서 메시지 내용이 위변조 되더라도, 토큰값이 변경되지 않으므로, 서버(200)는 메시지 내용으로부터 해당 메시지의 토큰이 생성되는지 확인하는 것이다. 만약, 토큰들의 연속성이 깨진다면, 메시지 위변조가 있는 것이므로, 서버(200)는 증명 요청된 메시지들의 무결성을 부정한다. 서버(200)는 토큰 연속성이 확인된 토큰값(Token16)에 대해서, 저장된 메시지(인덱스 0016)의 토큰(Token16)을 비교하여 증명 요청된 메시지들의 무결성을 검증할 수 있다. That is, the server 200 checks whether Token7 is calculated using Token6 of the messages requested for authentication and information (0007:time7:A:-1(Sign):CH7) of the message (index 0007), and then The token value (Token16) of the last message (index 0016) requested for verification is derived while checking whether Token8 is calculated using the information in the message (index 0008). Even if the content of the message is forged in the terminal, the token value is not changed, so the server 200 checks whether a token of the message is generated from the message content. If the continuity of the tokens is broken, since there is a forgery message, the server 200 denies the integrity of the messages requested for verification. The server 200 may compare the token 16 of the stored message (index 0016) with the token value Token16 whose token continuity is confirmed to verify the integrity of the messages requested for verification.

서버(200)는 토큰 연속성을 검증하면서, MissingNoti 메시지를 발견하고, 이를 통해 Brian이 메시지(인덱스 0010)까지 수신하고, 메시지(인덱스 0011)부터 메시지(인덱스 0014)까지 미수신한 사실을 확인할 수 있다. 서버(200)는 토큰 연속성을 검증하면서, Cindy가 메시지(인덱스 0009)까지 수신하고, 채팅방을 나간 사실을 확인할 수 있다.While verifying the token continuity, the server 200 discovers the MissingNoti message, and through this, it is possible to confirm that Brian received the message (index 0010) and not received the message (index 0011) to the message (index 0014). While verifying the token continuity, the server 200 may confirm that Cindy received the message (index 0009) and left the chat room.

단말B(110)가 자신이 저장하고 있는 메시지들을 선택하고, 서버(200)로 무결성 증명을 요청하는 것도 동일하게 진행된다. 표 9를 참고하면, 서버(200)는 단말B(110)에 기록된 Missing 메시지를 통해 유실된 메시지의 토큰(Token14)를 확인하고, 이를 기초로 다음 메시지의 연속성을 검증할 수 있다. 또한, 서버(200)는 Missing 메시지를 통해 Brian의 미수신 메시지들을 확인할 수 있다. Terminal B 110 selects messages stored therein and requests the server 200 to verify integrity in the same manner. Referring to Table 9, the server 200 may check the token 14 of the lost message through the Missing message recorded in the terminal B 110, and verify continuity of the next message based on this. In addition, the server 200 may check Brian's unreceived messages through the Missing message.

도 4에서는 증명 요청된 메시지들 중 최신 메시지(인덱스 0016)가 서버(200)에 저장된 경우이므로, 서버(200)는 단계(S330)에서 증명 요청된 메시지들의 최신 메시지의 토큰(Token16)과 챗로그 데이터베이스에 저장된 해당 메시지의 토큰(Token16)을 비교할 수 있다. In FIG. 4, since the latest message (index 0016) among the messages requested for verification is stored in the server 200, the server 200 is a token 16 and a chat log of the latest message of the messages requested for verification in step S330. The token (Token16) of the message stored in the database can be compared.

한 실시예에 따르면, 서버(200)가 보관 기간 동안(예를 들면, 3일)의 메시지들의 토큰만을 저장하는 경우, 증명 요청된 메시지들은 서버의 메시지 보관 기간이 지나지 않은 메시지를 적어도 하나 포함해야 하고, 그렇지 않은 경우, 서버로부터 재선택 요청을 받을 수 있다. 또는 서버의 메시지 보관 기간이 지나지 않은 메시지가 포함되도록 자동 선택될 수 있다.According to an embodiment, when the server 200 stores only tokens of messages for a storage period (for example, 3 days), the messages requested for verification should include at least one message that has not passed the message storage period of the server. And, if not, it may receive a reselection request from the server. Alternatively, messages that have not passed the server's message retention period can be automatically selected to be included.

다른 실시예에 따르면, 서버(200)가 보관 기간이 지난 메시지들을 삭제하더라도, 삭제 메시지들의 적어도 일부의 토큰을 별도로 저장할 수 있다. 예를 들면, 서버(200)는 삭제 메시지들의 토큰을 저장하고, 저장된 토큰들 중에서 증명 요청된 메시지들 중 적어도 하나의 메시지에 해당하는 토큰을 추출해서 비교할 수 있다. According to another embodiment, even if the server 200 deletes messages that have passed the storage period, at least some tokens of the deletion messages may be separately stored. For example, the server 200 may store tokens of deletion messages and extract and compare a token corresponding to at least one message among messages requested for verification from among the stored tokens.

또는 서버(200)는 일정 주기(예를 들면, 1일)마다 적어도 하나의 토큰(예를 들면, 당일에 전송된 마지막 메시지의 토큰)을 별도 저장할 수 있다. 이 경우, 증명 요청된 메시지들은 해당 주기의 마지막 메시지를 포함하도록 자동 또는 수동으로 선택될 수 있다. 예를 들면, 서버(200)는 10일전에 채팅방으로 전송한 메시지들을 삭제하더라도, 10일전인 1월2일에 마지막으로 전송된 메시지 토큰을 1월2일 대화내용 증명을 위한 정보로 저장한다. 이후, 서버(200)는 1월1일에 전송된 메시지부터 1월2일에 마지막으로 전송된 메시지들을 증명 요청 메시지로 수신하면, 1월2일 대화내용 증명을 위해 저장해 둔 1월2일 토큰을 이용하여 도 4의 단계(S330)를 처리할 수 있다.Alternatively, the server 200 may separately store at least one token (eg, a token of the last message transmitted on the same day) every predetermined period (eg, 1 day). In this case, the messages requested for authentication may be automatically or manually selected to include the last message of the period. For example, even if the server 200 deletes the messages transmitted to the chat room 10 days ago, the message token last transmitted on January 2nd, 10 days before, is stored as information for verifying the contents of the conversation on January 2nd. Thereafter, when the server 200 receives the message transmitted on January 1 and the last message transmitted on January 2 as a proof request message, the January 2 token stored for proof of conversation contents on January 2 The step S330 of FIG. 4 may be processed by using.

지금까지 단말은 서버로부터 메시지들을 수신하고 저장하는 것으로 설명하였으나, 단말은 서버로부터 메시지를 수신할 때, 이전에 수신한 메시지와의 연속성을 검증할 수 있다. 즉, 단말은 N-1번째 수신 메시지의 TokenX와 N번째 수신 메시지의 정보를 해싱한 값이 N번째 수신 매시지의 TokenY와 동일한지 판단하고, 동일하지 않으면, 연속된 메시지가 아니라고 판단(메시지가 단말에서 삭제되거나 미수신됨)할 수 있다. 단말은 서버로 서버와의 동기화 실패를 보고할 수 있다. 단말 또는 서버는 더 이상 채팅방의 대화 내용 증명을 할 수 없음을 사용자에게 알릴 수 있다. 또는 서버는 계속 대화 내용 증명을 할 수 있도록 Missing 메시지를 단말로 전송하여 토큰 연속성을 보장할 수 있다.Until now, the terminal has been described as receiving and storing messages from the server, but when the terminal receives a message from the server, it can verify continuity with the previously received message. That is, the terminal determines whether the value obtained by hashing the TokenX of the N-1th received message and the information of the Nth received message is the same as the TokenY of the Nth received message, and if not, determines that the message is not a continuous message (the message is May be deleted or not received). The terminal may report a synchronization failure with the server to the server. The terminal or server may inform the user that it is no longer possible to prove the contents of the chat room. Alternatively, the server may guarantee token continuity by transmitting a Missing message to the terminal so that the content of the conversation can be verified continuously.

실시예에 따르면, 서버가 증명 요청된 메시지들에 부가된 토큰들의 연속성을 판단하여 증명 요청된 메시지들의 무결성을 검증하므로, 사용자는 채팅방의 대화 내용을 증명하기 위해 화면 저장 텍스트 저장 등을 별도로 할 필요 없이, 연속된 메시지들을 선택한 후 서버로 전송함으로써, 채팅방에서 전송된 연속된 메시지들을 증명할 수 있다.According to the embodiment, since the server verifies the integrity of the messages requested for verification by determining the continuity of the tokens added to the messages for which verification is requested, the user needs to separately save the screen save text to prove the content of the conversation in the chat room. Without, by selecting consecutive messages and sending them to the server, it is possible to prove the consecutive messages transmitted in the chat room.

실시예에 따르면, 서버는 채팅방에서 교환되는 최신의 메시지들만을 저장하더라도, 단말에 저장된 메시지들을 증명할 수 있다.According to the embodiment, even if the server stores only the latest messages exchanged in the chat room, it can prove the messages stored in the terminal.

이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.The embodiments of the present invention described above are not implemented only through an apparatus and a method, but may be implemented through a program that realizes a function corresponding to the configuration of the embodiment of the present invention or a recording medium on which the program is recorded.

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements by those skilled in the art using the basic concept of the present invention defined in the following claims are also provided. It belongs to the scope of rights.

Claims (13)

소셜 미디어 서비스를 제공하는 서버가 대화 내용을 증명하는 방법으로서,
상기 소셜 미디어 서비스를 이용하는 제1 참여자 단말로부터, 상기 제1 참여자 단말이 채팅방에 참여 중임을 증명하는 참여 증명 요청을 받는 단계,
상기 제1 참여자 단말의 참여 증명을 위한 제1 메시지를 상기 채팅방의 참여자 단말들로 전송하는 단계, 그리고
상기 제1 메시지를 챗로그 데이터베이스에 저장하는 단계를 포함하고,
상기 제1 메시지는 메시지 정보 그리고 제1 토큰을 포함하고,
상기 제1 토큰은 상기 제1 메시지 전에 전송된 제2 메시지의 제2 토큰과 상기 제1 메시지의 정보를 이용하여 계산되며,
상기 제1 메시지 이후에 전송된 제3 메시지는 상기 제1 토큰과 상기 제3 메시지의 정보를 이용하여 계산되는 제3 토큰을 포함하고,
상기 제2 메시지, 상기 제1 메시지, 그리고 상기 제3 메시지의 무결성은 상기 제2 토큰으로부터 상기 제1 토큰이 계산되고, 상기 제1 토큰으로부터 상기 제3 토큰이 계산되는지에 따라 검증되는, 대화 내용 증명 방법.
As a method for a server providing a social media service to prove the contents of a conversation,
Receiving, from a first participant terminal using the social media service, a participation proof request proving that the first participant terminal is participating in a chat room,
Transmitting a first message for proof of participation of the first participant terminal to participant terminals of the chat room, and
Including the step of storing the first message in a chat log database,
The first message includes message information and a first token,
The first token is calculated using the second token of the second message transmitted before the first message and the information of the first message,
The third message transmitted after the first message includes the first token and a third token calculated using information of the third message,
The integrity of the second message, the first message, and the third message is verified according to whether the first token is calculated from the second token and the third token is calculated from the first token. Proof method.
제1항에서,
상기 제1 메시지의 정보는
메시지 인덱스, 메시지 전송 시각, 메시지 발신자, 메시지 종류, 그리고 메시지 내용의 해쉬값 중 적어도 하나를 포함하는, 대화 내용 증명 방법.
In claim 1,
The information of the first message is
Conversation content verification method including at least one of a message index, message transmission time, message sender, message type, and hash value of the message content.
제1항에서,
상기 제1 메시지는 히든 메시지이며,
상기 히든 메시지는 상기 채팅방에서 표시되지 않는 메시지인, 대화 내용 증명 방법.
In claim 1,
The first message is a hidden message,
The hidden message is a message that is not displayed in the chat room.
제3항에서,
상기 제1 메시지는 상기 제1 참여자 단말의 참여 증명 정보를 포함하고,
상기 참여 증명 정보는 상기 제2 토큰 또는 상기 제2 토큰을 암호화한 정보를 포함하는, 대화 내용 증명 방법.
In paragraph 3,
The first message includes participation proof information of the first participant terminal,
The participation proof information includes information obtained by encrypting the second token or the second token.
제1항에서,
상기 채팅방의 참여자 단말들 각각의 마지막 수신 메시지 정보를 관리하는 단계
를 더 포함하는 대화 내용 증명 방법.
In claim 1,
Managing the last received message information of each of the participant terminals in the chat room
Conversation content proof method further comprising.
제5항에서,
제2 참여자 단말이 접속한 경우, 상기 제2 참여자 단말의 마지막 수신 메시지를 확인하는 단계,
상기 챗로그 데이터베이스에 저장된 메시지들과 상기 제2 참여자 단말의 마지막 수신 메시지를 비교하고, 미전송 메시지들 중 삭제된 메시지 정보를 추출하는 단계, 그리고
상기 삭제된 메시지 정보를 포함하는 제1 히든 메시지를 전송하는 단계를 더 포함하고,
상기 삭제된 메시지 정보는 삭제된 메시지들 중 최신 메시지의 토큰을 포함하는, 대화 내용 증명 방법.
In clause 5,
When the second participant terminal accesses, confirming the last received message of the second participant terminal,
Comparing the messages stored in the chatlog database with the last received message of the second participant terminal, and extracting deleted message information from among unsent messages, and
Further comprising the step of transmitting a first hidden message including the deleted message information,
The deleted message information includes a token of the latest message among deleted messages.
제6항에서,
상기 삭제된 메시지 정보는
상기 제2 참여자 단말이 미수신한 메시지 정보를 더 포함하는 대화 내용 증명 방법.
In paragraph 6,
The deleted message information is
Conversation content verification method further comprising message information not received by the second participant terminal.
제6항에서,
상기 제1 히든 메시지를 상기 제2 참여자 단말로 전송한 정보를 포함하는 제2 히든 메시지를 상기 채팅방의 참여자 단말들로 전송하는 단계, 그리고
상기 제2 히든 메시지를 챗로그 데이터베이스에 저장하는 단계
를 포함하는, 대화 내용 증명 방법.
In paragraph 6,
Transmitting a second hidden message including information on transmitting the first hidden message to the second participant terminal to the participant terminals of the chat room, and
Storing the second hidden message in a chatlog database
Containing, conversation content proof method.
소셜 미디어 서비스를 제공하는 서버가 대화 내용을 증명하는 방법으로서,
채팅방의 참여자 단말들로 전송한 메시지들을 챗로그 데이터베이스에 저장하는 단계,
임의 참여자 단말로부터, 특정 메시지들에 대한 무결성 증명 요청을 수신하는 단계, 그리고
증명 요청된 메시지들에 포함된 토큰들과 상기 챗로그 데이터베이스에 저장된 토큰을 기초로 상기 증명 요청된 메시지들의 무결성을 검증하는 단계를 포함하고,
각 메시지는 메시지 정보 그리고 토큰을 포함하고,
상기 토큰은 상기 채팅방에서 해당 메시지 이전에 전송된 메시지의 토큰과 해당 메시지의 정보를 이용하여 계산되며,
상기 무결성을 검증하는 단계는
상기 증명 요청된 메시지들에 포함된 메시지 정보 및 토큰을 이용하여 상기 증명 요청된 메시지들의 토큰들이 연속적으로 계산되는지 검증하는 단계, 그리고
상기 증명 요청된 메시지들 중 최신 메시지의 토큰과 상기 챗로그 데이터베이스에 저장된 토큰을 비교하여 상기 증명 요청된 메시지들의 무결성을 검증하는 단계
를 포함하는 대화 내용 증명 방법.
As a method for a server providing a social media service to prove the contents of a conversation,
Storing messages sent to the participants terminals of the chat room in the chat log database,
Receiving an integrity certificate request for specific messages from a random participant terminal, and
And verifying the integrity of the authentication-requested messages based on tokens included in the authentication-requested messages and tokens stored in the chatlog database,
Each message contains message information and a token,
The token is calculated using the token of the message transmitted before the message in the chat room and information of the message,
The step of verifying the integrity is
Verifying that tokens of the authentication-requested messages are continuously calculated using message information and tokens included in the authentication-requested messages, and
Comparing the token of the latest message among the messages requested for verification with a token stored in the chatlog database to verify the integrity of the messages requested for verification
Conversation content proof method comprising a.
삭제delete 제9항에서,
상기 증명 요청된 메시지들 중 특정 참여자의 참여 증명 정보를 포함하는 히든 메시지가 존재하는 경우, 상기 히든 메시지를 기초로 상기 특정 참여자가 채팅방에 참여한 사실을 증명하는 단계
를 더 포함하는 대화 내용 증명 방법.
In claim 9,
Proving that the specific participant participated in the chat room based on the hidden message, if there is a hidden message including participation proof information of a specific participant among the messages requested for proof
Conversation content proof method further comprising.
제9항에서,
상기 증명 요청된 메시지들 중 특정 참여자의 채팅방 나가기 정보를 포함하는 메시지가 존재하는 경우, 상기 특정 참여자가 채팅방을 나간 사실을 증명하는 단계
를 더 포함하는 대화 내용 증명 방법.
In claim 9,
Proving that the specific participant has left the chat room if there is a message including information about leaving the chat room of a specific participant among the messages requested for verification
Conversation content proof method further comprising.
제9항에서,
상기 증명 요청된 메시지들 중 특정 참여자에게 삭제된 메시지 정보를 전송한 히든 메시지가 존재하는 경우, 상기 히든 메시지를 기초로 상기 특정 참여자의 미수신 메시지 정보를 증명하는 단계
를 더 포함하는 대화 내용 증명 방법.
In claim 9,
Proving unreceived message information of the specific participant based on the hidden message when there is a hidden message that has transmitted deleted message information to a specific participant among the messages requested for authentication
Conversation content proof method further comprising.
KR1020190009500A 2019-01-24 2019-01-24 Method for providing contents certification in social media service and, server, user device and application implementing the method KR102175806B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190009500A KR102175806B1 (en) 2019-01-24 2019-01-24 Method for providing contents certification in social media service and, server, user device and application implementing the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190009500A KR102175806B1 (en) 2019-01-24 2019-01-24 Method for providing contents certification in social media service and, server, user device and application implementing the method

Publications (2)

Publication Number Publication Date
KR20200092216A KR20200092216A (en) 2020-08-03
KR102175806B1 true KR102175806B1 (en) 2020-11-06

Family

ID=72042967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190009500A KR102175806B1 (en) 2019-01-24 2019-01-24 Method for providing contents certification in social media service and, server, user device and application implementing the method

Country Status (1)

Country Link
KR (1) KR102175806B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006520112A (en) 2002-11-26 2006-08-31 セキュア データ イン モーション,インコーポレイテッド Security key server, implementation of processes with non-repudiation and auditing
JP2009519646A (en) 2005-12-16 2009-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション Collaborative non-repudiation message exchange in a network environment
KR101795695B1 (en) * 2016-07-14 2017-12-01 주식회사 코인플러그 Method for providing archiving service and verification service of data transceived via messenger service and server using the same

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397633B1 (en) * 2007-12-05 2014-05-22 주식회사 케이티 System and method for providing instatnt message service in ims
KR101335065B1 (en) * 2011-09-22 2013-12-03 (주)카카오 Conversational message service operating method for providing acknowledgement

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006520112A (en) 2002-11-26 2006-08-31 セキュア データ イン モーション,インコーポレイテッド Security key server, implementation of processes with non-repudiation and auditing
JP2009519646A (en) 2005-12-16 2009-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション Collaborative non-repudiation message exchange in a network environment
KR101795695B1 (en) * 2016-07-14 2017-12-01 주식회사 코인플러그 Method for providing archiving service and verification service of data transceived via messenger service and server using the same

Also Published As

Publication number Publication date
KR20200092216A (en) 2020-08-03

Similar Documents

Publication Publication Date Title
US11646902B2 (en) Methods for requesting and authenticating photographic image data
US20230006842A1 (en) Blockchain-based data processing method and apparatus, computer device, computer-readable storage medium, and computer program product
US10469460B2 (en) Data sharing in a blockchain-enabled trust domain
US9537867B2 (en) Digital social network trust propagation
US8412675B2 (en) Context aware data presentation
US8065328B2 (en) Sharing of media using contact data
US8069166B2 (en) Managing user-to-user contact with inferred presence information
JP7050354B2 (en) How to manage multiple profiles for a single account in an asynchronous messaging system, system and computer readable media
KR20150130357A (en) Wireless data privacy maintained through a social network
US11575506B2 (en) System and method for electronic conference verification and management
Vukadinovic Whatsapp forensics: Locating artifacts in web and desktop clients
KR102048618B1 (en) System and method for determining appropriate content for an event content stream
US20180212921A1 (en) Method and system for transmitting text messages
KR102120419B1 (en) Method for providing contents certification in social media service and, server, user device and application implementing the method
KR102175806B1 (en) Method for providing contents certification in social media service and, server, user device and application implementing the method
EP2360889A1 (en) Creation and use of a telecommunication link between two users of a telecommunication network
KR102120418B1 (en) Method for providing mutual certification of contents in social media service and, server, user device and application implementing the method
EP2979435B1 (en) Method for processing data of a social network user
US20230055835A1 (en) Systems and Methods for Using a Non-Fungible Digital Asset to Facilitate Accessing an Access-Restricted Resource
US11140109B2 (en) System and method for transparent communications
KR20220023437A (en) Methods for Proving Chatting Contents in Chatting Service of SNS Platform
KR20220022072A (en) Methods for Proving Chatting Contents in Chatting Service of SNS Platform
KR20200091997A (en) Electronic voting and survey system using block chain
JP4681812B2 (en) Method and apparatus for storing and managing contacts in a distributed collaboration system
EP1544762A1 (en) Method and apparatus for storing and managing contacts in a distributed collaboration system

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant