ECC是“Error Correcting Code”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。

ECC加密被破译的可能性之制作注册机(签名过程)

1、选择一条椭圆曲线Ep(a,b),和基点G;

2、选择私有密钥k(k小于n,n为G的阶),利用基点G计算公开密钥K=kG;

3、产生一个随机整数r(r小于n),计算点R=rG;

4、将用户名和点R的坐标值x,y作为参数,计算SHA(Secure Hash Algorithm 安全散列算法,类似于MD5)值,即Hash=SHA(username,x,y);

5、计算sn≡r - Hash * k (mod n);

6、将sn和Hash作为 用户名username的序列号。

软件验证过程如下:(软件中存有椭圆曲线Ep(a,b),和基点G,公开密钥K)。

(软件中存有椭圆曲线Ep(a,b),和基点G,公开密钥K)

1、从用户输入的序列号中,提取sn及Hash;

2、计算点R≡sn*G+Hash*K ( mod p ),如果sn、Hash正确,其值等于软件作者签名过程中点R(x,y)的坐标,因为

sn≡r-Hash*k (mod n)

所以

sn*G + Hash*K

=(r-Hash*k)*G+Hash*K

=rG-Hash*kG+Hash*K

=rG- Hash*K+ Hash*K

=rG=R

3、将用户名和点R的坐标值x,y作为参数,计算H=SHA(username,x,y);

4、如果H=Hash 则注册成功。

从上面的分析来看,要想制作出ECC的注册机,似乎需要知道私钥才有可能,这需要穷举。如果是私钥数据长度非常大或是数据对,这基本上是不可能的。sn和Hash,H等都是关联的,能说是牵一发而动全身。Hash经过复杂运算后,还要使计算的最后结果等于自身,即H=Hash,否则将验证失败。带ECC程式的本身只有公钥,而没有私钥。私钥只在注册机中存在。ECC的程式似乎有一种东西游离于程式之外,又在控制着程式验证的运行。知道他,却又抓不住他,这就是私钥。破译一个字,难!所以在理论上ECC是可以被破解的,但是如果验证函数非常复杂,就需要看自己的逆向功底和数据的构建能力了.