用于限制对供给芯片的读取访问的方法与流程

文档序号:23100404发布日期:2020-11-27 13:07阅读:203来源:国知局
用于限制对供给芯片的读取访问的方法与流程

相关申请的交叉引用

根据35u.s.c.§119,本申请涉及与2018年4月16日提交的标题为“supplychipsandmethodsforrestrictingreadaccessthereof,”的序列号为62/658,552的临时申请的较早提交日期并要求其权益,其内容通过引用以其整体并入本文。另外,本专利申请涉及序列号为xx/xxx,xxx、标题为“supplychipsandmethodsforrestrictingreadaccessthereof”的美国专利申请,其与本申请同时提交并转让给本申请的受让人。

关于联邦资助的研究或开发的声明

没有。

参考序列表等。

没有。

背景

1.技术领域

本发明涉及保护非易失性存储器中的数据,且更具体地涉及限制对供给物品芯片(supplyitemchip)中的数据的访问的方法。

2.相关技术的描述

用于成像设备的大多数可更换组件(诸如,墨粉盒、成像单元等)包括智能芯片,其用于当可更换组件安装在成像设备中时确保成像设备(主机)和可更换组件之间的通信。成像设备和组件之间的通信可以被加密。认证密钥可以存储在成像设备的存储器和与智能芯片相关联的存储器中,因此成像设备和组件能够以安全的方式通信。由于制造公司通常是开放的,因此是不可信的环境(即,芯片中的数据可能被改变和/或复制),安全服务器通常用于存储密钥和写入智能芯片中的其他敏感信息。在存储安全服务器的地方(例如,笼状物)和对可更换组件的每个芯片进行编程的站点之间,通常需要安全的有线连接。在对芯片进行编程之后,可更换组件可以被锁定并进入“任务模式”,使得对组件存储器内容的任何读取都需要认证和会话密钥协商。

在将可更换组件运送给最终用户之前,需要重新读取智能芯片的内容,以验证芯片是否已经被正确编程,并且自编程以来没有发生损坏。芯片验证站通常与制造中的编程站分开。因此,在芯片验证站和安全服务器之间具有另一个有线连接以便于允许读取芯片内容所需的认证通常是不切实际的。

验证芯片内容的一种解决方案是禁用访问芯片所需的认证,并允许验证设备访问内容。另一个解决方案是在芯片验证站存储认证密钥。然而,这两种解决方案都存在安全问题。特别地,由于制造环境通常是不可信的环境,因此芯片内容可能被泄露或者芯片可能容易受到对手的密钥提取攻击。再一种解决方案是将专用成像设备用作验证设备,因为成像设备包含能够与智能芯片通信所需的认证密钥。但是,这个解决方案需要提供不同系列或型号的多台打印机,并管理它们各自的备件和固件更新。提供打印机用作制造车间的测试设备不仅在后勤上复杂,而且增加了成本和任务。因此,需要采用其他系统和方法来在不暴露智能芯片的内容的情况下检查每个可更换组件的内容。

概述

公开了用于供给物品的示例组件电路,其包括用于限制对组件电路中的内容的读取访问的示例方法和用于保护供给物品中的数据的示例方法。

附图简述

通过参考结合附图对示例实施例进行的以下描述,本公开的上述和其他特征和优点以及实现它们的方式将变得更加明显,并且将被更好地理解。在整个说明书中,相同的参考数字用于指示相同的元件。

图1是根据一个示例实施例的生产用于电子设备的芯片的示例系统的框图。

图2是示例测试设备和配备有来自图1的示例芯片的示例供给物品之间的说明性电接口的示意图。

图3是根据一个示例实施例的用于向供给物品的芯片发送至少一个读取命令的示例方法的流程图。

图4是根据一个示例实施例的用于更新对供给物品的访问的示例方法的流程图。

附图的详细描述

应理解,本公开不限于在下面描述中阐述的或者在附图中示出的组件的结构和布置的细节。本公开能够是其他示例实施例,并且能够以各种方式来实践或执行。例如,其他示例实施例可以结合结构的、时间顺序上的、过程的和其他的变化。示例仅仅是代表可能的变化。除非明确要求,否则单个组件和功能是可选的,并且操作顺序可能会有所不同。某些示例实施例的部分及特征可以被包括于其它实施例中或是代替其他实施例的部分及特征。本公开的范围包括所附权利要求和所有可用的等同物。因此,以下描述不被认为是限制性的意义,并且本公开的范围由所附权利要求限定。

