首页 > 专利 > 杭州电子科技大学 > 基于区块链的一人多票电子投票方法及系统专利详情

基于区块链的一人多票电子投票方法及系统   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2019-03-21
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2019-08-20
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2021-06-22
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2039-03-21
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201910217304.6 申请日 2019-03-21
公开/公告号 CN110060403B 公开/公告日 2021-06-22
授权日 2021-06-22 预估到期日 2039-03-21
申请年 2019年 公开/公告年 2021年
缴费截止日
分类号 G07C13/00H04L9/32H04L29/06 主分类号 G07C13/00
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 5
权利要求数量 6 非专利引证数量 1
引用专利数量 2 被引证专利数量 0
非专利引证 1、2017.04.20Hsin-Te Wu等.A Blockchain-BasedNetwork Security Mechanism for VotingSystems《.IEEE》.2018,颜春辉等.基于区块链的安全投票系统设计与实现《.通信技术》.2018,;
引用专利 US2017155515A、US2017109955A 被引证专利
专利权维持 3 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 杭州电子科技大学 当前专利权人 杭州电子科技大学
发明人 刘香顺、边瑞超、吴薇 第一发明人 刘香顺
地址 浙江省杭州市下沙高教园区2号大街 邮编 310018
申请人数量 1 发明人数量 3
申请人所在省 浙江省 申请人所在市 浙江省杭州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
杭州君度专利代理事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
朱亚冠
摘要
本发明公开基于区块链的一人多票电子投票方法及系统,使用挑战/响应认证方式,实现了投票人和服务器的双向身份验证,使用区块链保存选票,使得投票结果不可篡改,并可以根据投票人所选择的候选项生成一组与投票人最大投票数相同的选票,并且这一组选票均可验证,基本上实现了一人多票的功能,另外,将选票两次加密之后签名,保证投票的匿名性,将服务器一分为三,分散权力。本发明具有双向身份验证,一人多票,投票过程匿名、安全,投票结果公开可验证等特点。
  • 摘要附图
    基于区块链的一人多票电子投票方法及系统
  • 说明书附图:图1
    基于区块链的一人多票电子投票方法及系统
  • 说明书附图:图2
    基于区块链的一人多票电子投票方法及系统
  • 说明书附图:图3
    基于区块链的一人多票电子投票方法及系统
  • 说明书附图:图4
    基于区块链的一人多票电子投票方法及系统
  • 说明书附图:图5
    基于区块链的一人多票电子投票方法及系统
  • 说明书附图:图6
    基于区块链的一人多票电子投票方法及系统
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2021-06-22 授权
2 2019-08-20 实质审查的生效 IPC(主分类): G07C 13/00 专利申请号: 201910217304.6 申请日: 2019.03.21
3 2019-07-26 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.基于区块链的一人多票电子投票系统,其特征在于包括投票工具包模块,前端服务器模块,认证服务器模块,投票服务器模块,计票服务器模块,普通关系型数据库模块,区块链模块;
投票工具包模块包括代表投票人身份的ID、投票人的公钥和私钥、认证服务器的公钥和私钥、投票服务器的公钥和私钥、计票服务器的公钥和私钥、随机字符串生成器,用于辅助投票;
前端服务器模块,用于投票人的双向身份认证,生成选票,显示投票结果;
认证服务器模块,用于投票人的双向身份认证,选票签名;
投票服务器模块,用于验证选票签名,将选票第一次解密,以及将验证成功后的选票保存到区块链中;
普通关系型数据库模块,用于保存投票人的ID哈希值,最大投票数,认证服务器的公钥和私钥,投票人的公钥,投票服务器的公钥和私钥、计票服务器的公钥和私钥;
区块链模块,用于保存选票;
计票服务器,用于从区块链中取出选票,计算投票结果,并将结果发送给前端服务器显示。

