这种验证许可证的方式你会好吗?

Rir*_*iri 4 xml licensing cryptography

我有一个XML文件,描述了产品获得许可的公司名称,版本和一些额外信息.

看起来像这样

<Licence>
  <Name>sdfsdf</Name>
  <Version>1.2.1.1</Version>
  <NumberOfServer>4</NumberOfServer>
</Licence>
Run Code Online (Sandbox Code Playgroud)

然后,我使用私钥签署此fiel并获取

<Licence>
  <Name>sdfsdf</Name>
  <Version>1.2.1.1</Version>
  <NumberOfServer>4</NumberOfServer>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <Reference URI="">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
        <DigestValue>M368eFB9ydifttSxX26sB6XiPV4=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>TTYP6d+zESn6/2PtL5ikN+7E9u8Njm32vYVyVANC5U0EGLBwS//3yPjUoBx3glJXHClzPQBQEUi0LJNauTFvo1IBYwLjAuaYGtleti4IXpjrQCVaIudETSv5Z7oB8+C/+nsqsC26fXf9vWxvaKXJJzcep88r0wIfVe31HSd18FU=</SignatureValue>
  </Signature>
</Licence>
Run Code Online (Sandbox Code Playgroud)

然后我在应用程序中发送公钥并读取文件以确保它们具有正确的版本,并且"NumberOfServers"作为许可证密钥用于.

这种方法的缺点是什么?

谢谢

eri*_*son 5

一个问题是:攻击者可以生成密钥对,许可证,使用该私钥签署许可证,然后用自己的密钥替换应用程序中的公钥.这可能听起来很牵强,但这是盗贼所做的事情.

如果你试图保护一些不诚实的人群(例如,尚未学习完整性价值的孩子),那么加密狗就会更加强大.

如果您向关心其声誉的人或企业销售,这足以帮助他们保持诚实并跟踪他们的许可证.