并且,应理解本文所使用的措辞和术语是出于描述的目的而不应被看作是限制。本文使用“包括(including)”、“包括(comprising)”或“具有”及其变型意在包括其后列举的项目及其等价物以及额外的项目。此外,术语“一个(a)”和“一个(an)”在本文中的使用不表示对量的限制,而是表示存在至少一个所引用的项目。

另外,应当理解,本公开的示例实施例包括硬件和电子组件或模块,为了讨论的目的,这些组件或模块可以被示出和描述为好像大多数组件仅在硬件中实现。

将进一步理解的是,可通过计算机程序指令分别实施图中每个块以及图中的块的组合。这些计算机程序指令可以被加载到通用计算机、专用计算机或其他可编程数据处理装置上以生产机器,使得在计算机或其他数据处理装置上执行的指令可以创建用于实现在下面的描述中详细讨论的图中的每个块或块的组合的功能的装置。

这些计算机程序指令还可被存储在非暂态计算机可读介质中,非暂态计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式起作用,使得在计算机可读介质中储存的指令可以产生制品,该制品包括实现在一个或更多个块中所指定的功能的指令工具。计算机程序指令还可被载入到计算机或其他可编程数据处理装置,以使将在计算机或其他可编程装置上执行的一系列操作步骤产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令实现在一个或更多个块中指定的功能。

因此,图的块支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合、以及用于执行指定功能的程序指令装置。还将理解,图中每个块和图中块的组合可由执行指定功能或步骤的专用的基于硬件的计算机系统或专用的硬件和计算机指令的组合实现。

图1是根据一个示例实施例的生产用于电子设备的芯片的示例系统的框图。出于说明的目的,示例系统100包括产品所有者105和制造商110。制造商110被示为包括一个或更多个编程站115、一个或更多个测试站120以及产品交付或装运系统125。如本领域所知,编程站115和测试站120可以指同一站。然而,为了讨论本公开的目的,编程站115和测试站120可以是分开的站,并且在图1中编号不同。

如本领域所知,所有者105可以提供将要由制造商110嵌入空白电路或芯片140中的数据。在一个示例实施例中,芯片140可以被配置成操作打印机供给物品(诸如墨粉盒)或者与其一起工作。提供给芯片140的数据可以包括证书,其包含用于配置、授权使用、兼容性、墨粉属性等的参数。为了方便起见,制造过程可以简化为3个阶段:供应、测试和交付市场。虽然未示出,但是站115、120和125可以由人操作。对于供应阶段,每个编程站115可以包括已知的硬件和软件,以向芯片140供应数据。对于测试阶段,每个测试站120可以包括验证芯片140内数据的完整性和准确性所必需的已知硬件和软件。对于交付阶段,装运系统125可以包括用于将产品交付给市场最终用户或经销商的任何已知的装运方法。

根据本公开的一个示例实施例,由于制造工厂通常被认为是不可信的环境,因此所有者105可以对数据加密以包含在芯片140上。所有者105可以向一个或更多个编程站115提供加密数据150。一个或更多个编程站115可以将从所有者105接收的加密数据150编程到芯片140。在向芯片140提供加密数据150之后,芯片140可以被传递到一个或更多个测试站120进行测试。每个测试站120可以确定芯片140是否包括加密数据150,如将参考图2更详细讨论的。另外,所有者105可以向测试站120中的至少一个提供密钥160。密钥160可用于解密加密数据150,并确定芯片140上的内容是否仍然正确。在测试阶段之后,芯片140可以准备好由装运系统125交付。

在其他示例实施例中,因为设备处于制造模式,所以所有者105可以向一个或更多个编程站115提供未加密数据而不是加密数据。在另外其他示例实施例中,一个或更多个编程站115可以将来自所有者105的未加密数据编程到芯片140。在这样的示例实施例中,当芯片140或设备接收到读取命令时,可以用密钥160加密未加密数据。当芯片140或设备到达测试站120时,设备或芯片140不再处于制造模式,而是处于任务模式。为了从芯片140读取数据而不在任务模式下进行认证,密钥160用于解密数据。