2.基于权利要求1所述系统的基于区块链的一人多票电子投票方法,其特征在于包括双向身份认证,选票生成,对选票进行签名,将选票保存到区块链中,投票结果显示多个部分流程;
双向身份认证流程包含如下步骤:
步骤1:投票人输入自己的ID和一个随机数ru;前端服务器接收到ID后使用单向哈希函数计算上述ID的哈希值hID;前端服务器接收到随机数ru,调用投票工具包中的认证服务器的公钥,对ru进行加密得到eru;最后前端服务器将(hID,eru)发送给认证服务器;
上述投票人输入的ID为事先从投票工具包中获取的;
步骤2:认证服务器首先判断hID是否在普通关系型数据库中,若不存在,验证失败,结束;若存在,认证服务器调用普通关系型数据库中认证服务器的私钥,将eru解密得到dru;然后使用单向哈希函数计算dru得到hdru;同时认证服务器选择一个随机数rs,调用普通关系型数据库中的投票人的公钥,对其进行加密得到ers;最后认证服务器将(hdru,ers)发送给前端服务器;
步骤3:前端服务器将投票人输入的随机数ru采用单向哈希函数计算其的哈希值,然后与hdru比较,若不同,验证失败,结束;若相同,前端服务器调用投票工具包中的投票人的私钥,对ers解密得到drs,再使用单向哈希函数计算drs得到hdrs,最后将hdrs发送给认证服务器;
步骤4:认证服务器使用单向哈希函数计算随机数rs的哈希值,然后与接收到的数据hdrs比较,若不同,验证失败,结束;若相同,验证成功,允许用户登陆投票。

3.如权利要求2所述的投票方法,其特征在于选票生成流程包含如下步骤:
步骤1:投票人使用投票工具包中的随机字符串生成器生成一串随机字符串s,然后传送到前端服务器;前端服务器使用s作为基础分别向s末尾追加一位数字,数字为从1到M,M为投票人的最大投票数,最后生成一组数量为M的新字符串;
步骤2:前端服务器使用单向哈希函数分别计算组内的新字符串得到一组哈希值;
步骤3:前端服务器将投票人所投的候选项编号分别追加到这组哈希值的最后得到未加密的一组选票;
步骤4:前端服务器调用投票工具包中的投票服务器和计票服务器的公钥;首先使用计票服务器的公钥对选票进行第一次加密,然后使用投票服务器的公钥对选票进行第二次加密;自此选票生成完毕。

4.如权利要求2所述的投票方法,其特征在于对选票进行签名的步骤如下:
步骤1:前端服务器将ID哈希值与选票发送给认证服务器;
步骤2:认证服务器判断接收到的ID哈希值是否在普通关系型数据库中,若不存在,认证服务器拒绝签名,若存在,认证服务器判定这一组选票是否小于等于当前ID的最大投票数,若是则对这一组选票进行签名,每签一个,都会将最大投票数减一,直到最大投票数为
0;若不是,则拒绝签名;
步骤3:认证服务器将签名之后的这一组选票发送给前端服务器,前端服务器调用投票工具包中认证服务器的公钥验证签名是否正确,若正确,签名结束,否则,再次请求认证服务器签名。

5.如权利要求2所述的投票方法,其特征在于将验证成功后的选票保存到区块链流程的步骤如下:
步骤1:前端服务器将未签名的选票,以及签过名的选票发送给投票服务器;
步骤2:投票服务器调用普通关系型数据库中认证服务器的公钥解密签名后的这一组选票,并与未签名的选票进行比较,若有一个选票不同,验证签名失败,投票服务器拒绝投票;
步骤3:若全部相同,验证签名成功,投票服务器调用普通关系型数据库中投票服务器的私钥将这一组选票第一次解密,然后随机选择一组区块链账户,分别将选票写入到区块链中。

6.如权利要求2所述的投票方法,其特征在于投票结果显示流程的步骤如下:
步骤1:计票服务器判断投票是否结束,若未结束,则循环等待投票结束;
步骤2:若投票结束,计票服务器从区块链中取出选票,调用普通关系型数据库中计票服务器的私钥对选票进行解密,并计算每个候选项的票数,最后将选票与票数发送给前端服务器;
步骤3:前端服务器展示接收到的选票以及每个后选项所得票数,用于投票人进行投票结果的验证。
说明书

技术领域

[0001] 本发明属于计算机通信,密码学和区块链领域,涉及一种基于区块链的一人多票电子投票系统。

背景技术

[0002] 电子投票发展到现在也有不少年头了,但是一些安全问题仍然不能很好的解决,服务器一旦受到攻击,投票结果很容易被修改,投票的公平性就荡然无存。区块链作为比特币的底层技术实现,以其去中心化不可篡改等特点被用在电子投票系统中,增强了投票系统的安全性。但是,如今很多基于区块链的电子投票系统还有很多的不足。比如,由于每个投票人对应一个区块链账户,所以每个投票人只能对一个候选项投一票,从而导致可以根据每个区块链账户的交易信息的不同倒推出投票人的信息,这就不能保证投票信息的匿名性。而每个投票人只能对一个候选项投一票,制约了很多投票场景。并且现在的很多投票系统都是单方向的身份验证,即只能服务器验证用户的身份,而用户却不能验证服务器是否正确,这又大大增加了投票系统的安全隐患。

