CN116743689A - 带索引的加密消息备份 - Google Patents

带索引的加密消息备份 Download PDF

Info

Publication number
CN116743689A
CN116743689A CN202211401422.0A CN202211401422A CN116743689A CN 116743689 A CN116743689 A CN 116743689A CN 202211401422 A CN202211401422 A CN 202211401422A CN 116743689 A CN116743689 A CN 116743689A
Authority
CN
China
Prior art keywords
message
chat group
message information
computer
implemented method
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202211401422.0A
Other languages
English (en)
Inventor
乔纳森·理查德·米利肯
杰里米·大卫·费恩
斯雷亚斯·纳根德拉·西拉瓦拉
扎尔多什特·卡什夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Meta Platforms Inc
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 Meta Platforms Inc filed Critical Meta Platforms Inc
Publication of CN116743689A publication Critical patent/CN116743689A/zh
Pending legal-status Critical Current

Links

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/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/043Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Storage Device Security (AREA)

Abstract

提供了一种用于在端到端通信中保护数据的方法。该方法包括:在消息引擎中接收来自聊天组中参与者的消息;利用备份工具对数据库中的具有消息信息的消息索引进行更新,该消息信息包括参与者列表、消息内容、聊天组标识符和元数据;利用加密工具加密消息信息;将消息信息存储在数据库中;以及向聊天组中的至少一个参与者提供用于访问来自数据库的消息信息的密钥。

Description

