为了防止用户下载盗版软件,用户通常需要输入一串十六进制数字,用于验证用户的身份。
我认为基本的想法是,秘密密钥嵌入到软件中,当用户输入字符串和密钥之间进行匹配时,成功的身份验证就会发生。
我想知道这个想法背后的实际机制。
当软件不需要互联网连接来认证时,还使用了哪些其他可能的机制?
谢谢
注:不知道这个问题是否正确,如有需要,请把问题转到适当的地点。
发布于 2015-02-13 06:41:13
你的问题有点混乱,所以我不太清楚你在问什么,但我会试一试。
有时,当您下载软件时,会提供一些信息,这些信息通常看起来像长十六进制值,有时被称为校验和或签名。这是使用软件作为哈希或校验和函数的输入而生成的唯一值。如果输入完全相同,则该进程的输出将保证是相同的。如果输入被以任何方式更改,则输出值将有所不同。这本质上是一种完整性检查。如果我提供软件供下载,我可能会包括这些信息以及如何生成它的详细信息,比如SHA1、CRC-32等等。有了这些信息,您就可以使用一个程序从下载的软件版本生成签名或校验和,并查看是否得到相同的值。如果您这样做了,那么您可以确信该软件没有被修改(或者是在下载过程中偶然发生的,或者是被更恶意的人修改的)。
另一个地方,你会看到的东西,可以看上去有点像一个十六进制字符串是与软件许可密钥。这些方法用于确保使用该软件的人获得许可这样做。有几种方法可以实现这一点。对于将要在离线场景中使用的软件,一般的方法是一个长密钥,软件可以验证它是一个合法的许可密钥。密钥可能有多种组件,其中一些可以离线验证,而另一些只能在线验证,或者可能是一个非常简单的算法,它只是检查某些信息是否都在其中并处于正确的位置。通过离线验证,您需要有一种不依赖于特定用户详细信息的方法,因为无法验证这些详细信息。在这种情况下,验证过程可能只是验证密钥是否具有必要的元素或结构。通常,密钥将足够长,以致于猜测一个有效的密钥是非常困难的,而且概率很低。长键也使人们更难共享密钥,但这是离线密钥验证的限制之一。通过在线密钥验证,软件可以将查询发送到跟踪许可证密钥使用情况的中央数据库。该数据库甚至可以记录软件和密钥的关联,以防止将密钥与软件的多个实例一起使用。
https://security.stackexchange.com/questions/81562
复制相似问题