发明内容

[0003] 本发明的目的是针对如今基于区块链的电子投票系统的不足,设计了一种基于区块链的一人多票电子投票方法及系统。这个投票系统解决了每个投票人只能对一个候选项投一票以及用户不能验证服务器是否正确的问题。
[0004] 基于区块链的一人多票电子投票系统包含了投票工具包模块,前端服务器模块,认证服务器模块,投票服务器模块,计票服务器模块,普通关系型数据库模块,区块链模块。其中:
[0005] 投票工具包模块包括代表投票人身份的ID、投票人的公钥和私钥、认证服务器的公钥和私钥、投票服务器的公钥和私钥、计票服务器的公钥和私钥、随机字符串生成器,用于辅助投票。
[0006] 前端服务器模块,用于投票人的双向身份认证,生成选票,显示投票结果。
[0007] 认证服务器模块,用于投票人的双向身份认证,选票签名。
[0008] 投票服务器模块,用于验证选票签名,将选票第一次解密,以及将验证成功后的选票保存到区块链中。
[0009] 普通关系型数据库模块,用于保存投票人的ID哈希值,最大投票数,认证服务器的公钥和私钥,投票人的公钥,投票服务器的公钥和私钥、计票服务器的公钥和私钥。
[0010] 区块链模块,用于保存选票。
[0011] 计票服务器,用于从区块链中取出选票,计算投票结果,并将结果发送给前端服务器显示。
[0012] 基于区块链的一人多票电子投票方法包含了双向身份认证,选票生成,对选票进行签名,将选票保存到区块链中,投票结果显示等多个部分流程。
[0013] 双向身份认证流程包含如下步骤:
[0014] 步骤1:投票人输入自己的ID和一个随机数ru;前端服务器接收到ID后使用单向哈希函数计算上述ID的哈希值hID;前端服务器接收到随机数ru,调用投票工具包中的认证服务器的公钥,对ru进行加密得到eru;最后前端服务器将(hID,eru)发送给认证服务器。
[0015] 上述投票人输入的ID为事先从投票工具包中获取的。
[0016] 上述加密为现有成熟技术,故不详解。
[0017] 步骤2:认证服务器首先判断hID是否在普通关系型数据库中,若不存在,验证失败,结束。若存在,认证服务器调用普通关系型数据库中认证服务器的私钥,将eru解密得到dru;然后使用单向哈希函数计算dru得到hdru;同时认证服务器选择一个随机数rs,调用普通关系型数据库中的投票人的公钥,对其进行加密得到ers;最后认证服务器将(hdru,ers)发送给前端服务器。
[0018] 步骤3:前端服务器将投票人输入的随机数ru采用单向哈希函数计算其的哈希值,然后与hdru比较,若不同,验证失败,结束。若相同,前端服务器调用投票工具包中的投票人的私钥,对ers解密得到drs,再使用单向哈希函数计算drs得到hdrs,最后将hdrs发送给认证服务器。
[0019] 步骤4:认证服务器使用单向哈希函数计算随机数rs的哈希值,然后与接收到的数据hdrs比较,若不同,验证失败,结束。若相同,验证成功,允许用户登陆投票。
[0020] 选票生成流程包含如下步骤:
[0021] 步骤1:投票人使用投票工具包中的随机字符串生成器生成一串随机字符串s,然后传送到前端服务器;前端服务器使用s作为基础分别向s末尾追加一位数字,数字为从1到M,M为投票人的最大投票数,最后生成一组数量为M的新字符串。
[0022] 步骤2:前端服务器使用单向哈希函数分别计算组内的新字符串得到一组哈希值。
[0023] 步骤3:前端服务器将投票人所投的候选项编号分别追加到这组哈希值的最后得到未加密的一组选票。
[0024] 步骤4:前端服务器调用投票工具包中的投票服务器和计票服务器的公钥;首先使用计票服务器的公钥对选票进行第一次加密,然后使用投票服务器的公钥对选票进行第二次加密。自此选票生成完毕。
[0025] 对选票进行签名的步骤如下:
[0026] 步骤1:前端服务器将ID哈希值与选票发送给认证服务器。
[0027] 步骤2:认证服务器判断接收到的ID哈希值是否在普通关系型数据库中,若不存在,认证服务器拒绝签名,若存在,认证服务器判定这一组选票是否小于等于当前ID的最大投票数,若是则对这一组选票进行签名,每签一个,都会将最大投票数减一,直到最大投票数为0。若不是,则拒绝签名。
[0028] 步骤3:认证服务器将签名之后的这一组选票发送给前端服务器,前端服务器调用投票工具包中认证服务器的公钥验证签名是否正确,若正确,签名结束,否则,再次请求认证服务器签名。
[0029] 上述验证签名为现有成熟技术,故不详解。
[0030] 将验证成功后的选票保存到区块链流程的步骤如下:
[0031] 步骤1:前端服务器将未签名的选票,以及签过名的选票发送给投票服务器。
[0032] 步骤2:投票服务器调用普通关系型数据库中认证服务器的公钥解密签名后的这一组选票,并与未签名的选票进行比较,若有一个选票不同,验证签名失败,投票服务器拒绝投票。
[0033] 步骤3:若全部相同,验证签名成功,投票服务器调用普通关系型数据库中投票服务器的私钥将这一组选票第一次解密,然后随机选择一组区块链账户,分别将选票写入到区块链中。
[0034] 投票结果显示流程的步骤如下:
[0035] 步骤1:计票服务器判断投票是否结束,若未结束,则循环等待投票结束。
[0036] 步骤2:若投票结束,计票服务器从区块链中取出选票,调用普通关系型数据库中计票服务器的私钥对选票进行解密,并计算每个候选项的票数,最后将选票与票数发送给前端服务器。
[0037] 步骤3:前端服务器展示接收到的选票以及每个后选项所得票数,用于投票人进行投票结果的验证。
[0038] 本发明的有益效果:
[0039] 1.采用挑战/响应认证方式,使投票人和服务器可以双向认证,大大增强了安全性。
[0040] 2.可以根据投票人所投的候选项生成多个选票,实现了一人多票的功能,并且每个选票都是可以验证的。
[0041] 3.对所投的票进行两次加密之后再签名,提高了匿名性。
[0042] 4.将服务器分为前端,认证,投票,计票四个,使权力分散,安全性大大提高。
[0043] 5.本发明与当前别的投票系统相别,实现了一人多票功能,并增强了投票过程的匿名性,投票结果的公开可验证,整体的安全性。