带索引的加密消息备份
相关申请的交叉引用
本公开要求于2022年10月27日提交的、名称为“带索引的加密消息备份”的第17/975370号美国非临时申请的优先权的权益,该申请与于2021年11月9日提交的、名称为“带索引的加密消息备份”的第63/277523号美国临时申请有关、并要求该临时申请的优先权,出于所有目的,这两个申请的内容通过引用全部并入本文。
技术领域
本公开总体上针对一种消息传递网络中的安全备份架构。更具体地,本公开针对聊天组应用中的消息和消息信息的端到端加密。
背景技术
在当前的消息传递平台中,数据备份主要面向基于设备的存储和加密,其中服务器担当分发公钥和私钥的角色。然而,当设备丢失、被盗或以其他方式被用户不当使用、废止(revoke)或简单地更换,并且新设备需要被上传至系统并被给予访问消息传递数据的权限时,这种架构会遇到问题。此外,新的或旧的、合法的或不合法的客户端设备可能具有不同的存储容量和安全等级。此外,当前的消息传递平台没有有效地应对网络管理员变得不可靠并向恶意的第三方分发私有用户数据的普遍发生。
发明内容
在第一实施例中,一种计算机实现的方法包括:在消息传递引擎中接收来自聊天组中参与者的消息;利用备份工具对数据库中的具有消息信息的消息索引进行更新,该消息信息包括参与者列表、消息内容、聊天组标识符、和元数据;利用加密工具加密消息信息;将消息信息存储在数据库中;以及向聊天组中的至少一个参与者提供用于访问来自数据库的消息信息的密钥。
在第二实施例中,一种系统包括一个或多个处理器和存储器;该存储器存储指令,这些指令在由一个或多个处理器执行时使得该系统执行操作。这些操作包括:在消息传递引擎中接收来自聊天组中的参与者的消息;利用备份工具对数据库中的具有消息信息的消息索引进行更新,该消息信息包括参与者列表、消息内容、聊天组标识符和元数据;利用加密工具加密消息信息;将消息信息存储在数据库中;以及向聊天组中的至少一个参与者提供用于访问来自数据库的消息信息的密钥。
在第三实施例中,一种计算机实现的方法包括:在聊天组中的参与者所使用的第一移动设备中,接收来自托管聊天组的服务器的加密密钥;向托管聊天组的服务器请求对与聊天组中的线程相关联的消息信息进行访问;在托管聊天组的服务器提示授权对消息信息的访问时,向该服务器提供加密密钥;以及将消息信息存储在第一移动设备的存储器中。
在另一实施例中,一种非暂态(non-transitory)计算机可读介质,该非暂态计算机可读介质存储指令,这些指令在由计算机中的处理器执行时使得该计算机执行一种方法。该方法包括:在消息传递引擎中接收来自聊天组中参与者的消息;利用备份工具对数据库中的具有消息信息的消息索引进行更新,该消息信息包括参与者列表、消息内容、聊天组标识符、和元数据;利用加密工具加密消息信息;将消息信息存储在数据库中;以及向聊天组中的至少一个参与者,提供用于访问来自数据库的消息信息的密钥。
在又一实施例中,一种系统包括:用于存储指令的第一装置、和用于执行指令并使系统执行一种方法的第二装置。该方法包括:在消息传递引擎中接收来自聊天组中参与者的消息;利用备份工具对数据库中的具有消息信息的消息索引进行更新,该消息信息包括参与者列表、消息内容、聊天组标识符、和元数据;利用加密工具加密消息信息;将消息信息存储在数据库中;以及向聊天组中的至少一个参与者提供用于访问来自数据库的消息信息的密钥。
根据以下公开,这些和其它实施例将是清楚的。
附图说明
图1示出了根据一些实施例的网络架构,该网络架构被配置用于消息传递应用中的端到端加密备份。
图2为示出了根据一些实施例的在图1的网络架构中使用的设备和系统的细节的框图。
图3示出了根据一些实施例的加密消息传递应用中的消息的隐私层级。
图4示出了根据一些实施例的数据库体系结构(database architecture),其中数据以原始形式存储。
图5示出了根据一些实施例的数据库体系结构,其中使用存储在客户端设备中的密钥对数据进行了加密。
图6示出了根据一些实施例的数据库体系结构,其中使用密钥轮换方案对数据进行了加密。
图7示出了根据一些实施例的数据库体系结构,该数据库体系结构包括时元(epoch)列表,时元列表包括加密消息传递应用的成员资格证明。
图8示出了根据一些实施例的数据库体系结构,该数据库体系结构包括加密消息传递应用中的经认证的时元列表。
图9示出了根据一些实施例的数据库体系结构,该数据库体系结构包括加密消息传递应用中的链接时元密钥(chained epoch key)。
图10示出了根据一些实施例的数据库体系结构,该数据库体系结构包括加密消息传递应用中的时元密钥的反向链接表。
图11示出了根据一些实施例的数据库体系结构,该数据库体系结构被配置为在加密消息传递应用的备份中隐藏标识符。
图12示出了根据一些实施例的数据库体系结构,该数据库体系结构被配置为在加密消息传递应用的备份中隐藏时间戳。
图13示出了根据一些实施例的数据库体系结构,在该数据库体系结构中,存储与加密消息传递应用的用户账户之间断开链接。
图14A和图14B示出了根据一些实施例的数据库体系结构,该数据库体系结构被配置为在加密消息传递应用中隐藏时元标识符。
图15示出了根据一些实施例的数据库体系结构,该数据库体系结构被配置为防止加密消息传递应用中的线程间比较。
图16A至图16D示出了根据一些实施例的数据库体系结构,这些数据库体系结构被配置为在加密消息传递应用中保护消息传递对不受网络管理员和其他参与者的影响。
图17示出了根据一些实施例的对于在服务器变得恶意之前废止加密消息传递应用中的设备而言的备份事件的时间线。
图18示出了根据一些实施例的对于在服务器变得恶意之后废止加密消息传递应用中的设备而言的备份事件的时间线。
图19为示出了根据一些实施例的用于消息传递应用中端到端备份加密的方法中的步骤的流程图。
图20为示出了根据一些实施例的在设备废止时用于消息传递应用中备份和数据恢复的方法中的步骤的流程图。
图21为示出了根据一些实施例的示例性计算机系统的框图,利用该示例性计算机系统,可以实现图1的网络架构中的头戴式视图器和其他客户端设备、以及图19的方法和图20的方法。
在附图中,除非另外明确说明,否则具有相同或相似参考数字的元件与相同或相似属性和相同或相似特征相关联。
具体实施方式
在以下详细描述中,阐述了许多具体的细节,以提供对本公开的透彻理解。然而,对于本领域普通技术人员来说将是显而易见的是,可以在没有这些具体细节中的一些具体细节的情况下对本公开的实施例进行实践。在其它实例中,没有详细示出众所周知的结构和技术,以便不会模糊本公开。
总体概述
在端到端加密消息传递平台中,消息传递最终是基于设备的而不是基于云的。这需要对消息传递平台的架构进行底层重新设计,这引入了待解决的各种不同挑战。
加密消息传递平台面临几个挑战。新设备不再可以轻松地访问来自云的、账户的消息历史。而且,基于设备的架构依赖于设备,这些设备管理它们自身的消息存储,然而许多设备是存储受限的。此外,在加密备份中,消息没有索引/消息不是可搜索的。根据一些方面,具有相关密钥的客户端可以读取数据。
在一个实施方式中,服务器可以以索引的方式访问数据(例如,仅加载特定线程中的消息、或仅加载特定时间范围内的消息等)。另外,所描述的方法允许结构化加密数据/索引加密数据。在一实施例中,对所有数据进行匿名地存储、和/或对所述数据进行加密。
在一些实施例中,期望以密码方式保护数据不受未登录到参与者账户但可以访问数据库的网络管理员和其他参与者的影响。此外,一些实施例防止非受信的参与者与网络管理员串通而尝试获得对该账户的访问。例如,在一些情况下,整个服务器可能会受损。在一些实施例中,客户端设备被从账户中移除或替换。因此,一些实施例可以将旧客户端设备视为非受信的。
在一些实施例中,期望加密是可逆的。在其他实施例中,期望加密不可由较早的客户端设备(例如,已被更换的、已被盗的、已丢失的、或以其他方式已被废止的设备)重映射。
一些实施例将备份过程分成用户空间和匿名空间,该用户空间包括用户账户,并存储备份元数据。如此,在用户空间内可见的任何标识符(identifier,ID)对匿名空间隐藏,反之亦然。因此,在整个网络中保持匿名。在一些实施例中,参与者账户(例如,消息收件箱)可被隐藏,使得收件箱数据库成为匿名空间的一部分,而备份管理数据库为用户空间的一部分。
一些实施例能够实现多个设备之间的一致输出,并且通过隐藏来自服务器的输入,支持对客户端设备计算任何输出的能力的废除。在一些实施例中,系统通过隐藏来自未经授权设备的应用程序输出,防止未经授权的客户端设备计算输出。另外,一些实施例防止缓存输入/输出对,并且防止以后运行点(point)查询。
示例系统架构
图1示出了根据一些实施例的网络架构100,该网络架构100被配置用于消息传递应用中的端到端加密备份。多个服务器130和数据库152经由网络150与多个客户端设备110通信耦合。服务器130可以托管客户端设备110中正运行的聊天组应用程序。客户端设备110可以由聊天组会话中的参与者使用。多个客户端设备110可以包括智能手机、笔记本电脑、移动设备、掌上设备、以及甚至是台式计算机。在一些实施例中,客户端设备110可以包括虚拟现实或增强现实(virtual reality or augmented reality,VR/AR)头戴式视图器和/或智能眼镜,并且聊天组会话可以包括沉浸式现实元素。网络150例如可以包括局域网(localarea network,LAN)、广域网(wide area network,WAN)和因特网等中的任何一个或多个。此外,网络150可以包括但不限于以下网络拓扑中的任何一个或多个,这些网络拓扑包括总线网络、星形网络、环形网络、网状网络、星形总线网络、以及树形或层次网络等。数据库152可以存储来自聊天组会话的备份文件,这些备份文件包括线程、消息和元数据。此外,数据库152可以包括多个加密密钥,这些加密密钥可以被分发给多个聊天组参与者中的所有聊天组参与者。
图2为示出了根据一些实施例的在网络架构100中使用的设备和系统的细节的框图200。客户端设备110包括处理器212-1、存储器220-1和通信模块218-1。类似地,服务器130可以包括处理器212-2、存储器220-2和通信模块218-2。存储器220-1和存储器220-2(在下文中,统称为“存储器220”)可以存储指令,这些指令在被处理器212-1和处理器212-2(在下文中,统称为“处理器212”)执行时,使得客户端设备110和服务器130至少部分地执行本文所描述的方法中的一个或多个步骤。通信模块218-1和通信模块218-2(在下文中,统称为“通信模块218”)可以包括根据联网协议而配置的硬件和软件,上述硬件和软件包括以太网卡、电话线、无线电和无线天线、以及相关联的数字和/或模拟电路,相关联的数字和/或模拟电路例如为蓝牙、Wi-Fi、近距离接触(near field contact,NFC)、近距离通信(nearfield communication,NFC)、以及包括超声的其他射频(radio-frequency,RF)通信方案。通信模块218使客户端设备110和服务器130能够经由网络150传送数据包225和数据包227。
客户端设备110可以耦合至输入设备214和输出设备216。输入设备214可以包括鼠标、指示器、触摸屏显示器、操纵杆、无线操纵杆(例如,耦合至VR/AR头戴式视图器的无线操纵杆)、传声器和摄像头等。输出设备216可以包括显示器(例如,VR/AR头戴式视图器的护目镜中的显示器)、触摸屏显示器、扬声器和灯等。在一些实施例中,输入设备214和输出设备216还可以包括传感器和执行器(例如,触觉传感器和执行器)、诸如惯性运动传感器(惯性测量单元(IMU))等接触式传声器,惯性运动传感器包括加速度计和陀螺仪等。
客户端设备110中的存储器220-1可以包括应用程序222。应用程序222可以包括从服务器130的存储器220-2中的消息传递引擎232下载、并由该消息传递引擎232托管的群组聊天应用程序。通过应用程序222,服务器130可以向操纵客户端设备110的聊天组参与者提供消息传递服务和备份服务。因此,客户端设备110可以提供数据包225,该数据包225包括由聊天组中的参与者提供的诸如消息和其他元数据等数据。作为回应,消息传递引擎232可以向多个客户端设备110中的每个客户端设备提供数据包227。例如,数据包227可以包括一聊天线程中的给聊天中的一个或多个参与者、或所有参与者的多个消息。在一些实施例中,数据包225可以包括在客户端设备110与服务器130之间交换的、用于应用程序222中数据的备份的公共加密密钥和/或私有加密密钥。
存储器220-2包括消息传递引擎232、线程引擎234和设备管理引擎236。消息传递引擎232托管应用程序222并执行同步操作、媒体共享操作、索引操作和加密操作等。线程引擎234处理多个群组聊天中的消息线程,这些消息线程包括与参与者列表相关联的元数据、以及时间戳等。此外,存储器220-2可以包括使引擎232、234和236能够执行它们的任务的多个工具。这些工具可以包括加密工具240、索引工具242、备份工具244、时元轮换工具246和废止工具248。
数据库252可以存储由引擎232、234和236、或工具240、242、244、246和248中的任何一个生成并提供的消息传递信息(例如,消息内容、消息元数据、线程信息和元数据、以及加密密钥等)。
图3示出了根据一些实施例的加密消息传递应用(例如,用于聊天组)中的消息和数据的层级300。隐私等级301确定层级300。例如,可恢复消息310-1可以具有比从提供者方面被确保安全性的消息310-2、从旧设备方面被确保安全性的消息310-3、从社交网络方面被确保安全性的消息310-4或从旧设备方面被确保安全性的元数据310-5(在下文中,统称为“消息信息310”)更低的隐私等级301。
图4示出了根据一些实施例的关系数据库体系结构400,其中数据以原始形式存储。在该数据库中,线程表434可以包括索引状态442、备份标识符444和线程标识符430。消息表432可以列出备份消息的:索引状态442和备份标识符444、线程标识符430和消息标识符431、时间戳450和消息数据433(例如,内容)。
在如本文所公开的端到端加密系统中,期望仅有限的且选定的实体能够看到未加密的消息传递数据。因此,可以采取另一些步骤来实现更高的隐私等级,如以下所公开的。
图5示出了根据一些实施例的数据库体系结构500,其中使用存储在客户端设备中的密钥对数据进行了加密。相应地,线程表534和消息表532可以包括索引字段542、备份标识符544和线程标识符530。消息表532可以包括以原始数据(例如,未加密)格式存储的时间戳550、以及消息标识符531。数据库体系结构500包括加密形式的消息数据533。
在一些实施例中,根据向托管聊天组应用程序的服务器的请求,用于存储消息数据533的加密密钥可用于聊天组中的任何参与者所使用的客户端设备(例如,客户端设备110和服务器130)。
在一些实施例中,加密密钥可以是静态的。这可能会降低隐私鲁棒性,尤其是在从服务器中的参与者账户中移除客户端设备(例如,通过对不当使用的、丢失或被盗的客户端设备的废止而移除客户端设备,或仅仅是参与者决定升级其客户端设备而移除客户端设备)时。
图6示出了根据一些实施例的数据库体系结构600,其中使用密钥轮换方案对数据进行了加密。为了增强隐私等级(例如,考虑到被废止的设备),可以利用贯穿“多个时元”或多个时间窗口的密钥轮换。对于各个时元,使用不同的加密密钥640-3,从而增强数据安全性。如数据库体系结构600中所示出的时元轮换可以在任何时间发生。在一些实施例中,可以在从账户中移除设备(例如,废止或停用、被盗和丢失等)时执行时元轮换。这提供了从数据库体系结构600中的备份中移除废止的客户端设备并确保这些设备不能读取任何新消息的能力。
设备表636列出了索引数据642、备份标识符644和设备公钥640-1。设备公钥640-1可以被固定到客户端设备,除非废止且直到废止。时元表646列出了索引数据642、备份标识符644和时元标识符647。时元密钥表648列出了索引数据642、设备标识符637、时元标识符647、备份标识符644和时元密钥数据640-3。
图7示出了根据一些实施例的数据库体系结构700,该数据库体系结构700包括加密消息传递应用中的时元表746。时元表746包括索引状态642、备份标识符644(参考以上内容)和成员资格证明747。设备表636和时元表746包括索引状态642、备份标识符644和时元标识符647(参考以上内容)。这阻止了不可靠网络管理员允许冒名顶替的客户端设备访问设备表636。
在备份中通过成员资格证明747认证设备公钥640-1。这可以包括持有当前的时元密钥640-3的任何设备(并因此具有对该备份的合法访问权)。这意味着每个成员资格证明747可以仅仅是关于设备公钥640-1和时元密钥640-3的基于哈希的消息认证码(hash-based message authentication code,HMAC)。
根据一些实施例,因为设备公钥640-1是已知的,所以参与者可以尝试轮换时元表746,而不是尝试将客户端设备添加到设备表636。时元密钥表648列出了索引数据642、设备标识符637、时元标识符647、备份标识符644和时元密钥数据640-3。
图8示出了根据一些实施例的数据库体系结构800,该数据库体系结构800包括加密消息传递应用中的经认证的时元表746。设备表636和时元表746包括索引状态642、设备标识符637、备份标识符644和时元标识符647(参考以上内容)。相应地,新的时元数据可以由作为上一时元的成员的客户端设备(对于该客户端设备,加密密钥640-3是可访问的)来认证。成员资格证明747验证对新时元数据的访问权限。在一个实施方式中,时元密钥表848包括使用客户端设备的设备公钥640-1的加密和认证操作840。因此,网络管理员可能不再具有添加自己并从数据库体系结构800的备份中读取数据的机制。
图9示出了根据一些实施例的数据库体系结构900,该数据库体系结构900包括加密消息传递应用中的链接时元密钥表948。设备表636和时元表746包括索引状态642、备份标识符644、设备公钥640-1和时元标识符647(参考以上内容)。时元密钥表948包括索引字段642、备份标识符644、设备标识符637、时元标识符647和时元密钥640-3(参考以上内容)。根据各方面,将上一次的时元密钥640-3与新的时元熵结合以获得新的时元密钥940-3,为:
new_epoch_key=key_derivation_function(new_epoch_entropy,old_epoch_key) (1)
因此,消息内容在数据库体系结构800的备份期间得到保护,并且等式(1)确保了新的时元密钥940-3对于冒名顶替者或废止的设备而言是不可获得的。另外,被添加到备份的任何客户端设备可以在注册过程中(例如,在时元熵中)接收任意长度的密钥列表。
图10示出了根据一些实施例的数据库体系结构1000,该数据库体系结构1000包括加密消息传递应用中的时元密钥640-3的反向链接表1048。设备表636和时元表746包括索引状态642、设备公钥640-1、备份标识符644、时元标识符647和成员资格证明747(参考上述内容)。反向链接表1048包括设备标识符637和时元标识符647。反向链接密钥1040由先前的多个时元密钥640-3形成。当客户端设备被添加到数据库体系结构1000中的备份时,反向链接密钥1040保证了,学习型时元密钥(用于第n个时元)可以提供用于前一个时元(n-1)的加密密钥。在一些实施例中,这是通过利用最新的时元密钥来加密较早的时元密钥而实现的。该过程确保了添加客户端设备时的可用性。
图11示出了根据一些实施例的数据库体系结构1100,该数据库体系结构1100被配置为在加密消息传递应用的备份中隐藏标识符。线程表1134包括索引状态442、备份标识符444(参考上述内容)和线程标识符1130。消息表1132包括索引状态442、备份标识符444、线程标识符1130、消息标识符1131、时间戳450、时元标识符647(参考上述内容)和加密的消息数据1133。
线程标识符1130和消息标识符1131在未被加密时可以是可交叉引用的,并由此出现了潜在的风险。因此,在一些实施例中,标识符1130和1131上的哈希函数(例如,HMAC)提供一致的映射并模糊化数据(例如,来自网络管理员的数据)。HMAC函数可以包括主密钥,该主密钥可由废止的设备重新计算。
在一些实施例中,设备列表、时元表和时元密钥表(未示出)被保存在用户空间中。线程表1134和消息表1132可由于哈希和加密而留在匿名空间中。因此,在一些实施例中,备份标识符444和时元标识符647在用户空间和匿名空间中都是可见的。
在一些实施例中,可通过匿名空间中的不经意一致映射函数(ObliviousConsistent Mapping Function,OCMF)对公开读取隐藏备份标识符444。OCMF的计算可以包括使客户端设备和服务器都运行涉及设备专用秘密的计算。通过正确的初始化,共享备份标识符444的两个客户端设备将产生相同的输出。另外,当废止客户端设备时,可以单方面地删除服务器的设备专用秘密。因此,即使被废止的设备稍后与网络管理员串通,该被废止的设备也不能运行OCMF。
时元标识符647不用于查找或索引,且不是全局唯一的。在一些实施例中,时元标识符647在备份内可以是唯一的。在这些情况下,为了隐藏时元标识符647,为每个时元分配仅在匿名空间中可见的值。在一些实施例中,时元标识符的值可以简单地包括从0开始递增的整数,以确保它们不是唯一的。这提供了对抗不可靠网络管理员的合理匿名性。
图12示出了根据一些实施例的数据库体系结构1200,该数据库体系结构1200被配置为在加密消息传递应用的备份中隐藏多个时间戳1250。例如,多个时间戳1250可以是服务器分配的,并且因此可以被展示给不可靠网络管理员并且可以是可交叉引用的。在隐藏多个时间戳1250之前,系统可以对它们进行排序(以保持时间顺序)。因此,一些实施例包括保序加密。
线程表1134包括索引状态442、备份标识符444和线程标识符1130(参考上述内容)。消息表1232包括索引状态442、备份标识符444、线程标识符1130、消息标识符1131、时元标识符647、加密的消息数据1333(参考上述内容)和隐藏时间戳1250。
尽管多个线程在时间上可能不是交叉可比较的,但是它们仍然可以被单独排序。此外,一些实施例可以使用同一密钥来加密跨所有线程的多个消息。为了避免泄露跨多个线程的多个消息之间的时间戳比较,可以定义特殊保序加密(order preservingencryption,OPE)函数为:
thread_list_ope_key=derive_ope_key(root_ope_key,"thread list") (2)
以及
ope_key(thread_id)=derive_ope_key(root_ope_key,thread_id) (3)
等式(2)和等式(3)确保了不同的线程与不可比较的多个隐藏时间戳1250相关联。
图13示出了根据一些实施例的数据库体系结构1300,在该数据库体系结构中,存储与加密消息传递应用的用户账户之间断开链接。数据库体系结构1300隐藏用户账户(例如,聊天组中的参与者)中的邮箱结构,以防止任何数据泄漏。线程表1334包括索引状态442、线程标识符1130(参考以上内容)和备份标识符1344。消息表1332包括索引状态442、线程标识符1130、消息标识符1131、时元标识符647、加密的消息数据1333、隐藏时间戳1250(参考以上内容)以及备份标识符1344。使用哈希函数(例如,HMAC)隐藏备份标识符1344,从而隐藏用户账户引用。因此,断开用户收件箱与备份标识符1344的链接使得更难以对消息数据1333进行任何推断。在一些实施例中,对数据库体系结构1300中的用户账户的认证可以包括待进行的备份专用持有(bearer)令牌。
图14A和14B示出了根据一些实施例的数据库体系结构1400,该数据库体系结构1400被配置为在加密消息传递应用中隐藏时元标识符1447。设备表636包括索引状态642、备份标识符644、设备标识符637和设备公钥640-1。时元表1446包括索引状态642、备份标识符644、时元标识符647、成员资格证明747(参考以上内容)和加密的时元元数据1447A。时元密钥表648列出了索引数据642、时元标识符647、备份标识符644、设备标识符637和时元密钥数据640-3(参考以上内容)。
线程表1334包括索引状态442、线程标识符1130和备份标识符1344(参考以上内容)。在一些实施例中,数据库体系结构1400被配置为防止线程间比较。因此,不需要使用每个线程的OPE密钥(参考等式(2)-(3))来比较消息之间的时间戳(只需要排序近期线程-具有自己的时间戳)。
在一些实施例中,时元标识符647也可以是全局唯一的。为了进一步解决潜在的从时元标识符647的数据泄漏或推断,消息表1432包括索引状态442、线程标识符1130、消息标识符1131、加密的消息数据1333、隐藏时间戳1250、备份标识符1344(参考以上内容)和时元标识符1447。在一些实施例中,时元标识符1447包括整数递增“时元匿名ID”,以使该值匿名(例如,移除唯一性)。
图15示出了根据一些实施例的数据库体系结构1500,该数据库体系结构1500被配置为在加密消息传递应用中对旧设备隐藏标识符。线程表1534包括索引状态642(参考以上内容)、线程标识符1530和备份标识符1544。消息表1532包括索引状态642、备份标识符1544、线程标识符1530、消息标识符1531、匿名时元标识符1447、隐藏时间戳1250和加密的消息数据1333(参考以上内容)。使用如本文所公开的隐藏函数(例如,OCMF)隐藏备份标识符1544、线程标识符1530和消息标识符1531,该隐藏函数包括,在客户端设备被停用、被盗、丢失或以其他方式不当使用的情况下、在废止时单方面删除的每设备服务器侧组件。
图16A至16D示出了根据一些实施例的数据库体系结构1600A、1600B、1600C和1600D(在下文中,统称为“数据库体系结构1600”),这些数据库体系结构被配置为在加密消息传递应用中保护消息传递对不受网络管理员和其他参与者的影响。
数据库体系结构1600A包括线程表1634,该线程表1634具有索引状态442、线程标识符1130和备份标识符444(参考以上内容)。数据库体系结构1600A还包括消息表1632A,该消息表1632A具有索引状态442、备份标识符444、线程标识符1130、消息标识符431、时间戳450、时元标识符647(参考以上内容)以及加密的消息数据1633。可以用隐藏函数(例如,HMAC)对线程标识符1130进行哈希,以隐藏消息接收者。在一些实施例中,数据库体系结构1600A可以不包括线程信息(例如,“消息传递对”,意味着发送者/接收者对)。在一些实施例中,可以期望保护消息传递对不受网络管理员的影响。根据各方面,索引442可以包括产生一致值的ID的变化。HMAC函数是网络管理员不能计算的有效哈希函数。计算可以在一个时元内产生一致值、也可以跨时元产生一致值,使得可以查询线程的所有消息而无需知道包含这些消息的时元。根据各方面,可以利用即使在时元轮换时也不轮换的密钥(thread_id_key)。因此,索引442可以寻址特定线程中的消息,并且网络管理员无法知道该线程是什么。
数据库体系结构1600B包括线程表1634,该线程表1634具有索引状态442、线程标识符1530和备份标识符444(参考以上内容)。数据库体系结构1600B还包括消息表1632B,以防止被废止的客户端设备与不可靠网络管理员串通以测试给定线程是否存在于用户的邮箱中。由此,消息表1632B包括索引状态442、备份标识符444、线程标识符1530、消息标识符431、时间戳450、时元标识符647(参考以上内容)和加密的消息数据1633。线程标识符1530使用不能由未授权方计算的哈希函数(例如,OCMF)。因此,防止未授权方与网络管理员一起工作以测试给定线程是否存在。
数据库体系结构1600C包括消息表1632C以隐藏消息标识符1531,该消息标识符1531仍可在不同的参与者备份之间匹配。消息表1632C包括索引状态442、备份标识符444、线程标识符1530、消息标识符1531、时间戳450、时元标识符647和加密的消息数据1633(参考以上内容)。在一些实施例中,通过OCMF函数获得消息标识符1531。因此,数据库体系结构1600C防止被废止的设备映射给定的消息标识符1531。因此,主要保护了消息传递对。
数据库体系结构1600D包括消息表1632D,该消息表1632D具有索引状态442、备份标识符444、线程标识符1530、消息标识符1531、时元标识符647、加密的消息数据1633(参考以上内容)和加密的时间戳1650。在一些实施例中,可以使用OPE函数加密时间戳1650,以中断线程之间的任何精确比较。因此,在不同时元之间,值可以是可比较的(以可靠地对备份存储内的值进行排序)。因此,用于加密时间戳1650的OPE密钥可以在备份内长期存在,并且被废止的设备可以保留计算新的OPE输出的能力。
出于实际原因,一些数据库体系结构1600保持了查询线程范围和消息范围的能力,因此这要求邮箱在存储时仍然被结构化。在一些实施例中,可以匿名地存储数据库体系结构1600以确保第三方请求不会泄露用户的身份(例如,通过网络管理员访问令牌和类似方式等泄露用户的身份),并且最小化邮箱结构的可见性。
图17示出了根据一些实施例的对于在服务器变得恶意之前废止加密消息传递应用中的设备而言的备份事件1700的时间线1701。在设备废止之前,在S1702处,客户端设备知道所发生的一切。在S1704处,废止客户端设备,并且合法服务器删除其加密的密钥,使得客户端设备的加密的密钥变得无用。在S1706处,仍然保护备份元数据不受被废止设备的影响(例如,通过OCMF)。如果在S1708处服务器变得不可靠,则该服务器几乎不能访问受保护的备份。
图18示出了根据一些实施例的对于在服务器变得不可靠之后废止加密消息传递应用中的设备而言的备份事件1800的时间线1801。在设备废止之前,在S1802处,客户端设备知道所发生的一切。在S1804处,服务器变得不可靠,并开始试图学习客户端设备元数据。在S1806处,废止客户端设备,但不可靠服务器可能与被废止的客户端设备串通,仍试图读取客户端设备元数据。在S1808处,阻止不可靠服务器从被废止的客户端设备访问任何元数据,从而减少数据丢失。
图19为示出了根据一些实施例的用于消息传递应用中端到端备份加密的方法1900中的步骤的流程图。方法1900中的一个或多个步骤可以由如本文所公开的客户端设备、服务器和数据库(例如,客户端设备110、服务器130、数据库152和数据库252)中的任何一个来执行。在一些实施例中,一个或多个服务器可以包括如本文所公开的消息传递引擎、线程引擎、或设备管理引擎(例如,消息传递引擎232、线程引擎234和设备管理引擎236)。另外,以上引擎可以使用其他工具中的任何一个来执行与本公开一致的方法1900中的多个步骤中的一个或多个步骤,上述其他工具例如为加密工具、索引工具、时元轮换工具和废止工具(例如,加密工具240、索引工具242、备份工具244、时元轮换工具246和废止工具248)。在一些实施例中,与本公开一致的方法可以包括来自方法1900中的以不同顺序、同时、准同时或时间上重叠执行的一个或多个步骤。
步骤1902包括,在消息传递引擎中接收来自聊天组中参与者的消息。在一些实施例中,步骤1902可以包括,向聊天组中参与者的移动设备提供用于访问与聊天组相关联的线程中的消息的加密密钥。在一些实施例中,步骤1902可以包括,接收来自聊天组中参与者的移动设备的、对消息加密密钥进行访问的请求,该消息加密密钥用于访问与聊天组相关联的消息线程中的消息。
步骤1904包括,利用备份工具对数据库中的具有消息信息的消息索引进行更新,该消息信息包括参与者列表、消息内容、聊天组标识符、和元数据。
步骤1906包括,利用加密工具加密消息信息。在一些实施例中,步骤1906包括,加密与消息相关联的元数据。在一些实施例中,步骤1906包括,加密至少一部分消息索引。在一些实施例中,消息信息包括时间戳值,并且步骤1906包括,加密时间戳值并保持聊天线程中的消息顺序。
步骤1908包括,将消息信息存储在数据库中。
步骤1910包括,向聊天组中的至少一个参与者,提供访问来自数据库的消息信息的密钥。在一些实施例中,步骤1910包括,链接两个连续的密钥。在一些实施例中,消息信息包括线程信息,并且步骤1910包括,基于线程信息,访问会话线程中的一个或多个消息。在一些实施例中,步骤1910包括,当聊天组中参与者的移动设备被不当使用时,在废止移动设备之前阻止该移动设备访问消息信息。
图20为示出了根据一些实施例的在设备废止时用于消息传递应用中备份和数据恢复的方法2000中的步骤的流程图。方法2000中的一个或多个步骤可以由如本文所公开的客户端设备、服务器和数据库(例如,客户端设备110、服务器130、数据库152和数据库252)中的任何一个执行。在一些实施例中,一个或多个服务器可以包括如本文所公开的消息传递引擎、线程引擎或设备管理引擎(例如,消息传递引擎232、线程引擎234和设备管理引擎236)。另外,以上引擎可以使用其他工具中的任何一个来执行与本公开一致的方法2000中的多个步骤中的一个或多个步骤,上述其他工具例如为加密工具、索引工具、时元轮换工具和废止工具(例如,加密工具240、索引工具242、备份工具244、时元轮换工具246和废止工具248)。在一些实施例中,与本公开一致的方法可以包括来自方法2000中的以不同顺序、同时、准同时或时间上重叠执行的一个或多个步骤。
步骤2002包括,在聊天组中的参与者所使用的第一移动设备中,接收来自托管聊天组的服务器的第一加密密钥。
步骤2004包括,向托管聊天组的服务器,请求对与聊天组中的线程相关联的消息信息进行访问。在一些实施例中,第一加密密钥与时间窗口相关联,并且步骤2004包括,请求在时间窗口内进行访问。
步骤2006包括,在托管聊天组的服务器提示授权对消息信息的访问时,向该服务器提供第一加密密钥。
在一些实施例中,步骤2006包括,当参与者所使用的第一移动设备被废止时,用第二加密密钥取代第一加密密钥。在一些实施例中,步骤2006包括,从聊天组中的参与者所使用的第二移动设备,请求来自托管聊天组的服务器的第二加密密钥,该第二移动设备取代第一移动设备。
步骤2008包括,将消息信息存储在第一移动设备的存储器中。在一些实施例中,步骤2008包括,使用由托管聊天组的服务器提供的第二加密密钥来加密消息信息。
硬件概述
图21为示出了根据一些实施例的示例性计算机系统2100的框图,利用该计算机系统可以实现头戴式视图器和其他客户端设备110以及方法1900和方法2000。在某些方面,可以使用硬件、或软件和硬件的组合,要么在专用服务器中、要么集成到另一实体中、要么跨多个实体分布来实现计算机系统2100。计算机系统2100可以包括台式计算机、笔记本电脑、平板电脑、平板手机、智能手机、功能手机、服务器计算机或其他。服务器计算机可以远程地位于数据中心中或被存储在本地。
计算机系统2100包括总线2108或用于传送信息的其它通信机制、以及与总线2108耦合以用于处理信息的处理器2102(例如,处理器212)。作为示例,计算机系统2100可以用一个或多个处理器2102而得到实现。处理器2102可以是通用微处理器、微控制器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、可编程逻辑器件(Programmable Logic Device,PLD)、控制器、状态机、门逻辑、分立的多个硬件组件、或可以执行计算或其他信息操作的任何其他合适的实体。
除了硬件之外,计算机系统2100还可以包括创建所讨论的计算机程序的执行环境的代码,例如,构成存储在所包括的存储器2104(例如,存储器220)中的以下内容的代码:处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合,该存储器2104例如为随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、寄存器、硬盘、可移动磁盘、紧凑型光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或任何其它合适的存储设备,该存储器2104与总线2108耦合以用于存储信息和待由处理器2102执行的指令。处理器2102和存储器2104可由专用逻辑电路补充或被并入专用逻辑电路中。
指令可以存储在存储器2104中,并且可以在一个或多个计算机程序产品中被实现,该一个或多个计算机程序产品例如为多个计算机程序指令的一个或多个模块,这些计算机程序指令被编码在计算机可读介质上、以用于由计算机系统2100执行或控制该计算机系统2100的操作,并且根据本领域技术人员所众所周知的任何方法,这些计算机程序指令包括但不限于诸如面向数据的语言(例如,SQL、dBase)、系统语言(例,如C、扩充C的面向对象编程语言(Objective-C)、C++、汇编)、结构性语言(例如,Java、.NET)以及应用程序语言(例如,PHP、Ruby、Perl、Python)等计算机语言。指令还可以在诸如阵列语言、面向方面语言、汇编语言、创作语言(authoring language)、命令行接口语言、编译语言、并发语言、波形括号语言(curly-bracket language)、数据流语言、数据结构化语言、声明性语言、深奥的语言(esoteric language)、扩展语言(extension language)、第四代语言、函数式语言、交互模式语言、解释型语言、交互式语言(iterative language)、基于列表的语言(list-based language)、小语言(little language)、基于逻辑的语言、机器语言、宏语言、元编程语言、多范式语言(multiparadigm language)、数值分析、非基于英语的语言(non-English-based language)、基于类的面向对象语言、基于原型的面向对象语言、越位规则语言(off-side rule language)、过程式语言、反射式语言(reflective language)、基于规则的语言、脚本语言、基于堆栈的语言、同步式语言、语法处理语言(syntax handlinglanguage)、视觉语言、Wirth语言和基于XML的语言等计算机语言中实现。存储器2104还可以用于在执行待由处理器2102执行的指令期间,存储临时变量或其它中间信息。
如本文所讨论的计算机程序不一定对应于文件系统中的文件。可以将程序存储在保存有其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、专用于所讨论程序的单个文件中、或者多个协同文件(例如,存储有一个或多个模块、一个或多个子程序或代码的一个部分或多个部分的多个文件)中。可以将计算机程序部署为在一台计算机或多台计算机上执行,该多台计算机位于一个站点处或跨越多个站点而分布、且通过通信网络互连。本说明书中描述的过程和逻辑流可以由一个或多个可编程处理器执行,该一个或多个可编程处理器执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。
计算机系统2100还包括诸如磁盘或光盘等数据存储设备2106,该数据存储设备2106与总线2108耦合以用于存储信息和指令。计算机系统2100可以经由输入/输出模块2110耦合至各种设备。输入/输出模块2110可以是任何输入/输出模块。示例性输入/输出模块2110包括诸如USB端口等数据端口。该输入/输出模块2110被配置为连接至通信模块2112。示例性通信模块2112包括网络接口卡,例如,以太网卡和调制解调器。在某些方面,输入/输出模块2110被配置为连接至多个设备,例如,输入设备2114和/或输出设备2116。示例性输入设备2114包括键盘和指针设备(例如,鼠标或跟踪球),用户可通过键盘和指针设备向计算机系统2100提供输入。其他种类的输入设备2114也可用于提供与用户的交互,这些输入设备例如为触觉输入设备、视觉输入设备、音频输入设备、或脑机接口设备。例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以包括声音输入、语音输入、触觉输入或脑电波输入的任何形式来接收来自用户的输入。示例性输出设备2116包括用于向用户显示信息的显示设备,例如液晶显示(liquid crystaldisplay,LCD)监视器。
根据本公开的一方面,可以响应于处理器2102执行存储器2104中包含的一个或多个指令的一个或多个序列,使用计算机系统2100来至少部分地实现头戴式视图器和客户端设备110。可以将这些指令从另一机器可读介质(例如,数据存储设备2106)读入到存储器2104中。对包含在主存储器2104中的指令序列的执行,使得处理器2102执行本文所描述的过程步骤。还可以采用多处理配置中的一个或多个处理器来执行包含在存储器2104中指令序列。在替代方面,可以使用硬连线电路来代替软件指令、或可以将硬连接线路与软件指令组合使用,以实现本公开的各种方面。因此,本公开各方面不限于硬件电路和软件的任何特定组合。
本说明书中所描述的主题的各方面可以在计算系统中实现,该计算系统包括后端部件(例如,数据服务器)、或包括中间软件部件(例如,应用服务器)、或包括前端部件(例如,具有图形用户界面或网页浏览器的客户端计算机,用户可以通过该图形用户界面或网页浏览器与本说明书中描述的主题的实施方式进行交互);或者本说明书中所描述的主题的各方面可以在一个或多个这种后端部件、一个或多个这种中间软件部件或一个或多个这种前端部件的任意组合中实现。该系统的各部件可以通过数字数据通信的任何形式或媒介(例如通信网络)进行互连。通信网络可以例如包括LAN、WAN和因特网等中的任何一种或多种。此外,例如,通信网络可以包括但不限于以下网络拓扑中的任何一种或多种,这些网络拓扑包括总线网络、星形网络、环形网络、网状网络、星形总线网络、或者树形或层次网络等。通信模块例如可以是调制解调器或以太网卡。
计算系统2100可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是借助于运行在各自的计算机上且彼此之间具有客户端-服务器关系的计算机程序而产生的。例如,计算机系统2100可以是但不限于台式计算机、膝上型计算机或平板计算机。计算机系统2100还可嵌入在另一设备中,该另一设备例如但不限于,移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(Global Positioning System,GPS)接收机、视频游戏控制台、和/或电视机顶盒。
如本文所使用的术语“机器可读存储介质”或“计算机可读介质”是指,参与向处理器2102提供指令以用于执行的任何一个或多个介质。这种介质可以采取许多形式,这些形式包括但不限于非易失性介质、易失性介质和传输介质。例如,非易失性介质包括光盘或磁盘,例如数据存储设备2106。易失性介质包括动态存储器,例如,存储器2104。传输介质包括同轴电缆、铜线和光纤,上述同轴电缆、铜线和光纤包括形成总线2108的导线。例如,机器可读介质的常见形式包括软盘(floppy disk)、软盘(flexible disk)、硬盘、磁带、任何其他磁介质、CD-ROM、DVD、任何其他光学介质、穿孔卡、纸带、具有孔图案的任何其他物理介质、RAM、PROM、EPROM、FLASH EPROM、任何其他存储器芯片或卡带、或计算机可以读取的任何其他介质。机器可读存储介质可以是机器可读存储设备、机器可读存储基体(machine-readable storage substrate)、存储器设备、影响机器可读传播信号的物质的组合、或者它们中的一个或多个的组合。
为了说明硬件与软件的可互换性,诸如各种说明性块、模块、组件、方法、操作、指令和算法等项目已大体上在它们的功能性方面进行了描述。是否将此功能性实施为硬件、软件、或者硬件与软件的组合,取决于特定应用程序和强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用程序以不同方式来实现所描述的功能性。
如本文所使用的,在一系列项目之后的短语“中的至少一个”,与用于分隔这些项目中任何一个的术语“和”或“或”一起在整体上修饰列表,而不是修饰该列表的每个元素(例如,每个项目)。短语“中的至少一个”并不要求选择至少一个;而是,该短语的意思是包括这些项目中的任何一项中的至少一个,和/或这些项目的任何组合中的至少一个,和/或这些项目中的每项中的至少一个。作为示例,短语“A、B和C中的至少一个”或“A、B或C中的至少一个”均指的是:仅A、仅B或仅C;A、B和C的任意组合;和/或,A、B和C的每项中的至少一个。
在本文中,词语“示例性”用于表示“用作示例、实例或说明”。本文中被描述为“示例性”的任何实施例不一定被解释为比其它实施例优选或有利。诸如一方面、该方面、另一方面、一些方面、一个或多个方面、一个实施方式、该实施方式、另一个实施方式、一些实施方式、一个或多个实施方式、一个实施例、该实施例、另一个实施例、一些实施例、一个或多个实施例、一个配置、该配置、另一配置、一些配置、一个或多个配置、本主题技术、该公开、本公开、以及它们的其他变型等短语等均是为了方便,而并非暗指与一个或多个这类短语相关的公开对本主题技术是必不可少的,也并非暗指本公开适用于本主题技术的所有配置。与一个或多个这类短语相关的公开可以适用于所有配置、或一个或多个配置。与一个或多个这类短语相关的公开可以提供一个或多个示例。诸如一方面或一些方面等短语可以指一个或多个方面,并且反之亦然,并且这同样适用于前述其他短语。
除非特别说明,否则对单数形式的元素的提及并非旨在意味着“一个且仅有一个”,而是“一个或多个”。术语“一些”指的是一个或多个。带下划线和/或斜体的标题和副标题仅为了方便而使用,不限制本主题技术,也不指与本主题技术的描述的解释有关。诸如第一和第二等相关术语可用于将一个实体或动作与另一个实体或动作进行区分,而不必要求或暗示这些实体或动作之间的任何实际这种关系或顺序。本领域普通技术人员已知或以后将知晓的、贯穿本公开所描述的各种配置的元素的所有结构和功能等同物均通过引用明确地并入本文,并旨在被本主题技术所包含。此外,本文所公开的任何内容均不旨在奉献给公众,无论这种公开是否明确记载在以上描述中。不应根据“关于组合发明,权利要求中可有一部分说明实现特定功能的方法或步骤,而不用细述其结构、材料或作用。这种权利要求说明应被解释为已包括说明书及类似文件中所记述的相应的结构、材料及作用”的规定解释权利要求的要素,除非该要素使用短语“装置用于”来明确描述,或者在方法权利要求的情况下,该要素使用短语“用于……的步骤”来描述。
虽然本说明书包含许多细节,但是这些细节不应被解释为对可能被描述的内容的范围的限制,而是作为对该主题的特定实施方式的描述。在本说明书中在不同实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反地,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现或以任何合适的子组合实现。此外,尽管特征可能在以上被描述为在某些组合中起作用并且甚至最初被描述为如此,但是在一些情况下,来自所描述的组合的一个或多个特征可以从该组合中被去除,并且所描述的组合可以针对子组合或子组合的变型。
已经在特定方面描述了本说明书的主题,但其他方面可以被实现并且位于所附权利要求的范围内。例如,尽管在附图中以特定顺序描绘了操作,但是这不应当被理解为要求以所示的特定顺序或以连续顺序执行这些操作,或者要求执行所有示出的操作以实现期望的结果。权利要求中所描述的动作可以以不同的顺序执行,并且仍然实现了期望的结果。作为一个示例,附图中所描绘的过程不一定要求所示的特定顺序或连续顺序来实现期望的结果。例如,在某些情况下,多任务并行处理可能是有利的。此外,不应将上述多个方面中的各个系统部件的分开理解为要求在所有方面中都进行这样的分开,而应理解的是,所描述的程序组件和系统通常可以在一个软件产品中集成在一起或封装在多个软件产品中。
名称、背景技术、附图说明、摘要和附图在此被并入本公开中,并且作为本公开的说明性示例而非限制性描述来提供。提交时的理解是,它们将不用于限制权利要求的范围或含义。此外,在具体实施方式中可以看出,该描述提供了说明性示例,并且不同的特征在不同的实施方式中被组合在一起以为了简化本公开。本公开的方法不应被解释为反映了以下意图:所描述的主题需要比每项权利要求中明确记载的特征更多的特征。相反,如权利要求所反映的,发明主题在于比单个公开的配置或操作的所有特征少。权利要求书在此被并入具体实施方式中,每项权利要求独立地作为单独描述的主题。
权利要求不旨在被限制为本文所描述的方面,而是应被赋予与语言权利要求一致的全部范围并且涵盖所有合法的等同物。尽管如此,权利要求中没有一个权利要求旨在包含不能满足适用专利法的要求的主题,也不应该以这种方式解释它们。