图2是示例测试设备205和配备有来自图1的芯片140的示例供给物品210之间的说明性电接口系统200的示意图。测试设备205被示为包括接口机构220、控制器或处理器225和存储器230。存储器230可以包括读取模块250和解密模块260,解密模块260包括密钥160(参见图1)。供给物品210可以包括芯片140。芯片140被示为包括接口机构270、处理器275和非易失性存储器280,非易失性存储器280包括:加密数据150、计数器模块285和极限(limit)290。在一些其他示例实施例中,芯片140可以在存储器280中包括未加密数据。

测试设备205可以指用于图1所示的一个或更多个测试站120的任何电子处理设备。测试设备205可以包括用于验证芯片140的完整性的指令。出于讨论的目的,一个测试设备205被示为通信地连接到一个示例供给物品210。然而,应当理解,一个测试设备205可以经由多路复用器或其他类似物品连接到多个芯片(140)。测试设备205可以包括允许测试设备205与芯片140通信并验证芯片140的内容可能所需的其他组件,诸如电气供应商。

供给物品210可以指芯片140可以与之相关联或被配置为操作的设备硬件。虽然图2示出了芯片140被配置为供给物品210的一部分,但是应当理解,芯片140可以与供给物品210分开操作。因此,在测试阶段之后,芯片140可以被配置为供给物品210的一部分。在本公开中,供给物品210可以指用于安装到成像设备(未示出)的可更换组件。例如,供给物品210可以是墨粉盒、成像单元、可更换套件等。

接口机构220可以是允许测试设备205与芯片140通信的任何已知的通信接口。在一个示例实施例中,接口机构220可以是主从通信接口。在本公开中,接口机构220遵循内部集成电路(“i2c”)协议。在一些其他示例实施例中,接口机构220可以是任何已知的总线通信协议,诸如系统管理总线(smb)、uni/o总线或在具有主/从配置的总线结构中使用的其他协议。在图2的环境中,处理器225和芯片140可以分别被配置为主设备和从设备。处理器225可以使用接口机构220向沿着通信总线或接口222连接的其他设备发送命令和响应。接口机构220可以允许多个芯片140与处理器225连接。

处理器225通常可以被配置成控制沿着接口机构220发送的通信。处理器225还可以控制对存储器230的访问。处理器225可以包括与测试设备205的设置配置相关联的指令。在一些示例实施例中,处理器225可以包括相关联的存储器230。处理器225可以处理经由接口机构220接收的通信。

存储器230可以指用于存储测试设备205的指令的任何类型的储存部分。存储器230可以是易失性存储器、非易失性存储器或两者的组合。存储器230可以包括用于测试设备205的一组配置参数。存储在存储器230中的数据可以包括供给物品210的地址,该地址可以沿着通信总线222传输并由处理器225用来与芯片140通信。用户接口207可以集成到测试设备205中或者以其他方式连接到测试设备205。用户接口207可以用于存储、访问和/或修改数据库230中的数据。

在本公开中,存储在存储器230中的数据可以包括具有读取模块250和具有密钥160的解密模块260。读取模块250可以包括一组预定的读取命令,其包括用于读取芯片140的存储器280的指令。存储在存储器230中的读取命令可以包括第一命令252和第二命令254。处理器225可以经由通信总线222分别将第一命令252和第二命令254发送到供给物品210。在一个示例实施例中,第一命令252可以在第二命令254之前被发送到供给物品210。在另一示例实施例中,第二命令254可以在第一命令252之前被发送到供给物品210。在又一示例实施例中,处理器225可以首先向供给物品210发送一个读取命令,然后可以在发送另一读取命令之前等待来自供给物品210的响应。

第一命令252可以是用于读取存储器280的只读部分的一组指令。在一个示例方面,存储器280的只读部分可以是存储器280的通用非易失性区域。第二命令254可以是用于读取存储器280的读写部分的一组指令。在一个示例方面,存储器280的读写部分可以是与只读部分分开的存储器280的另一个非易失性区域。在本公开中,第一命令252和第二命令254中的每一个都没有被加密。然而,其在每个芯片140中的使用可以被限制到预定次数。

