椭圆曲线在软件注册保护的应用

我们知道将公开密钥算法作为软件注册算法的好处是Cracker很难通过跟踪验证算法得到注册机。下面,将简介一种利用Fp(a,b)椭圆曲线进行软件注册的方法。

软件作者按如下方法制作注册机(也可称为签名过程)

1、选择一条椭圆曲线Ep(a,b),和基点G;
2、选择私有密钥k(k
3、产生一个随机整数r(r
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)

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 则注册成功。如果H≠Hash ,则注册失败(为什么?提示注意点R与Hash的关联性)。

下面也是一种常于软件保护的注册算法,请认真阅读,并试回答签名过程与验证过程都用到了那些参数,Cracker想制作注册机,应该如何做。

软件作者按如下方法制作注册机(也可称为签名过程)
1、选择一条椭圆曲线Ep(a,b),和基点G;
2、选择私有密钥k(k
3、产生一个随机整数r(r
4、将用户名作为参数,计算Hash=SHA(username);
5、计算 x’=x (mod n)
6、计算sn≡(Hash+x’*k)/r (mod n)
7、将sn和x’作为 用户名username的序列号

软件验证过程如下:(软件中存有椭圆曲线Ep(a,b),和基点G,公开密钥K)
1、从用户输入的序列号中,提取sn以及x’;
2、将用户名作为参数,计算Hash=SHA(username);
3、计算 R=(Hash*G+x’*K)/sn,如果sn、Hash正确,其值等于软件作者签名过程中点R(x,y),因为
sn≡(Hash+x’*k)/r (mod n)
所以
(Hash*G+x’*K)/sn
=(Hash*G+x’*K)/[(Hash+x’*k)/r]
=(Hash*G+x’*K)/[(Hash*G+x’*k*G)/(rG)]
=rG*[(Hash*G+x’*K)/(Hash*G+x’*K)]
=rG=R (mod p)
4、v≡x (mod n)
5、如果v=x’ 则注册成功。如果v≠x’ ,则注册失败。
</N),计算点R(X,Y)=RG; /></N),利用基点G计算公开密钥K=KG; />

ECC算法软件保护中的应用的更多相关文章

  1. NAND Flash中常用的纠错方式(ECC算法)

    Hanming,RS,BCH —— NAND Flash中常用的纠错方式 因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配 ...

  2. ECC算法整理纪要

    初始ECC算法 1.用户A 密钥生成 (1):用随机数发生器产生随机数k∈[1,n-1]: (2):计算椭圆曲线点PA=[k]G,为公钥,k为用户A私钥: 2. 用户B加密算法及流程 设需要发送的消息 ...

  3. ECC 算法

    一.简介 1)椭圆曲线密码学的初级读本 http://8btc.com/thread-1240-1-1.html 2)ECC加密算法入门介绍 http://www.pediy.com/kssd/ped ...

  4. 【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法

    简单介绍: 基于互信息的图像配准算法以其较高的配准精度和广泛的适用性而成为图像配准领域研究的热点之中的一个.而基于互信息的医学图像配准方法被觉得是最好的配准方法之中的一个.基于此.本文将介绍简单的基于 ...

  5. 第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法

    第四十四个知识点:在ECC密码学方案中,描述一些基本的防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-44-d ...

  6. Aho-Corasick automaton(AC自动机)解析及其在算法竞赛中的典型应用举例

    摘要: 本文主要讲述了AC自动机的基本思想和实现原理,如何构造AC自动机,着重讲解AC自动机在算法竞赛中的一些典型应用. 什么是AC自动机? 如何构造一个AC自动机? AC自动机在算法竞赛中的典型应用 ...

  7. 算法 数组中出现次数最多的数字 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. STL函数 lower_bound 和 upper_bound 在算法竞赛中的用法

    以前比较排斥这两个函数,遇到需要二分的情景都是手写 \(while(left<=right)\). 这次决定洗心革面记录一下这两个函数的在算法竞赛中的用法,毕竟一般不会导致TLE. 其实百度百科 ...

  9. 算法竞赛中的常用JAVA API:PriorityQueue(优先队列)(转载)

    算法竞赛中的常用JAVA API:PriorityQueue(优先队列) PriorityQueue 翻译过来就是优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值,每插入一个元素,仍动态维护堆 ...

随机推荐

  1. Mysql 通用知识 2019-03-27

    充电mysql 官网 https://www.mysql.com/ 以上是mysql的产品线,多数是收费的.只有社区版是免费的. 所以下面只说社区版community. MySQL Community ...

  2. SP913 QTREE2 - Query on a tree II

    思路 第一个可以倍增,第二个讨论在a到lca的路径上还是lca到b的路径上, 倍增即可 代码 #include <cstdio> #include <algorithm> #i ...

  3. vue 开发环境搭建

    https://www.cnblogs.com/goldlong/p/8027997.html 1,按照nodeJS. 2,nodejs 包含npm. 3, 执行: npm install -g @v ...

  4. jenkins 配置

    配置: echo " aliyun.oss.access.key=LTAIz4Koeff8sCr8 " > ./src/main/resources/oss.dev.prop ...

  5. mitmproxy(中间人攻击工具)安装及使用

    一.安装 执行命令,报错 pip install mitmproxy 根据提示安装vc++14后重新执行正常安装. 查看版本号: mitmproxy --version Error: mitmprox ...

  6. 《图解Java多线程设计模式》读书笔记

    略读中...后面详读的时候,补充经典图片和文字说明

  7. UNDO(二)

    Managing Undo Beginning with Release 11g, for a default installation, Oracle Database automatically ...

  8. 【原】git常见用法

    1.克隆 当前用户:git clone 192.165.53.15:/home/git/repo/Tegra/bsp/tx1_filesystem.git/ 非当前用户:git clone xxxxx ...

  9. git checkout branch

    git fetch origin feature/banch1:feature/banch1 git checkout feature/banch1 git branch -u origin/feat ...

  10. cowboy源码分析(三)

    上接 cowboy源码分析(二) 我们接着分析cowboy_protocol.erl的request/7模块 -module(cowboy_protocol). %% API.-export([sta ...