- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想(或创建)基于椭圆 key 加密的串行 key 。我想做的是在序列中编码信息,这些信息可以公开验证但只能由我创建。最初的想法来自http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm他们可以在其中创建信息加密的连续剧。但是,这是基于 RSA 导致的,因此数量很大。因此,我想自己构建类似的东西。
但是,我认为这没有任何好处:他们选择应用程序和创建者需要知道的域参数。公钥用于加密(生成序列),而私钥在应用程序中用于解密。但是,知道域参数和私钥,很容易推导出 ECIES 的公钥,对吧?
下一个想法是对信息进行任意编码,并为其附加基于 ECDSA 的签名。但这会导致很大的序列号。
我真正想要的是类似于 http://ellipter.com 的解决方案他们使用正确概念的地方:生成序列号的私钥和验证它们的公钥。他们在屏幕截图中显示的 key 非常短:对于 128 位 key ,只有大约 30 个字符。
正确的做法是什么?我是否错过了正确的方案?不可能是ECDSA,也不可能是ECIES。但还有什么?
最佳答案
你需要的是椭圆曲线digital signature scheme ,例如 ECDSA .
基本上,您的 key 生成服务器将保存 key 对的私有(private)部分,而您分发的软件将包含公共(public)部分。您的序列 key 将包含一个简单的序列号,以及使用私钥对该序列号进行的签名。当用户输入数字时,软件会使用其公钥检查签名是否有效。
您也可以对产品激活 key 使用相同的方案;在这种情况下,您要签名的数据将不仅仅是一个序列号,而是某种识别用户的摘要字符串,可能还有他们正在安装软件的系统的某些功能。
现在,坏消息是,不幸的是,具有非平凡安全级别的 ECDSA 签名对于许可证 key 来说仍然很长。您可以通过降低安全级别来减少签名长度,但这样就有可能通过蛮力伪造签名。基本上,您将在安全性和可用性之间进行权衡。您还可以尝试其他带有短签名的签名方案,例如 Schnorr signatures或者可能是类似 McEliece-based signature scheme described in this paper 的东西, 但即使是这些也可能非常适合用户可键入的许可证 key 。
第一次接触 RSA 签名形式的数字签名的人通常会感到困惑的是 RSA cryptosystem有点不寻常,因为相同的基本算法可用于两者 public-key encryption对于数字签名,在低层次上,这两个操作是双重的,因此 RSA 签名操作可以看作是“用私钥加密”,而签名验证可以看作是“用公钥解密”(这与您对普通公钥加密所做的相反)。
但是,对于大多数其他公钥密码系统而言,这种对偶性不成立:一般来说,数字签名方案与公钥加密方案完全不同(尽管它们通常基于类似的数学问题)。事实上,即使对于 RSA,一旦您开始考虑像 padding 这样的细节,签名和加密操作就会变得不同。 ,如果您想将基本的“教科书 RSA”算法转变为实际上可以用作安全实用的密码系统的东西,这些都是必不可少的。
关于security - 带 ECC 的串行 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351369/
我正在尝试找出如何检查安装的内存 (RAM) 是 ECC 还是非 ECC我需要通过使用 WMI 类的 C# 来做到这一点。 你们有什么想法吗? 提前谢谢 最佳答案 您可以查询 WMI Win32_Ph
Kotlin 中是否有任何关于椭圆曲线加密的信息? 用于生成 key 对和加密、解密消息。 关于这个主题的信息很少甚至没有。 例如,我想实现 ECC P-521 椭圆曲线。 是否可以在 Kotlin
这里是我用 Java 编写的代码,但签名生成和验证的过程给出了不同的结果。 请任何人帮助解决这个问题。我将非常感谢您的支持。 package ecdsa.draft; import java.math
大家好,请原谅我的英语我开发了一个大整数函数 c : #ifndef __BIGINTEGER_H #define __BIGINTEGER_H #include #include #include
我目前正在使用双相加算法编写椭圆曲线加密的 C 代码。我面临着我不明白的段错误问题。我希望你们中有人能有一个想法。 #include "lib/include/gmp.h" #include #in
我正在尝试使用 SECP-256K1(比特币的 ECC 曲线)对某些数据进行 SHA256withECDSA 签名,代码如下。这些代码并不总是能正常工作,有时可能会相当不稳定。 我需要帮助稳定下面的代
我正在阅读 Christoffer Paares 书中关于椭圆曲线密码学的部分(“理解密码学”)。我决定在 python 中实现一个用于椭圆曲线点加法和点加倍的函数。对于我的测试,我使用了书中的示例,
想起来很久没写博客了,刚好今天要写实验报告,随便把之前的也完成吧 1.椭圆曲线概念 椭圆曲线在经过化解后,可以用这条式子表达:E:y²=x³+ax+b 其背后的密码学原理,是基
我有 48 字节 ECC secp192r1 签名,可以在其他环境中工作: byte[] signature = new byte[]{(byte)0x08, (byte)0x33, (byte)0x
您好,我正在尝试解码包含 ECC 公钥的对象 但我去 umarshaling 错误说不能正确解码对象。 我正在尝试执行以下操作: var privateKey *ecdsa.PrivateKey va
最新版本的 Java 不支持 ECC Brainpool 曲线。当我读取包含 EC Curve Brainpool 的 X509Certificate 时,出现异常。 我发现 Java 不支持带有 B
java.security.PublicKey#getEncoded() 返回 key 的 X509 表示,与原始 ECC 值相比,在 ECC 的情况下增加了大量开销。 我希望能够以最紧凑的表示形式(
是否有针对 Java 的 ECC(纠错代码)库(例如 Reed-Solomon)的众所周知的实现,它具有友好的开源许可(非 GPL)? 最佳答案 zxing Apache 许可证(不确定这是否符合您对
大多数可用的桌面(廉价)x86 平台现在仍然不支持 ECC 内存 (Error Checking & Correction)。但内存位翻转错误率仍在增长(not the best SO thread,
我正在尝试使用 iOS 上的 KeyChain 创建 Curve25519 key 。我知道 CryptoKit 的存在,不幸的是,它不适用于 iOS 12。有没有办法在 CryptoKit 之前创建
我们需要将数据从 ECC 表实时提取到 Azure 数据湖。Azure 数据工厂具有与 SAP ECC 系统的连接选项,但不支持实时摄取。 请告诉我 Azure/SAP 中是否有任何可用的 nativ
我想要(或创建)基于椭圆 key 加密的序列 key 。我想做的是将信息编码在序列中,这些信息可以公开验证,但只能由我创建。最初的想法来自http://www.ssware.com/cryptolic
我在我的项目中使用 php OpenSSL。如何使用单个私钥创建多个公钥? 在 RSA 中我们不能做这样的事情。但是 ECC 呢? 最佳答案 根据定义,对于一般椭圆曲线密码系统中的每个私有(priva
我想(或创建)基于椭圆 key 加密的串行 key 。我想做的是在序列中编码信息,这些信息可以公开验证但只能由我创建。最初的想法来自http://www.ssware.com/cryptolicens
我在我的项目中使用 php OpenSSL。如何使用单个私钥创建多个公钥? 在 RSA 中我们不能做这样的事情。但是 ECC 呢? 最佳答案 根据定义,对于一般椭圆曲线密码系统中的每个私有(priva
我是一名优秀的程序员,十分优秀!