解密模块260和密钥160可以存储在测试设备205的存储器230中。在本公开中,解密模块260和密钥160可以用于解密存储在芯片140的存储器280中的使用命令252或254读取的加密数据150。解密模块260可以是本领域已知的任何已知的解密功能。在其他示例实施例中,解密模块260和密钥160可以是存储在测试设备205的存储器230中的单个解密功能的一部分。在又一示例实施例中,沿着生产车间(未示出),可以有多个测试设备205连接到一个服务器。在该示例实施例中,解密模块260和密钥160可以存储在服务器中,以供每个测试设备205访问,而不是存储在每个测试设备205中。

在一些示例实施例中,芯片140的存储器280可以存储与供给物品210相关联的加密数据150。为了防止制造商110中的其他设备的偶然窃听攻击,数据150可以被加密。在其他示例实施例中,芯片140的存储器280可以存储与供给物品210相关联的未加密数据,并且在读取期间可以用密钥160加密数据。计数器模块285可用于存储测试设备205向供给物品210发送第一命令252和/或第二命令254以访问存储器280中的内容的次数。计数器模块285可以包括发送第一命令252的次数的第一计数器和发送第二命令254的次数的第二计数器。在一个示例实施例中,计数器模块285可以在接收到来自测试设备205的命令之后,在存储器280中存储加密数据150被访问的次数。存储器280还可以用于存储极限290,以便与存储在计数器模块285中的值(即,访问次数)进行比较。极限290可以是存储在芯片140的存储器280中的数据可以被第一命令252和/或第二命令254访问的预定次数。在一个示例实施例中,极限290可以由所有者105设置。极限290可以与用于编程到芯片140的加密数据150一起由所有者105提供给图1中的制造商110。

现在将使用以下示例流程图来讨论在芯片140作为测试状态的一部分被运输和生产之前(参见图1),测试设备205如何验证芯片140的完整性的细节。

图3是根据一个示例实施例的用于向供给物品210的芯片140发送命令252、254中的至少一个的示例方法300的流程图。块305-350中的动作可以由图2的测试设备205来执行。块305-350中执行的动作的接收者可以指图2中所示的组件。示例方法300还可以基于对测试设备205发送的命令的响应来确定芯片140是否被正确编程。

在块305处,测试设备205可以确定供给物品210是否准备接收数据。在一个示例实施例中,测试设备205可以沿着通信接口222确定供给物品210的状态。在一个示例方面中,测试设备205可以确定供给物品210沿着通信接口222的地址,以便确定其状态。在另一个示例方面中,测试设备205可以向供给物品210发送关于其状态的查询。在其他示例实施例中,块305可以是可选的。

在块310处,在确定供给物品210的状态指示供给物品210接受来自测试设备205的数据的可能性之后,测试设备205可以向供给物品210发送第一命令252和第二命令254中的至少一个。在供给物品210中可以接收命令252和254之一。在一个示例实施例中,在执行块310之前,测试设备205可以确定首先向供给物品210(且特别是向芯片140)发送第一命令252和第二命令254中的哪一个。

在一个示例实施例中,命令252和254可以被单独发送到供给物品210。第一命令252可以在第二命令254之前被发送到供给物品210,反之亦然。在另一个示例实施例中,命令252和254可以作为单个命令包发送给供给物品210。

在块315处,测试设备205可以基于在块310中发送的命令252、254之一从供给物品210接收响应。供给物品210对测试设备205发送的每个命令的响应将在下面的图4中详细描述。该响应可以包括存储加密数据150的存储器280中的地址或区域。在一个示例实施例中,测试设备205可以被供给物品210允许访问存储器280。在另一示例实施例中,在块310处发送的每个命令可以被供给物品210忽略,并且测试设备205可以被阻止访问供给物品210的存储器280。在另外其他示例实施例中,当达到命令极限时,供给物品210可以用错误来响应。

在块320处,测试设备205可以确定供给物品210对在块310发送的命令的响应是否指示供给物品210将允许测试设备205访问芯片140的存储器280的内容。在一个示例实施例中,供给物品210对命令的响应可以包括加密数据150。在其他示例实施例中,供给物品210可以不响应由测试设备205在块310处发送的命令,使得测试设备205可能不会接收到任何响应。在其他示例实施例中,供给物品210的响应可以指示不允许测试设备205访问芯片140的存储器280。