Claims (20)

1.一种计算机实现的方法,包括:
在消息传递引擎中接收来自聊天组中参与者的消息;
利用备份工具对数据库中的具有消息信息的消息索引进行更新,所述消息信息包括参与者列表、消息内容、聊天组标识符、和元数据;
利用加密工具加密所述消息信息;
将所述消息信息存储在所述数据库中;以及
向所述聊天组中的至少一个参与者,提供用于访问来自所述数据库的所述消息信息的密钥。
2.根据权利要求1所述的计算机实现的方法,其中,加密所述消息信息包括,加密与所述消息相关联的元数据。
3.根据权利要求1所述的计算机实现的方法,其中,加密所述消息信息包括,加密至少一部分所述消息索引。
4.根据权利要求1所述的计算机实现的方法,还包括:向所述聊天组中所述参与者的移动设备,提供用于访问与所述聊天组相关联的线程中的消息的加密密钥。
5.根据权利要求1所述的计算机实现的方法,还包括:接收来自所述聊天组中所述参与者的移动设备的、对消息加密密钥进行访问的请求,所述消息加密密钥用于访问与所述聊天组相关联的消息线程中的消息。
6.根据权利要求1所述的计算机实现的方法,其中,提供用以检索所述消息或所述消息信息的访问包括,提供多个时间相关的加密密钥。
7.根据权利要求1所述的计算机实现的方法,其中,提供访问所述消息信息的密钥包括,链接两个连续的密钥。
8.根据权利要求1所述的计算机实现的方法,其中,所述消息信息包括线程信息,所述方法还包括:基于所述线程信息,访问会话线程中的一个或多个消息。
9.根据权利要求1所述的计算机实现的方法,还包括:当所述聊天组中参与者的移动设备被不当使用时,在废止所述移动设备之前阻止所述移动设备访问所述消息信息。
10.根据权利要求1所述的计算机实现的方法,其中,所述消息信息包括时间戳值,所述方法还包括:加密所述时间戳值,并保持聊天线程中的消息顺序。
11.一种系统,包括:
一个或多个处理器;和
存储器,所述存储器存储指令,所述指令在被所述一个或多个处理器执行时,使得所述系统执行操作,所述操作包括:
在消息引擎中接收来自聊天组中参与者的消息;
利用备份工具对数据库中的具有消息信息的消息索引进行更新,所述消息信息包括参与者列表、消息内容、聊天组标识符、和元数据;
利用加密工具加密所述消息信息;
将所述消息信息存储在所述数据库中;以及
向所述聊天组中的至少一个参与者,提供用于访问来自所述数据库的所述消息信息的密钥。
12.根据权利要求11所述的系统,其中,为了加密所述消息信息,所述一个或多个处理器执行,加密与所述消息相关联的元数据的指令。
13.根据权利要求11所述的系统,其中,为了加密所述消息信息,所述一个或多个处理器执行,加密至少一部分所述消息索引的指令。
14.根据权利要求11所述的系统,其中,所述一个或多个处理器还执行,向所述聊天组中所述参与者的移动设备、提供访问与所述聊天组相关联的线程中的消息的加密密钥的指令。
15.根据权利要求11所述的系统,其中,所述一个或多个处理器还执行,接收来自所述聊天组中所述参与者的移动设备的、对消息加密密钥进行访问的请求的指令,所述消息加密密钥用于访问与所述聊天组相关联的消息线程中的消息。
16.一种计算机实现的方法,包括:
在聊天组中的参与者所使用的第一移动设备中,接收来自托管所述聊天组的服务器的第一加密密钥;
向托管所述聊天组的所述服务器,请求对与所述聊天组中的线程相关联的消息信息进行访问;
在托管所述聊天组的所述服务器提示授权对所述消息信息的所述访问时,向所述服务器提供所述第一加密密钥;以及
将所述消息信息存储在所述第一移动设备的存储器中。
17.根据权利要求16所述的计算机实现的方法,其中,所述第一加密密钥与时间窗口相关联,并且请求对所述消息信息进行访问包括,请求在所述时间窗口内进行所述访问。
18.根据权利要求16所述的计算机实现的方法,还包括:当所述参与者所使用的所述第一移动设备被废止时,用第二加密密钥取代所述第一加密密钥。
19.根据权利要求16所述的计算机实现的方法,还包括:从所述聊天组中所述参与者所使用的第二移动设备,请求来自托管所述聊天组的所述服务器的第二加密密钥,所述第二移动设备取代所述第一移动设备。
20.根据权利要求16所述的计算机实现的方法,其中,将所述消息信息存储在所述第一移动设备的存储器中包括,使用由托管所述聊天组的所述服务器提供的第二加密密钥来加密所述消息信息。
CN202211401422.0A 2021-11-09 2022-11-09 带索引的加密消息备份 Pending CN116743689A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163277523P 2021-11-09 2021-11-09
US63/277,523 2021-11-09