实施方案

[0050] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051] 为了方便,以下所有文字中,投票人用U表示,前端服务器用FS,认证服务器用AS表示,投票服务器用VS表示,计票服务器用CS表示。
[0052] 实施例一,参见图1所示,基于区块链的一人多票电子投票方法及系统包含了投票工具包模块,前端服务器模块,认证服务器模块,投票服务器模块,计票服务器模块,普通关系型数据库模块,区块链模块。其中:
[0053] 投票工具包模块包括代表投票人身份的ID、投票人的公钥和私钥、认证服务器的公钥和私钥、投票服务器的公钥和私钥、计票服务器的公钥和私钥、随机字符串生成器,用于辅助投票。
[0054] 前端服务器模块,用于投票人的双向身份认证,生成选票,显示投票结果。
[0055] 认证服务器模块,用于投票人的双向身份认证,选票签名。
[0056] 投票服务器模块,用于验证选票签名,将选票第一次解密,以及将验证成功后的选票保存到区块链中。
[0057] 普通关系型数据库模块,用于保存投票人的ID哈希值,最大投票数,认证服务器的公钥和私钥,投票人的公钥,投票服务器的公钥和私钥、计票服务器的公钥和私钥。
[0058] 区块链模块,用于保存选票。
[0059] 计票服务器,用于从区块链中取出选票,计算投票结果,并将结果发送给前端服务器显示。
[0060] 实施例二,参见图2,3,4,5,6所示,基于区块链的一人多票电子投票方法及系统包含了双向身份认证,选票生成,对选票进行签名,将选票保存到区块链中,投票结果显示5个部分,下面结合图示,对这5部分进行具体的说明,其中,
[0061] 双向身份认证流程包含如下步骤:
[0062] 步骤1:U输入自己的ID和一个随机数ru;FS接收到ID后使用单向哈希函数计算上述ID的哈希值hID;FS接收到随机数ru,调用投票工具包中的认证服务器的公钥PAS,对ru进行加密得到eru;最后前端服务器将(hID,eru)发送给认证服务器。
[0063] 步骤2:AS首先判断hID是否在普通关系型数据库中(数据库保存着所有投票人ID的哈希值以及公钥),若不存在,验证失败,结束。若存在,AS调用普通关系型数据库中AS的私钥PAS,将eru解密得到dru;然后使用单向哈希函数计算dru得到hdru;同时AS选择一个随机数rs,调用普通关系型数据库中的投票人的公钥,对其进行加密得到ers;最后AS将(hdru,ers)发送给FS。
[0064] 步骤3:FS将投票人输入的随机数ru采用单向哈希函数计算其哈希值,然后与hdru比较,若不同,验证失败,结束。若相同,FS调用投票工具包中的投票人的私钥,对ers解密得到drs,再使用单向哈希函数计算drs得到hdrs,最后将hdrs发送给AS。
[0065] 步骤4:AS使用单向哈希函数计算随机数rs的哈希值,然后与接收到的数据hdrs比较,若不同,验证失败,结束。若相同,验证成功,允许用户登陆投票。
[0066] 选票生成流程包含如下步骤:
[0067] 步骤1:U使用投票工具包中的随机字符串生成器生成一串随机字符串s,然后传送到FS;FS使用s作为基础分别向s末尾追加一位数字,数字为从1到M,M为投票人的最大投票数,最后生成一组数量为M的新字符串ss。
[0068] 步骤2:FS使用单向哈希函数分别计算ss得到一组哈希值hss。
[0069] 步骤3:FS将投票人所投的候选项编号vi分别追加到这组哈希值的最后得到未加密的一组选票vs。
[0070] 步骤4:FS调用投票工具包中的VS和CS的公钥PVS和PCS;首先使用PCS对选票进行第一次加密得到evs1,然后使用PVS对evs1进行第二次加密得到evs2。自此选票生成完毕。
[0071] 对选票进行签名的步骤如下:
[0072] 步骤1:FS将hID与选票evs2发送给AS。
[0073] 步骤2:AS判断接收到的hID是否在数据库中,若不存在,AS拒绝签名,若存在,AS判定这一组选票是否小于等于当前ID的最大投票数,若是则对这一组选票进行签名,每签一个,都会将最大投票数减一,直到最大投票数为0。若不是,则拒绝签名。
[0074] 步骤3:AS将签名之后的这一组选票发送给FS,FS使用AS的公钥验证签名是否正确,若正确,签名结束,否则,再次请求AS签名。
[0075] 将选票保存到区块链中的步骤如下:
[0076] 步骤1:FS将(evs2,sevs2)发送给VS。
[0077] 步骤2:VS使用AS的公钥PAS解密sevs2,并与evs2进行比较,若有一个选票不同,验证签名失败,VS拒绝投票。
[0078] 步骤3:若全部相同,验证签名成功,VS使用自己的私钥将evs2第一次解密得到evs1,然后随机选择一组区块链账户,分别将evs1写入到区块链中。
[0079] 投票结果显示流程的步骤如下:
[0080] 步骤1:CS判断投票是否结束,若未结束,则循环等待投票结束。
[0081] 步骤2:若投票结束,CS从区块链中取出evs1,使用自己的私钥对evs1进行解密得到vs,并计算每个候选项的票数result,最后将(vs,result)发送给FS。
[0082] 步骤3:FS展示接受到的vs以及result,用于U进行投票结果的验证。
[0083] 本发明设计了一种基于区块链的一人多票电子投票方法及系统,与现有基于区块链的投票系统相比,解决了每个投票人只能对一个候选项投一票以及用户不能验证服务器是否正确的问题。
[0084] 本发明不局限于上述具体实施方式,本领域技术人员还可据此做出多种变化,但任何与本发明等同或者类似的变化都应涵盖在本发明权利要求的范围内。

附图说明

[0044] 图1为投票系统整体架构图
[0045] 图2为双向身份验证流程图
[0046] 图3为选票生成流程图;
[0047] 图4为对选票进行签名流程图;
[0048] 图5为保存选票到区块链流程图;
[0049] 图6为投票结果显示流程。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号