在块325处,在块320中没有接收到响应或者供给物品210不允许测试设备205访问存储器280的情况下,测试设备205可以跳过测试供给物品205。

在块330处,测试设备205可以解密存储在存储器280中的加密数据150。在一个示例实施例中,测试设备205可以使用存储在存储器230中的解密模块260和密钥160来解密加密数据150。在一个示例方面中,当解密加密数据150时,测试设备205可以将数据临时存储在测试设备205的存储器230中,使得在解密之后没有数据被显示或记录在存储器230中。在其他示例实施例中,解密模块260和密钥160可以由服务器(未示出)提供给测试设备205。用于解密加密数据的其他方法在本领域中可以是已知的。

在块335处,测试设备205可以确定预期响应。预期响应可以包括验证测试设备205具有正确的身份和序列号。在一个示例实施例中,预期响应可以存储在测试设备205的存储器230中。

在块340处,测试设备205然后可以确定解密的响应(块330)是否匹配预期响应(块335)。在块345处,当两个响应匹配时,测试设备205可以确定芯片140被正确编程用于供给物品210。当芯片140被确定为被正确编程时,测试设备205可以将供给物品210识别为准备装运给最终用户。否则,在块350处,当测试设备205确定预期响应和接收到的响应中的数据不匹配时,测试设备205可以将供给物品210识别为被不正确地编程。为此,测试设备205可以将供给物品210中的芯片140标记为缺陷。

图4是根据一个示例实施例的用于更新对供给物品210的访问的示例方法400的流程图。块405-430中的动作可以由供给物品210中的芯片140来执行。示例方法400可以结合图3的示例方法300来执行。

在块405处,芯片140可以从测试设备205接收命令(图3中的块310)。该命令可以是第一命令252和第二命令254之一。如上所讨论,命令252或254可以包括供给物品210或芯片140的标识符。在一个示例实施例中,命令252或254可以包括可存储加密数据150的存储器偏移区域。

在块410处,芯片140可以确定在供给物品210中接收命令的次数。芯片140可以参考计数器模块285来确定次数。计数器模块285可以在每次从测试设备205接收读取命令(第一命令252和第二命令254)时递增次数。虽然未示出,但是命令252和254可以各自具有其自己的对各自在芯片140中被接收的次数的计数。如上所讨论,计数器模块285可用于存储芯片140接收第一命令252的次数的第一计数和接收第二命令254的次数的第二计数。

在块415处,芯片140可以确定在块410处确定的次数(对于第一命令252或读取命令254)是否达到预定极限290。极限290可以是预定的数值,其指示在禁止访问测试设备205之前,测试设备205可以访问供给物品210中的芯片140的次数。在一些示例实施例中,极限290可以被设置为3次。

在一个示例实施例中,极限290可用于启用和禁用测试设备205对供给物品210的存储器280中的加密数据150的访问。可以在供给物品210中定义读取访问状态变量,以跟踪是否允许任何测试设备205访问存储器280中的内容。例如,当加密数据150被访问的次数没有达到极限290时,读取访问状态可以被设置为“启用”。否则,当加密数据150被访问的次数已经达到或超过极限290时,读取访问状态可以被设置为“禁用”。

在块420处,当芯片140确定接收到命令的次数的计数已经达到预定极限290时,芯片140可以禁止测试设备205访问存储器280。在一个示例实施例中,芯片140可以通知处理器280阻止测试设备205读取芯片140。在其他示例实施例中,芯片140可以被编程为当已经达到极限290时,接收但忽略来自测试设备205的读取命令。

在块425处,当芯片140确定接收到命令的次数的计数低于预定极限290时,芯片140可以允许测试设备205访问存储器280并读取加密数据150。

在块430处,在对从测试设备205接收的命令做出响应之后,芯片140可以向测试设备205通知正在做出的响应。在一个示例实施例中,芯片140可以包括用于在确定已经达到极限290之后通知测试设备205对芯片140的访问已经被阻止的指令(块420)。在另一个示例实施例中,芯片140可以包括用于通知测试设备205在确定次数没有达到极限290中指示的值之后,允许测试设备205访问芯片140中的存储器280的指令(块425)。在一些示例实施例中,加密数据150可以被包括或返回到响应中。在块315(图3)处,来自芯片140的该通知可以由测试设备205以命令响应的形式接收。在其他示例实施例中,块430可以是可选的。