Publications (1)

Publication Number Publication Date
CN116743689A true CN116743689A (zh) 2023-09-12

Family

ID=87903188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211401422.0A Pending CN116743689A (zh) 2021-11-09 2022-11-09 带索引的加密消息备份

Country Status (1)

Country Link
CN (1) CN116743689A (zh)

Similar Documents

Publication Publication Date Title
EP3782352B1 (en) Decentralized information protection for confidentiality and tamper-proofing on distributed database
Miao et al. Practical attribute-based multi-keyword search scheme in mobile crowdsourcing
US9467282B2 (en) Encryption scheme in a shared data store
US10063372B1 (en) Generating pre-encrypted keys
EP3050249B1 (en) Data security using request-supplied keys
GB2560434B (en) Securely transferring user information between applications
EP3510743B1 (en) Interchangeable retrieval of sensitive content via private content distribution networks
US8295490B1 (en) Method and system for storing and providing an encryption key for data storage
CN110048848B (zh) 通过被动客户端发送会话令牌的方法、系统和存储介质
WO2018129110A1 (en) Cryptographic operations in an isolated collection
US11811950B1 (en) Dynamic response signing capability in a distributed system
JP2022543947A (ja) ブラウザクッキーを保護する
WO2022015359A1 (en) Securing data using key agreement
US20170346636A1 (en) Communications security systems and methods
CN116743689A (zh) 带索引的加密消息备份
EP4178153A1 (en) Indexed encrypted message backups
Mishra et al. Improved cloud security approach with threshold cryptography
US20240039720A1 (en) Device verification using key transparency
US20230224159A1 (en) Method and system for providing public cloud tokenization service for highly confidential data
KR102398380B1 (ko) 키 교환 방법 및 시스템
US11528131B1 (en) Sharing access to data externally
CN115208630B (zh) 基于区块链的数据获取方法、系统及区块链系统
US20230188364A1 (en) Partial payload encryption with integrity protection
US20240121081A1 (en) Access control using mediated location, attribute, policy, and purpose verification
EP4336797A1 (en) Device verification using key transparency

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination