KR20220101562A - 모바일 디바이스에 알림 전달 - Google Patents

모바일 디바이스에 알림 전달 Download PDF

Info

Publication number
KR20220101562A
KR20220101562A KR1020210185131A KR20210185131A KR20220101562A KR 20220101562 A KR20220101562 A KR 20220101562A KR 1020210185131 A KR1020210185131 A KR 1020210185131A KR 20210185131 A KR20210185131 A KR 20210185131A KR 20220101562 A KR20220101562 A KR 20220101562A
Authority
KR
South Korea
Prior art keywords
message
notification
server
recipient
wireless carrier
Prior art date
Application number
KR1020210185131A
Other languages
English (en)
Other versions
KR102684689B1 (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 구글 엘엘씨
Publication of KR20220101562A publication Critical patent/KR20220101562A/ko
Application granted granted Critical
Publication of KR102684689B1 publication Critical patent/KR102684689B1/ko

Links

Images

Classifications

    • 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/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements
    • H04W4/14Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
    • 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/23Reliability checks, e.g. acknowledgments or fault reporting
    • 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/58Message adaptation for wireless communication
    • 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
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/1016IP multimedia subsystem [IMS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1073Registration or de-registration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 명세서에 기술된 구현예는 모바일 디바이스에 알림을 안전하게 전달하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체에 관한 것이다. 일부 구현예에서, 컴퓨터로 구현되는 방법은 수신자 디바이스에서, 무선 캐리어로부터 메시지를 수신하는 단계를 포함하며, 상기 메시지는 애플리케이션 서버로부터의 알림을 포함한다. 상기 방법은 상기 수신자 디바이스에 로컬적으로 저장된 개인 키를 사용하여 상기 메시지를 복호화하는 단계를 더 포함한다. 상기 방법은 상기 복호화된 메시지와 연관된 상기 수신자 디바이스 상에서 실행되는 소프트웨어 애플리케이션을 식별하는 단계를 더 포함하며, 상기 복호화된 메시지는 상기 알림을 포함한다. 상기 방법은 상기 복호화된 메시지를 소프트웨어 애플리케이션에 전달하는 단계를 더 포함한다.

Description

모바일 디바이스에 알림 전달{DELIVERY OF NOTIFICATIONS TO MOBILE DEVICES}
알림은 스마트폰, 태블릿, 웨어러블 디바이스, 랩톱 등과 같은 디바이스에서 실행되는 최신 소프트웨어 애플리케이션의 일반적인 기능이다. 많은 경우 알림은 서버에서 생성되어 인터넷을 통해 디바이스에서 실행되는 애플리케이션에 제공된다. 보안 메시지 전달을 보장하기 위해, 애플리케이션은 이러한 서버와의 보안 연결, 예를 들어 TLS(전송 계층 보안) 연결을 활용할 수 있다.
무선 캐리어 네트워크를 통한 데이터 및 음성 통신을 위해 무선 캐리어 네트워크에 연결되는 모바일 디바이스에서 이러한 연결을 설정하고 유지하려면 상당한 리소스가 필요할 수 있다. 예를 들어, 무선 캐리어 시스템(예를 들어, 네트워크 주소 변환을 활용하는)은 비활성인 보안 연결(예를 들어, TLS 연결)을 닫을 수 있다. 이러한 경우, 알림을 수신하려면 애플리케이션이 서버와의 보안 연결을 다시 설정해야 한다.
보안 연결이 닫히지 않도록 하는 메커니즘은 애플리케이션이 인터넷을 통해 정기적인 연결 유지 메시지를 생성하여 서버로 보내는 것이다. 그러나 이러한 메시지를 보내려면 모바일 디바이스의 무선 송신기가 활성화되어 있어야 하므로 전력이 낭비되고 배터리로 구동되는 디바이스에서는 배터리가 소모된다. 애플리케이션이 서버에 주기적으로(예: 몇 분에 한 번씩) 연결하여 전력 사용량을 줄이도록 구성할 수 있지만, 알림 전달이 지연될 수 있고 보안 연결이 설정된 주기에서만 발생할 수 있기 때문에 사용자 경험이 저하될 수 있다. 또한, 무선 캐리어 네트워크에 연결된 여러 디바이스에서 수신된 연결 유지 메시지도 셀룰러 혼잡을 유발할 수 있다.
본 명세서에 제공된 배경기술은 본 발명의 컨텍스트를 일반적으로 제시하기 위한 목적이다. 본 배경기술 섹션에서 기술되는 범위까지 현재 명명된 발명자들의 성과 뿐만 아니라 출원 시점에 선행기술로서 인정되지 않는 기술의 양태들은 본 발명에 대한 선행기술로서 명시적으로 또는 묵시적으로도 인정되지 않는다.
본 명세서에 기술된 구현예는 모바일 디바이스에 알림을 안전하게 전달하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체에 관한 것이다.
일 양태에서, 컴퓨터로 구현되는 방법은 수신자 디바이스에서, 무선 캐리어로부터 메시지를 수신하는 단계를 포함하며, 상기 메시지는 애플리케이션 서버로부터의 알림을 포함한다. 상기 방법은 상기 수신자 디바이스에 로컬적으로 저장된 개인 키를 사용하여 상기 메시지를 복호화하는 단계를 더 포함한다. 상기 방법은 상기 복호화된 메시지와 연관된 상기 수신자 디바이스 상에서 실행되는 소프트웨어 애플리케이션을 식별하는 단계를 더 포함하며, 상기 복호화된 메시지는 상기 알림을 포함한다. 상기 방법은 상기 복호화된 메시지를 소프트웨어 애플리케이션에 전달하는 단계를 더 포함한다.
상기 수신자 디바이스는 상기 무선 캐리어에 의해 동작되는 셀룰러 네트워크에 연결된 무선 디바이스이고, 상기 메시지를 수신하는 단계는 상기 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 상기 메시지를 수신하는 단계를 포함한다. 일부 구현예에서, 메시지는 세션 개시 프로토콜(SIP) 메시지로서 수신될 수 있다. 일부 구현예에서, SIP 메시지는 SIP OPTIONS 메시지일 수 있다. 이러한 구현예에서, 알림은 SIP OPTIONS 메시지의 콘텐츠 본문에 포함될 수 있다.
일부 구현예에서, 메시지는 무선 캐리어와 통신하는 디바이스 모뎀을 통해 수신자 디바이스의 네트워크 액세스 레이어에서 수신될 수 있다. 이러한 구현예에서, 소프트웨어 애플리케이션과 애플리케이션 서버 간에 활성 연결이 존재하지 않는다.
일부 구현예에서, 방법은 복호화 후에, 수신확인 메시지를 무선 캐리어에 전송하는 단계를 더 포함할 수 있다.
일부 구현예에서, 방법은 메시지를 수신하기 전에, 상기 수신자 디바이스에서, 공개 키 및 개인 키를 포함하는 암호화 키 쌍을 생성하는 단계; 상기 수신자 디바이스의 로컬 저장소에 상기 개인 키를 저장하는 단계; 및 상기 공개 키를 포함하는 등록 메시지를 인터넷을 통해 메시지 전달 서버에 전송하는 단계를 더 포함한다. 일부 구현예에서, 등록 메시지는 소프트웨어 애플리케이션과 연관된 토큰을 더 포함할 수 있다. 이들 구현예에서, 소프트웨어 애플리케이션을 식별하는 단계는 복호화된 메시지에서 수신된 토큰이 소프트웨어 애플리케이션과 연관된 토큰과 일치하는지를 결정하는 것에 기초할 수 있다.
다른 양태에서, 디바이스는 프로세서, 디바이스를 무선 캐리어에 연결하도록 동작가능한 모뎀 및 프로세서에 연결된, 명령어를 저장하는 메모리를 포함하고, 상기 명령어는 프로세서에 의해 실행될 때 프로세서로 하여금 동작들을 수행하게 하며, 상기 동작들은 무선 캐리어로부터 메시지를 수신하는 동작, 상기 메시지는 애플리케이션 서버로부터의 알림을 포함하며; 개인 키를 사용하여 상기 메시지를 복호화하는 동작; 상기 복호화된 메시지와 연관된 소프트웨어 애플리케이션을 식별하는 동작, 상기 복호화된 메시지는 상기 알림을 포함하며; 및 상기 복호화된 메시지를 상기 소프트웨어 애플리케이션에 전달하는 동작을 포함한다. 상기 메시지는 상기 무선 캐리어와 통신하는 모뎀을 통해 디바이스의 네트워크 액세스 레이어에서 수신되고, 상기 소프트웨어 애플리케이션과 상기 애플리케이션 서버 사이에는 활성 연결이 존재하지 않는다.
일부 구현예에서, 디바이스는 상기 무선 캐리어에 의해 동작되는 셀룰러 네트워크에 연결될 수 있고, 상기 메시지를 수신하는 동작은 상기 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 상기 메시지를 수신하는 동작을 포함한다. 일부 구현예에서, 메시지는 세션 개시 프로토콜(SIP) 메시지로서 수신될 수 있다.
일부 구현예에서, 동작들은 메시지를 수신하기 전에, 공개 키 및 개인 키를 포함하는 암호화 키 쌍을 생성하는 동작; 상기 디바이스의 로컬 저장소에 상기 개인 키를 저장하는 동작; 및 상기 공개 키를 포함하는 등록 메시지를 인터넷을 통해 메시지 전달 서버에 전송하는 동작을 더 포함한다.
다른 양태에서, 메시지를 전달하기 위한 컴퓨터로 구현되는 방법은 메시지 전달 서버에서 애플리케이션 서버로부터 알림을 수신하는 단계를 포함한다. 상기 방법은 상기 알림의 수신자가 상기 메시지 전달 서버에 저장된 공개 키와 연관되는지 결정하는 단계를 포함하며, 상기 공개 키는 수신자 디바이스와 연관된다. 상기 방법은 상기 수신자가 상기 공개 키와 연관된다는 결정에 응답하여, 상기 공개 키로 상기 알림을 암호화함으로써 상기 메시지를 생성하는 단계를 더 포함한다. 상기 방법은 수신자 디바이스로의 전달을 위해 메시지를 무선 캐리어에 전송하는 단계를 더 포함한다.
상기 수신자 디바이스는 상기 무선 캐리어에 의해 동작되는 셀룰러 네트워크에 연결된 무선 디바이스이고, 상기 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 상기 수신자에게 상기 메시지가 전달된다. 일부 구현예에서, 메시지 전달 서버 및 무선 캐리어는 RCS에 대한 피어링 연결을 유지할 수 있다.
일부 구현예에서, 상기 방법은 인터넷을 통해 알림을 하나 이상의 다른 수신자 디바이스들에 전송하는 단계를 더 포함할 수 있다.
일부 구현예에서, 상기 방법은 알림을 수신하기 전에, 상기 메시지 전달 서버에서, 상기 수신자 디바이스로부터 등록 메시지를 수신하는 단계를 더 포함하고, 상기 등록 메시지는 상기 공개 키 및 수신자 식별자를 포함한다. 일부 구현예에서, 알림의 수신자가 공개 키와 연관되는지를 결정하는 단계는 수신자가 수신자 식별자와 일치한다는 결정에 기초할 수 있다. 일부 구현예에서, 수신자 디바이스는 소프트웨어 애플리케이션을 실행할 수 있고, 수신자 식별자는 소프트웨어 애플리케이션과 연관된 토큰일 수 있다.
도 1은 본 명세서에 기술된 하나 이상의 구현예에 대해 사용될 수 있는 예시적 네트워크 환경의 블록도이다.
도 2는 일부 구현예에 따라, 알림을 수신할 디바이스를 등록하는 예시적 방법을 도시하는 흐름도이다.
도 3는 일부 구현예에 따라, 디바이스에서 알림을 수신하기 위한 예시적 방법을 도시하는 흐름도이다.
도 4는 일부 구현예에 따라 알림의 전달을 예시하는 흐름도이다.
도 5은 본 명세서에 기술된 하나 이상의 구성들을 구현하기 위해 사용될 수 있는 예시적 컴퓨팅 디바이스의 블록도이다.
방법, 시스템 및 컴퓨터 판독가능 매체(이는 비일시적 컴퓨터 판독가능 매체일 수 있지만 이에 제한되지 않음)는 무선 캐리어를 통해(네트워크 액세스 레이어를 통해) 클라이언트 디바이스로 메시지를 전달하기 위해 본 명세서에 기술된다. 메시지는 클라이언트 디바이스에서 실행되는 애플리케이션에 대한 알림을 포함할 수 있다. 설명된 기법에 따라, 디바이스는 무선 캐리어를 통한 앱 알림을 포함하는 메시지 전달을 위해 무선 캐리어에 등록된다.
설명된 기법은 클라이언트 디바이스와 애플리케이션 서버에 의해 생성된 알림을 클라이언트 디바이스로 전달하는 메시지 전달 서버 사이, 또는 클라이언트 디바이스와 애플리케이션 서버 사이에 보안 연결을 설정하고 유지하는 알림 기법의 기술적 단점을 해결한다. 이러한 알림 기법은 일반적으로 인터넷 PDN(공용 데이터 네트워크)을 통한 OTT(over the top) TLS(Transport Layer Security) 연결을 사용한다.
이러한 구성의 기술적 문제는 무선 캐리어 백엔드에서 네트워크 주소 변환(NAT) 시간 초과가 발생할 수 있고, 비활성으로 인해 보안 연결이 닫힐 수 있다는 것이다(예: 클라이언트 디바이스와 무선 캐리어 시스템 사이에 무선 캐리어에서 설정한 임계값보다 긴 기간 동안 보안 연결에서 인터렉션이 없음). 이러한 연결 폐쇄를 방지하려면, 클라이언트 디바이스(예: 알림을 수신하는 애플리케이션)가 주기적으로 연결 유지 메시지를 전송해야 한다. 그러한 메시지를 보내려면 무선 송신기(및 클라이언트 디바이스 모뎀을 포함한 관련 회로)를 깨워야 한다. 이러한 깨우기 및 무선 송신기의 사용은 전력을 낭비할 수 있다. 배터리 구동 디바이스에서 이러한 활동은 디바이스 배터리를 소모할 수 있다. 또한, 연결 유지 메시지는 무선 캐리어에 대한 셀룰러 네트워크 혼잡을 유발할 수 있다.
본 명세서에 기술된 방법, 시스템 및 비일시적 컴퓨터 판독가능 매체 기법들은 클라이언트 디바이스(예: 모바일폰 또는 기타 셀룰러 통신 디바이스)와 무선 캐리어 시스템 간의 단일 등록 메시징(아래에서 더 설명됨)을 활용하여 메시지(예: 앱 알림 포함)을 전달한다. 단일 등록 메시징은 클라이언트 디바이스가 무선 캐리어 시스템에 등록하고 연결을 개방 상태로 유지하기 위해(클라이언트가 주기적으로 깨울 것을 요하는 값비싼 연결 유지 필요 없이) IP 멀티미디어(코어 네트워크) 서브시스템 PDN(IMS PDN)을 활용하는 메커니즘이다. 예를 들어, RCS(Rich Communication Services) 프로토콜은 메시지 전달에 사용될 수 있다.
무선 캐리어는 일반적으로 클라이언트 디바이스 등록(예: Voice-over-LTE(Long Term Evolution)을 통한 무선 캐리어와 클라이언트 디바이스 간의 통신 및 IP 멀티미디어(코어 네트워크) 서브시스템 PDN(IMS PDN)을 통한 단일 IP 보안(IPSec) 소켓을 통한 RCS 등록을 위한 통신)을 공유한다. 클라이언트 디바이스는 셀룰러 통신을 위해 IMS 네트워크에 대한 연결을 유지한다.
본 명세서에 기술된 기법에 따라, 성공적인 디바이스 등록시, 디바이스와 IMS 네트워크 사이의 이러한 연결은 클라이언트 디바이스의 애플리케이션으로의 메시지 전달을 위해 활용된다. TLS(또는 기타 보안 OTT 연결)를 설정하고 활성 상태로 유지하는 오버헤드를 제거함으로써, 설명된 기법은 주기적으로 클라이언트 디바이스를 깨우거나 메시지를 보낼 필요를 제거하여, 전력 소비를 낮추고 배터리 수명을 개선하며 무선(셀룰러) 네트워크에서 네트워크 정체를 감소시킨다. 또한 설명된 기법은 클라이언트 디바이스가 차선의 인터넷 연결을 가질 때 알림 전달의 안정성과 성능을 향상시킬 수 있다.
또한 IMS 네트워크의 중요한 이점은 네트워크 주소 변환이 없고 IPv6(인터넷 프로토콜 버전 6)을 통해 배포된다는 것이다. 설명된 기법은 앱 알림을 안정적으로 전달할 수 있는 디바이스 등록을 수행하여 IMS PDN의 이 기능을 유리하게 사용한다. IMS PDN을 통한 메시지 전달의 기술적 문제는 IMS PDN이 종종 방화벽 환경에 배포되어 애플리케이션 서버 및/또는 메시지 전달 서버에 대한 직접 연결을 허용하지 않는다는 것이다. 또한, 클라이언트 디바이스의 디바이스 운영 체제는 IMS PDN에 대한 노출이 제한적일 수 있는데, 이 연결이 클라이언트 디바이스 하드웨어, 예를 들어 디바이스 모뎀에 의해 관리될 수 있기 때문이다. 설명된 기법은 디바이스 등록을 활용하여 이 문제를 극복한다.
설명된 기법은 보안 OTT 연결을 설정할 필요 없이, 앱 알림이 무선 캐리어 네트워크를 통해 안전하게 전송되도록 하기 위해 공개 키 암호화를 유리하게 사용한다. 특히, 클라이언트 디바이스는 알림을 암호화하기 위해 메시지 전달 서버(또는 알림을 생성하는 다른 서버)에서 사용할 공개 키를 제공한다. 암호화된 메시지는 메시지 콘텐츠(예: 앱 알림)의 보안을 손상시키지 않으면서 정규 통신 채널(예: 암호화되지 않음)을 통해 전송될 수 있다. 클라이언트 디바이스에 안전하게 저장된 개인 키는 메시지를 복호화하고, 알림을 검색하고, 알림을 클라이언트 디바이스의 각 애플리케이션에 제공하는데 사용된다.
도 1은 본 명세서에 기술된 일부 구현예에 대해 사용될 수 있는 예시적 네트워크 환경(100)의 블록도를 도시한다. 일부 구현예에서, 네트워크 환경(100)은 하나 이상의 서버 시스템, 예를 들어, 도 1의 예에서 서버 시스템(102) 및 제2 서버 시스템(140)을 포함한다. 서버 시스템(102, 140)은 예를 들어 네트워크(130)와 통신할 수 있다. 서버 시스템(102)은 서버 디바이스(104) 및 데이터베이스(106) 또는 다른 저장 디바이스를 포함할 수 있다. 일부 구현예에서, 서버 디바이스(104)은 메시지 전달 애플리케이션(108)을 제공할 수 있다. 제2 서버 시스템(140)은 하나 이상의 애플리케이션 서버, 예를 들어 앱 A 서버(142) 및 앱 B 서버(144)를 포함할 수 있다.
메시지 전달 애플리케이션(108)은 네트워크(130)를 통해 하나 이상의 애플리케이션 서버, 예를 들어 앱 A 서버(142), 앱 B 서버(144)와 통신하도록 구성될 수 있다. 예를 들어, 애플리케이션 서버는 하나 이상의 클라이언트 디바이스에 전송될 알림을 생성하도록 구성될 수 있고, 메시지 전달을 수행할 수 있는 메시지 전달 서버(104)에 알림을 전송할 수 있다. 일부 구현예에서, 메시지 전달 애플리케이션(108)은 클라우드 기반 메시징 서비스로서 구현될 수 있다. 메시지 전달 애플리케이션(108)은 애플리케이션 서버가 클라이언트 디바이스 상의 앱(예를 들어, 앱 A(152), 앱 B(154))에 알림을 보내게 할 수 있다. 예를 들어, 앱 A가 이메일 애플리케이션인 경우 알림은 앱 A에 대해 새로운 이메일 메시지 또는 기타 데이터를 사용할 수 있음을 나타낼 수 있다. 다른 예에서 앱 B가 쇼핑 앱인 경우 알림은 사용자에게 제안 또는 쿠폰, 주문에 대한 상태 업데이트 제공 등을 알릴 수 있다. 다양한 구현예에서, 알림은 텍스트, 그래픽(예: 이미지, 비디오 등), 또는 기타 콘텐츠를 포함할 수 있다.
네트워크 환경(100)은 또한 네트워크(130)를 통해 서로 및/또는 서버 시스템(102) 및/또는 제2 서버 시스템(140)과 통신할 수 있는 하나 이상의 클라이언트 디바이스, 예를 들어 클라이언트 디바이스(120, 122, 124, 126)를 포함할 수 있다. 클라이언트 디바이스들(120-126)은 무선 캐리어, 예를 들어, 무선 캐리어 시스템(160)에 의해 동작되는 셀룰러 네트워크에 연결될 수 있다. 일부 구현예에서, 클라이언트 디바이스(120-126)는 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 메시지를 전송 및 수신하도록 구성될 수 있다.
네트워크(130)는 임의의 유형의 통신 네트워크, 예를 들어 인터넷 또는 광역 네트워크일 수 있다. 일부 구현예에서, 둘 이상의 클라이언트 디바이스는 예를 들어, 피어 투 피어 무선 프로토콜(예를 들어, 블루투스®, Wi-Fi 다이렉트 등) 등을 사용하여 피어 투 피어 통신을 수행하도록 구성될 수 있다. 두 클라이언트 디바이스(120 및 122) 간의 피어 투 피어 통신의 일 예가 화살표(132)에 의해 도시된다.
네트워크 환경(100)은 또한 네트워크(130)에 연결된 무선 캐리어 시스템(160)을 포함한다. 무선 캐리어 시스템(160)은 예를 들어, 클라이언트 디바이스들(120-126) 중 임의의 것이 셀룰러 연결을 통해 무선 캐리어 시스템(160)과 통신할 수 있게 하는 셀룰러 서비스 인프라를 포함할 수 있다. 일부 구현예에서, 셀룰러 연결은 LTE(Long Term Evolution) 연결, 5G 연결 등일 수 있다. 다양한 구현예에서, 클라이언트 디바이스들(120-126)은 네트워크 액세스 레이어를 통해 무선 캐리어 시스템(160)과의 연결을 유지할 수 있다. 예를 들어, 클라이언트 디바이스는 4G 또는 5G 네트워크를 통해 또는 ePDG(evolved Packet Data Gateway 연결, 예를 들어, 무선 액세스 포인트(WiFi AP)에 연결된 경우)를 통해 무선 캐리어 시스템(160)에 활성 연결을 유지할 수 있다. 어느 경우이든, 무선 캐리어 시스템(160)과의 연결은 IP 보안(IPSec)을 통해 이루어지며 따라서 신뢰되고 암호화된다. 클라이언트 디바이스가 4G 또는 5G 네트워크를 통해 연결된 경우, 연결 유지 메시지가 필요하지 않다. 클라이언트 디바이스가 무선 AP(WiFi)를 통해 연결되면, 디바이스 모뎀은 디바이스의 나머지 부분을 깨우지 않고 IPSec 채널에서 연결 유지를 보낸다. IPSec 채널은 VoWiFi(Voice over WiFi)를 위해 유지되기 때문에, 모뎀에서 보낸 연결 유지 메시지는 클라이언트 디바이스나 무선 캐리어 네트워크에 추가적인 부담을 주지 않는다.
무선 캐리어 시스템(160)은 캐리어 메시징 허브(162)를 포함할 수 있다. 예를 들어, 캐리어 메시징 허브(162)는 하나 이상의 서버 디바이스를 포함할 수 있다. 일부 구현예에서, 캐리어 메시징 허브는 메시지 전달 애플리케이션(108)을 실행하는 서버 디바이스(104)와의 피어링 연결을 설정할 수 있다. 피어링 연결은 메시지 전달 애플리케이션에서 캐리어 메시징 허브를 통해 클라이언트 디바이스로 메시지를 효율적이고 빠르게 중계할 수 있다. 무선 캐리어 시스템(160)은 네트워크(130), 예를 들어, 인터넷 또는 다른 광역 네트워크를 통해 서버 디바이스(104) 및 서버 시스템(140)에 연결된다.
설명의 편의를 위해, 도 1은 서버 시스템(102), 서버 디바이스(104), 데이터베이스(106), 제2 서버 시스템(140), 앱 A 서버(142) 및 앱 B 서버(144)에 대한 하나의 블록을 나타내고, 클라이언트 디바이스(120, 122, 124, 126)에 대한 네 개의 블록을 나타낸다. 서버 블록(102, 102, 104, 106, 140, 142 및 144)은 다수의 시스템, 서버 디바이스 및 네트워크 데이터베이스를 나타낼 수 있으며 블록들은 도시된 것과 다른 구성으로 제공될 수 있다. 예를 들어, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 네트워크(130)를 통해 다른 서버 시스템과 통신할 수 있는 다수의 서버 시스템을 나타낼 수 있다. 일부 구현예에서, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 예를 들어 클라우드 호스팅 서버를 포함할 수 있다. 일부 예에서, 데이터베이스(106) 및/또는 다른 저장 디바이스는 서버 디바이스(104)와 별개이고 네트워크(130)를 통해 서버 디바이스(104) 및 다른 서버 시스템과 통신할 수 있는 서버 시스템 블록(들)에 제공될 수 있다. 일부 구현예에서, 다수의 애플리케이션은 동일한 서버에서 실행될 수 있으며, 예를 들어 앱 A 서버(142)는 추가 애플리케이션을 실행할 수 있거나 단일 애플리케이션은 예를 들어 분산 구성에서 다수의 서버에 걸쳐 있을 수 있다.
또한 임의의 수의 클라이언트 디바이스가 있을 수 있다. 각 클라이언트 디바이스는 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 디바이스, 셀폰, 스마트폰, 태블릿 컴퓨터, 텔레비전, TV 셋톱 박스 또는 엔터테인먼트 디바이스, 웨어러블 디바이스(예: 디스플레이 안경 또는 고글, 손목시계, 헤드셋, 팔목밴드, 보석 등)), 개인 휴대 정보 단말기(PDA), 미디어 플레이어, 게임 디바이스 등과 같은 임의의 유형의 전자 디바이스일 수 있다. 일부 클라이언트 디바이스들은 또한 데이터베이스(106) 또는 기타 저장소와 유사한 로컬 데이터베이스를 가질 수 있다. 일부 구현예에서, 네트워크 환경(100)은 설명된 컴포넌트들 모두를 갖지 않을 수 있고 및/또는 여기에 도시된 것들 대신에 또는 이에 추가하여 다른 유형의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다.
다양한 구현예에서, 최종 사용자(User1, User2, User3, 및 User4)는 각각의 클라이언트 디바이스(120, 122, 124, 126)를 사용하여 서버 시스템(102) 및/또는 서로 통신할 수 있다. 일부 예에서, 사용자들(User1, User2, User3 및 User4)는 각각의 클라이언트 디바이스 및/또는 서버 시스템(102) 또는 제2 서버 시스템(140)에서 실행되는 애플리케이션을 통해, 및/또는 네트워크 서비스, 예를 들어, 소셜 네트워크 서비스 또는 서버 시스템(102) 또는 제2 서버 시스템(140)에서 구현되는 다른 유형의 네트워크 서비스를 통해 서로 인터렉션할 수 있다. 예를 들어, 각각의 클라이언트 디바이스들(120, 122, 124, 126)은 하나 이상의 서버 시스템(예를 들어, 시스템(102), 제2 서버 시스템(140))과 데이터를 주고받을 수 있다.
일부 구현예에서, 서버 시스템(102) 및/또는 제2 서버 시스템(140)은 클라이언트 디바이스에 적절한 데이터를 제공하여, 각 클라이언트 디바이스가 서버 시스템(102) 또는 제2 서버 시스템(140) 및/또는 네트워크 서비스에 업로드된 통신 콘텐츠 또는 공유 콘텐츠를 수신할 수 있도록 한다. 일부 예에서, 사용자(User1-User4)는 오디오 또는 비디오 회의, 오디오, 비디오 또는 텍스트 채팅 또는 다른 통신 모드 또는 애플리케이션을 통해 인터렉션할 수 있다.
일부 구현예에서, 클라이언트 디바이스들(120, 122, 124, 및/또는 126) 중 임의의 것은 하나 이상의 애플리케이션을 제공할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 클라이언트 디바이스(120)는 앱 A(152), 앱 B(154), 메시징 애플리케이션(156)(본 명세서에서 메시징 앱(156)으로도 지칭됨) 및 알림 코어(158)를 제공할 수 있다. 다른 클라이언트 디바이스도 다양한 애플리케이션을 포함할 수 있다. 상이한 클라이언트 디바이스는 상이한 애플리케이션을 포함할 수 있다.
일부 구현예에서, 메시징 애플리케이션(156)은 디폴트 메시징 애플리케이션일 수 있다. 이러한 구현예에서, 클라이언트 디바이스(120)의 모뎀은, 예를 들어, 캐리어 메시징 허브(162)로부터 리치 커뮤니케이션 서비스(RCS) 프로토콜을 사용하여 셀룰러 연결을 통해 메시지를 수신하도록 구성될 수 있고, 메시지의 수신 시에 자동으로, 메시징 애플리케이션(156)에 메시지를 제공한다. 메시징 애플리케이션(156)은 다양한 메시지 처리 기능을 수행할 수 있다. 예를 들어, 메시징 애플리케이션(156)은 사용자 인터페이스에 메시지를 디스플레이할 수 있다. 다른 예에서, 메시징 애플리케이션(156)은 알림 코어(158)를 호출할 수 있고 알림 코어(158)에 메시지를 제공할 수 있다. 이러한 구현예에서, 알림 코어(158)는 예를 들어, 메시지 콘텐츠(예를 들어, 알림)를 획득하기 위해 메시지를 복호화하고, 알림이 어드레싱되는 애플리케이션을 식별하고(예를 들어, 알림 내의 토큰에 기초하여) , 식별된 애플리케이션으로 알림을 포워딩하는 등 하나 이상의 액션들을 수행할 수 있다. 일부 구현예에서, 메시징 앱(156) 및 알림 코어(158)는 단일 애플리케이션으로서 구현될 수 있다. 일부 구현예에서, 메시징 앱(156)은 클라이언트 디바이스(120)의 운영 체제의 일부로서 제공될 수 있다. 일부 구현예에서, 알림 코어(158)는 클라이언트 디바이스(120)와 함께 배포되거나(예를 들어, 사전 설치) 클라이언트 디바이스(120)에 다운로드될 수 있는 별도의 애플리케이션(또는 소프트웨어 패키지)으로서 제공될 수 있다.
애플리케이션(152-158)은 클라이언트 디바이스(120)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 상이한 구현예에서, 애플리케이션들(152-158) 중 하나 이상은, 예를 들어, 클라이언트 디바이스들(120-124) 중 임의의 것 상에서 실행되는 독립형 클라이언트 애플리케이션일 수 있다.
다양한 구현예에서, 클라이언트 디바이스(120)는 메시징 앱(156) 및 알림 코어(158) 외에 하나, 둘 이상의 애플리케이션을 포함할 수 있다. 예를 들어, 그러한 애플리케이션은 다양한 유형의 기능, 예를 들어 캘린더, 주소록, 이메일, 웹 브라우저, 쇼핑, 교통(예: 택시, 기차, 항공편 예약 등), 엔터테인먼트(예: 음악 플레이어, 비디오 플레이어, 게임 애플리케이션 등), 소셜 네트워킹(예: 채팅, 오디오/비디오 통화, 이미지/비디오 공유 등) 등을 제공할 수 있다. 일부 구현예에서, 애플리케이션(154) 중 하나 이상은 클라이언트 디바이스(120)에서 실행되는 독립형 애플리케이션일 수 있다. 일부 구현예에서, 다른 애플리케이션(154) 중 하나 이상은 데이터 및/또는 기능을 제공하는 서버 시스템, 예를 들어 서버 시스템(102) 및/또는 제2 서버 시스템(140)에 액세스할 수 있다.
클라이언트 디바이스(120, 122, 124, 및/또는 126)의 사용자 인터페이스는 이미지, 비디오, 데이터 및 기타 콘텐츠는 물론 통신, 개인 정보 설정, 알림 및 기타 데이터를 포함하는 사용자 콘텐츠 및 기타 콘텐츠를 디스플레이하게 한다. 이러한 사용자 인터페이스는 클라이언트 디바이스의 소프트웨어, 서버 디바이스(104)의 소프트웨어 및/또는 서버 디바이스(104) 및/또는 서버 시스템(140)에서 실행되는 클라이언트 소프트웨어와 서버 소프트웨어의 조합, 예를 들어 서버 시스템(102) 및/또는 서버 시스템(140)과 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어를 사용하여 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 디바이스 또는 서버 디바이스의 디스플레이 디바이스, 예를 들어 터치스크린 또는 다른 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현예에서, 서버 시스템에서 실행되는 애플리케이션 프로그램은 클라이언트 디바이스와 통신하여 클라이언트 디바이스에서의 사용자 입력 및 클라이언트 디바이스에서의 시각 데이터, 오디오 데이터 등과 같은 데이터를 출력한다.
도 2는 일부 구현예에 따라, 알림을 수신할 디바이스를 등록하는 예시적 방법(200)을 도시하는 흐름도이다. 일부 구현예에서, 방법(200)은 예를 들어 도 1에 도시된 바와 같이 클라이언트 디바이스(120, 122, 124 또는 126) 중 하나 이상에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 프로세싱 회로("프로세서") 및 하나 이상의 저장 디바이스를 포함한다. 일부 구현예에서, 하나 이상의 서버(예: 서버 디바이스(104)) 및/또는 클라이언트 디바이스의 상이한 컴포넌트는 방법(200)의 상이한 블록 또는 다른 부분을 수행할 수 있다.
일부 구현예에서, 방법(200) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 예를 들어, 방법(또는 그 일부)은 주기적으로 수행되거나 하나 이상의 특정 이벤트 또는 조건, 예를 들어 클라이언트 디바이스에서 특정 애플리케이션(예: 앱 A, 앱 B)의 설치 또는 업데이트를 검출, 클라이언트 디바이스가 RCS 메시징을 할 수 있음을 검출, 클라이언트 디바이스의 사전 등록이 만료, 방법(200)의 마지막 수행 이후에 미리 결정된 기간 만료 및/또는 방법을 수행할 때 판독된 설정에 특정될 수 있는 하나 이상의 다른 조건이 발생을 검출하는 것에 기초하여 수행될 수 있다.
방법(200)은 블록(202)에서 시작할 수 있다. 블록(202)에서, 방법(200)의 구현예에서, 사용자 데이터를 사용하기 위한 사용자 허가가 획득된다. 예를 들어, 허가를 얻은 사용자 데이터는 사용자의 전화번호(클라이언트 디바이스(120)와 연관됨), 토큰(들), 클라이언트 디바이스(120)에 설치되고 실행 가능한 애플리케이션의 식별자 등을 포함할 수 있다. 사용자는 이러한 사용자 데이터에 액세스할 수 있는 허가를 선택적으로 제공할 수 있는 옵션이 제공된다. 예를 들어, 사용자는 요청된 모든 사용자 데이터, 요청된 데이터의 임의의 서브세트에 액세스 또는 요청된 데이터에 액세스하지 않는 허가를 제공하도록 선택할 수 있다. 본 명세서에 기술된 방법의 하나 이상의 블록은 일부 구현예에서 이러한 사용자 데이터를 사용할 수 있다. 블록(202) 다음에 블록(204)이 이어진다.
블록(204)에서, 본 명세서에 기술된 바와 같은 방법(200)(블록 212-218)의 나머지가, 예를 들어, 사용자에 의해 허가된 데이터에 액세스함으로써 사용자 제공 허가로 구현될 수 있는지 여부가 결정된다. 블록(204)에서, 블록(202)에서 사용자에 의해 제공된 허가가 블록(212-218) 중 하나 이상을 구현하기에 불충분하다고 결정되면, 블록(204) 다음에 블록(206)이 이어지고, 그렇지 않으면 블록(204) 다음에 블록(212)가 이어진다.
블록(206)에서, 사용자 데이터에 액세스하기 위해 사용자 허가가 요청된다. 예를 들어, 사용자가 블록(212-218)에서 사용될 수 있는 사용자 데이터의 하나 이상의 부분에 대한 허가를 거부했다면, 사용자가 사용자 데이터의 그러한 부분에 대한 허가를 제공하게 하기 위한 사용자 인터페이스가 제공될 수 있다. 사용자 인터페이스는 데이터가 어떻게 사용될 수 있는지를 사용자에게 표시할 수 있고 및/또는 그러한 허가를 제공하는 것이 예를 들어 클라이언트 디바이스(120)의 등록을 가능하게 함으로써 사용자에게 이익이 될 수 있다는 표시를 제공할 수 있다. 대안적으로, 예를 들어, 사용자가 사용자 데이터에 대한 액세스 요청을 무시하거나 그렇지 않으면 사용자가 허가 거부를 표시하는 경우, 방법은 사용자 데이터가 액세스되지 않도록 블록(206)에서 종료된다. 그러한 경우, 블록(212-218)은 수행되지 않는다.
사용자가 제공한 허가가 블록들을 구현하기에 충분하면, 블록(204) 다음에 블록(212)가 이어진다. 방법의 나머지, 예를 들어 블록(212-218)은 사용자에 의해 허가된 사용자 데이터에 대한 선택적 액세스로 수행된다. 일부 구현예에서, 사용자는 사용자 데이터에 대한 액세스를 제공하거나 허가를 수정하기 위한 추가 프롬프트가 제공될 수 있다.
블록(212)에서, 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(120))가 단일 등록 메시징이 가능한지 여부가 결정된다. 일부 구현예에서, 단일 등록 메시징은 무선 캐리어 시스템(예를 들어, 무선 캐리어 시스템(160))을 통해 하나 이상의 다른 클라이언트 디바이스, 서버 디바이스 등과 클라이언트 디바이스에 의한 메시지 교환을 지칭할 수 있다. 단일 등록 하에서, 클라이언트 디바이스는 등록 메시지를 무선 캐리어 시스템이 클라이언트 디바이스를 등록하게 하는 무선 캐리어 시스템에 보낼 수 있고(예를 들어, 등록 메시지에서 전송된 클라이언트 디바이스 정보를 데이터베이스에 저장하기 위해), 다른 클라이언트 디바이스 또는 서버 디바이스에서 유래한 메시지를 클라이언트 디바이스에 전달한다. 예를 들어, 메시지 전달은 RCS(Rich Communication Services) 프로토콜을 통해 수행될 수 있다. 클라이언트 디바이스가 단일 등록 메시징이 가능한 것으로 결정되면 블록(212) 다음에 블록(214)가 이어진다. 그렇지 않으면, 블록(212) 다음에 블록(218)이 이어진다.
블록(214)에서, 암호화 키 쌍이 생성된다. 암호화 키 쌍은 개인 키와 공개 키를 포함한다. 키 쌍은 임의의 표준 암호화 기법을 사용하여 생성할 수 있다. 일부 구현예에서, 키 쌍은 PGP(Pretty Good Privacy) 암호화를 사용하여 생성될 수 있다. 키 쌍은 공개 키를 사용하여 암호화된 데이터가 개인 키를 사용해야만 복호화될 수 있도록 사용될 수 있다. 생성 시, 개인 키가 키 쌍을 생성한 클라이언트 디바이스(120)의 로컬 저장소에 저장된다. 블록(214) 다음에 블록(216)이 올 수 있다.
블록(216)에서, 등록 메시지가 생성되어 메시지 전달 서버(예를 들어, 전달 애플리케이션(108)를 실행하는 서버 디바이스(104))에 전송된다. 일부 구현예에서, 등록 메시지는 공개 키를 포함한다. 일부 구현예에서, 등록 메시지는 수신자 식별자를 포함한다. 다른 구현예에서, 공개 키 및/또는 수신자 식별자는 등록 메시지와 별도로 메시지 전달 서버에 전송될 수 있다. 예를 들어, 수신자 식별자는 예를 들어, 특정한 애플리케이션(예를 들어, 앱 A(152))으로부터 수신된 토큰일 수 있다. 일부 구현예에서, 등록 메시지는 또한 방법(200)을 구현하는 클라이언트 디바이스(예를 들어, 클라이언트 디바이스(120))와 연관된 전화번호를 포함한다. 클라이언트 디바이스가 등록되면, 메시지 전달 서버(예를 들어, 전달 애플리케이션(108)을 실행하는 서버(104))는 네트워크 액세스 레이어를 통해 클라이언트 디바이스에 메시지를 전달할 수 있으며, 이를 통해 클라이언트 디바이스는 무선 캐리어 시스템(160)과 인터렉션한다. 클라이언트 디바이스와 무선 캐리어 시스템 간의 인터렉션은 무선 캐리어에 의해 운영되는 PDN(공중 데이터 네트워크)의 IMS(IP 멀티미디어 서브시스템)를 통한 단일 IP 보안(IPSec) 소켓을 통해 이루어질 수 있다.
클라이언트 디바이스가 단일 등록 메시징이 불가능하다고 블록(212)에서 결정되면 수행되는 블록(218)에서, 기본 알림 기법이 구현된다. 예를 들어, 앱 A(152)는 예를 들어 클라이언트 디바이스에서 실행되는 애플리케이션 예를 들어, 앱 A(152), 앱 B(154)에 대한 애플리케이션 서버(예를 들어, 앱 A 서버(142), 앱 B 서버(144))에 의해 생성된 알림을 수신하기 위해, 메시지 전달 서버(예를 들어, 서버(104))와 함께 TLS(전송 계층 보안)를 사용하여 보안 연결을 개시하고 유지하기 위해 디바이스를 요구하는 인터넷 프로토콜 연결을 통해 메시지를 수신하도록 구성될 수 있다.
도 3는 일부 구현예에 따라, 디바이스에서 알림을 수신하기 위한 예시적 방법을 도시하는 흐름도이다. 일부 구현예에서, 방법(300)은 예를 들어 도 1에 도시된 바와 같이 클라이언트 디바이스(120, 122, 124 또는 126) 중 하나 이상에서 구현될 수 있다. 설명된 예에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 프로세싱 회로("프로세서") 및 하나 이상의 저장 디바이스를 포함한다. 일부 구현예에서, 하나 이상의 서버(예: 서버 디바이스(104)) 및/또는 클라이언트 디바이스의 상이한 컴포넌트는 방법(300)의 상이한 블록 또는 다른 부분을 수행할 수 있다.
방법(300)은 블록(302)에서 시작할 수 있다. 블록(302)에서, 방법(300)의 구현예에서, 사용자 데이터를 사용하기 위한 사용자 허가가 획득된다. 예를 들어, 허가가 획득된 사용자 데이터는 예를 들어 RCS 프로토콜을 통해 무선 캐리어로부터 수신된 사용자의 수신 메시지, 토큰(들), 클라이언트 디바이스(120)에 설치되고 실행 가능한 애플리케이션의 식별자 등을 포함할 수 있다. 사용자는 이러한 사용자 데이터에 액세스할 수 있는 허가를 선택적으로 제공할 수 있는 옵션이 제공된다. 예를 들어, 사용자는 요청된 모든 사용자 데이터, 요청된 데이터의 임의의 서브세트에 액세스 또는 요청된 데이터에 액세스하지 않는 허가를 제공하도록 선택할 수 있다. 본 명세서에 기술된 방법의 하나 이상의 블록은 일부 구현예에서 이러한 사용자 데이터를 사용할 수 있다. 블록(302) 다음에 블록(304)이 이어진다.
블록(304)에서, 본 명세서에 기술된 바와 같은 방법(300)(블록 312-320)의 나머지가, 예를 들어, 사용자에 의해 허가된 데이터에 액세스함으로써 사용자 제공 허가로 구현될 수 있는지 여부가 결정된다. 블록(304)에서, 블록(302)에서 사용자에 의해 제공된 허가가 블록(312-320) 중 하나 구현하기에 불충분하다고 결정되면, 블록(304) 다음에 블록(306)이 이어지고, 그렇지 않으면 블록(304) 다음에 블록(312)가 이어진다.
블록(306)에서, 사용자 데이터에 액세스하기 위해 사용자 허가가 요청된다. 예를 들어, 사용자가 블록(312-320)에서 사용될 수 있는 사용자 데이터의 하나 이상의 부분에 대한 허가를 거부했다면, 사용자가 사용자 데이터의 그러한 부분에 대한 허가를 제공하게 하기 위한 사용자 인터페이스가 제공될 수 있다. 사용자 인터페이스는 데이터가 어떻게 사용될 수 있는지를 사용자에게 표시할 수 있고 및/또는 그러한 허가를 제공하는 것이 예를 들어 클라이언트 디바이스(120)의 등록을 가능하게 함으로써 사용자에게 이익이 될 수 있다는 표시를 제공할 수 있다. 대안적으로, 예를 들어, 사용자가 사용자 데이터에 대한 액세스 요청을 무시하거나 그렇지 않으면 사용자가 허가 거부를 표시하는 경우, 방법은 사용자 데이터가 액세스되지 않도록 블록(306)에서 종료된다. 그러한 경우, 블록(312-320)은 수행되지 않는다.
블록(312)에서, 메시지는 무선 캐리어로부터 수신자 디바이스(예를 들어, 클라이언트 디바이스들(120-126) 중 임의의 것)에서 수신된다. 예를 들어, 메시지는 RCS 프로토콜을 통해 수신될 수 있다. 일부 구현예에서, 메시지는 세션 개시 프로토콜(SIP) 메시지로서 수신될 수 있다. 일부 구현예에서, SIP 메시지는 SIP OPTIONS 메시지일 수 있다. 일부 구현예에서, 알림(예를 들어, 메시지 전달 서버를 통해 전송되는 애플리케이션 서버로부터의 앱 알림)은 메시지, 예를 들어 SIP OPTIONS 메시지의 콘텐츠 본문에 포함될 수 있다. 일부 구현예에서, 메시지는 무선 캐리어 시스템과 통신하는 클라이언트 디바이스의 디바이스 모뎀을 통해 클라이언트 디바이스의 네트워크 액세스 레이어에서 수신될 수 있다. 이러한 구현에서, 소프트웨어 애플리케이션과 애플리케이션 서버 사이에 활성 연결(예: TLS 연결 또는 기타 인터넷 프로토콜 연결과 같은 보안 연결)이 존재하지 않는다.
예를 들어, 특정한 애플리케이션, 예를 들어 앱 A(152), 앱 B(154) 등을 위한 애플리케이션 서버는 알림을 생성하고, 이를 메시지 전달 서버 상의 메시지 전달 애플리케이션(108)에 보낼 수 있다. 메시지 전달 서버는 (예를 들어, 도 2를 참조하여 설명된 바와 같은 방법(200)을 사용하여) 알림이 메시지 전달 서버에 등록된 수신자 디바이스와 연관되는지를 결정하기 위해 데이터베이스 조회를 수행할 수 있다(예를 들어, 데이터베이스(106)에서). 예를 들어, 데이터베이스는 수신자 식별자, 예를 들어 등록 메시지에서 수신된 토큰과 일치하는 레코드를 포함할 수 있다. 데이터베이스 레코드는 예를 들어 { 토큰, 디바이스 식별자, 공개 키} 형식의 튜플을 포함할 수 있으며, 여기서 공개 키는 등록 메시지에 포함되고 디바이스 식별자는 등록 메시지에서 수신된 전화번호일 수 있다. 토큰은 알림을 위한 앱과 타켓 디바이스를 식별하는 데 사용할 수 있으며, 등록 프로세스(도 2를 참조하여 설명됨) 동안 이를 수신할 때 메시지 전달 서버에 알려진다.
메시지 전달 서버는 알림의 수신자 식별자(예: 토큰)가 데이터베이스 조회에 기반하여 애플리케이션 서버로부터 수신된 알림의 토큰과 일치하는지를 결정하는 것에 기초하여 알림의 수신자가 공개 키와 연관되는지 여부를 결정한다. 또한, 메시지 전달 서버는 (토큰을 포함하는 데이터베이스 튜플에서) 수신자 디바이스와 연관된 공개 키를 식별한다. 메시지 전달 서버는 공개 키로 알림을 암호화하여 메시지를 생성할 수 있다. 메시지 전달 서버는 (암호화된 알림을 포함하는) 메시지를 무선 캐리어, 예를 들어, 전화번호 또는 수신자 디바이스와 연관된 기타 디바이스 식별자에 기초하여 캐리어 메시징 허브(162)를 포함하는 무선 캐리어 시스템(160)에 전송할 수 있다. 일부 구현예에서, 메시지 전달 서버(104)로부터 무선 캐리어 시스템(160)으로의 메시지의 전송은 RCS 프로토콜을 사용하여 수행될 수 있다. 이러한 구현예에서, 메시지 전달 서버는 메시지를 무선 캐리어 시스템에 전송하기 전에 (예를 들어, 적절한 메시지 헤더 등을 포함하기 위해) 메시지를 RCS 메시지로서 포맷할 수 있다. 이것은 무선 캐리어 시스템이 RCS를 준수하도록 메시지를 포맷하는 동작을 수행할 필요 없이, 메시지 전달 서버로부터 수신된 메시지가 RCS 프로토콜을 사용하여 클라이언트 디바이스로 포워딩될 수 있기 때문에, 무선 캐리어 시스템의 통합 요구사항을 감소시킬 수 있다. 또한, 이는 알림을 생성하는 서버(예: 앱 A 서버(142), 앱 B 서버(144) 등)에 대한 변경 없이 메시지 전달에 RCS 프로토콜을 사용할 수 있음을 보장한다.
무선 캐리어(예를 들어, 차례로) 메시지를 수신자 디바이스에 전달할 수 있다. 예를 들어, 캐리어 메시지 허브(162)는, 예를 들어, RCS 프로토콜을 사용하여 메시지를 수신자 디바이스에 전송할 수 있다. 메시지는 수신자 디바이스가 웨이크업 동작 없이 메시지를 수신하도록 네트워크 액세스 레이어를 통해 전송될 수 있다. 일부 구현예에서, 메시지 전달 서버 및 무선 캐리어는 고성능 네트워크 액세스 레이어와 조합하여 RCS의 고신뢰성 아키텍처를 활용하는 메시지 전달을 허용할 수 있는 RCS에 대한 피어링 연결을 유지할 수 있다.
일부 구현예에서, 동일한 토큰이 복수의 수신자 디바이스들과 연관될 수 있다. 예를 들어, 알림을 수신하는 앱은 휴대폰(RCS 메시징용으로 구성됨) 및 또한 하나 이상의 다른 디바이스, 예를 들어 RCS 메시징용으로 구성되지 않은 휴대폰, 랩톱 컴퓨터, 태블릿, 셀룰러 통신 기능 등을 포함하지 않는 기타 디바이스에 설치된 소프트웨어 애플리케이션일 수 있다. 하나 이상의 그러한 수신자 디바이스들이 애플리케이션 서버로부터 수신된 알림에서 토큰과 연관되는 경우, 메시지 전달 서버는 상기 알림을 (공개 키를 사용한 암호화 없이) 하나 이상의 상기 디바이스들에 전송할 수 있다. 블록(312) 다음에 블록(314)이 올 수 있다.
블록(314)에서, 수신된 메시지는 메시지를 수신한 수신자 디바이스에 로컬적으로 저장된 개인 키를 사용하여 복호화된다. 메시지 전달 서버는 수신자 식별자(예: 토큰)에 기초하여 식별된 공개 키를 사용하여 메시지를 암호화하므로, 개인 키는 공개 키와 함께 키 쌍의 일부이며 메시지를 복호화하는데 사용할 수 있다. 블록(314) 다음에 블록(316)이 올 수 있다.
블록(316)에서, 복호화된 메시지와 연관된 수신자 디바이스에서 실행되는 소프트웨어 애플리케이션이 식별된다. 예를 들어, 앱의 식별은 메시지에 포함된 토큰에 기초할 수 있다. 블록(316) 다음에 블록(318)이 올 수 있다.
블록(318)에서, 알림(복호화된 메시지)는 소프트웨어 애플리케이션에 전달된다. 예를 들어, 메시징 앱 및/또는 메시지를 복호화하는 알림 코어는 임의의 적절한 메커니즘, 예를 들어 애플리케이션에 대한 애플리케이션 프로그래밍 인터페이스(API) 호출을 통해 소프트웨어 애플리케이션에 알림을 전달할 수 있다. 일부 구현예에서, 메시지를 전달하는 것은 특정한 애플리케이션을 깨우는 것(애플리케이션이 비활성화된 경우), 애플리케이션을 시작하는 것(실행되고 있지 않은 경우) 등을 포함할 수 있다. 블록(318) 다음에 블록(320)이 올 수 있다.
블록(320)에서, 수신확인 메시지가 메시지 전달 서버로 전송된다. 예를 들어, 수신확인 메시지는 메시지의 성공적인 수신, 메시지의 성공적인 복호화 또는 소프트웨어 애플리케이션에 대한 메시지의 성공적인 전달 중 하나 이상을 나타내는 역할을 할 수 있다. 일부 구현예에서, 수신확인 메시지는 RCS 프로토콜을 통해 전달되는 "SIP 200 OK" 메시지일 수 있다. 수신확인 메시지는 메시지가 수신자 디바이스에서 성공적으로 수신 및/또는 처리되었음을 나타내는 역할을 할 수 있다. 일부 구현예에서, 메시지 전달 서버는 수신확인 메시지를 수신하면, 알림이 성공적으로 전달되었다는 표시를 (알림을 생성한) 애플리케이션 서버에 보낼 수 있다.
방법(300)의 다양한 블록은 결합되거나, 다수의 블록으로 분할되거나, 병렬로 수행될 수 있다. 예를 들어, 블록(314, 316)은 병렬로 수행될 수 있다. 방법(300) 또는 그 일부는 임의의 횟수만큼 반복될 수 있으며, 예를 들어 임의의 수의 메시지를 수신할 수 있다.
도 4는 일부 구현예에 따라 디바이스 등록 및 알림의 전달을 예시하는 흐름도이다. 알림 전달은 네트워크 환경, 예를 들어 네트워크 환경(100)에서 일어날 수 있다.
디바이스 등록 프로세스에서, 앱 A(152)는 토큰(401)을 메시징 앱(156)에 보낼 수 있다. 예를 들어, 앱 A(152)는 토큰을 사용하여 전달 애플리케이션(108)을 통해 앱 A 서버(142)로부터 알림을 수신하도록 구성될 수 있으며, 예를 들어 알림은 (다른 클라이언트 디바이스가 아닌 클라이언트 디바이스에서 실행되는) 앱 A(152)의 특정 인스턴스를 식별하는 역할을 하는 토큰을 포함할 수 있다. 일부 구현예에서, 토큰은 앱 A 서버(142)에 의해 생성되고 인터넷을 통해 특정 인스턴스 앱 A(152)에 제공될 수 있다.
다양한 구현예에서, 메시징 앱(156)은 운영 체제와 함께 제공될 수 있거나, 디바이스 제조업체에 의해 사전 설치되거나, 클라이언트 디바이스의 사용자에 의해 설치될 수 있다. 메시징 앱(156)은 무선 캐리어, 예를 들어 캐리어 메시징 허브(162)로부터 수신된 메시지를 처리하고 무선 캐리어를 통해 다른 클라이언트 디바이스에 메시지를 전송하도록 구성될 수 있다. 예를 들어, 메시징 애플리케이션(156)은 RCS 프로토콜 메시지를 송수신할 수 있는 애플리케이션일 수 있다. 무선 캐리어와의 메시지 교환은 무선 캐리어 시스템(160)과 통신하는 디바이스 모뎀을 통해 발생할 수 있으며, 애플리케이션이 인터넷을 통해 통신을 위해 활용될 수 있는 네트워크 통신 스택에서 보다 높은 레이어가 아닌 디바이스의 네트워크 액세스 레이어를 활용할 수 있다.
메시징 앱(156)은 등록 메시지(402)를 생성하여 알림 코어(158)에 보낼 수 있다. 일부 구현예에서, 등록 메시지는 토큰, 디바이스 식별자(예를 들어, 클라이언트 디바이스와 연관된 전화번호) 및 애플리케이션과 연관된 공개 키(예를 들어, 도 2를 참조하여 설명된 바와 같이 생성됨)를 포함할 수 있다.
일부 구현예에서, 알림 코어(158)는 클라이언트 디바이스(120)에 설치된 하나 이상의 앱과 통신하도록 구성된 알림 처리 소프트웨어를 포함할 수 있다. 일부 구현예에서, 알림 코어(158) 및 메시징 앱(156)은 단일 소프트웨어 애플리케이션으로서 구현될 수 있다.
알림 코어(158)는 전달 애플리케이션(108)과의 디바이스 등록(404)을 수행할 수 있다. 예를 들어, 알림 코어(158)는 (예를 들어, 인터넷 프로토콜을 사용하여) 인터넷을 통해 등록 메시지를 전달 애플리케이션(108)에 보낼 수 있다. 전달 애플리케이션(108)은 메시지 전달 서버(예를 들어, 서버 디바이스(104))에서 구현될 수 있다. 일부 구현예에서, 메시지 전달 서버는 하나 이상의 애플리케이션 서버, 예를 들어 앱 A 서버(142), 앱 B 서버(144), 및/또는 추가 앱 서버와 통신하도록 구성될 수 있다.
등록 메시지를 수신한 애플리케이션 서버(142)는 등록 메시지를 사용하여 데이터베이스 레코드를 생성(또는 업데이트)할 수 있다. 예를 들어, 데이터베이스 레코드는 {token, device identifier, public key} 형식의 튜플을 포함할 수 있다.
애플리케이션 서버는 알림을 생성하도록 구성될 수 있다. 예를 들어, 애플리케이션 서버는 이메일 애플리케이션, 채팅 애플리케이션, 게임, 화상 통화 애플리케이션 등과 같은 클라이언트 디바이스에서 실행되는 소프트웨어 애플리케이션과 연관될 수 있다. 알림은 이러한 애플리케이션의 이벤트에 기초하여 생성될 수 있다. 예를 들어, 이메일 애플리케이션용 애플리케이션 서버는 사용자가 새 이메일을 수신할 때 알림을 생성할 수 있고, 채팅 애플리케이션은 채팅 메시지 수신에 대한 응답으로 알림을 생성할 수 있다. 각 애플리케이션용 애플리케이션 서버는 예를 들어, 클라이언트 디바이스에 설치된 애플리케이션을 통해 제공될 알림을 생성할 수 있다.
도 4에 도시된 예에서, 앱 A 서버(142)는 토큰을 포함하는 알림을 전달 애플리케이션(108)에 보낼 수 있다(406). 일부 구현예에서, 알림의 적어도 일부(예를 들어, 사용자에게 보여질 콘텐츠)는 알림을 전달 애플리케이션에 전송하기 전에 암호화될 수 있다. 전달 애플리케이션(108)은 토큰에 기초하여 수신자 디바이스가 식별되는지 여부를 결정하기 위해 알림 내의 토큰을 사용하여 데이터베이스 조회를 수행할 수 있다. 예를 들어, 데이터베이스 조회는 알림의 토큰을 데이터베이스에 저장된 토큰과 일치시켜 디바이스 식별자 및 공개 키를 검색하는 것을 포함할 수 있다.
수신자 디바이스가 식별되면, 전달 애플리케이션(108)은 메시지를 생성하기 위해 알림에 엔벨로프를 추가할 수 있다(410). 예를 들어, 전달 애플리케이션(108)은, 예를 들어, 수신자 디바이스로부터 등록 메시지에서 수신된 바와 같이, 수신자와 연관된 공개 키를 사용하여 알림을 암호화할 수 있다. 엔벨로프를 추가(알림 암호화)하면, 해당 개인 키를 저장한 수신자 디바이스만 알림을 검색하기 위해 메시지를 복호화할 수 있으므로 안전한 전달을 보장할 수 있다. 일부 구현예에서, 메시지 전달 서버(104)로부터 무선 캐리어 시스템(160)으로의 메시지의 전송은 RCS 프로토콜을 사용하여 수행될 수 있다. 이러한 구현들에서, 엔벨로프를 추가하는 것은 메시지를 무선 캐리어 시스템에 전송하기 전에, 예를 들어 적절한 메시지 헤더들 및/또는 다른 정보를 포함하기 위해 메시지를 RCS 메시지로서 포맷팅하기 위한 동작들을 수행하는 메시지 전달 서버를 포함할 수 있다. 메시지를 무선 캐리어 시스템에 전송하기 전에 메시지를 RCS 메시지로서 포맷팅하는 것은 무선 캐리어 시스템이 RCS를 준수하도록 메시지를 포맷하는 동작을 수행할 필요 없이, 메시지 전달 서버로부터 수신된 메시지가 RCS 프로토콜을 사용하여 클라이언트 디바이스로 포워딩될 수 있기 때문에, 무선 캐리어 시스템의 통합 요구사항을 감소하거나 제거하는 이점이 있다.
전달 애플리케이션(108)은 메시지(408)를 무선 캐리어, 예를 들어 캐리어 메시징 허브(162)로 전송할 수 있다. 일부 구현예에서, 메시지 전달을 가능하게 하기 위해 메시지 전달 서버(104)와 무선 캐리어 시스템(160) 사이에 피어링 연결이 설정될 수 있다. 전달 애플리케이션(108)은 데이터베이스 조회에서 식별된 디바이스 식별자(예를 들어, 전화번호)에 기초하여 무선 캐리어 시스템을 식별할 수 있다.
무선 캐리어 시스템(160)의 캐리어 메시징 허브(162)는 메시지를 수신자 디바이스, 예를 들어 메시징 앱(156)에 전달할 수 있다(412). 예를 들어, 메시지는 네트워크 액세스 레이어를 통해 RCS 프로토콜을 통해 전달될 수 있다. 캐리어 메시징 허브(162)로부터 메시징 앱(156)으로의 메시지 전달은 네트워크 액세스 레이어를 통해 발생할 수 있으며, 예를 들어, 캐리어 시스템(160)은 RCS 메시지를 수신자 디바이스에 전송할 수 있으며, 여기서 수신자 디바이스의 모뎀은 메시지를 수신하고 모뎀을 통해 메시지를 수신하도록 구성된 메시징 앱(156)에 알릴 수 있다. 일부 구현예에서, 메시지는 SIP OPTIONS 메시지로서 송신될 수 있다. 메시지의 예는 아래와 같다:
OPTIONS tel:+1222333xxxx SIP/2.0
From: sip: app@messagedeliveryserver.com
P-Asserted-Identity: sip:app@messagedeliveryserver.com
To: tel:+1-222333xxxx
Content-Length: 23
Content-Type: application-type/x-encrypted-notification
<ENCRYPTED-MESSAGE>
위의 예시 메시지에서 "+1222333xxxx"는 수신자 디바이스의 전화번호이고, "app@messagedeliveryserver.com"은 전달 애플리케이션(예: 전달 애플리케이션(108))을 지칭한다. "<ENCRYPTED-MESSAGE> "는 전달 애플리케이션에 의해 암호화된 메시지를 포함한다.
일부 구현예에서, 메시지는 SIP NOTIFY 메시지로서 송신될 수 있다. 예를 들어, 클라이언트 디바이스는 SIP SUBSCRIBE를 활용하여, 원격 노드(예를 들어, 무선 캐리어 시스템(160))로부터 현재 상태 및/또는 상태 업데이트를 요청할 수 있다. 그러한 요청이 수신되면, 원격 노드는 예를 들어, 전달 애플리케이션(108)으로부터의 알림을 포함하는 메시지의 수신에 기초하여 현재 상태의 변화가 발생했다는 결정에 응답하여 SIP NOTIFY 메시지를 보낼 수 있다.
메시지 수신 시, 메시징 앱(156)은 알림 콘텐츠를 검색하기 위해 엔벨로프를 제거할 수 있다(414). 엔벨로프를 제거하는 것은 저장된 개인 키를 사용하여 메시지를 복호화하는 것을 포함할 수 있다. 엔벨로프를 제거한 후, 메시징 앱(156)은 알림을 알림 코어(158)로 보낼 수 있다(416).
알림 코어(158)는 예를 들어, 특정한 애플리케이션, 예를 들어, 앱 A(152)와 연관된 토큰과 알림 내의 토큰을 매칭하는 것에 기초하여, 알림과 연관된 앱을 식별할 수 있다(418). 앱을 식별하면, 알림 코어는 알림을 앱에 전달할 수 있다(420).
앱 A(152)는 알림을 다양한 방식으로 처리할 수 있다. 예를 들어, 알림이 애플리케이션 서버에 의해 암호화된 경우, 알림 처리는 알림을 복호화하는 것을 포함할 수 있다. 이러한 구현예에서, 앱 A(152)는 임의의 종래 기법을 사용하여 앱 A 서버(142)와 공유 비밀을 설정할 수 있고, 알림을 복호화하기 위해 공유 비밀을 이용할 수 있다. 앱 A(152)는 알림 내용에 기초하여 사용자에게 알림(예: "You have new email from Alyssa")하거나 다른 동작을 수행할 수 있다.
전달 애플리케이션(108)이 수신자 디바이스를 식별할 수 없는 상황에서, 예를 들어 알림의 앱 토큰이 어떤 데이터베이스 레코드와도 일치하지 않는 경우, 전달 애플리케이션(108)은 기존 메커니즘을 통해 예를 들어 캐리어 메시징 허브 또는 디바이스 식별자(전화 번호)를 활용하지 않는 인터넷을 통해 앱 A에 알림을 전달할 수 있다. 또한, 전달 애플리케이션(108)은 예를 들어, 사용자가 캐리어 네트워크에 연결되지 않는 랩톱 또는 태블릿 컴퓨터, 웨어러블 기기 등과 같이 무선 캐리어를 통해 메시지를 수신할 수 없는 디바이스에서 애플리케이션을 실행하는 경우 알림을 추가 사용자 디바이스에 전달할 수 있다. 이러한 경우 알림의 토큰을 사용하여 알림을 전달할 수 있다. 예를 들어, 그러한 디바이스를 실행하는 애플리케이션(예: 데이터베이스 레코드와 일치하지 않음)은 애플리케이션 서버가 알림을 전달하게 하기 위해 인터넷을 통해 애플리케이션 서버와 연결 예를 들어 TLS(Transport Layer Security) 연결과 같은 보안 연결을 설정하도록 구성될 수 있다.
설명된 기법은 클라이언트 디바이스와 애플리케이션 서버에 의해 생성된 알림을 클라이언트 디바이스로 전달하는 메시지 전달 서버 사이, 또는 클라이언트 디바이스와 애플리케이션 서버 사이에 보안 연결을 설정하고 유지하는 종래의 알림 기법의 기술적 단점을 해결한다. 이러한 알림 기법은 일반적으로 인터넷 PDN(공용 데이터 네트워크)을 통한 OTT(over the top) TLS(Transport Layer Security) 연결을 사용한다.
이러한 구성의 기술적 문제는 무선 캐리어 백엔드에서 네트워크 주소 변환(NAT) 시간 초과가 발생할 수 있고, 비활성으로 인해 보안 연결이 닫힐 수 있다는 것이다(예: 클라이언트 디바이스와 무선 캐리어 시스템 사이에 무선 캐리어에서 설정한 임계값보다 긴 기간 동안 보안 연결에서 인터렉션이 없음). 이러한 연결 폐쇄를 방지하려면, 클라이언트 디바이스(예: 알림을 수신하는 애플리케이션)가 주기적으로 연결 유지 메시지를 전송해야 한다. 그러한 메시지를 보내려면 무선 송신기(및 클라이언트 디바이스 모뎀을 포함한 관련 회로)를 깨워야 한다. 이러한 깨우기 및 무선 송신기의 사용은 전력을 낭비할 수 있다. 배터리 구동 디바이스에서 이러한 활동은 디바이스 배터리를 소모할 수 있다. 또한, 연결 유지 메시지는 무선 캐리어에 대한 셀룰러 네트워크 혼잡을 유발할 수 있다.
본 명세서에 기술된 기법은 클라이언트 디바이스(예를 들어, 모바일폰 또는 다른 셀룰러 통신 디바이스)와 무선 캐리어 시스템 간의 단일 등록 메시징을 활용하여 메시지(예를 들어, 앱 알림을 포함함)를 전달한다. 예를 들어, RCS(Rich Communication Services) 프로토콜은 메시지 전달에 사용될 수 있다.
무선 캐리어는 일반적으로 클라이언트 디바이스 등록(예: Voice-over-LTE(Long Term Evolution)을 통한 무선 캐리어와 클라이언트 디바이스 간의 통신 및 IP 멀티미디어(코어 네트워크) 서브시스템 PDN(IMS PDN을 통한 단일 IP 보안(IPSec) 소켓을 통한 RCS 등록을 위한 통신)을 공유한다. 클라이언트 디바이스는 셀룰러 통신을 위해 IMS 네트워크에 대한 연결을 유지한다.
본 명세서에 기술된 기법에 따라, 성공적인 디바이스 등록시(도 2 및 4 참조), 이러한 연결은 (도 3 및 도 4를 참조하여 설명된 바와 같이) 클라이언트 디바이스 상의 애플리케이션으로의 메시지 전달을 위해 이용된다. TLS(또는 기타 보안 OTT 연결)를 설정하고 활성 상태로 유지하는 오버헤드를 제거함으로써, 설명된 기법은 주기적으로 클라이언트 디바이스를 깨우거나 메시지를 보낼 필요를 제거하여, 전력 소비를 낮추고 배터리 수명을 개선하며 무선(셀룰러) 네트워크에서 네트워크 정체를 감소시킨다. 또한 설명된 기법은 클라이언트 디바이스가 차선의 인터넷 연결을 가질 때 알림 전달의 안정성과 성능을 향상시킬 수 있다.
또한 IMS 네트워크의 중요한 이점은 네트워크 주소 변환이 없고 IPv6(인터넷 프로토콜 버전 6)을 통해 배포된다는 것이다. 설명된 기법은 앱 알림을 안정적으로 전달할 수 있는 디바이스 등록을 수행하여 IMS PDN의 이 기능을 유리하게 사용한다. IMS PDN을 통한 메시지 전달의 기술적 문제는 IMS PDN이 종종 방화벽 환경에 배포되어 애플리케이션 서버 및/또는 메시지 전달 서버에 대한 직접 연결을 허용하지 않는다는 것이다. 또한, 클라이언트 디바이스의 디바이스 운영 체제는 IMS PDN에 대한 노출이 제한적일 수 있는데, 이 연결이 클라이언트 디바이스 하드웨어, 예를 들어 디바이스 모뎀에 의해 관리될 수 있기 때문이다. 설명된 기법은 디바이스 등록을 수행하고 토큰, 디바이스 식별자 및 공개 키와 같은 정보를 포함하는 등록된 디바이스의 데이터베이스를 사용하여 이 문제를 극복한다.
또한, 설명된 기법은 보안 OTT 연결을 설정할 필요 없이, 앱 알림이 무선 캐리어 네트워크를 통해 안전하게 전송되도록 하기 위해 공개 키 암호화를 유리하게 사용한다. 특히, 클라이언트 디바이스는 알림을 암호화하기 위해 메시지 전달 서버(또는 알림을 생성하는 다른 서버)에서 사용할 공개 키를 제공한다. 암호화된 메시지는 메시지 콘텐츠(예: 앱 알림)의 보안을 손상시키지 않으면서 정규 통신 채널(예: 암호화되지 않음)을 통해 전송될 수 있다. 클라이언트 디바이스에 안전하게 저장된 개인 키는 메시지를 복호화하고, 알림을 검색하고, 알림을 클라이언트 디바이스의 각 애플리케이션에 제공하는데 사용된다.
도 5은 본 명세서에 기술된 하나 이상의 구성들을 구현하기 위해 사용될 수 있는 예시적 디바이스(500)의 블록도이다. 일 예에서, 디바이스(500)는 클라이언트 디바이스, 예를 들어 도 1에 도시된 클라이언트 디바이스들(120-126) 중 임의의 것을 구현하는데 사용될 수 있다. 대안적으로, 디바이스(500)는 서버 디바이스, 예를 들어 서버 디바이스(104) 또는 무선 캐리어 시스템(160)을 구현할 수 있다. 일부 구현예에서, 디바이스(500)는 클라이언트 디바이스, 서버 디바이스 또는 클라이언트 및 서버 디바이스 둘 모두를 구현하는데 사용될 수 있다. 디바이스(500)는 임의의 적절한 컴퓨터 시스템, 서버 또는 전술한 바와 같은 기타 전자 또는 하드웨어 디바이스일 수 있다.
본 명세서에 기술된 하나 이상의 방법은 임의의 유형의 컴퓨팅 디바이스에서 실행될 수 있는 독립 실행형 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스(예: 셀폰, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목시계, 팔목밴드, 보석, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 헤드 마운트 디스플레이 등), 랩톱 컴퓨터, 서버 컴퓨터 등)에서 실행되는 모바일 어플리케이션("앱")에서 실행될 수 있다.
일부 구현예에서, 디바이스(500)는 프로세서(502), 메모리(504) 입/출력(I/O) 인터페이스(506) 및 모뎀(516)을 포함한다. 프로세서(502)는 프로그램 코드를 실행하고 디바이스(500)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 프로세싱 회로일 수 있다. "프로세서"는 데이터, 신호 또는 기타 정보를 프로세싱하는 임의의 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 하나 이상의 코어(예: 단일 코어, 듀얼 코어 또는 다중 코어 구성)를 갖는 범용 CPU, 다중 프로세싱 유닛(예: 멀티프로세서 구성), 그래픽 프로세싱 유닛(GPU), FPGA(Field-Programmable Gate Array), ASIC(Application-Specific Integrated Circuit), CPLD(Complex Programmable Logic Device), 기능을 구현하기 위한 전용 회로, 신경 네트워크 기반 프로세싱을 구현하는 특수-목적 프로세서, 신경 회로, 행렬 계산(예: 행렬 곱셈)에 최적화된 프로세서 또는 기타 시스템을 포함하는 시스템을 포함할 수 있다.
일부 구현예에서, 프로세서(502)는 신경 네트워크 프로세싱을 구현하는 하나 이상의 코-프로세서를 포함할 수 있다. 일부 구현예에서, 프로세서(502)는 확률적 출력을 생성하기 위해 데이터를 프로세싱하는 프로세서일 수 있으며, 예를 들어, 프로세서(502)에 의해 생성된 출력은 부정확할 수 있거나 예상된 출력으로부터의 범위 내에서 정확할 수 있다. 프로세싱은 특정한 지리적 위치로 제한되거나 시간적 제한이 있을 필요가 없다. 예를 들어, 프로세서는 "실시간", "오프라인", "배치 모드" 등에서 그 기능을 수행할 수 있다. 프로세싱의 일부는 상이한(또는 동일한) 프로세싱 시스템에 의해 상이한 시간 및 상이한 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
메모리(504)는 일반적으로 프로세서(502)에 의한 액세스를 위해 디바이스(500)에 제공되며, 프로세서에 의한 실행을 위한 명령어 저장에 적합하고 프로세서(502)와 분리되어 위치되거나 및/또는 그와 통합된 임의의 적절한 프로세서 판독가능 저장 매체, 예를 들어 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 전기적 소거 가능 읽기 전용 메모리(EEPROM), 플래시 메모리 등일 수 있다. 메모리(504)는 운영 체제(508), 메시징 애플리케이션(510)(예: 도 1의 메시징 애플리케이션(156)과 동일할 수 있음), 다른 애플리케이션(512) 및 애플리케이션 데이터(514)를 포함하는 프로세서(502)에 의해 서버 디바이스(500) 상에서 동작하는 소프트웨어를 저장할 수 있다. 메시징 애플리케이션(510)은 무선 캐리어 네트워크를 통해(예를 들어, 네트워크 액세스 레이어를 통해 모뎀(516)에서) 메시지를 수신하면 메시징 애플리케이션(510)이 자동으로 호출되도록 캐리어 메시징을 위한 디폴트 애플리케이션으로서 구성될 수 있다.
다른 애플리케이션(512)은 데이터 디스플레이 엔진, 웹 호스팅 엔진, 지도 애플리케이션, 이미지 디스플레이 엔진, 알림 엔진(예: 알림 코어(158)을 구현할 수 있음), 소셜 네트워킹 엔진 등과 같은 애플리케이션을 포함할 수 있다. 일부 구현예에서, 메시징 애플리케이션(510)은 프로세서(502)로 하여금 본 명세서에 기술된 기능 예를 들어, 도 2, 3 또는 4의 방법의 일부 또는 전부를 수행하게 하는 명령어를 포함할 수 있다. 다른 애플리케이션(152)(앱 A(152) 및 앱 B(154)를 포함할 수 있음)은 예를 들어, 지도 애플리케이션, 이미지 편집 애플리케이션, 미디어 디스플레이 애플리케이션, 통신 애플리케이션, 웹 호스팅 엔진 또는 애플리케이션, 알림 엔진, 미디어 공유 애플리케이션 등을 포함할 수 있다. 본 명세서에 개시된 하나 이상의 방법은 여러 환경 및 플랫폼에서, 예를 들어, 임의의 유형의 컴퓨팅 디바이스에서 실행할 수 있는 독립 실행형 컴퓨터 프로그램, 웹페이지를 갖는 웹 애플리케이션, 모바일 컴퓨팅 디바이스에서 실행되는 모바일 애플리케이션("앱")으로 동작할 수 있다.
메모리(504)의 임의의 소프트웨어는 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독가능 매체에 저장될 수 있다. 또한, 메모리(504)(및/또는 기타 연결된 저장 디바이스(들))는 하나 이상의 메시지, 하나 이상의 분류법, 전자 백과사전, 사전, 디지털 지도, 동의어 사전, 지식 기반, 메시지 데이터, 문법, 사용자 선호도 및/또는 본 명세서에 기술된 구성에 사용된 기타 지침 및 데이터를 저장할 수 있다. 메모리(504) 및 임의의 다른 유형의 스토리지(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형적 매체)는 "스토리지" 또는 "저장 디바이스"로 간주될 수 있다.
I/O 인터페이스(506)는 서버 디바이스(500)를 다른 시스템 및 디바이스와 인터페이스할 수 있게 하는 기능을 제공할 수 있다. 인터페이싱된 디바이스는 디바이스(500)의 일부로서 포함될 수 있거나 분리되어 디바이스(500)와 통신할 수 있다. 예를 들어, 네트워크 통신 디바이스, 저장 디바이스(예: 메모리 및/또는 데이터베이스) 및 입력/출력 디바이스는 I/O 인터페이스(506)를 통해 통신할 수 있다. 일부 구현예에서 I/O 인터페이스는 입력 디바이스(키보드, 포인팅 디바이스, 터치스크린, 마이크로폰, 카메라, 스캐너, 센서 등) 및/또는 출력 디바이스(디스플레이 디바이스, 스피커 디바이스, 프린터, 모터 등)와 같은 인터페이스 디바이스에 연결할 수 있다.
I/O 인터페이스(506)에 연결할 수 있는 인터페이싱된 디바이스의 일부 예는 콘텐츠, 예를 들어, 이미지, 비디오 및/또는 본 명세서에 기술된 애플리케이션의 사용자 인터페이스를 디바이스하는데 사용될 수 있는 하나 이상의 디스플레이 디바이스(520)를 포함할 수 있다. 디스플레이 디바이스(520)는 로컬 연결(예를 들어, 디스플레이 버스) 및/또는 네트워크 연결을 통해 디바이스(500)에 연결될 수 있고 임의의 적절한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(520)는 LCD, LED, 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린 또는 다른 시각적 디스플레이 디바이스와 같은 임의의 적절한 디스플레이 디바이스를 포함할 수 있다. 디스플레이 디바이스(520)는 또한 입력 디바이스, 예를 들어, 터치스크린 입력 디바이스로서 작동할 수 있다. 예를 들어, 디스플레이 디바이스(520)는 모바일 디바이스에 제공된 평면 디스플레이 스크린, 안경 또는 헤드셋 디바이스에 제공된 다수의 디스플레이 스크린 또는 컴퓨터 디바이스용 모니터 스크린일 수 있다.
I/O 인터페이스(506)는 다른 입력 및 출력 디바이스와 인터페이싱할 수 있다. 일부 예는 이미지를 캡처 및/또는 제스처를 검출할 수 있는 하나 이상의 카메라를 포함한다. 일부 구현예는 (예를 들어, 캡처된 이미지, 음성 명령 등의 일부로서) 사운드를 캡처하기 위한 마이크로폰, 제스처를 검출하기 위한 레이더 또는 기타 센서, 사운드를 출력하기 위한 오디오 스피커 디바이스 또는 다른 입력 및 출력 디바이스를 제공할 수 있다.
모뎀(516)은 무선 캐리어 시스템(예를 들어, 무선 캐리어 시스템(160))과 통신하도록 구성되는 셀룰러 모뎀일 수 있다. 상이한 구현예에서, 모뎀(516)은 프로세서(502)와 동일한 칩 또는 다이 상에서 구현될 수 있거나, 별도의 하드웨어로서 구현될 수 있다. 모뎀(516)은 네트워크 액세스 레이어를 통해 무선 캐리어 시스템과 통신할 수 있다. 일부 구현예에서, 모뎀(516)은 예를 들어, RCS 프로토콜을 통해 메시징 애플리케이션(510)에 의해 제공되는 메시지들을 전송하도록 구성될 수 있다. 일부 구현예에서, 모뎀(516)은 예를 들어 RCS 프로토콜을 통해 메시지를 수신하고 메시지를 메시징 애플리케이션(510)에 제공하도록 구성될 수 있다.
예시의 편의를 위해, 도 5은 프로세서(502), 메모리(504), I/O 인터페이스(506), 및 소프트웨어 블록(508, 510 및 512) 각각에 대한 하나의 블록을 도시한다. 이러한 블록은 하나 이상의 프로세서 또는 프로세싱 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낼 수 있다. 다른 구현예에서, 디바이스(500)는 도시된 컴포넌트들 모두를 갖지 않을 수 있고 및/또는 여기에 도시된 것들 대신에 또는 이에 추가하여 다른 유형의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 일부 컴포넌트는 본 명세서의 일부 구현예에서 설명된 바와 같이 블록 및 동작을 수행하는 것으로 설명되지만, 환경(100), 디바이스(500), 유사한 시스템의 컴포넌트의 임의의 적절한 컴포넌트 또는 조합, 또는 이러한 시스템과 연관된 임의의 적절한 프로세서 또는 프로세서들이 블록 및 설명된 동작을 수행할 수 있다.
컴퓨팅 디바이스(500)는 다양한 구성으로 도 5에 도시된 추가 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(500)가 무선 캐리어 시스템을 구현하기 위해 활용될 때, 그것은 캐리어 메시징 허브(162)를 구현할 수 있고, 무선 통신 하드웨어를 포함할 수 있다. 다른 예에서, 컴퓨팅 디바이스(500)가 메시지 전달 서버를 구현하기 위해 활용될 때, 컴퓨팅 디바이스(500)는 전달 애플리케이션(108)을 구현하고 및/또는 데이터베이스(106)를 저장할 수 있다.
본 명세서에 기술된 방법은 컴퓨터에서 실행될 수 있는 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예를 들어, 코드는 하나 이상의 디지털 프로세서(예를 들어, 마이크로프로세서 또는 기타 프로세싱 회로)에 의해 구현될 수 있고, 자기적, 광학적, 전자기적 또는 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리, 강성 자기 디스크, 광 디스크, 솔리드 스테이트 메모리 드라이브 등을 포함하는 반도체 저장 매체와 같은 비일시적 컴퓨터 판독가능 매체(예를 들어, 저장 매체)를 포함하는 컴퓨터 프로그램 물에 저장될 수 있다. 프로그램 명령어는 또한 예를 들어 서버(예를 들어, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 서비스형 소프트웨어(SaaS)의 형태로 전자 신호에 포함되어 제공될 수 있다. 대안적으로, 하나 이상의 방법은 하드웨어(논리 게이트 등)에서, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적 하드웨어는 프로그래머블 프로세서(예를 들어, FPGA(Field-Programmable Gate Array), 복합 프로그래머블 로직 디바이스), 범용 프로세서, 그래픽 프로세서, ASIC(Application Specific Integrated Circuits) 등일 수 있다. 하나 이상의 방법은 시스템에서 실행되는 애플리케이션의 일부 또는 컴포넌트로 수행되거나 다른 애플리케이션 및 운영 체제와 함께 실행되는 애플리케이션 또는 소프트웨어로 수행될 수 있다.
설명이 그것의 특정한 구현예와 관련하여 기술되었지만, 이러한 특정 구현예는 단지 예시적이며 제한적이지 않다. 예시들에서 예시된 개념은 다른 예시 및 구현예에 적용될 수 있다.
상기 기술에 더하여, 사용자가 본 명세서에 기술된 시스템들, 프로그램들 또는 구성들이 사용자 정보의 수집(예를 들어, 사용자의 소셜 네트워크에 관한 정보, 사회적 액션들 또는 활동들, 직업, 사용자의 선호들 또는 사용자의 현재 위치)을 하는 경우 및 콘텐츠 또는 서버로부터 통신에 사용자가 전송되는 경우에 관한 선택을 하게 하는 제어들이 사용자에게 제공될 수 있다. 추가로, 특정 데이터는 그것이 저장되거나 사용되기 전에 하나 이상의 다양한 방식들로 취급되어, 개인적으로 식별가능한 정보는 제거된다. 예를 들면, 사용자의 신원은 사용자에 관한 개인적으로 식별가능한 정보가 결정될 수 없도록 취급되거나 또는 사용자의 지리적 위치는 위치 정보가 획득된 곳에서 일반화되어(시, 우편번호 또는 주 수준으로), 사용자의 특정한 위치가 결정될 수 없도록 한다. 따라서, 사용자는 사용자에 관한 어떤 정보가 수집될지, 정보가 어떻게 사용될지, 그리고 어떤 정보가 사용자에게 제공될지에 관한 제어를 가질 수 있다.
본 개시에서 설명된 기능 블록, 동작, 구성, 방법, 디바이스 및 시스템은 통상의 기술자에게 공지된 바와 같이 시스템, 디바이스 및 기능 블록의 상이한 조합으로 통합되거나 분할될 수 있음을 유의한다. 임의의 적절한 프로그래밍 언어 및 프로그래밍 기법이 특정한 구현예의 루틴을 구현하는데 사용될 수 있다. 상이한 프로그래밍 기법, 예를 들어 절차적 또는 객체 지향이 사용될 수 있다. 루틴은 단일 프로세싱 디바이스 또는 다중 프로세서에서 실행할 수 있다. 단계, 동작 또는 계산이 특정 순서로 제시될 수 있지만 다른 특정한 구현예에서 순서가 변경될 수 있다. 일부 구현예에서, 본 명세서에서 순차적으로 도시된 다수의 단계 또는 동작이 동시에 수행될 수 있다.

Claims (13)

  1. 컴퓨터로 구현되는 방법으로서,
    수신자 디바이스(120)에서, 무선 캐리어(160)로부터 메시지를 수신하는 단계(312, 412), 상기 메시지는 애플리케이션 서버(142, 144)로부터의 알림을 포함하며;
    상기 수신자 디바이스(120)에 로컬적으로 저장된 개인 키를 사용하여 상기 메시지를 복호화(314, 414)하는 단계;
    상기 복호화된 메시지와 연관된 상기 수신자 디바이스(120) 상에서 실행되는 소프트웨어 애플리케이션(152)을 식별하는 단계(316, 418), 상기 복호화된 메시지는 상기 알림을 포함하며; 및
    상기 복호화된 메시지를 상기 소프트웨어 애플리케이션(152)에 전달(318, 420)하는 단계를 포함하며;
    상기 수신자 디바이스(120)는 상기 무선 캐리어(160)에 의해 동작되는 셀룰러 네트워크에 연결된 무선 디바이스이고, 상기 메시지를 수신하는 단계는 상기 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 상기 메시지를 수신하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 청구항 1에 있어서, 상기 복호화 후에, 수신확인 메시지를 상기 무선 캐리어에 전송하는 단계(320)를 더 포함하는, 컴퓨터로 구현되는 방법.
  3. 청구항 1에 있어서, 상기 메시지를 수신하기 전에:
    상기 수신자 디바이스에서, 공개 키 및 개인 키를 포함하는 암호화 키 쌍을 생성하는 단계(214);
    상기 수신자 디바이스(120)의 로컬 저장소에 상기 개인 키를 저장하는 단계; 및
    상기 공개 키를 포함하는 등록 메시지를 인터넷을 통해 메시지 전달 서버에 전송하는 단계(216)를 포함하는, 컴퓨터로 구현되는 방법.
  4. 청구항 3에 있어서, 상기 등록 메시지는 상기 소프트웨어 애플리케이션과 연관된 토큰을 더 포함하고, 상기 소프트웨어 애플리케이션을 식별하는 단계는 상기 복호화된 메시지에서 수신된 토큰이 상기 소프트웨어 애플리케이션과 연관된 토큰과 일치한다는 결정에 기초하는, 컴퓨터로 구현되는 방법.
  5. 디바이스(120, 500)로서,
    프로세서(502);
    상기 디바이스를 무선 캐리어(160)에 연결하도록 동작가능한 모뎀(516); 및
    프로세서에 연결된, 명령어가 저장된 메모리(504)를 포함하며, 상기 명령어는 상기 프로세서(502)에 의해 실행될 때, 상기 프로세서(502)로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    무선 캐리어(160)로부터 메시지를 수신하는 동작(312, 412), 상기 메시지는 애플리케이션 서버(142,144)로부터의 알림을 포함하며;
    개인 키를 사용하여 상기 메시지를 복호화하는 동작(314,414);
    상기 복호화된 메시지와 연관된 소프트웨어 애플리케이션(152)을 식별하는 동작(316, 418), 상기 복호화된 메시지는 상기 알림을 포함하며; 및
    상기 복호화된 메시지를 상기 소프트웨어 애플리케이션(152)에 전달(318, 420)하는 동작을 포함하며;
    상기 메시지는 상기 무선 캐리어(160)와 통신하는 모뎀(516)을 통해 디바이스(120, 500)의 네트워크 액세스 레이어에서 수신되고, 상기 소프트웨어 애플리케이션(152)과 상기 애플리케이션 서버(142, 144) 사이에는 활성 연결이 존재하지 않는, 디바이스.
  6. 청구항 5에 있어서, 상기 디바이스는 상기 무선 캐리어(160)에 의해 동작되는 셀룰러 네트워크에 연결되고, 상기 메시지를 수신하는 동작(312, 412)은 상기 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 상기 메시지를 수신하는 동작을 포함하는, 디바이스.
  7. 청구항 5에 있어서, 상기 메시지는 SIP(Session Initiation Protocol) 메시지로서 수신되고, 선택적으로 상기 SIP 메시지는 SIP OPTIONS 메시지이고, 상기 알림은 상기 SIP OPTIONS 메시지의 콘텐츠 본문에 포함되는, 디바이스.
  8. 청구항 5에 있어서, 상기 동작들은, 상기 메시지를 수신하기 전에:
    공개 키 및 개인 키를 포함하는 암호화 키 쌍을 생성하는 동작(214);
    상기 디바이스(120, 500)의 로컬 저장소에 상기 개인 키를 저장하는 동작; 및
    상기 공개 키를 포함하는 등록 메시지를 인터넷을 통해 메시지 전달 서버에 전송하는 동작을 포함하는, 디바이스.
  9. 메시지를 전달하기 위한 컴퓨터로 구현되는 방법으로서,
    메시지 전달 서버에서, 애플리케이션 서버(142,144)로부터 알림을 수신하는 단계(312, 412);
    상기 알림의 수신자가 상기 메시지 전달 서버에 저장된 공개 키와 연관되는지 결정하는 단계, 상기 공개 키는 수신자 디바이스(120)와 연관되며;
    상기 수신자가 상기 공개 키와 연관된다는 결정에 응답하여, 상기 공개 키로 상기 알림을 암호화함으로써 상기 메시지를 생성하는 단계; 및
    상기 수신자 디바이스(120)로의 전달을 위해 상기 메시지를 무선 캐리어(160)에 전송하는 단계를 포함하며;
    상기 수신자 디바이스(120)는 상기 무선 캐리어(160)에 의해 동작되는 셀룰러 네트워크에 연결된 무선 디바이스이고, 상기 셀룰러 네트워크를 통해 RCS(Rich Communication Services) 프로토콜을 통해 상기 수신자에게 상기 메시지가 전달되는, 컴퓨터로 구현되는 방법.
  10. 청구항 9에 있어서, 상기 메시지 전달 서버 및 상기 무선 캐리어는 RCS에 대한 피어링 연결을 유지하는, 컴퓨터로 구현되는 방법.
  11. 청구항 9에 있어서, 인터넷을 통해 하나 이상의 다른 수신자 디바이스에 상기 알림을 전송하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  12. 청구항 9에 있어서, 상기 알림을 수신하기 전에:
    상기 메시지 전달 서버에서, 상기 수신자 디바이스(120)로부터 등록 메시지를 수신하는 단계를 더 포함하고, 상기 등록 메시지는 상기 공개 키 및 수신자 식별자를 포함하는, 컴퓨터로 구현되는 방법.
  13. 청구항 12에 있어서, 상기 알림의 수신자가 상기 공개 키와 연관되는지를 결정하는 동작은 상기 수신자가 상기 수신자 식별자와 일치하는지 및/또는 상기 수신자 디바이스가 소프트웨어 애플리케이션을 실행하고 상기 수신자 식별자가 상기 소프트웨어 애플리케이션과 연관된 토큰인지 결정하는 것에 기초하는, 컴퓨터로 구현되는 방법.
KR1020210185131A 2021-01-11 2021-12-22 모바일 디바이스에 알림 전달 KR102684689B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP21150972.4A EP4027606A1 (en) 2021-01-11 2021-01-11 Delivery of notifications to mobile devices
EP21150972.4 2021-01-11

Publications (2)

Publication Number Publication Date
KR20220101562A true KR20220101562A (ko) 2022-07-19
KR102684689B1 KR102684689B1 (ko) 2024-07-15

Family

ID=

Also Published As

Publication number Publication date
JP2022107581A (ja) 2022-07-22
US20220224728A1 (en) 2022-07-14
EP4027606A1 (en) 2022-07-13
CN114286294A (zh) 2022-04-05
JP7366115B2 (ja) 2023-10-20

Similar Documents

Publication Publication Date Title
US11582579B2 (en) Secure streaming of real-time location data between electronic devices
US10887400B2 (en) Answering a call with client through a host
AU2017216602B2 (en) System and method for non-replayable communication sessions
US10164949B2 (en) Method and system for encrypted communications
WO2018014723A1 (zh) 密钥管理方法、装置、设备及系统
CN111193695B (zh) 一种第三方账号登录的加密方法、装置及存储介质
US9602661B2 (en) Answer and hold with client and host
GB2560434B (en) Securely transferring user information between applications
US9654581B2 (en) Proxied push
KR101510977B1 (ko) 다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량
US20160197897A1 (en) Cross-client communication method
US10085211B2 (en) Communication of processor state information
US9954837B2 (en) Method of multi-factor authenication during encrypted communications
JP2018504702A (ja) オペレーティングシステムドングル
US10129229B1 (en) Peer validation
US20170374044A1 (en) Messenger application systems and methods
US20170142578A1 (en) System and method for providing secure and anonymous device-to-device communication
US10743255B2 (en) Power optimization modes for communication between device and server
JP2020526991A (ja) マルチエージェントメッセージングのための技法
JP7366115B2 (ja) モバイルデバイスへの通知の配信
KR102684689B1 (ko) 모바일 디바이스에 알림 전달
Sabah et al. Developing an end-to-end secure chat application
US10206071B2 (en) MMS delivery system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right