将认识到,示例流程图中描述和示出的动作可以以任何合适的顺序来执行或实施。还将认识到,并非图3和图4中描述的所有动作都需要根据示例实施例来执行,和/或可以根据其他示例实施例来执行附加动作。

受益于前述描述和相关联附图中呈现的教导的本公开所属领域技术人员将会想到对本文阐述的公开的许多修改和其他实施例。因此,应当理解,本公开不限于所公开的特定示例实施例,以及修改和其他实施例旨在被包括在所附权利要求的范围内。虽然在本文中采用了特定的术语,但它们仅在通用的和描述性的意义上使用,而不是为了限制的目的。

附加实施例

在以下章节中,描述了本发明的附加实施例。在附加实施例中,公开了用于供给物品的示例组件电路,其包括用于限制对组件电路中的内容的读取访问的示例方法。在该方法中,接收用于读取存储在供给物品的存储器的非易失性部分中的数据的命令,并且根据该命令被接收的次数是否超过预定极限,处理该命令。组件电路具有非易失性存储器和处理器,因此如果处理器接收命令的次数没有达到预定极限,则可以从非易失性存储器读取加密数据。

在第一附加实施例中,公开了一种用于限制对供给物品芯片内容的访问的方法,该方法包括:从电连接到供给物品的处理设备接收用于读取存储在供给物品的存储器的非易失性部分中的数据的命令;确定供给物品接收命令的次数;识别次数是否超过预定极限;并且在否定确定时,处理该命令,其中,在确定次数超过预定极限时,供给物品阻止数据被读取。

公开了采用第一实施例的方法的第二实施例,其中存储在供给物品的存储器的非易失性部分中的数据是加密数据。

公开了采用第一实施例的方法的第三实施例,还包括在确定次数超过预定极限时,在处理命令之前向处理设备请求认证。

公开了采用第一实施例的方法的第四实施例,其中在供给物品不在处理设备上执行认证的情况下执行从处理设备接收命令。

公开了采用第一实施例的方法的第五实施例,其中确定次数包括在接收到命令之后递增次数的值,并且在识别次数是否超过预定极限时使用递增的值。

公开了采用第一实施例的方法的第六实施例,其中预定极限存储在供给物品的非暂态计算机可读储存部分中。

公开了采用第一实施例的方法的第七实施例,其中处理设备是供给物品的制造商的测试设备。

在第八实施例中,公开了一种用于成像设备的组件电路,包括:非易失性存储器,其用于存储与配置组件电路的供给物品相关联的加密数据;以及处理器,其连接到存储器,其中,当处理器从连接到组件电路的电子设备接收用于读取加密数据的命令时,处理器确定处理器接收命令的次数是否已经达到预定极限,其中,在确定次数低于预定极限时处理器执行命令,并且允许电子设备读取加密数据,并且其中在确定次数已经达到预定极限时,处理器阻止电子设备执行命令和读取加密数据。

公开了采用第八实施例的组件电路的第九实施例,还包括允许处理器向电子设备发送通信的接口机构。

公开了采用第八实施例的组件电路的第十实施例,其中,当确定次数低于预定极限时,处理器允许电子设备在没有认证的情况下读取存储器中的加密数据。

公开了采用第八实施例的组件电路的第十一实施例,其中,当处理器确定次数已经达到预定极限时,处理器要求电子设备发送认证并与处理器进行会话密钥协商。

公开了采用第八实施例的组件电路的第十二实施例,其中,存储器还存储用于跟踪处理器从电子设备接收命令的次数的计数器值和用于与计数器值进行比较的预定极限。

公开了采用第八实施例的组件电路的第十三实施例,其中,电子设备包括解密模块和用于解密非易失性存储器中的加密数据的密钥。

公开了采用第八实施例的组件电路的第十四实施例,其中,连接到组件电路的电子设备是在制造中用于存储一个或更多个读取命令的测试设备,该一个或更多个读取命令用于验证存储在组件电路中的数据的完整性。

公开了采用第十四实施例的组件电路的第十五实施例,其中,电子设备用于基于处理器对一个或更多个读取命令的响应来确定加密数据是否被正确编程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1