详细描述
以下详细描述各实施例。尽管讨论各个具体实现,但应当理解,这仅是出于说明的目的。相关领域技术人员将认识到,可以使用其它组件和配置而不背离本发明的主题的精神和范围。
概览
闪存设备能够被容易地复制并且不具有嵌入式处理器或受保护的存储器。然而,闪存设备包括诸如例如,16千位、2千位或另一大小等特定大小的存储块,即扇区。各扇区中的每一个相应扇区在扇区中的该相应扇区变得不可用之前都具有有限数量的可能的写周期。通常,各扇区中的每一个相应扇区在各扇区中的该相应扇区变得不可用之前可被写入大约一百万次。某些闪存设备在相应扇区变得不可用之前可具有不同的有限数量的可能的写周期,诸如100000次写入或另一值。
根据本发明的主题的实施例可通过向闪存设备的特定扇区写入以使得该特定扇区不可用来在闪存设备中编码信息。该信息可通过经由不可用扇区来表示一位并经由可用扇区来表示零位来编码。在某些实施例中,该信息可通过经由不可用扇区来表示零位并经由可用扇区来表示一位来编码。以此方式编码的数据无法通过简单地复制闪存设备来复制。
在根据本发明的主题的实施例中,连接到闪存设备的处理设备可访问可包括标识符的许可证信息。该处理设备可访问闪存设备的特定扇区以确定其中是否编码标识符。如果闪存设备中未编码标识符,则处理设备无法执行软件应用程序,或者只可功能受限地执行软件应用程序。
此外,许可证信息可包括关于一个或多个许可证有效期的信息。例如,该信息可包括期满日期、许可证有效期(例如,一年、六个月或其他时间)或者授权使用的预定次数,在超过这些许可证有效期的情况下,可不准许执行软件应用程序或者只可功能受限地执行软件应用程序。如将在以下更详细地解释的,可以按与标识符相同的方式将关于已过去时间段或者对软件应用程序的使用次数的当前状态编码到闪存设备中,以使得可阻止超过一个或多个许可证有效期的对软件应用程序的未授权执行。
在某些实施例中,标识符可以在执行对软件应用程序的激活的同时被编码到闪存设备中。
示例性操作环境
图1示出了用于根据本发明的主题的各实施例的示例性操作环境100。操作环境100可包括处理设备102、闪存设备104、一个或多个服务器106和网络108。
网络108可以是单个网络或网络的组合,诸如例如,因特网或其他网络。网络108可包括无线网络、有线网络、分组交换网络、公共交换电信网络、光纤网络、其他类型的网络或以上网络的任何组合。
处理设备102可以是用户的处理设备,诸如例如,台式个人计算机(PC)、膝上型PC、手持式处理设备或其他处理设备。
闪存设备104可以是诸如例如,通用串行总线(USB)闪速RAM设备或其他闪存设备等可移动地连接到处理设备102的可重写可移动闪存设备。在其中闪存设备104是USB闪速RAM设备的实施例中,USB闪速RAM设备可经由处理设备102的USB端口来可移动地连接到处理设备102。
服务器106可以是一处理设备或被配置成一起工作的一组处理设备。在其中服务器106包括一组处理设备的实施例中,这些处理设备可被配置成服务器场。
示例性处理设备
图2是示出可用于实现根据本发明的主题的处理设备102和/或服务器106的各实施例的示例性处理设备200的功能框图。
处理设备200可包括总线210、输入设备220、存储器230、只读存储器(ROM)240、输出设备250、处理器260、闪存设备端口270和通信接口280。总线210可以准许处理设备200的各组件之间的通信。
处理器260可以包括解释和执行指令的至少一个常规处理器或微处理器。存储器230可以是随机存取存储器(RAM)或存储供处理器260执行的信息和指令的另一种类型的动态存储设备。存储器230还可以存储在处理器260执行指令期间使用的临时变量或其它中间信息。ROM 240可以包括常规ROM设备或为处理器260存储静态信息和指令的另一种类型的静态存储设备。闪存设备端口270可提供用于将闪存设备104连接到处理设备200的手段。闪存设备104可存储用于诸如例如处理器260的处理器的数据和/或指令。
输入设备220可包括键盘或其他输入设备。输出设备250可包括输出信息的一个或多个常规机制,包括一个或多个显示屏或其它输出设备。
通信接口280可包括用于向网络108发送信息和从网络108接收信息的收发器。通信接口280可经由无线或有线连接来发送和接收信息。
处理设备200可响应于处理器260执行诸如例如存储器230、ROM 240、闪存设备104或其它介质等有形机器可读介质中所包含的指令序列来执行这些功能。这些指令可从另一机器可读介质或经由通信接口280从单独的设备读入存储器230中。
闪存设备
闪存设备104可包括多个块或扇区。每一个扇区都可包括预定数量的位。例如,每一个扇区都可包括16千位、2千位或另一数量的位。通常,闪存设备104最初可具有多个不可用扇区。图3示出了可被包括在闪存设备104的实施例中的关于扇区的信息以及其他信息。闪存设备104可包括坏扇区的扇区阵列302、许可证信息304以及编码信息的扇区阵列306。
坏扇区的扇区阵列302可包括关于闪存设备104中所包括的坏扇区的物理地址的信息。
许可证信息304可包括关于使用软件应用程序的许可证的信息。许可证信息304可包括例如,标识包括软件应用程序的产品的产品标识符和许可证有效期。许可证有效期可包括准许执行软件应用程序的条件。例如,许可证有效期可包括准许执行软件应用程序的预定次数、准许执行软件应用程序的有效期或时间段(例如,一年、六个月或另一时间段)、其后不准执行软件应用程序的期满日期或其他有效期。在某些实施例中,许可证信息304可包括要在闪存设备104中编码的标识符。许可证信息304还可包括使用诸如例如软件厂商、软件分发者或其他可信源等可信源的私钥来在许可证信息304上计算的数字签名。
如上所述,可在闪存设备104的特定扇区中编码诸如包括在许可证信息304中的标识符或另一标识符等标识符以及其他信息。该标识符和其他信息可通过经由特定扇区中的不可用扇区来表示一位并经由特定扇区中的可用扇区来表示零位来编码。在某些实施例中,该标识符和其他信息可通过经由特定扇区中的不可用扇区来表示零位并经由特定扇区中的可用扇区来表示一位来编码。
图4在根据本发明的主题的闪存设备104的一个实施例中更详细地示出了编码信息306的扇区阵列。闪存设备104可包括标识符的扇区阵列402、关于标识符的数字签名的扇区阵列404、用于计数器的扇区阵列406以及用于时间段计数器的扇区阵列408。
标识符的扇区阵列402可包括关于其中可编码诸如例如,来自许可证信息304的标识符或另一标识符等标识符的特定扇区的信息。标识符的数字签名的扇区阵列404可包括关于其中可编码在标识符上计算的数字签名的特定扇区的信息。数字签名可使用诸如例如,可信源的私钥等私钥来在标识符上计算。用于计数器的扇区阵列406和用于时间段计数器的扇区阵列408可包括关于用于编码计数器以使得可跟踪关于许可证有效期的当前状态的特定扇区的信息。对这些计数器的示例性使用以下参考图5-10的流程图来解释。
示例性处理
图5和6示出了在试图在诸如处理设备102等连接有诸如例如闪存设备104等闪存设备的处理设备上执行软件应用程序时的、可在根据本发明的主题的实施例中执行的各示例性过程的流程图。
该过程可开始于处理设备访问许可证信息(动作502)。许可证信息可存储在诸如例如,存储器、ROM或其他组件等处理设备的组件上。或者,许可证信息可存储在闪存设备中,诸如例如,许可证信息304。许可证信息可包括标识包括软件应用程序的产品的数据、标识符(例如,与使用该产品的许可证相关联的标识符)、许可证有效期(例如,使用软件应用程序的预定次数、可使用软件应用程序的时间段(诸如例如,一年、六个月或其他时间段)或者其后无法使用软件应用程序的期满日期)或其他有效期。在某些实施例中,许可证信息可包括由诸如例如,可信源的私钥等私钥签署的数字签名,可信源是诸如例如,软件分发者、软件开发者或其他可信源。
接着,处理设备可验证许可证信息(动作504)。在某些实施例中,处理设备可通过使用对应于可信源的私钥的公钥来验证许可证信息。如验证许可证信息的结果所指示的,处理设备然后可确定许可证信息是否有效(动作506)。如果许可证信息被确定为无效,则处理设备可限制或禁用软件应用程序的功能(动作508)。例如,可不准许处理设备执行软件应用程序,或者处理设备可功能受限地执行软件应用程序。在一个实施例中,当限制软件应用程序的功能时,处理设备可执行该软件应用程序的标准版,而当不限制或禁用软件应用程序的功能时,处理设备可执行该软件应用程序的增强版或专业版。
在动作506期间,如果处理设备确定许可证信息有效,则处理设备可从该许可证信息或另一源获取标识符(动作510)。在某些实施例中,标识符可以是唯一的标识符。处理设备然后可确定标识符和关于该标识符的数字签名是否在闪存设备中编码(动作512)。处理设备可通过参考诸如例如,标识符的示例扇区阵列402(图4)等标识符的扇区阵列以及诸如例如,标识符的数字签名的扇区阵列404(图4)等标识符的数字签名的扇区阵列来作出该判定。
在一替换实施例中,可不编码标识符的数字签名,而可改为将该数字签名存储在闪存设备的存储中。
如果处理设备确定标识符未在闪存设备中编码、或者标识符的有效数字签名未在闪存设备中编码或存储在其中,则处理设备可限制或禁用软件应用程序的功能(动作508),如上所述。否则,处理设备可确定是否对软件应用程序的使用次数进行计数(动作514)。
当许可证有效期指示只可准许预定次数的对软件应用程序的使用时,可对软件应用程序的使用次数进行计数。在一个实施例中,如果要对使用次数进行计数,则可将单个扇区用作计数器并且可执行对该单个扇区的多次写入。写入次数大致可如下计算:
(等式1)
其中max_writes是预期使扇区不可用的写周期数,而counting_number是计数器的最大值,诸如例如,当数到10时的10。
因为扇区可能不在确切的写入次数后变得不可用,所以可包括margin(余量)以更好地保证扇区变得不可用。由此,例如,如果一扇区预期在100000次写入(max_writes)后变得不可用,使用计数器来数到10(counting_number),而margin是30%,则number_of_writes(写入次数)可以是即13000。由此,在该示例中,计数器可通过向该单个扇区写入13000次来递增。在数到counting_number后,扇区应不可用。
在另一实施例中,可使用一组扇区来计数。例如,在数到10时,可将一组10个扇区用作计数器。每一个相应扇区都可在计数时变得不可用。当该组10个扇区变得不可用时,这表明计数器已数到10。
在动作514期间,如果处理设备确定要对软件应用程序的使用次数进行计数,则处理设备可确定是否存在任何剩余准许使用(动作602;图6)。如果不存在剩余的对软件应用程序的准许使用,则处理设备可限制或禁止软件应用程序的功能(动作604),如先前参考动作508所讨论的。否则,处理设备可对使用次数进行计数(动作606)。如先前所讨论的,处理设备可通过向相应扇区写入以使得该相应扇区不可用或者通过执行对单个扇区的多次写入以使得该单个扇区在数到预定使用次数后变得不可用来对使用次数进行计数。
图7是示出用于执行动作606的示例性过程606-1的流程图。该过程可开始于处理设备确定使用哪一个扇区来对使用次数进行计数(动作702)。在一个实施例中,处理设备可访问用于计数器的扇区阵列406(图4),该扇区阵列可包括关于为使用次数计数器预留的扇区以及指向用于下一使用次数计数器的扇区的指针的信息。因此,例如,如果扇区1-20将要用于使用次数计数器而扇区1-6已用于计数且变得不可用,则指针可指向将出于计数目的而使用的扇区7。
在确定要用于计数用途的扇区后,处理设备可执行对该扇区的多次写入以使得该扇区不可用(动作704)。处理设备然后可更新关于指向用于下一使用次数计数器的扇区的指针的信息(动作706)。对于其中扇区1-20可用于使用次数计数器的上述示例,在出于计数目的而使用扇区7之后,可将指针设为指向扇区8,以使得扇区8可以在接下来要执行计数时变得不可用。
图8是示出用于执行动作606的第二示例性过程606-2的流程图。该示例性过程将单个扇区用作计数器并根据等式1来执行计数,如上所述。该过程可开始于处理设备确定要出于计数目的而使用的扇区(动作802)。在一个实施例中,处理设备可访问用于计数器的扇区阵列406(图4),该扇区阵列可包括关于为用作使用次数计数器而保留的扇区的信息。该处理设备还可获取关于要对该扇区执行的多次写入的信息。可将该信息包括在用于计数器的扇区阵列406中或者可将其存储在别处。处理设备然后可执行对扇区的多次写入以使得该扇区在已数到预定使用次数后变得不可用(动作804)。
参考图6,在执行动作606后或者在确定不对软件应用程序的使用次数进行计数(动作514)后,处理设备可确定是否对时间段进行计数(动作608)。在一个实施例中,处理设备可通过访问用于时间段计数器的扇区阵列408(图4)来作出该判定,该扇区阵列可包括关于闪存设备中要用作时间段计数器的扇区的信息。通常,时间段计数器可对诸如例如,天、星期、月、年或其他时间段等时间段的数量进行计数。由此,例如,如果可在诸如例如18个月等特定时间段内使用软件应用程序,则可使用时间段计数器来对月数进行计数。如果处理设备确定不使用时间段计数器,则处理设备可全功能地执行软件应用程序(动作614)。
在动作608期间,如果处理设备确定使用时间段计数器,则处理设备可参考许可证信息来确定是否已数到时间段的最大数量(动作610),诸如例如,在18个月许可证有效期的情况下的18个月。如果不存在剩余时间段(例如,对于18个月许可证有效期已过去18个月),则处理设备可限制或禁用软件应用程序的功能(动作614),如上所述。否则,可对时间段进行计数(动作612)并且处理设备可全功能地执行软件应用程序。
在一个实施例中,可通过向相应扇区写入以使该相应扇区不可用来对时间段进行计数。例如,为了对18个时间段进行计数,可向18个扇区写入直到这些扇区不可用。在其他实施例中,可对单个扇区写入以使得该单个扇区可以在过去预定数量的时间段后变得不可用,诸如例如,18个时间段或某一其他数量的时间段,如以上参考等式1所描述的。
图9是示出根据本发明的主题的一实施例中的用于执行动作612的示例性过程612-1的流程图。该过程可开始于处理设备确定是否已过去一时间段(动作902)。该时间段可以是天、星期、月、年或另一时间间隔。处理设备可通过参考系统时钟并将该系统时钟的当前值与在该时间段开始时的该系统时钟的值进行比较来作出该判定。
如果处理设备确定已过去该时间段,则该处理设备可确定用于对时间段进行计数的扇区(动作904)。在一个实施例中,处理设备可访问用于时间段计数器的扇区阵列408(图4),该扇区阵列可包括关于为时间段计数器预留的扇区以及指向用于下一时间段计数器的扇区的指针的信息。因此,例如,如果扇区1-24将要用于时间段计数器而扇区1-10已用于计数并变得不可用,则指针可指向将出于时间段计数的目的而使用的扇区11。
在确定要用于时间段计数的扇区后,处理设备可执行对该扇区的多次写入以使该扇区不可用(动作906)。处理设备然后可更新关于指向用于下一时间段计数器的扇区的指针的信息(动作908)。对于其中扇区1-24可用作时间段计数器的上述示例,在使用扇区10来进行时间段计数之后,可将指针设为指向扇区11,以使得扇区11可以在接下来要执行时间段计数时变得不可用。
图10是示出用于执行动作612的第二示例性过程612-2的流程图。该示例性过程将单个扇区用作时间段计数器并根据等式1来执行计数,如上所述。该过程可开始于处理设备确定是否已过去一时间段(动作1002)。如果处理设备确定已过去一时间段,则该处理设备可确定要出于时间段计数的目的而使用的扇区(动作1004)。在一个实施例中,处理设备可访问用于时间段计数器的扇区阵列408(图4),该扇区阵列可包括关于为用作时间段计数器而保留的扇区的信息。该处理设备还可获取关于要对该扇区执行的多次写入的信息。可将该信息包括在用于时间段计数器的扇区阵列408中或者可将其存储在别处。处理设备然后可执行对扇区的多次写入以使得该扇区在已数到预定数量的时间段后变得不可用(动作1006)。
返回到图6,处理设备然后可全功能地执行软件应用程序(动作614)。
在某些实施例中,在将软件应用程序安装在处理设备上之后,该处理设备可被准许在不具有用于授权或准许执行该软件应用程序的闪存设备的情况下执行该软件应用程序直到预定次数。因此,例如,用户可电子地将软件应用程序下载到处理设备,可将该软件应用程序安装在处理设备上,并且可以在不具有闪存设备的情况下执行该软件应用程序直到预定次数。
图11示出了可以在这些实施例中执行的示例性过程。该过程可开始于处理设备确定软件应用程序的当前使用次数是否小于该软件应用程序的预定授权使用次数(动作1102)。该预定授权使用次数可通过访问可存储在处理设备上的许可证信息来获取。
如果软件应用程序的当前使用次数不小于预定授权使用次数,则可禁用或限制该软件应用程序的功能(动作1104)。例如,处理设备完全无法执行软件应用程序,或者处理设备只可功能受限地执行软件应用程序。
在动作1102期间,如果处理设备确定当前使用次数小于预定授权使用次数,则该处理设备可递增当前使用次数的计数(动作1106)并且可准许全功能地执行该软件应用程序(动作1108)。
图12-13是示出可以在根据本发明主题的另一实施例中执行的示例性过程的流程图。在该实施例中,可将标识符部分地编码到闪存设备的扇区中。例如,如果所允许的对扇区的写周期的最大数量使该扇区变得不可用,则可通过向闪存设备的特定扇区写入所允许的写周期的最大数量W来将标识符中的“1”位部分地编码到特定扇区中,其中W是大约等于所允许的写周期的最大数量的一百分比的整数,诸如例如50%或另一值。因此,所有这些特定扇区都可处于不可用状态,以使得可隐藏所编码的标识符。为了读取所编码的标识符,可对特定扇区执行多个写周期。例如,可对特定扇区执行W个写周期以使得通过标识符中的“1”位来表示的特定扇区不可用。在一替换实施例中,可将标识符中的“0”位部分地编码到闪存设备的特定扇区中。
该标识符可具有多个部分。每一部分都可对应于一时间段。最初,可隐藏标识符的所有部分(即,表示标识符的各部分的所有扇区可以是可用的)。可通过执行向用于表示对应于当前时间的标识符的一部分的对应的特定扇区的写周期来揭示标识符的该部分。当达到下一时间段时,可通过执行向用于表示标识符的下一部分的对应的特定扇区的写周期来揭示标识符的该下一部分。如果对应于将来时间段的标识符的一部分被揭示(指示可能的黑客攻击),则该标识符可被认为是无效的。
对于图12的流程图,该过程可开始于诸如例如处理设备102等处理设备访问许可证信息(动作1202)。许可证信息可存储在诸如例如,存储器、ROM或其他组件等处理设备的组件上。或者,许可证信息可存储在闪存设备中,诸如例如,许可证信息304。许可证信息可包括标识包括软件应用程序的产品的数据、标识符(例如,与使用该产品的许可证相关联的标识符)以及许可证有效的时间。该标识符可包括多个部分,每一部分对应于组成许可证有效的总时间的每一个时间段。在某些实施例中,许可证信息可包括由诸如例如,可信源的私钥等私钥签署的数字签名,可信源是诸如例如,软件分发者、软件开发者或其他可信源。
接着,处理设备可验证许可证信息(动作1204)。在某些实施例中,处理设备可通过使用对应于可信源的私钥的公钥来验证许可证信息。如验证许可证信息的结果所指示的,处理设备然后可确定许可证信息是否有效(动作1206)。如果许可证信息被确定为无效,则处理设备可限制或禁用软件应用程序的功能(动作1208)。例如,可不准许处理设备执行软件应用程序,或者处理设备可功能受限地执行软件应用程序。在一个实施例中,当限制软件应用程序的功能时,处理设备可执行该软件应用程序的标准版,而当不限制或禁用软件应用程序的功能时,处理设备可执行该软件应用程序的增强版或专业版。
在动作1206期间,如果处理设备确定许可证信息有效,则处理设备可从该许可证信息或另一源获取标识符(动作1210)。在某些实施例中,标识符可以是唯一的标识符。处理设备然后可确定标识符是否在闪存设备中编码(动作1212)。该处理设备可通过参考诸如例如,用于标识符的扇区阵列402(图4)等用于标识符的扇区阵列来作出该判定。
图13示出了一个实施例中的关于动作1212的示例性处理。首先,处理设备可确定新时间段是否开始(动作1302)。如果新时间段开始,则处理设备可确定是否存在标识符的其他部分(动作1304)。如果不存在标识符的其他部分,则处理设备可指示未编码标识符(动作1316)。这可指示做出在超过准许授权执行软件应用程序的时间段执行该应用程序的尝试。否则,处理设备可确定对应于下一时间段的、用于标识符的下一部分的特定扇区(动作1306)。在某些实施例中,可通过参考诸如例如,用于标识符的扇区阵列402等扇区阵列来确定用于标识符的下一部分的特定扇区。处理设备然后可执行对表示标识符的下一部分(现在是当前部分)中的“1”位或者标识符的下一部分中的“0”位的特定扇区的多个写周期(动作1308)。写周期数可能小于所允许的写周期的最大数量,但大于(所允许的写周期的最大数量-W),其中W是整数值。在执行动作1308后,可通过特定扇区中的不可用扇区来揭示标识符的下一部分。
如果在动作1302期间处理设备确定新时间段没有开始或者在动作1308期间已执行向特定扇区的多个写周期,则处理设备可确定标识符的当前部分是否通过不可用扇区来编码(动作1310)。如果处理设备确定未编码标识符的当前部分,则该处理设备可指示该标识符未编码。否则,处理设备可确定对应于将来时间段的标识符的任何部分是否已编码(动作1312)。如果已编码供在将来时间段期间使用的标识符的任一部分,则对应于将来时间段的标识符的已编码部分可指示黑客攻击。因此,如果已编码对应于任一将来时间段的标识符的任一部分,则处理设备可指示该标识符未编码(动作1316)以指示未授权使用。如果未编码对应于将来时间段的标识符的所有部分,则处理设备可指示该标识符已编码(动作1314)以指示授权使用。
返回到图12,如果在动作1212期间处理设备确定已在闪存设备中编码标识符的当前部分,则该处理设备可准许全功能地执行软件应用程序(动作1214)。否则,处理设备可限制或禁用软件应用程序的功能(动作1208)。
作为参考图12和13描述的实施例的示例,假设标识符具有36个部分,每一个部分16位,总长度为576位。标识符的每一部分都可对应于一个月的应用程序使用。结果,可授权使用该应用程序36个月。此外,假设一百万个写周期使得闪存的扇区不可用。当首次启动并激活应用程序时,该应用程序可通过执行向对应于标识符的前16位部分中的“1”位或“0”位的特定扇区的多次写入来揭示该标识符的前16位部分,如参考动作1310所描述的。该应用程序可验证该标识符的前16位部分匹配包括在许可证信息中的标识符的对应的16位部分。如果该应用程序确定对应于多个将来月份中的一个的16位部分被揭示,则可禁用应用程序或者可功能受限地执行该应用程序。一个月后,应用程序可揭示标识符的下一16位部分并且可验证该标识符的下一16位部分匹配包括在许可证信息中的标识符的对应的16位部分。
在根据本发明的主题的某些实施例中,如上所述,可编码闪存设备以便经由诸如例如处理设备102等用户的处理设备来与软件应用程序一起使用。图14示出了可以在这些实施例中执行的示例性过程。该过程可以是激活对软件应用程序的执行或使得能够执行软件应用程序的激活过程的一部分。
该过程可开始于处理设备向诸如例如服务器106等第二处理设备发送产品信息(动作1402)。该产品信息可包括标识包括软件应用程序的产品的信息。该处理设备可从对发送产品信息作出响应的第二处理设备接收许可证信息和标识符信息(动作1404)。在某些实施例中,许可证信息可包括标识符和关于一个或多个许可证有效期的信息。许可证信息还可使用可信源的私钥来数字地签署。在某些实施例中,标识符可具有使用可信源的私钥的单独的数字签名。
处理设备然后可验证许可证信息和标识符信息(动作1406)。在某些实施例中,处理设备可使用对应于可信源的私钥的公钥来验证许可证信息和标识符信息。处理设备可基于验证的结果来确定许可证信息和标识符信息是否有效(动作1408)。如果确定许可证信息和标识符信息无效,则处理设备可向用户提供出错消息(动作1410)。否则,处理设备可将标识符和对应的数字签名编码到连接到处理设备的闪存设备中(动作1412)。处理设备可通过向闪存设备的特定扇区写入以使得该特定扇区不可用来执行编码或者如上所述,该特定扇区可保持可用,但稍后可通过执行向该特定扇区的多个写周期以使其不可用来揭示编码。例如,标识符和数字签名可通过经由不可用扇区来表示一位并经由可用扇区来表示零位来编码。在某些实施例中,该信息可通过经由不可用扇区来表示零位并经由可用扇区来表示一位来编码。可将许可证信息存储在闪存设备或处理设备上(动作1414)。
接着,处理设备可从许可证信息中确定是否要使用使用次数计数器和/或时间段计数器(动作1416)。例如,如果许可证信息指示软件应用程序可执行预定次数,则可使用使用次数计数器。如果许可证信息指示对执行软件应用程序的授权在特定时间段或期满日期后到期,则可使用时间段计数器。
处理设备然后可创建关于标识符和计数器的一个或多个扇区阵列,并且还可存储关于要对扇区执行的多次写入的信息、关于诸如系统时钟或其他时间测量工具等时钟的时间段长度(天、星期、年等)或其他信息(动作1418)。
结论
使用通用闪存设备来阻止对软件的未授权使用没有需要诸如USB电子狗或存储器钥匙等特殊设备的方法昂贵。此外,用于使用用户提供的闪存设备来阻止对软件的未授权使用的方法使得交付具有软件的专用设备变得没必要,并且是用于保护电子分发的软件免遭未授权使用的切实可行的方法。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
虽然以上描述可能包含具体细节,但决不应将其解释为是对权利要求的限制。所述各实施例的其它配置也是本发明的范围的一部分。此外,根据本发明主题的各个实现可以具有比所描述的更多或更少动作,或可以按与所示出的顺序不同的顺序来实现各个动作。另外,在某些实施例中,软件应用程序可存储在闪存设备中,而在其他实施例中,软件安应用程序可存储在诸如ROM、硬盘或另一组件等处理设备的组件上。因此,只有所附权利要求书及其合法的等效技术方案才应定义本发明,而非任何给出的具体示例。