IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社BOOSTRYの特許一覧

特開2023-33146プログラム、投票管理方法、端末、及び投票管理システム
<>
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図1
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図2
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図3
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図4
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図5
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図6
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図7
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図8
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図9
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図10
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図11
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図12
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図13
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図14
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図15
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図16
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図17
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図18
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図19
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図20
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図21
  • 特開-プログラム、投票管理方法、端末、及び投票管理システム 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023033146
(43)【公開日】2023-03-09
(54)【発明の名称】プログラム、投票管理方法、端末、及び投票管理システム
(51)【国際特許分類】
   H04L 9/08 20060101AFI20230302BHJP
   H04L 9/32 20060101ALI20230302BHJP
   G06Q 50/26 20120101ALI20230302BHJP
【FI】
H04L9/08 A
H04L9/08 F
H04L9/32 200Z
G06Q50/26
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022121100
(22)【出願日】2022-07-29
(31)【優先権主張番号】P 2021137413
(32)【優先日】2021-08-25
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】519460269
【氏名又は名称】株式会社BOOSTRY
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】高橋 和音
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049CC37
(57)【要約】
【課題】投票情報を十分に秘匿しつつ、第三者による投票結果の正当性を検証可能とする投票管理システムを提供する。
【解決手段】投票管理システム10に係る管理者端末100では、投票情報取得部103が投票情報を取得し、票生成部104が管理者端末100と有権者端末200による閾値署名がされた暗号化投票情報を生成し、鍵情報生成部105が閾値署名の検証に用いられる公開鍵情報を生成する。票管理情報記録部106が、票管理情報を分散台帳300に記録し、投票部107が票管理情報に基づいて、暗号化投票情報を分散台帳300に記録する。票点検情報生成部108が、投票先情報が暗号化されず、票管理情報が管理者端末100のユーザによって記録されたことを検証可能に示す検証情報が付加された票点検情報を生成する。票点検情報記録部109が、票点検情報を分散台帳300に記録する。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1端末に、
前記第1端末と通信可能な第2端末から、前記第2端末のユーザによる少なくとも一つの投票先を示す投票先情報と前記少なくとも一つの投票先への投票数を示す投票数情報とを含む投票情報を取得する投票情報取得処理と、
暗号化された前記少なくとも一つの投票先情報と暗号化された前記投票数情報とを含み、前記第1端末と前記第2端末による閾値署名がされた暗号化投票情報を生成する票生成処理と、
前記閾値署名の検証に用いられる公開鍵情報を生成する鍵情報生成処理と、
前記公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、前記第1端末を通じて前記暗号化投票情報が記録されることを前記第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられた票管理情報を、前記第2端末のユーザが前記承認情報を更新可能に、前記第1端末及び前記第2端末と通信可能な分散台帳に記録する、票管理情報記録処理と、
前記票管理情報に基づいて、前記暗号化投票情報が前記分散台帳に記録されることを前記第2端末のユーザが承認している場合に、前記暗号化投票情報を前記分散台帳に記録する、投票処理と、
暗号化されていない前記少なくとも一つの投票先情報を含み、前記票管理情報が前記第1端末のユーザによって記録されたことを検証可能に示し、前記乱数情報に基づく検証情報が付加された票点検情報を生成する票点検情報生成処理と、
前記票点検情報を前記分散台帳に記録する、票点検情報記録処理と、を実行させるプログラム。
【請求項2】
請求項1に記載のプログラムであって、
前記票生成処理は、前記第1端末に記録された第1秘密鍵情報と前記第2端末に記録された第2秘密鍵情報とに基づいて前記暗号化投票情報に前記閾値署名をし、
前記鍵情報生成処理は、前記第1秘密鍵情報に基づく第1公開鍵情報と前記第2秘密鍵情報に基づく第2公開鍵情報を、前記第2端末との間で共有し、前記第1公開鍵情報と前記第2公開鍵情報とに基づいて、前記公開鍵情報を生成する、プログラム。
【請求項3】
請求項1又は2のいずれか一項に記載のプログラムであって、
前記ユーザの前記投票先情報、前記投票数情報及び前記投票情報は、それぞれ第1投票先情報、第1投票数情報及び第1投票情報であり、
前記投票情報取得処理は、前記第1端末と通信可能な第3端末から、前記第3端末のユーザによる少なくとも一つの投票先を示す第2投票先情報と前記少なくとも一つの投票先への投票数を示す第2投票数情報とを含む第2投票情報をさらに取得し、
前記第1端末に、
前記第1投票情報及び前記第2投票情報に基づいて、前記少なくとも一つの投票先のそれぞれの得票数を算出する集票処理、をさらに実行させるプログラム。
【請求項4】
請求項1に記載のプログラムであって、
前記投票情報取得処理は、前記少なくとも一つの投票先として、第1投票先及び第2投票先を取得する、プログラム。
【請求項5】
第1端末が、
前記第1端末と通信可能な第2端末から、前記第2端末のユーザによる少なくとも一つの投票先を示す投票先情報と前記少なくとも一つの投票先への投票数を示す投票数情報とを含む投票情報を取得することと、
暗号化された前記少なくとも一つの投票先情報と暗号化された前記投票数情報とを含み、前記第1端末と前記第2端末による閾値署名がされた暗号化投票情報を生成することと、
前記閾値署名の検証に用いられる公開鍵情報を生成することと、
前記公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、前記第1端末を通じて前記暗号化投票情報が記録されることを前記第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられた票管理情報を、前記第2端末のユーザが前記承認情報を更新可能に、前記第1端末及び前記第2端末と通信可能な分散台帳に記録することと、
前記票管理情報に基づいて、前記暗号化投票情報が前記分散台帳に記録されることを前記第2端末のユーザが承認している場合に、前記暗号化投票情報を前記分散台帳に記録することと、
暗号化されていない前記少なくとも一つの投票先情報を含み、前記票管理情報が前記第1端末のユーザによって記録されたことを検証可能に示し、前記乱数情報に基づく検証情報が付加された票点検情報を生成することと、
前記票点検情報を前記分散台帳に記録することと、を実行する投票管理方法。
【請求項6】
端末であって、
前記端末と通信可能な第2端末から、前記第2端末のユーザによる少なくとも一つの投票先を示す投票先情報と前記少なくとも一つの投票先への投票数を示す投票数情報とを含む投票情報を取得する投票情報取得部と、
暗号化された前記少なくとも一つの投票先情報と暗号化された前記投票数情報とを含み、前記端末と前記第2端末による閾値署名がされた暗号化投票情報を生成する票生成部と、
前記閾値署名の検証に用いられる公開鍵情報を生成する鍵情報生成部と、
前記公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、前記端末を通じて前記暗号化投票情報が記録されることを前記第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられた票管理情報を、前記第2端末のユーザが前記承認情報を更新可能に、前記端末及び前記第2端末と通信可能な分散台帳に記録する、票管理情報記録部と、
前記票管理情報に基づいて、前記暗号化投票情報が前記分散台帳に記録されることを前記第2端末のユーザが承認している場合に、前記暗号化投票情報を前記分散台帳に記録する、投票部と、
暗号化されていない前記少なくとも一つの投票先情報を含み、前記票管理情報が前記端末のユーザによって記録されたことを検証可能に示し、前記乱数情報に基づく検証情報が付加された票点検情報を生成する票点検情報生成部と、
前記票点検情報を前記分散台帳に記録する、票点検情報記録部と、を備える端末。
【請求項7】
第2端末に、
前記第2端末のユーザによる少なくとも一つの投票先を示す投票先情報と前記少なくとも一つの投票先への投票数を示す投票数情報とを含む投票情報を、前記第2端末と通信可能な第1端末に送信する投票情報送信処理と、
公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、暗号化された前記少なくとも一つの投票先情報と暗号化された前記投票数情報とを含み前記第1端末と前記第2端末による閾値署名がされた暗号化投票情報が前記第1端末を通じて記録されることを前記第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられ、前記第1端末及び前記第2端末と通信可能な分散台帳に記録された票管理情報であって、前記閾値署名の検証に用いられる票管理情報を、票有効化情報を前記分散台帳に送信することにより更新する票管理情報更新処理と、を実行させるプログラム。
【請求項8】
請求項7に記載のプログラムであって、
前記投票情報送信処理は、前記少なくとも一つの投票先として、第1投票先及び第2投票先を前記第1端末に送信する、プログラム。
【請求項9】
請求項1に記載のプログラムが記憶された前記第1端末と、
請求項7に記載のプログラムが記憶された前記第2端末と、を備え、
前記第1端末における前記票管理情報記録処理は、前記第1端末が、前記分散台帳上に設けられるスマートコントラクトに前記票管理情報を送信することを含み、
前記第2端末における前記票管理情報更新処理は、前記第2端末が、前記スマートコントラクトに前記票有効化情報を送信することを含み、
前記スマートコントラクトは、
前記票管理情報を前記分散台帳に記録し、
前記票有効化情報に基づいて、前記分散台帳に記録される前記票管理情報を更新し、
前記票管理情報のうち、前記第1端末を通じて前記投票情報が記録されることが前記第2端末のユーザにより承認されたことを示す前記票管理情報である、承認済み票管理情報を生成する、
投票管理システム。
【請求項10】
請求項3に記載のプログラムであって、
前記第1端末に、
前記暗号化投票情報に、前記暗号化された前記投票数情報が含まれることを証明する第1証明情報を生成する第1証明情報生成処理と、
前記少なくとも一つの投票先のそれぞれの前記得票数に基づいて、前記得票数が暗号化された暗号化得票数情報を生成する得票数暗号化処理と、
前記少なくとも一つの投票先のそれぞれの前記得票数に基づいて、前記得票数の順位を示す順位情報を生成する順位情報生成処理と、
前記順位情報を証明する第2証明情報を生成する第2証明情報生成処理と、
前記順位情報と前記第2証明情報とを前記分散台帳に記録する順位記録処理と、をさらに実行させ、
前記票点検情報生成処理は、前記第1証明情報がさらに付加された前記票点検情報を生成する、プログラム。
【請求項11】
第1端末に、
前記第1端末と通信可能な第2端末から、前記第2端末のユーザによる少なくとも一つの投票先を示す投票先情報を取得する投票先情報取得処理と、
前記第1端末と前記第2端末による閾値署名がされた前記少なくとも一つの投票先情報を生成し、前記閾値署名の検証に用いられる公開鍵情報を生成する署名処理と、
前記第1端末と通信可能な第2端末から、前記第2端末のユーザによる少なくとも一つの投票数を示す投票数情報が暗号化され、第4端末のユーザによる署名がされた暗号化投票数情報を取得する投票数情報取得処理と、
前記公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、前記第1端末を通じて前記暗号化投票数情報が記録されることを前記第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられた票管理情報を、前記第2端末のユーザが前記承認情報を更新可能かつ、前記承認情報に、前記第2端末のユーザによる承認が前記第4端末のユーザにより許可されたことを示す情報の関連付けが可能に、前記第1端末及び前記第2端末と通信可能な分散台帳に記録する、票管理情報記録処理と、
暗号化されていない前記少なくとも一つの投票先情報及び前記署名を含み、前記票管理情報が前記第1端末のユーザによって記録されたことを検証可能に示し、前記乱数情報に基づく検証情報が付加された票点検情報を生成する票点検情報生成処理と、
前記票点検情報を前記分散台帳に記録する、票点検情報記録処理と、を実行させるプログラム。
【請求項12】
請求項11に記載のプログラムであって、
前記ユーザの前記投票先情報、及び前記投票数情報は、それぞれ第1投票先情報、第1投票数情報及び第1投票情報であり、
前記投票先情報取得処理は、前記第1端末と通信可能な第5端末から、前記第5端末のユーザによる少なくとも一つの投票先を示す第2投票先情報をさらに取得し、
前記投票数情報取得処理は、前記第5端末のユーザによる前記少なくとも一つの投票先への投票数を示す第2投票数情報をさらに取得し、
前記第1端末に、
前記第1投票数情報及び前記第2投票数情報に基づいて、前記少なくとも一つの投票先のそれぞれの得票数を算出する集票処理、をさらに実行させるプログラム。
【請求項13】
請求項12に記載のプログラムであって、
前記第1端末に、
前記暗号化投票数情報に、暗号化された前記投票数情報が含まれることを証明する第1証明情報を生成する第1証明情報生成処理と、
前記少なくとも一つの投票先のそれぞれの前記得票数に基づいて、前記得票数が暗号化された暗号化得票数情報を生成する得票数暗号化処理と、
前記少なくとも一つの投票先のそれぞれの前記得票数に基づいて、前記得票数の順位を示す順位情報を生成する順位情報生成処理と、
前記順位情報を証明する第2証明情報を生成する第2証明情報生成処理と、
前記順位情報と前記第2証明情報とを前記分散台帳に記録する順位記録処理と、をさらに実行させ、
前記票点検情報生成処理は、前記第1証明情報がさらに付加された前記票点検情報を生成する、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、投票管理方法、端末、及び投票管理システムに関する。
【背景技術】
【0002】
有権者からの投票により結果が定まる選挙又は採決において電子投票を実現する投票システムの1つとして、分散台帳を利用した電子投票システムが存在する。特許文献1に記載の電子投票システムでは、投票権の消尽を第1分散台帳(ブロックチェーン)に記録し、匿名性を有する口座への投票トークンの移転を第2分散台帳に記録し、消尽と移転の対応付けを第3分散台帳に記録する。これにより、特許文献1に記載の電子投票システムでは、多重投票を防止し、匿名性を担保する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2019-95884号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載の電子投票システムでは、投票数の監査にあたって、投票期間中は第三者からのアクセスに対して秘匿されていた第2分散台帳を公開することにより、投票先ごとの投票数を監査可能とする。第2分散台帳を用いた監査においては、各投票の投票者は秘匿され、投票先と投票数が公開される。
【0005】
投票先と投票数とが公開されることは、第三者が当該投票を行った有権者を推測することを可能とする場合がある。例えば、株主総会における議決権行使では、投票数が多い投票は保有株数が多い有権者によるものであると推測され得る。よって、監査のために公開された投票先と投票数とに基づいて、第三者がその投票を行った有権者を推測し得る。
【0006】
この場合、投票結果の正当性は検証可能となるが、投票先、投票数、及び投票者を十分に秘匿化することが難しくなる。
【0007】
そこで、本発明は、投票情報を十分に秘匿しつつ、第三者による投票結果の正当性を検証可能とするプログラム、投票管理方法、端末、及び投票管理システム、を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一態様に係るプログラムは、第1端末に、第1端末と通信可能な第2端末から、第2端末のユーザによる少なくとも一つの投票先を示す投票先情報と少なくとも一つの投票先への投票数を示す投票数情報とを含む投票情報を取得する投票情報取得処理と、暗号化された少なくとも一つの投票先情報と暗号化された投票数情報とを含み、第1端末と第2端末による閾値署名がされた暗号化投票情報を生成する票生成処理と、を実行させる。
【0009】
さらに、上記態様に係るプログラムは、閾値署名の検証に用いられる公開鍵情報を生成する鍵情報生成処理と、公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、第1端末を通じて暗号化投票情報が記録されることを第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられた票管理情報を、第2端末のユーザが承認情報を更新可能に、第1端末及び第2端末と通信可能な分散台帳に記録する、票管理情報記録処理と、を実行させる。
【0010】
さらに、上記態様に係るプログラムは、第1端末に、票管理情報に基づいて、暗号化投票情報が分散台帳に記録されることを第2端末のユーザが承認している場合に、暗号化投票情報を分散台帳に記録する、投票処理と、暗号化されていない少なくとも一つの投票先情報を含み、票管理情報が第1端末のユーザによって記録されたことを検証可能に示し、乱数情報に基づく検証情報が付加された票点検情報を生成する票点検情報生成処理と、票点検情報を分散台帳に記録する、票点検情報記録処理と、を実行させる。
【0011】
この態様によれば、投票情報取得処理によって取得された第2端末のユーザによる投票情報は、投票処理により、暗号化投票情報として第1端末を通じて分散台帳に記録される。第2端末のユーザを示す情報が分散台帳に記録されることがないので、投票時点における投票者の秘匿化が可能となる。
【0012】
第2端末のユーザは、分散台帳上の承認情報を更新することが可能である。これにより、ユーザが、第1端末を通じて投票情報が記録されることを承認したか否かは、第三者が検証可能に分散台帳上に記録され得る。
【0013】
投票処理は、票管理情報に基づいて暗号化投票情報を分散台帳に記録する。暗号化投票情報は、投票先及び投票数が暗号化された情報である。票点検情報生成処理によって生成される票点検情報は、投票先情報が暗号化されずに記録された情報である。
【0014】
第三者は、票点検情報により、暗号化投票情報のうち、投票先についての情報を取得することができる。一方で、票点検情報には投票数情報含まれていないため、第三者は投票数の数値自体を取得することはできない。
【0015】
投票結果は、第2端末のユーザによる閾値署名がされている暗号化投票情報に基づいて定められる必要がある。第三者は、票点検情報が第1端末のユーザによって記録され、暗号化投票情報と共通の投票情報に基づく情報である場合に、票点検情報を用いて投票結果の正当性を確認可能である。
【0016】
票点検情報は、票管理情報の生成に用いられた乱数情報に基づく検証情報を含む。第三者は、分散台帳上に記録されている票点検情報の検証情報を取得する。第三者は、検証情報に基づいて、分散台帳上の票管理情報を参照する。第三者は、参照された票管理情報に対応する暗号化投票情報を票点検情報に対応付けることができる。
【0017】
票点検情報における投票先について、暗号化投票情報における暗号化された投票数を関連付けることができる。暗号化された投票数は、暗号化された状態において演算が可能な、例えば準同型暗号方式を用いて暗号化されている。このとき、暗号化された投票数を合計することで、ある投票先への投票数の合計である暗号化された得票数を算出可能である。この得票数と最終的な得票数を暗号化した数とを比較することで、第三者は選挙結果の正当性を検証できる。このとき、暗号化投票情報及び票点検情報のいずれにおいても、得票数は秘匿化されているので、検証の過程においても投票情報は十分に秘匿されている。
【0018】
上記態様に係るプログラムによる処理では、票生成処理は、第1端末に記録された第1秘密鍵情報と第2端末に記録された第2秘密鍵情報とに基づいて暗号化投票情報に閾値署名をし、鍵情報生成処理は、第1秘密鍵情報に基づく第1公開鍵情報と第2秘密鍵情報に基づく第2公開鍵情報を、第2端末との間で共有し、第1公開鍵情報と第2公開鍵情報とに基づいて、公開鍵情報を生成してもよい。
【0019】
この態様によれば、第1端末と第2端末との間で、第1秘密鍵及び第2秘密鍵をそれぞれの端末が共有することなく、閾値署名の検証に用いられる公開鍵情報を生成することができる。したがって、第1端末を通じた投票における第1秘密鍵及び第2秘密鍵の安全性が確保されつつ、投票を管理することが可能となる。
【0020】
上記態様において、ユーザの投票先情報、投票数情報及び投票情報は、それぞれ第1投票先情報、第1投票数情報及び第1投票情報であり、上記態様に係るプログラムによる処理では、投票情報取得処理は、第1端末と通信可能な第3端末から、第3端末のユーザによる少なくとも一つの投票先を示す第2投票先情報と少なくとも一つの投票先への投票数を示す第2投票数情報とを含む第2投票情報をさらに取得してもよい。さらに、この態様におけるプログラムによる処理は、第1端末に、第1投票情報及び第2投票情報に基づいて、少なくとも一つの投票先のそれぞれの得票数を算出する集票処理、をさらに実行させてもよい。
【0021】
この態様によれば、第1端末は、第2端末のユーザからの第1投票情報と第3端末のユーザからの第2投票情報とを取得する。第1端末は、第1投票情報に基づく暗号化投票情報と、第2投票情報に基づく暗号化投票情報をそれぞれ分散台帳に記録する。また、第1端末は、第1投票情報に基づく票点検情報と、第2投票情報に基づく票点検情報をそれぞれ分散台帳に記録する。これにより、各ユーザからの投票情報は、秘匿性が保たれつつ第三者が検証可能な状態で分散台帳に記録される。
【0022】
第1端末は、第1投票情報及び第2投票情報に基づいて、それぞれの投票先への得票数を算出する。これにより、第三者は、第1端末から得票数を取得し、それを暗号化した得票数と、暗号化投票情報に基づく暗号化得票数とを比較することで選挙結果の正当性を検証できる。
【0023】
上記態様に係るプログラムによる処理では、投票情報取得処理は、少なくとも一つの投票先として、第1投票先及び第2投票先を取得してもよい。
【0024】
この態様によれば、複数の投票先への投票情報を取得することが可能となる。例えば、第2端末のユーザが複数の投票権を有している場合においても、投票情報を十分に秘匿し、第三者による投票結果の正当性を検証可能とすることができる。
【0025】
本発明の他の態様に係るプログラムは、第2端末に、第2端末のユーザによる少なくとも一つの投票先を示す投票先情報と少なくとも一つの投票先への投票数を示す投票数情報とを含む投票情報を、第2端末と通信可能な第1端末に送信する投票情報送信処理を実行させる。
【0026】
さらに、上記態様に係るプログラムは、公開鍵情報及び乱数情報に基づいて暗号化された票記録情報と、暗号化された少なくとも一つの投票先情報と暗号化された投票数情報とを含み第1端末と第2端末による閾値署名がされた暗号化投票情報が第1端末を通じて記録されることを第2端末のユーザが承認したか否かを示す承認情報と、が対応付けられ、第1端末及び第2端末と通信可能な分散台帳に記録された票管理情報であって、閾値署名の検証に用いられる票管理情報を、票有効化情報を分散台帳に送信することにより更新する票管理情報更新処理を実行させる。
【0027】
この態様によれば、第2端末のユーザは、暗号化投票情報が第1端末を通じて記録されることへの承認を行ったことを、票有効化情報を送信することにより、分散台帳に記録することができる。分散台帳に当該承認が記録されることによって、第三者は、第1端末を通じた投票の正当性を検証できる。分散台帳に、第2端末のユーザからの票有効化情報に基づいて、当該承認が記録されることによって、第2端末のユーザによる二重投票がないことが検証される。
【0028】
上記他の態様に係るプログラムによる処理では、投票情報送信処理は、少なくとも一つの投票先として、第1投票先及び第2投票先を第1端末に送信してもよい。
【0029】
この態様によれば、第2端末のユーザが複数の投票権を有している場合においても、第三者は、第1端末を通じた投票の正当性を検証できる。
【0030】
本発明の他の態様に係る投票管理システムは、上記態様に係るプログラムが記憶された第1端末と、上記他の態様に係るプログラムが記憶された第2端末と、を備える。第1端末における票管理情報記録処理は、第1端末が、分散台帳上に設けられるスマートコントラクトに票管理情報を送信することを含み、第2端末における票管理情報更新処理は、第2端末が、スマートコントラクトに票有効化情報を送信することを含む。スマートコントラクトは、票管理情報を分散台帳に記録し、票有効化情報に基づいて、分散台帳に記録される票管理情報を更新し、票管理情報のうち、第1端末を通じて投票情報が記録されることが第2ユーザにより承認されたことを示す票管理情報である、承認済み票管理情報を生成する。
【0031】
この態様によれば、票管理情報の更新を分散台帳において記録することが可能となるため、票管理情報が改ざんされることを回避することができる。また、承認済み票管理情報を生成することによって、第三者が第1端末を通じた投票の正当性を検証可能となる。
【発明の効果】
【0032】
本発明によれば、投票情報を十分に秘匿しつつ、第三者による投票結果の正当性を検証可能とするプログラム、投票管理方法、端末、及び投票管理システムを提供することができる。
【図面の簡単な説明】
【0033】
図1】第1実施形態に係る投票管理システムのブロック図である。
図2】第1実施形態に係る投票管理装置の記憶部に記憶される情報の一例である。
図3】第1実施形態に係る投票情報を説明する図である。
図4】第1実施形態に係る暗号化投票情報の記録処理を説明する図である。
図5】第1実施形態に係る票管理情報及び票管理情報の更新を説明する図である。
図6】第1実施形態に係る票点検情報の記録処理を説明する図である。
図7】第1実施形態に係る暗号化投票情報の記録処理を説明する図である。
図8】第1実施形態に係る票点検情報の記録処理を説明する図である。
図9】第1実施形態に係る票管理情報の一例を説明する図である。
図10】第1実施形態に係る得票数を公表する開票情報の一例を説明する図である。
図11】第1実施形態に係る得票数の検証処理を説明するフローチャートである。
図12】第1実施形態に係る投票情報が、複数の投票先を含む場合を説明する図である。
図13】第2実施形態に係る投票管理システムのブロック図である。
図14】第2実施形態に係る得票数を公表する開票情報の一例を説明する図である。
図15】第2実施形態に係る票点検情報の記録処理を説明する図である。
図16】第2実施形態に係る票管理情報の一例を説明する図である。
図17】第2実施形態に係る得票数の検証処理を説明するフローチャートである。
図18】第3実施形態に係る投票管理システムのブロック図である。
図19】第3実施形態に係る投票情報の取得処理を説明する図である。
図20】第3実施形態に係る票管理情報の記録処理を説明する図である。
図21】第3実施形態に係る票管理情報及び票管理情報の更新を説明する図である。
図22】第3実施形態に係る票点検情報の記録処理を説明する図である。
【発明を実施するための形態】
【0034】
添付図面を参照して、本発明の好適な実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0035】
図1には、第1実施形態に係る投票管理システム10のブロック図が示される。投票管理システム10は、管理者端末100、有権者端末200a,200b,200c,200d、分散台帳300、及び検証者端末400を備える。なお、区別の必要がない場合、有権者端末200a,200b,200c,200dをまとめて有権者端末200という。
【0036】
第1実施形態では、一例として、投票管理システム10を用いて株主総会における議案に対する投票を行う場合について説明する。この場合、管理者端末100は、株主総会において証券代行業務を行い、投票を管理する信託銀行等の管理者によって用いられる端末である。有権者端末200a,200b,200c,200dは各株主が、それぞれの議決権を行使して投票を行うために用いる端末である。有権者端末は、さらに複数あってもよい。各有権者からの投票は分散台帳300に記録される。検証者端末400は、投票の検証あるいは監査を行う者が用いる端末である。検証者は、分散台帳300にアクセス可能な者であればよい。
【0037】
管理者端末100(第1端末)は、有権者端末200、及び分散台帳300とネットワークNを通じて通信可能に接続される。検証者端末400は、分散台帳300とネットワークNを通じて通信可能に接続される。ネットワークNは例えばインターネットである。
【0038】
管理者端末100は、所定のプログラムを実行することによって所定の処理を行うコンピュータを有する情報処理装置である。例えば管理者端末100は、サーバ、あるいはパーソナルコンピュータである。
【0039】
管理者端末100の各部について説明する。管理者端末100は、記憶部101、通信部102、投票情報取得部103、票生成部104、鍵情報生成部105、票管理情報記録部106、投票部107、票点検情報生成部108、票点検情報記録部109、及び集票部110を有する。管理者端末100の各部は、例えば、管理者端末100において、メモリ等の記憶領域を用いたり、記憶領域に格納されたプログラムをプロセッサが実行したりすることによって、実現することができる。
【0040】
記憶部101は、管理者端末100での処理に用いられる各種の情報を記憶する。記憶部101には、図2に示されるように、有権者情報と候補者情報が記憶される。
【0041】
有権者情報は、有権者名、有権者ID、及び保有票数の項目を有する。有権者IDは各有権者を識別するためのIDである。保有票数は、各有権者が例えば保有株数に応じて有する票数である。なお、説明のために有権者4名を示しているが、有権者の数はより多くともよい。
【0042】
議案情報は、議案名、議案ID、及び投票先IDの項目を有する。議案IDは各議案名の議案を識別するためのIDである。投票先IDは、各議案に対して賛成の場合の投票を示すIDと反対の場合を示すIDとを有する。例えば、議案ID「PR01」に賛成の場合の投票先IDは「PR01F」であり、反対の場合の投票先IDは「PR01A」である。
【0043】
投票管理システム10では、記憶部101に記憶された有権者情報を基に各有権者を管理する。有権者は、例えば管理者が管理するポータルサイトにおいて、本人認証を行い、有権者端末200及び管理者端末100を用いた投票が可能となるように管理される。本人認証を経るので、投票管理システム10における投票は記名投票となる。
【0044】
通信部102は、管理者端末100によるネットワークNを通じた有権者端末200及び分散台帳300を含む外部との間の通信を制御する。
【0045】
投票情報取得部103は、有権者端末200から、投票先を示す投票先ID(投票先情報)と、その投票先への投票数(投票数情報)とを含む投票情報を取得する。
【0046】
図3には、一例として、議案ID「PR01」に対する、図2の有権者情報における4名の有権者の投票情報が示される。投票情報は、有権者ID、投票先ID、及び投票数の項目を有する。図3には、各有権者の投票情報V1(第1投票情報),V2(第2投票情報),V3,V4が示される。区別の必要がないとき、投票情報V1からV4をまとめて投票情報Vとよぶ。
【0047】
例えば、有権者IDが「SH01」である有権者Aは、議案Aについて賛成であるとする。この場合、有権者Aは、自身の保有する株式に応じた保有票数「10」を投票先ID「PR01F」に投票する、という投票情報V1を、有権者Aの有権者端末200aを通じて自身の有権者ID「SH01」とともに、管理者端末100に送信する。他の有権者についても同様である。
【0048】
票生成部104は、投票先IDと投票数とが暗号化され、管理者端末100と有権者端末200による閾値署名がされた暗号化投票情報EV1(暗号化投票情報)を生成する。
図4には、暗号化投票情報EV1の例が示される。ここでは、各有権者の投票情報Vに基づく暗号化投票情報EV11,EV12,EV13,EV14が示される。区別の必要がないとき、各暗号化投票情報EV11からEV14をまとめて暗号化投票情報EV1とよぶ。暗号化投票情報EV1は管理者端末100の記憶部101に記録されている。
【0049】
票生成部104は、加算演算が可能な種類の暗号、すなわち暗号化された情報を加算した結果と暗号化前の情報を加算した結果を暗号化した情報とが一致する種類の暗号を用いて、投票情報を暗号化する。言い換えると、票生成部104は投票情報を、準同型暗号を用いて暗号化する。図4では、例えば、暗号化投票情報EV11において、投票先ID「PR01F」が暗号化されていることが「E(PR01F)」として示される。投票数についても同様である。票生成部104は、投票先IDの暗号化に所定の乱数情報である投票先乱数情報を用いて、投票先IDを暗号化する。
【0050】
投票数を暗号化するにあたっては、投票数をブラインド化した後に暗号化してもよい。ブラインド化とは、例えば投票数に乱数を乗じることにより、暗号化された投票数が判明する可能性を実用上極めて小さくするための手法である。
【0051】
ブラインド化は、以下の条件を満たすように行われる。(1)ブラインド化後の投票数の合計は、投票数の合計とブラインドに用いた乱数の合計になる。(2)ブラインド化後の投票数の合計から投票数の合計を取り出すことは可能である。(3)暗号化されたブラインド化後の投票数から、投票数やブラインドに用いた乱数を導出することはできない。
(4)暗号化されたブラインド化後の投票数の合計は、ブラインド化後の投票数の合計を暗号化したものと一致する。
【0052】
また、閾値署名とは、デジタル署名の一種である。閾値署名は、署名作成に参加した者のうち、ある一定の人数が合意をすると有効となるが、それ未満では無効となるデジタル署名である。第1実施形態においては、参加者が、有権者と管理者の2名かつ、合意に必要な人数が2名である場合の閾値署名を単に閾値署名と述べる。
【0053】
閾値署名がされたデータは、有権者と管理者の双方がその内容を確認したデータであることが、閾値署名によって示される。閾値署名には、管理者端末100と有権者端末200のそれぞれが乱数から生成した、管理者の秘密鍵SK0(第1秘密鍵情報)と有権者の秘密鍵SK1(第2秘密鍵情報)とが用いられる。例えば、図4の暗号化投票情報EV11において、秘密鍵SK0に基づく署名情報σ0,秘密鍵SK1に基づく署名情報σ1が暗号化投票情報EV11に付加されることで、署名がなされる。
【0054】
図4では、署名情報として「σ1,σ0(PK10)」と示されている。これは、暗号化投票情報EV11は、署名情報σ0,σ1によって署名され、その検証には公開鍵PK10が用いられることを示している。署名情報には、当該署名に用いられた公開鍵が含まれる。第1実施形態に係る閾値署名の過程については後述する。なお、独立に作成された2つの閾値署名の公開鍵が偶然一致する確率は、実用上極めて低いことが保証されている。
【0055】
暗号化投票情報EV11からEV14は、後述する投票部107によって、分散台帳300に記録される。なお、暗号化された投票先IDからは、暗号化前の投票先IDを知ることはできない。また、暗号化された投票数からも、暗号化前の投票数を知ることはできない。よって、暗号化投票情報EV11からEV14が分散台帳300に記録され、第三者が暗号化投票情報EV11からEV14を取得したとしても、第三者は投票の途中経過を知ることはできない。
【0056】
鍵情報生成部105は、閾値署名の検証に用いられる公開鍵情報を生成する。鍵情報生成部105は、秘密鍵SK0に基づく公開鍵PK0(第1公開鍵情報)と秘密鍵SK1に基づく公開鍵PK1(第2公開鍵情報)を、有権者端末200との間で共有する。鍵情報生成部105は、公開鍵PK0と公開鍵PK1に基づいて公開鍵PK10(公開鍵情報)を生成する。例えば、公開鍵PK10は、秘密鍵SK0を公開鍵PK1に乗算して生成される。
【0057】
票管理情報記録部106は、票管理情報を分散台帳300に記録する。票管理情報は、分散台帳300に設けられるスマートコントラクト301によって管理される。スマートコントラクト301は、分散台帳300上に記録されるプログラムが実行されることによって、当該プログラムに基づく処理が実行されることを規定する仕組みである。以降の実施形態において、スマートコントラクト301に規定される仕組みが実行されることを、スマートコントラクト301を主語として、例えば、「スマートコントラクト301は、所定の処理をする。」のように記載して説明する。
【0058】
票管理情報は、有権者が更新可能な情報であり、有権者が管理者端末100を通じて、暗号化投票情報EV1が分散台帳300に記録されることを承認したか否かを示す情報である。票管理情報は、公開鍵PK10のハッシュ値S1及び乱数r1に基づいて暗号化されたコミットメント(票点検情報)を含む。票管理情報には、コミットメント及びコミットメントに関連付けられたステータス(承認情報)が含まれる。
【0059】
第1実施形態において、コミットメントは例えばハッシュ値S、乱数r(乱数情報)を用いて、c(S,r)のように表現される。あるいは、j番目のコミットメントとして、cj(Sj,rj)のように表現される。
【0060】
図5には、分散台帳300に記録されるコミットメント及びコミットメントに関連付けられたステータスの一例が示される。票生成部104がそれぞれの有権者について暗号化投票情報EV1を生成すると、票管理情報記録部106によってコミットメントが生成される。このとき、票管理情報記録部106は、乱数rを有権者端末から取得する。コミットメントは、票管理情報記録部106によってスマートコントラクト301に送信される。コミットメントは、スマートコントラクト301によって管理され、分散台帳300上に設けられるデータ構造であるコミットメントプールに記録される。また、票管理情報記録部106は、当該コミットメントを有権者端末200に送信する。
【0061】
コミットメントプールにおけるコミットメントには、それぞれ承認に関するステータスが関連付けられる。ステータスには、各コミットメントに対応する有権者が管理者端末100による投票を承認したことを示す「承認済み」の情報又は承認がされていないことを示す「未承認」の情報が承認情報として記録される。
【0062】
コミットメントは、例えば、楕円曲線を用いて暗号化され得る。コミットメントからハッシュ値及び乱数要素を導出することはできない。コミットメントはいくつかの演算規則をみたす。コミットメントにおける演算では、ハッシュ値Sに基づいて、ハッシュ値を用いた部分の暗号化を解除することができる。すなわち、ハッシュ値Sに基づいて、コミットメントからハッシュ値を用いた部分の暗号化された成分を減算することができる。
【0063】
有権者は、管理者端末100から取得したコミットメントに基づいて、自身の投票情報に対応するコミットメントに関連付けられたステータスを「承認済み」とすることによって更新する。更新処理は、スマートコントラクト301によって行われる。図5では、4名の有権者によって承認される前後のコミットメント及びステータスが示される。
【0064】
投票部107は、票管理情報に基づいて、有権者が、暗号化投票情報EV1が分散台帳300に記録されることを承認している場合に、暗号化投票情報EV1を分散台帳300に記録する。記録された暗号化投票情報の一例は図4に示される。
【0065】
票点検情報生成部108は、図6に示されるように、投票先IDは暗号化せず、検証情報VRが付加された票点検情報EV2(票点検情報)を生成する。また、票点検情報EV2は、乱数情報及び署名情報を含む。票点検情報EV2は、暗号化投票情報EV1が、有権者と管理者によって共同で作成されたことを検証可能に示す情報であり、有権者端末200により生成される。
【0066】
図6では、各有権者の投票情報に基づく票点検情報EV21,EV22,EV23,EV24が示される。区別の必要がないとき、各票点検情報EV21からEV24をまとめて票点検情報EV2とよぶ。
【0067】
投票先乱数情報は、投票先IDの暗号化に用いられた乱数Rjである。乱数Rjは、有権者端末のそれぞれが生成した乱数に基づいて生成される乱数である。署名情報は、暗号化投票情報EV1と同様に、例えば、票点検情報EV21は、署名情報σ0,σ1によって署名され、その検証には公開鍵PK10が用いられることを示している。
【0068】
検証情報VRは、VR(Qj,Σ(j,rj))の形式で表現される情報である。ここで、Qjは、暗号化投票情報EV1に付加された署名情報に関連付けられた公開鍵である。jは、後述するコミットメントリストにおいてコミットメントを指し示す番号である。rjは、jで指し示されたコミットメントの乱数である。Σ(j,rj)は、コミットメントリスト上のコミットメントに基づいて生成される情報である。Σ(j,rj)は、jとrjを用いて生成されるが、Σ(j,rj)からjまたはrjを導出することはできない。また、有効なΣ(j,rj)を作成するためには、コミットメントリスト上のコミットメントに紐付いたjとrjの情報が必要である。コミットメントリストと検証情報VRの生成については後述する。
【0069】
検証者端末400を用いて、検証情報VRに基づく検証が行われる。検証は、検証者端末400が、票管理情報及び検証情報VR(Qj,Σ(j,rj))に基づく演算を行うことによって行われる。検証者端末400によって、検証情報VR(Qj,Σ(j,rj))が含まれる票点検情報EV2に対応する暗号化投票情報EV1が、有権者と管理者によって共同で作成されたことが検証される。
【0070】
以上の特徴により、検証者端末400を用いて、第三者による票の検証が可能となる。
検証処理については後述する。
【0071】
票点検情報記録部109は、例えば、集票期間が終了した際に、図6に示されるように各有権者の票点検情報EV2を分散台帳300に記録する。
【0072】
集票部110は、有権者端末200を通じて取得した各有権者の投票情報に基づいて、投票先それぞれの得票数を算出する。すなわち、各投票先に投票された投票数を合計する。集票部110は、各投票先についての得票数を、集票結果としてネットワークNを通じて公表する。
【0073】
次に、有権者端末200の各部について説明する。ここでは有権者端末200aの各部について説明するが、有権者端末200b,200c,200d及び他の有権者端末についても同様である。有権者端末200は、記憶部201、通信部202、投票情報送信部203、及び票管理情報更新部204を備える。
【0074】
有権者端末200(第2端末)は、有権者が利用する電子機器であり、ここでは、スマートフォンであるとする。なお、有権者端末200は、タブレット端末やパーソナルコンピュータであってもよい。有権者端末200の各部の機能は、有権者端末200に記録されるプログラムによって実現される。
【0075】
記憶部201は、有権者端末200での処理に用いられる各種の情報を記憶する。通信部202は、ネットワークNを通じた管理者端末100及び分散台帳300を含む外部との間の通信を制御する。
【0076】
投票情報送信部203は、有権者から、投票情報の入力を受け付け、受け付けた投票情報を管理者端末100に送信する。
【0077】
票管理情報更新部204は、分散台帳300に票管理情報を送信し、分散台帳300のスマートコントラクト301のコミットメントを更新する。これにより、有権者は、投票情報Vが管理者端末100を通じて分散台帳300に記録されることを承認できる。
【0078】
分散台帳300は、分散台帳300に記録される情報及び記録の履歴を複数の端末が共有することが可能なシステムである。分散台帳300は、ブロックチェーンネットワークと呼ぶこともできる。分散台帳300では、複数の台帳が履歴を保持した状態で情報が追加されるので、履歴の改ざんが困難であるという特徴がある。
【0079】
第1実施形態に係る分散台帳300は、アクセスが秘匿化されておらず公開された分散台帳である。公開された分散台帳としては、一般に用いられている分散台帳を用いることができる。別途秘匿化された分散台帳を設ける必要がないので、管理者の負担が軽減され、管理者の利便性が向上し得る。
【0080】
分散台帳300は、スマートコントラクト301を有する。スマートコントラクト301は、コミットメントプールを管理する。
【0081】
スマートコントラクト301は、管理者端末100からコミットメントが送信された場合、コミットメントプールに新たなコミットメントを追加する。スマートコントラクト301は、コミットメントを取得した場合、管理者端末100によって予め付与された「番号」にコミットメントを関連付け、「ステータス」を「未承認」として、コミットメントプールにコミットメントを追加する。
【0082】
スマートコントラクト301は、スマートコントラクト301にアクセスする端末が、コミットメントプールのコミットメントに関する情報を取得できるようにする。
【0083】
スマートコントラクト301は、有権者端末200からコミットメントが送信されると、当該コミットメントに関連付けられるステータスを「未承認」から「承認済み」に更新する。
【0084】
スマートコントラクト301は、投票期間が終了すると、管理者端末100からのリクエストにより、ステータスが「承認済み」となっているコミットメントを抽出し、コミットメントリストを生成する。コミットメントリストは、検証者端末400が利用可能である。また、スマートコントラクト301にアクセス可能な端末であれば、コミットメントリストを取得可能である。
【0085】
検証者端末400は、投票の検証を行う検証者が利用する端末であり、ここでは、パーソナルコンピュータであるとする。検証者端末400は、記憶部401、通信部402、検証情報取得部403、及び検証部404を有する。なお、検証者端末400は、スマートフォンやタブレット端末であってもよい。検証者端末400の各部の機能は、検証者端末400に記録されるプログラムによって実現される。
【0086】
記憶部401は、検証者端末400での処理に用いられる各種の情報を記憶する。通信部402は、ネットワークNを通じた分散台帳300を含む外部との間の通信を制御する。
【0087】
検証情報取得部403は、管理者端末100、及び分散台帳300のそれぞれから、投票結果の検証に必要な情報を取得する。検証情報取得部403は、具体的には、管理者端末100から暗号化得票数を取得し、スマートコントラクト301からコミットメントリストを取得する。
【0088】
検証部404は、検証情報取得部403が取得した情報に基づいて、投票結果の検証処理を行う。検証処理の詳細については後述する。
【0089】
図7を参照して投票管理システム10の動作について説明する。図7には、有権者Aが有権者端末200aによって送信した投票情報が暗号化投票情報EV11として分散台帳300に記録される処理のフローチャートが示される。
【0090】
ステップS101において、投票情報送信部203は、投票情報V1を管理者端末100に送信する。また、このとき、投票情報送信部203は、投票先乱数情報である乱数R1を生成するための乱数を管理者端末100に送信する。なお、投票情報V1は、票生成部104が、例えば投票先を暗号化するために必要な情報が含まれるように生成されてもよい。
【0091】
ステップS102において、票生成部104は、投票情報V1を暗号化し、投票先及び投票数が暗号化された暗号化投票情報EV11を生成する。また、投票情報取得部103が、投票情報V1を記憶部101に記憶する。ここで、票生成部104は、投票情報V1に含まれ、例えば投票先を暗号化するために必要な情報に基づいて、暗号化投票情報EV11を生成する。
【0092】
ステップS103において、票生成部104は、暗号化投票情報EV11を有権者端末200aに送信する。
【0093】
ステップS104において、投票情報送信部203は、有権者端末200aの秘密鍵SK1に基づく署名情報σ1を生成する。ステップS105において、票生成部104は、管理者端末100の秘密鍵SK0に基づく署名情報σ0を生成する。
【0094】
ステップS106において、鍵情報生成部105は、管理者端末100と有権者端末200aとの間で、公開鍵PK1及び公開鍵PK0を共有する。また、鍵情報生成部105は、管理者端末100と有権者端末200aとの間で、署名情報σ1及び署名情報σ0を共有する。
【0095】
ステップS107において、投票情報送信部203は、公開鍵PK0に基づいて、署名情報σ0の正当性を確認する。ステップS108において、票生成部104は、公開鍵PK1に基づいて、署名情報σ1の正当性を確認する。
【0096】
ステップS109において、投票情報送信部203は、署名情報σ1を用いて、暗号化投票情報EV11に署名する。
【0097】
ステップS1010において、投票情報送信部203は、署名情報σ1により署名された暗号化投票情報EV11(σ1)を、管理者端末100に送信する。ここで「(σ1)」とは。暗号化投票情報EV11が署名情報σ1によって署名されていることを示す。
【0098】
ステップS1011において、票生成部104は、署名情報σ0を用いて、暗号化投票情報EV11(σ1)に署名する。ステップS1012において、鍵情報生成部105は、公開鍵PK1及び秘密鍵SK0を用いて、公開鍵PK10を生成する。
【0099】
ステップS1013において、票管理情報記録部106は、公開鍵PK10のハッシュ値S1を算出する。また、票管理情報記録部106は、乱数r1を生成する。
【0100】
ステップS1014において、票管理情報記録部106は、ハッシュ値S1及び乱数r1に基づいて、コミットメントc1(S1,r1)を生成する。
【0101】
ステップ1015において、票管理情報記録部106は、コミットメントc1(S1,r1)を分散台帳300のスマートコントラクト301に送信する。
【0102】
ステップS1016において、票管理情報記録部106は、コミットメントc1(S1,r1)を有権者端末200に送信する。
【0103】
ステップS1017において、スマートコントラクト301は、コミットメントc1(S1,r1)をコミットメントプールに追加する。
【0104】
ステップS1018において、票管理情報更新部204は、票有効化情報として、コミットメントc1(S1,r1)をスマートコントラクト301に送信する。
【0105】
ステップS1019において、スマートコントラクト301は、コミットメントc1(S1,r1)に関連付けられたステータスを承認済みとする処理を行う。このようにすることで、有権者は、自身の票に関連付けられたコミットメントc1(S1,r1)を承認する。なお、各有権者は、コミットメントプールのコミットメントのうち、自身の票に関連付けられていないコミットメントを承認することはできない。
【0106】
ステップS1020において、管理者端末100は分散台帳300からコミットメントプールを取得する。コミットメントプールにおいて、コミットメントc1(S1,r1)に関連付けられたステータスが、「承認済み」となっているため、ステップS1021において、投票部107は、暗号化投票情報EV11(σ1,σ0)を分散台帳300に送信し、記録する。
【0107】
ここまでの処理により、暗号化投票情報EV11が、署名情報σ1,σ0によって閾値署名されて分散台帳300に記録される。
【0108】
図8を参照して、投票期間が終了した後の開票処理及び検証処理について説明する。ここでは、図7のように投票情報Vを用いて各有権者を区別せずに説明する。
【0109】
ステップS201において、票点検情報生成部108は、スマートコントラクト301に、コミットメントリストの生成のリクエストを送信する。
【0110】
ステップS202において、スマートコントラクト301は、コミットメントプールに基づいて、ステータスが承認済みであるコミットメントを抽出し、コミットメントリストを生成する。コミットメントリストの一例が、図9に示される。
【0111】
ステップS203において、票点検情報生成部108は、スマートコントラクト301からコミットメントリストを取得する。
【0112】
ステップS204において、票点検情報生成部108は、図9に示されるように、各コミットメントの生成に用いられる公開鍵Qjに基づいて、検証情報VR(Qj,Σ(j,rj))を生成する。このとき、Σ(j,rj)は、公開鍵Qjに基づいて生成され、各コミットメントのSjに対応する値を、コミットメントから減算することによって生成される。
【0113】
ステップS205において、票点検情報生成部108は、検証情報VR(Qj,Σ(j,rj))が付与された票点検情報EV2を分散台帳300に送信し、記録する。
【0114】
ステップS206において、集票部110は、記憶部101に記憶された投票情報Vに基づいて、各投票先への投票数を集計する。
【0115】
ステップS207において、集票部110は、集票結果を、ネットワークNを通じて公表する。集票結果の一例は、図10に示される。集票結果は各議案について、それぞれの投票先IDごとの得票数として公開される。図10では、議案ID「PR01」の議案について、賛成を示す投票先ID「PR01F」の得票数が公表得票数「40」として公表される。
【0116】
ステップS208において、検証情報取得部403は、スマートコントラクト301にコミットメントリストを要求する。
【0117】
ステップS209において、スマートコントラクト301は、検証者端末400にコミットメントリストを送信する。
【0118】
ステップS210において、検証情報取得部403は、暗号化投票情報EV1及び票点検情報EV2を、分散台帳300から取得する。
【0119】
ステップS211において、検証部404は検証処理を行う。
【0120】
図11を参照して、検証処理の詳細について説明する。図11には、検証部404における処理のフローチャートが示される。
【0121】
ステップS301において、検証部404は、公開鍵に基づいて暗号化投票情報EV1に当該暗号化投票情報EV1に対応する票点検情報EV2を対応づける。具体的には、共通の公開鍵を含む暗号化投票情報EV1と票点検情報EV2を対応付ける。
【0122】
ステップS302において、検証部404は、コミットメントリストに含まれるコミットメントの個数N1と対応づけられた暗号化投票情報EV1と票点検情報EV2の組の個数N2とを比較する。
【0123】
ステップS303において、検証部404は、個数N1と個数N2とが一致するか否かを判定する。一致しない場合、検証部404は、ステップS309において、投票において不正があったと判断する。この場合の不正は、有権者による二重投票又は管理者による、票の意図的な没収あるいは追加である。
【0124】
ステップS304において、検証部404は、暗号化投票情報EV1及び票点検情報EV2に含まれる署名情報が有効であるか否かを判断する。署名情報が有効でない場合、検証部404は、ステップS311において、投票において不正があったと判断する。この場合の不正は、管理者による票の書き換えである。
【0125】
ステップS305において、検証部404は、コミットメントリストの各コミットメントについて、公開鍵Qjに基づいて、Σ(j,rj)が正当であるか否かを判断する。ここで、正当であるとは、票が有権者からの投票であることを意味する。Σ(j,rj)が正当でない場合、検証部404は、ステップS309において、投票において不正があったと判断する。この場合の不正は、管理者による票の意図的な没収と追加である。
【0126】
ステップS306において、検証部404は、取得した暗号化投票情報EV1に記録された投票先は、票点検情報EV2の投票先に対応するか否かを判断する。この判断は、票点検情報EV2の投票先が、票点検情報EV2に含まれ、当該投票先に対応する乱数情報に基づいて行われる。一致しない場合、検証部404は、ステップS309において、投票において不正があったと判断する。この場合の不正は、管理者による票の投票先の書き換えである。
【0127】
ステップS307において、検証部404は、暗号化投票情報EV1に基づく暗号化された投票数を投票先ごとに合計した値と、集票部110がネットワークNを通じて公表した集票結果を暗号化した値とが一致するか否かを判断する。一致しない場合、検証部404は、ステップS309において、集計作業において不正があったと判断する。
【0128】
ステップS308において、検証部404は、投票において不正がなかったと判断する。
【0129】
有権者が自身の投票情報に対応するコミットメントに関連付けられたステータスを「承認済み」とすることによって、分散台帳300上に当該更新を行った有権者の情報が記録される。コミットメントリストは、ステータスが「承認済み」となっているコミットメントをコミットメントプールから抽出したものである。また、有効なΣ(j,rj)を作成するためには、コミットメントリスト上のコミットメントに紐付いたjとrjの情報が必要である。したがって、検証情報VR(Qj,Σ(j,rj))が正当であることは、当該投票が、ある有権者による「承認済み」のコミットメントに対応していることを意味する。ゆえに、検証者は、検証情報VR(Qj,Σ(j,rj))を確かめることにより、当該暗号化投票情報EV1及び票点検情報EV2が、ある有権者により作成された投票であることを確認することができる。
【0130】
一方、暗号化投票情報EV1及び票点検情報EV2の分散台帳300上への記録は、管理者端末100を通じて、管理者により行われる。そのため、第三者は、暗号化投票情報EV1、票点検情報EV2、及び公開鍵Qjがどの特定の有権者に紐付いているかを推測できない。さらに、Σ(j,rj)からjまたはrjを導出することもできない。ゆえに、第三者は、検証情報VR(Qj,Σ(j,rj))から、当該暗号化投票情報EV1及び票点検情報EV2がどの有権者により作成されたものであるかを判別することはできない。以上により、分散台帳300上に記録された特定の有権者の情報と、暗号化投票情報EV1及び票点検情報EV2とが結び付けられることなく、票の正当性の検証が行われる。
【0131】
また、検証者端末400による検証処理では、暗号化された票数に基づいて検証が行われる。したがって、検証者は、各投票先への投票数そのものを取得することがないため、有権者の投票情報は十分に秘匿された状態が保たれている。このように、投票管理システム10では、投票情報を十分に秘匿しつつ、第三者による投票結果の正当性の検証が可能となる。
【0132】
以上説明した実施形態では、有権者は、1つの投票先を有する投票情報によって投票を行った。投票情報に含まれる投票先は1つに限られず、図12に示されるように、複数あってもよい。
【0133】
例えば、図12における有権者Cは、議案「PR02」について、自身が保有する票を分け、賛成と反対の両方に同数の票を投票するような投票情報を用いて投票を行ってもよい。この場合、有権者Cは、賛成と反対の両方の立場に立つことを表明できる。したがって、有権者の投票行為による意思表示の自由度が高くなる。
【0134】
また、図12における有権者Dのように、1つの投票情報に複数の議案のそれぞれに対する投票先IDが含まれるような投票情報を用いて投票を行ってもよい。この場合、有権者Dは、1つの投票情報を作成するのみで投票を行えるようになるので、有権者の利便性が向上する。
【0135】
また、以上説明した実施形態では、株主総会における議決権の投票を例に投票管理システム10を説明したが、投票管理システム10は、他の投票に用いることができる。投票が必要となる投票の例としては、複数の投票候補の中から1つの候補を選択することで行われる選挙における投票がある。
【0136】
第2実施形態について説明する。第2実施形態以降では第1実施形態と共通の事柄についての記述を省略し、異なる点についてのみ説明する。特に、同様の構成による同様の作用効果については実施形態ごとには逐次言及しない。
【0137】
第2実施形態の投票管理システム10Aでは、第1実施形態の投票管理システム10におけるように集票結果が得票数として公開される形態ではなく、集票結果の順位のみが集票結果として公開される。
【0138】
図13には、第2実施形態に係る投票管理システム10Aのブロック図が示される。投票管理システム10Aは、管理者端末100A、有権者端末200a,200b,200c,200d、分散台帳300、及び検証者端末400を備える。管理者端末100A(第1端末)は、有権者端末200及び分散台帳300とネットワークNを通じて通信可能に接続される。
【0139】
管理者端末100Aは、所定のプログラムを実行することによって所定の処理を行うコンピュータを有する情報処理装置である。例えば管理者端末100Aは、サーバ、あるいはパーソナルコンピュータである。
【0140】
管理者端末100Aの各部について説明する。管理者端末100Aは、記憶部101、通信部102、投票情報取得部103、票生成部104、鍵情報生成部105、票管理情報記録部106、投票部107、票点検情報生成部108A、票点検情報記録部109、集票部110、証明情報生成部111、得票数暗号化部112、順位情報生成部113、及び順位情報記録部114を有する。管理者端末100Aの各部は、例えば、管理者端末100Aにおいて、メモリ等の記憶領域を用いたり、記憶領域に格納されたプログラムをプロセッサが実行したりすることによって、実現することができる。
【0141】
記憶部101、通信部102、投票情報取得部103、票生成部104、鍵情報生成部105、票管理情報記録部106、投票部107、票点検情報記録部109、及び集票部110は、第1実施形態に係る管理者端末100の各部と同様の機能を有する。ただし、第2実施形態においては、集票部110は、得票数を含む集票結果の公表は行わず、順位情報を含む集票結果の公表を行う。票点検情報生成部108Aは、検証情報VRに加えて、さらに票証明情報が付加された票点検情報EV2を生成する点が票点検情報生成部108と異なり、他の点は共通する。
【0142】
証明情報生成部111は、暗号化投票情報EV1に、暗号化された投票数情報が含まれることを証明する票証明情報を生成する。票証明情報は、投票部107が暗号化投票情報EV1を分散台帳300に記録する際に、暗号化投票情報EV1に含まれて分散台帳300に記録される。票証明情報は、順位のみが集票結果として公表される場合であったとしても、その順位は得票数情報に基づくものであることを証明するために用いられる。
【0143】
証明情報生成部111は、投票先それぞれの得票数又は暗号化された得票数に基づいて、順位情報生成部113が生成した順位情報を証明する順位証明情報(第2証明情報)を生成する。順位証明情報は、公表される順位そのものの正しさを証明するために用いられる。票証明情報及び順位証明情報の詳細については後述する。
【0144】
得票数暗号化部112は、集票部110が算出した投票先それぞれの得票数に基づいて、それぞれの得票数が暗号化された暗号化得票数情報を生成する。
【0145】
順位情報生成部113は、集票部110が算出した投票先それぞれの得票数に基づいて、得票数の順位を示す順位情報を生成する。順位情報は、例えば、複数の投票先X,Y,Zがある場合に、得票数の順位を、「1位:Y,2位:X,3位:Z」のように示す情報である。また、順位情報は、各投票先の勝敗を示すことに加えて、同率の投票先がある引き分けの場合を示すことができる。例えば、得票数の順位を、「1位:Y,2位:X,2位:Z」のように示す情報であってもよい。
【0146】
順位情報記録部114は、順位情報生成部113が生成した順位情報と、証明情報生成部111が生成した順位証明情報とを分散台帳300に記録する。順位情報記録部114が順位情報及び順位証明情報を記録するタイミングは、投票期間の終了後である。
【0147】
図14を参照して順位情報の生成及び順位の公表の概要を説明する。図14(a)に示されるように、投票管理システム10Aにおいても、図3の場合と同様に、管理者端末100が、投票情報V1,V2,V3,V4を有権者A,B,C,Dからそれぞれ取得する。次に、集票部110及び順位情報生成部113によって、得票数の算出及び順位情報の生成が行われる。集票部110は、図14(b)に示されるような集票結果を公表する。図14(b)の集票結果は、図10の集票結果のような「公表得票数」を含まず、「公表順位」を含む。図14(b)では、例えば、議案ID「PR01」の議案について、賛成を示す投票先ID「PR01F」の順位が反対を示す投票先ID「PR01A」の順位より高いことが示される。
【0148】
票証明情報及び順位証明情報の詳細について説明する。票証明情報は暗号化投票情報EV1に、暗号化された投票数情報が含まれることを証明する情報である。ここで、暗号化投票情報EV1における投票数は、ブラインド化された後に暗号化されるとする。ブラインド化とは、第1実施形態にて説明したように、例えば投票数に乱数を乗じることにより、暗号化された投票数が判明する可能性を実用上極めて小さくするための手法である。
【0149】
暗号化投票情報EV1は、投票部107によって分散台帳300に記録される。このとき、暗号化された投票数は、ブラインド化された投票数「v」に、規約された楕円暗号曲線上の点「g」を乗じて、「vg」と表現される。ここで、vは256ビットの2進数で表記されるスカラーであり、以下の情報を含む。vのビット値は、(i)下から128ビットはブラインド化のための「乱数」、(ii)その上の32ビットは「0」、(iii)その上の64ビットが「投票数」、(iv)その上の32ビットは「0」である。なお、本実施形態では、256ビットの楕円曲線暗号を一例として説明するが、他のビット数の楕円曲線暗号を同様に用いることが可能である。具体的には、vは以下の数式(1)で表される。
【0150】
【数1】
【0151】
ここで、数式(1)中の「x」,「y」は、0又は1である。暗号化投票情報EV1は「vg」として暗号化された状態で記録されるため、分散台帳300上の暗号化投票情報EV1を参照しても、「v」そのものを確認することはできない。つまり、暗号化投票情報EV1に、暗号化された投票数が含まれるか否かは、暗号化投票情報EV1から判断できない。したがって、暗号化投票情報EV1からは投票数そのものを知ることはできない。また、vは数式(1)において、説明の都合上、2+30+64+2+30+128 のようにビットが区切られて説明されるが、投票の実施方式に合わせてvの形式を調整することが可能である。例えば、2+14+32+2+14+192のようにビットが区切られてもよい。なお、ビットの区切り方を設定する場合、「乱数」部分が128ビット以上のように十分長く、全探索で破られないようになっていること、「投票数」の部分について、票の重みの最大値(票数の最大値)が264未満であること、数式(1)の(i),(ii)で示される2箇所の30ビットの部分について、及び記録される票そのものの個数が230未満であることが満たされるように注意する必要がある。
【0152】
票証明情報は、レンジプルーフ(Range proof)として生成される。レンジプルーフの生成には、既知の一般的な生成手法を使用することができる。レンジプルーフは、ある数「α」の上の数桁が0であることを「αg」に基づいて検証可能に証明する情報である。第1証明情報は(i)「v」の上から32桁が0であることを証明する証明情報Ra、及び(ii)「22+30+64v」の上から32桁が0であることを証明する証明情報Rbを含む。証明情報Ra,Rbはいずれもレンジプルーフである。証明情報Raは投票数のビットより上の32ビットが0であることを証明し、証明情報Rbは乱数と投票数の間の32ビットが0であることを証明する。第1証明情報によって、暗号化投票情報EV1が投票数を暗号化したものであることが証明される。
【0153】
順位証明情報について説明する。順位証明情報は、暗号化得票数情報に基づいて、順位情報を証明する情報である。暗号化得票数情報が暗号化される前の、ある投票先への得票数情報Vは以下の数式で表される。
【0154】
【数2】
【0155】
なお、数式(1)と同様に「x」,「y」を用いているが、これは当該ビットの数が0又は1であることを示す意味でのみ用いられており、数式(2)の「x」,「y」が数式(1)の「x」,「y」と同じであることを意味するものではない。以降の説明においても「x」,「y」は、当該ビットの数が0又は1であることを示す意味で使用される。
【0156】
数式(2)において、投票数の和の部分が、ある投票先への具体的な得票数となる。また、Vと異なる投票先に対する得票数情報をWとする。得票数暗号化部112は、集票部110が生成した得票数情報にgを乗じて、例えば「Vg」、「Wg」のように暗号化得票数情報を生成する。暗号化得票数情報からは得票数そのものを知ることはできない。
【0157】
順位情報生成部113は、得票数情報に基づいて得票数の順位を定める。ここでは、2つの得票数情報VとWに基づく得票数の順位付けについて説明するが、2つの得票数の大小及び引き分け(順位)を決定可能であれば、その方法を繰り返すことで、複数の得票数情報に基づく得票数の順位付けが可能である。
【0158】
順位情報生成部113は、数式(3)で表される、得票数情報W,数式(4)で表される、得票数情報Vに2128+30を加えた数に基づいて、数式(5)に示される結果を得る演算を行う。なお、ここではWの得票数(第1得票数)がVの得票数(第2得票数)より大きいと仮定する。
【0159】
【数3】
【0160】
ここで、得票数情報Vに2128+30を加えた数は、乱数の和のビットより1つ上のビットの値が「1」である。よって、数式(5)で示される演算を行う場合、得票数の差のビットの部分より下の2+30+128ビットの演算によって、ビット値の繰り下がりが生じる。繰り下がりは、第1得票数が第2得票数より大きい場合は、得票数のビット(30+64ビット)内で打ち消され、数式(5)における(iii)上位2ビットの値には影響を与えない。
【0161】
順位証明情報は「W-V-2128+30」の上から2桁のビット値が0であることを証明するレンジプルーフとして、証明情報生成部111によって生成される。具体的には、順位証明情報は「W-V-2128+30」が暗号化された「Wg-Vg-2128+30g」に基づいて、「W-V-2128+30」の上から2桁のビット値が0であることを証明可能とする情報である。「W-V-2128+30」の上から2桁のビット値が0であることは、「第1得票数が第2得票数より大きい」こと、つまり、順位は「Wの投票先の方がVの投票先より上である」ことを意味する。このことがレンジプルーフによって証明されるので、投票数を公表することなく、順位のみを公表し、かつ集計に不正がないことが証明可能となる。
【0162】
順位情報記録部114は、順位情報を分散台帳300に記録する。順位情報は、例えば、「得票数は、Wの投票先の方がVの投票先より多い」ことを示すような情報である。順位情報記録部114は、この順位に対応する順位証明情報を分散台帳300に記録する。記録された順位証明情報は後述の検証処理において使用される。順位の検証に必要となる、得票数の差が暗号化された情報(例えば、「Wg-Vg-2128+30g」)は、分散台帳300に記録される暗号化された投票数に基づいて、検証処理を行う検証者端末400において生成される。
【0163】
上述の方法によって、得票数の大小を示す順位情報を証明可能に生成、記録することが可能となった。次に得票数が同数、つまり引き分けの場合について説明する。上述の方法において第1得票数と第2得票数とが同数である場合、数式(5)で示される演算における繰り下がりは、得票数のビット(30+64ビット)内で打ち消されず、数式(5)の(iii)上位2ビットの値に影響を与えてしまう。したがって、「W-V-2128+30」の上から2桁のビット値が0であることは証明できず、結果として引き分けの場合を証明することができない。よって、引き分けの証明には勝敗の証明とは異なる手法を用いる必要がある。
【0164】
引き分けの場合、順位情報生成部113は、数式(6)で表される得票数情報Wに2128+30を加えた数,数式(6)で表される得票数情報Vに基づいて、数式(7)に示される結果を得る演算を行う。
【0165】
【数4】
【0166】
引き分けの場合、第1得票数と第2得票数は同じであるので、得票数の差は0となる。ここで、得票数情報Wに2128+30を加えた数は、乱数の和より1つ上のビットの値が「1」である。よって、数式(8)で示される演算を行う場合、乱数の差を算出する演算において、繰り下がりが生じると、その繰り下がりは、乱数の和の上の1つ上のビットの値で打ち消される。したがって、数式(8)における上から2+30+64桁のビット値は0となる。
【0167】
この場合の順位証明情報は「W+2128+30-V」の上から2+30+64桁が0であることを証明するレンジプルーフとして、証明情報生成部111によって生成される。具体的には、順位証明情報は「W+2128+30-V」が暗号化された「Wg+2128+30g-Vg」に基づいて、「W+2128+30-V」の上から2+30+64桁のビット値が0であることを証明可能とする情報である。「W+2128+30-V」の上から2+30+64桁のビット値が0であることは、「第1得票数と第2得票数とが等しい」こと、つまり、順位は「Wの投票先とVの投票先とで引き分けである」ことを意味する。このことがレンジプルーフによって証明されるので、投票数を公表することなく、順位のみを公表し、かつ集計に不正がないことが証明可能となる。
【0168】
「W+2128+30-V」の上から2+30+64桁のビット値が0であることを証明する順位証明情報を第1順位証明情報とした時、引き分けの場合の順位証明情報には、VとWが入れ替えられ「V+2128+30-W」の上から2+30+64桁のビット値が0であることを証明するレンジプルーフが第2順位証明情報として用いられてもよい。得票数情報V,Wにおける得票数は同じであるので、上述の理由と同様の理由によって引き分けが証明される。また、第1順位証明情報と第2順位証明情報の両方をあわせて、順位証明情報としてもよい。
【0169】
順位情報記録部114は、順位情報を分散台帳300に記録する。この場合の順位情報は、例えば、「得票数は、Wの投票先とVの投票先とで同数である」ことを示すような情報である。順位情報記録部114は、この順位に対応する順位証明情報を分散台帳300に記録する。記録された順位証明情報は後述の検証処理において使用される。順位の検証に必要となる、得票数の差が暗号化された情報(例えば、「Wg+2128+30g-Vg」及び「Vg+2128+30g-Wg」の少なくとも1つ)は、分散台帳300に記録される暗号化された投票数に基づいて、検証処理を行う検証者端末400において生成される。
【0170】
投票管理システム10Aでは、集票部110によって得票数の算出が行われるので、順位情報生成部113は、暗号化されていない得票数に基づいて順位情報を生成することができる。よって、順位情報生成部113は、得票数の大小を示す順位情報を生成すべきか、得票数が引き分けであることを示す順位情報を生成すべきかを、得票数に基づく演算を行って判断することができる。証明情報生成部111は、判断結果に応じて、順位証明情報を生成する。
【0171】
図15,16を参照して、投票期間が終了した後の投票管理システム10Aにおける開票処理及び検証処理について説明する。ここでは各有権者を区別せずに説明する。各有権者の暗号化投票情報EV1が、閾値署名されて分散台帳300に記録されるまでの手順は、第1実施形態における手順と同様である。
【0172】
ステップS401において、票点検情報生成部108Aは、スマートコントラクト301に、コミットメントリストの生成のリクエストを送信する。ステップS402において、スマートコントラクト301は、コミットメントプールに基づいて、ステータスが承認済みであるコミットメントを抽出し、コミットメントリストを生成する。ステップS403において、票点検情報生成部108Aは、スマートコントラクト301からコミットメントリストを取得する。
【0173】
ステップS404において、票点検情報生成部108Aは、図16に示されるように、各コミットメントの生成に用いられる公開鍵Qjに基づいて、検証情報VR(Qj,Σ(j,rj))を生成する。このとき、Σ(j,rj)は、公開鍵Qjに基づいて生成され、各コミットメントのSjに対応する値を、コミットメントから減算することによって生成される。
【0174】
ステップS405において、証明情報生成部111は、得票数に基づいて、票証明情報Ra,Rbを生成する。
【0175】
ステップS406において、票点検情報生成部108Aは、図16に示されるように、検証情報VR(Qj,Σ(j,rj))及び票証明情報Raj,Rbjが付与された票点検情報EV2を生成する。
【0176】
ステップS407において、票点検情報記録部109は、票点検情報EV2を分散台帳300に送信し、記録する。
【0177】
ステップS408において、集票部110は、記憶部101に記憶された投票情報Vに基づいて、各投票先への投票数を集計し、得票数を算出する。
【0178】
ステップS409において、順位情報生成部113は、得票数に基づいて順位情報を生成する。
【0179】
ステップS410において、証明情報生成部111は、順位情報を証明する順位証明情報を生成する。
【0180】
ステップS411において、順位情報記録部114は、順位情報及び順位証明情報を分散台帳300に送信し、記録する。
【0181】
ステップS412において、集票部110は、集票結果を、ネットワークNを通じて公表する。集票結果の一例は、図14(b)を参照して説明したとおりである。
【0182】
ステップS413において、検証情報取得部403は、スマートコントラクト301にコミットメントリストを要求する。ステップS414において、スマートコントラクト301は、検証者端末400にコミットメントリストを送信する。ステップS415において、検証情報取得部403は、暗号化投票情報EV1、票点検情報EV2、及び順位証明情報を、分散台帳300から取得する。
【0183】
ステップS416において、検証部404は検証処理を行う。
【0184】
図17を参照して、検証処理の詳細について説明する。図17には、検証部404における処理のフローチャートが示される。ステップS501からS506までの処理は、第1実施形態において図11を参照して説明したステップS301からS306までの処理と同様である。なお、図17ではステップS309における処理はステップS511における処理に対応する。
【0185】
ステップS507において、検証部404は、票点検情報EV2に含まれる票証明情報に基づいて、暗号化投票情報EV1は暗号化された投票数を含むか否かを判断する。暗号化投票情報EV1は暗号化された投票数を含まないと判断された場合、検証部404は、ステップS511において、投票作業において不正があったと判断する。この場合の不正は、管理者による投票数の書き換えである。より具体的には、暗号化投票情報EV1が、ブラインド化された投票数を暗号化したものを含まず、単なるスカラー値を暗号化したものを含むような書き換えである。
【0186】
ステップS508において、検証部404は、暗号化投票情報EV1に基づく暗号化された投票数を投票先ごとに合計し、暗号化された得票数を算出する。
【0187】
ステップS509において、検証部404は、順位証明情報が、投票先ごとの暗号化された得票数に基づいて生成される、得票数の差が暗号化された情報(例えば、「Wg-Vg-2128+30g」、「Wg+2128+30g-Vg」、又は「Vg+2128+30g-Wg」)と整合的であるか否かを判断する。つまり、レンジプルーフが正しいか否かを判断する。順位証明情報が整合的でない場合、検証部404は、ステップS511において、集計作業において不正があったと判断する。
【0188】
ステップS510において、検証部404は、投票において不正がなかったと判断する。
【0189】
第2実施形態の投票管理システム10Aでは、投票情報を十分に秘匿することに加えて、集票結果の順位のみが集票結果として公開される場合であっても、順位証明情報を用いることで、集票結果の正しさが第三者によって検証可能となる。これにより、開票の形態が、得票数を公表する形態に加えて順位のみを公表する形態を採用することができるようになるので、開票形態の選択肢を増やすことができる。
【0190】
第3実施形態について説明する。第3実施形態の投票管理システム10Bでは、投票管理システム10,10Aのように、有権者が一度投票した投票結果は更新されない形態ではなく、有権者による再投票が可能となる形態での投票が行われる。また、第3実施形態の投票管理システム10Bでは、証明者による投票数の証明が行われ、管理者による投票数の変更が防止される。再投票が可能となる形態での投票が行われる。
【0191】
図18には、第3実施形態に係る投票管理システム10Bのブロック図が示される。投票管理システム10Bは、管理者端末100B、有権者端末200a,200b分散台帳300、検証者端末400、及び証明者端末500を備える。管理者端末100B(第1端末)は、有権者端末200、証明者端末500、及び分散台帳300とネットワークNを通じて通信可能に接続される。
【0192】
管理者端末100Bは、所定のプログラムを実行することによって所定の処理を行うコンピュータを有する情報処理装置である。例えば管理者端末100Bは、サーバ、あるいはパーソナルコンピュータである。
【0193】
管理者端末100Bの各部について説明する。管理者端末100Bは、記憶部101、通信部102、投票情報取得部103、票生成部104、鍵情報生成部105、票管理情報記録部106B、投票部107、票点検情報生成部108B、票点検情報記録部109B、投票先情報取得部115、署名部116、及び投票数情報取得部117を有する。管理者端末100Bの各部は、例えば、管理者端末100Bにおいて、メモリ等の記憶領域を用いたり、記憶領域に格納されたプログラムをプロセッサが実行したりすることによって、実現することができる。
【0194】
記憶部101、通信部102、投票情報取得部103、票生成部104、鍵情報生成部105、投票部107、票点検情報記録部109、及び集票部110は、第1実施形態における管理者端末100の各部と同様の機能を有する。
【0195】
第1実施形態の管理者端末100に追加された構成である、投票先情報取得部115、署名部116、投票数情報取得部117について説明する。次に、第1実施形態の管理者端末100から変更された構成である、票管理情報記録部106B、及び票点検情報生成部108Bについて説明する。
【0196】
投票先情報取得部115は、有権者端末200から、投票先を示す投票先ID(投票先情報)を含む投票先情報として取得する。また、投票先情報取得部115は、取得した投票先を暗号化して暗号化投票先情報を生成する。
【0197】
署名部116は、管理者端末100Bと有権者端末200による閾値署名がされた投票先情報を生成する。署名部116は、閾値署名の検証に用いられる公開鍵情報を生成する。
【0198】
投票数情報取得部117は、有権者端末200から、有権者による投票数が暗号化されている暗号化投票数情報を取得する。暗号化投票数情報には証明者(証明者端末500のユーザ)による署名がされている。また、投票数情報取得部117は、有権者端末200から、暗号化されていない投票数情報を取得する。
【0199】
票管理情報記録部106Bは、票管理情報を分散台帳300に記録する。票管理情報は、分散台帳300に設けられるスマートコントラクト301Bによって管理される。票管理情報は、有権者が更新可能な情報であり、有権者が管理者端末100を通じて、暗号化投票情報が分散台帳300に記録されることを承認したか否かを示す情報である。票管理情報には、コミットメント及びコミットメントに関連付けられたステータス(承認情報)が含まれる点は第1実施形態における票管理情報と同様である。
【0200】
図19(a),(b)には、分散台帳300に記録されるコミットメント及びコミットメントに関連付けられたステータスの一例が示される。コミットメントは、票管理情報記録部106によってスマートコントラクト301に送信される。コミットメントは、スマートコントラクト301Bによって管理され、分散台帳300上に設けられるデータ構造であるコミットメントプールに記録される。また、票管理情報記録部106は、当該コミットメントを有権者端末200に送信する。
【0201】
図19(a)に示されるように、コミットメントプールにおけるコミットメントには、有権者IDによって管理される有権者ごとに、有権者が最後に承認したコミットメント及びその承認に関するステータスが関連付けられる。ステータスには、各コミットメントに対応する有権者が管理者端末100による投票を承認したことを示す「承認済み」の情報又は承認がされていないことを示す「未承認」の情報が承認情報として記録される。
【0202】
有権者は、管理者端末100Bから取得したコミットメントに基づいて、自身の投票情報に対応するコミットメントに関連付けられたステータスを「承認済み」とすることによって更新する。更新処理は、スマートコントラクト301Bによって行われる。図19(b)に示されるように、有権者1が再投票を行った場合、最新の投票において生成されたコミットメントが有権者1の投票に対応するコミットメントとなるように、コミットメントプールの情報が更新される。
【0203】
票管理情報記録部106Bが記録するコミットメントには、有権者が承認を行うことが、有権者及び管理者と異なる第3者である証明者によって許可されたことを示す情報(本人確認情報)がさらに関連付けられる。ここで、証明者とは、投票を管理する信託銀行等である。なお、第3実施形態では、管理者端末100は、投票サービスを提供する事業者によって用いられる端末となり、証明者端末500が、信託銀行等によって用いられる端末となる。本人確認情報は図19(a),(b)のコミットメントプールにおいて、「本人確認」の項目が「確認済」、「未確認」となるように記録される。
【0204】
票点検情報生成部108Bは、票点検情報生成部108と同様に、投票先を暗号化せず、検証情報VRが付加された票点検情報EV2(票点検情報)を生成する。票点検情報生成部108Bはさらに、暗号化投票数情報になされた署名を、票点検情報EV2に含めて票点検情報を生成する。
【0205】
証明者端末500は、投票の証明を行う証明者が利用する端末であり、ここでは、パーソナルコンピュータであるとする。証明者端末500は、記憶部501、通信部502、投票数暗号化部503、及び証明部504を有する。なお、証明者端末500は、スマートフォンやタブレット端末であってもよい。証明者端末500の各部の機能は、証明者端末500に記録されるプログラムによって実現される。
【0206】
記憶部501は、証明者端末500での処理に用いられる各種の情報を記憶する。通信部502は、ネットワークNを通じた外部との間の通信を制御する。
【0207】
投票数暗号化部503は、有権者端末200から投票のリクエストを取得し、有権者の投票数を取得する。投票数暗号化部503は、例えば、記憶部501に記憶される有権者の情報に基づいて、有権者の認証を行ってもよい。記憶部501には、管理者端末100における有権者IDが同様に記憶されて、有権者の管理が行われる。
【0208】
証明部504は、有権者端末200から取得した、ある投票先への投票数を暗号化し暗号化投票数情報を生成する。ここで、証明部504が取得する投票先の情報は暗号化された暗号化投票先情報である。証明部504は、暗号化投票先情報及び暗号化投票数情報を証明するための署名を生成する。第3実施形態では、当該署名がなされた暗号化投票先情報及び暗号化投票数情報をまとめて暗号化投票情報とよぶ。
【0209】
また、証明部504は、署名付きの暗号化投票情報を有権者端末200に送信する。有権者端末200は管理者端末100Bに署名付きの暗号化投票情報を送信する。このとき有権者端末200は、暗号化されていない投票数情報も送信する。
【0210】
図20を参照して投票管理システム10Bの動作について説明する。図20には、有権者Aが有権者端末200aによって送信する暗号化投票情報が、管理者端末100Bによって取得されるまでの処理のフローチャートが示される。
【0211】
ステップS601において、有権者端末200aは、証明者端末500に、自身が投票を開始することを示す情報を投票開始リクエストとして送信する。投票開始リクエストには、有権者IDが含まれる。
【0212】
ステップS602において、投票数暗号化部503は、記憶部501を参照し、投票開始リクエストを送信した有権者が、記憶部501に予め登録されているか否かを確認する。有権者が登録されている場合、投票数暗号化部503は、ステップS603において、管理者端末100Bに当該有権者の有権者IDを送信する。なお、有権者が登録されていない場合処理は中断される。
【0213】
管理者端末100Bが証明者端末500から有権者IDを受け取ると、投票先情報取得部115は、ステップS604において、有権者から投票先情報VD1を取得する。投票先情報VD1の取得は、例えば、管理者が管理するポータルサイトを通じて行われる。投票先情報VD1は、投票先情報取得部115が、投票先情報VD1を暗号化するために必要な情報が含まれるように生成される。
【0214】
ステップS605において、投票先情報取得部115は、投票先情報VD1に含まれ、投票先情報VD1を暗号化するために必要な情報に基づいて、投票先情報VD1を暗号化して、投票先が暗号化された暗号化投票先情報EVD1を生成する。ステップS606において、投票先情報取得部115は、暗号化投票先情報EVD1を有権者端末200aに送信する。
【0215】
ステップS607において、鍵情報生成部105は、管理者端末100と有権者端末200aとの間で、公開鍵PK1及び公開鍵PK0を共有する。また、鍵情報生成部105は、管理者端末100と有権者端末200aとの間で、署名情報σ1及び署名情報σ0を共有する。なお、署名情報σ1,σ2の生成は、第1実施形態と同様に行われる。
【0216】
ステップS608において、投票情報送信部203は、公開鍵PK0に基づいて、署名情報σ0の正当性を確認する。ステップS609において、票生成部104は、公開鍵PK1に基づいて、署名情報σ1の正当性を確認する。ステップS610において、投票情報送信部203は、署名情報σ1を用いて、暗号化投票情報EV11に署名する。ステップS611において、投票情報送信部203は、署名情報σ1により署名された投票先情報VD1(σ1)を、管理者端末100に送信する。
【0217】
ステップS612において、署名部116は、署名情報σ0を用いて、投票先情報VD1(σ1)に署名し、投票先情報VD1(σ1,σ0)を生成する。
【0218】
ステップS613において、投票情報送信部203は、証明者端末500に、暗号化投票先情報EVD1及び投票数情報VA1を送信する。ここで、投票数情報VA1はブラインド化されている。
【0219】
ステップS614において、投票数暗号化部503は投票数情報VA1を検証する。具体的には、投票数暗号化部503は、ブラインド化された得票数情報のブラインドが有効なブラインドであるか否かを検証する。なお、有効でないブラインドと投票数暗号化部503が判断した場合、処理は中断する。
【0220】
ステップS615において、証明部504は、証明者端末500の秘密鍵SK2に基づく署名情報σ2によって暗号化投票先情報EVD1及び暗号化投票数情報EVA1に署名する。その結果、暗号化投票情報EV1(σ2)が生成される。ステップS616において、証明部504は、暗号化投票情報EV1(σ2)を有権者端末200aに送信する。
【0221】
ステップS617において、投票数情報取得部117は、有権者端末200aから、投票数情報VA1及び暗号化投票情報EV1(σ2)を取得する。ステップS618において、投票数情報取得部117は、署名情報σ2を、秘密鍵SK2に対応する公開鍵によって検証する。
【0222】
ここまでの処理によって、管理者端末100Bは、分散台帳300に記録すべき暗号化投票数情報を取得することとなる。このように、証明者の署名が付与された暗号化投票数情報を分散台帳300に記録することで、管理者端末100Bにおいて、有権者から取得した投票数を変更することができないようにできる。これによって、投票結果の信頼性を確保できる。
【0223】
図21を参照して、投票管理システム10Bにおけるコミットメントの記録及び承認について説明する。第1実施形態と共通する処理については詳細な説明を省略するが、票管理情報記録部106による処理は、票管理情報記録部106Bによって行われる処理となる。ステップS701からステップS703までの処理は、図7におけるステップS1012からステップS1014までの処理と同様であり、ステップS704の処理はステップS1016における処理と同様である。
【0224】
ステップS705において、票管理情報記録部106Bは、有権者端末200aからコミットメントc1を確認したことを示すレスポンスを取得する。ステップS706,S707における処理は、ステップS1015,S707における処理と同様である。
【0225】
ステップS708において、票管理情報更新部204は、分散台帳300のスマートコントラクト301Bに、自身に関連付けられるコミットメントの承認情報を承認済みとするための承認リクエストを送信する。このとき承認リクエストには、有権者の有権者IDが含まれる。
【0226】
ステップS709において、スマートコントラクト301Bは、承認リクエストを送信した有権者を照会する照会リクエストを証明者端末500に送信する。ステップS710において、有権者IDに基づいた有権者の照会結果が証明者端末500からスマートコントラクト301Bに送信される。なお、ステップS709における照会結果が、適切な有権者ではないことを示す場合、処理は中断される。
【0227】
ステップS711において、スマートコントラクト301Bは、有権者にコミットメントc1を関連付け、当該コミットメントに関連付けられたステータス及び本人確認情報を更新する。具体的には、図19(a)に示されるように、「ステータス」の情報を「承認済み」とし、「本人確認」の情報を「確認済」とする。
【0228】
ここで、投票管理システム10Bにおける再投票について説明する。投票管理システム10Bでは、投票済みの有権者が、ステップS601のように投票開始リクエストを送信すると、図20で説明した処理が再度実行される。
【0229】
有権者は投票先や投票数を変更し、変更された情報は、更新された暗号化投票情報EV1及び更新された暗号化投票先情報EVD1として管理者端末100Bに記録される。更新された最新の情報に基づいて、後述の票点検情報EV3が生成され、記録される。
【0230】
次に、管理者端末100Bは、コミットメントc1とは異なるコミットメント(例えばコミットメントc6)を新たに生成し、ステップS701からS707までの処理によって、スマートコントラクト301Bに記録する。
【0231】
有権者はステップS708において、コミットメントc6の承認リクエストを送信する。その後、ステップS709,S710の処理を経て、ステップS711において、有権者には新たなコミットメントc6を関連付け、当該コミットメントに関連付けられたステータスを更新する処理が実行される。再投票後のコミットメントの状態は図19(b)に示される。
【0232】
図22を参照して、投票管理システム10Bにおける、管理者端末100Bによる票の記録から検証者端末400による検証処理までの処理を説明する。
【0233】
ステップS801において、票点検情報生成部108Bは、スマートコントラクト301Bに、コミットメントリストの生成のリクエストを送信する。ステップS802において、スマートコントラクト301Bは、コミットメントプールに基づいて、ステータスが承認済みであるコミットメントを抽出し、コミットメントリストを生成する。ステップS803において、票点検情報生成部108Bは、スマートコントラクト301からコミットメントリストを取得する。
【0234】
ステップS804において、票点検情報生成部108Bは、各コミットメントの生成に用いられる公開鍵Qjに基づいて、検証情報VR(Qj,Σ(j,rj))を生成する。
【0235】
ステップS805において、票点検情報生成部108Bは、暗号化されていない投票先情報VDj、検証情報VR(Qj,Σ(j,rj))、閾値署名済みの暗号化投票先情報EVDj、及び証明者による署名済みの暗号化投票情報EVjを含む票点検情報EV3を生成する。
【0236】
票点検情報EV3は、投票先i,ブラインドb,検証情報VR(Qj,Σ(j,rj)、暗号化投票先情報EVDj,暗号化投票情報EVj、暗号化投票先情報EVDjへの閾値署名T1、及び暗号化投票情報EVjへの署名T2を含む。
【0237】
ここで、閾値署名T1は、管理者と有権者によって署名される情報であるので、管理者単独では、閾値署名T1によって証明されるべき事項(投票先及びブラインド)を変更することができない。なぜなら、変更した場合、閾値署名自体を更新する必要があり、管理者は単独では閾値署名の更新を実行できないからである。
【0238】
また、署名T2は、証明者によって署名される情報であるので、管理者は、署名T2によって証明されるべき事項(暗号化された投票先及び暗号化された投票数)を変更することができない。なぜなら、変更した場合、署名T2自体を更新する必要があり、管理者は署名T2の更新を実行できないからである。
【0239】
ステップS806において、票点検情報生成部108は、票点検情報EV3を分散台帳300に送信し、記録する。なお、投票管理システム10Bでは、票の記録は、票点検情報EV3によって行われ、第1実施形態の投票管理システム10における場合(図7のステップS1021を参照)のように、暗号化投票情報そのものの記録は行われない。
【0240】
ステップS807において、集票部110は、記憶部101に記憶された投票先情報VD及び投票数情報VAに基づいて、各投票先への投票数を集計する。ステップS808において、集票部110は、集票結果を、ネットワークNを通じて公表する。集票結果は各議案について、それぞれの投票先IDごとの得票数として公開されてもよく、第2実施形態で説明した方法を用いて、順位のみを公表する形態としてもよい。つまり、第2実施形態における投票管理システム10Aで用いた手法と投票管理システム10Bで用いる手法は組み合わせることができる。
【0241】
ステップS809において、検証情報取得部403は、スマートコントラクト301にコミットメントリストを要求する。ステップS810において、スマートコントラクト301は、検証者端末400にコミットメントリストを送信する。
【0242】
ステップS811において、検証情報取得部403は、票点検情報EV3を、分散台帳300から取得する。ステップS211において、検証部404は検証処理を行う。検証部404における検証処理は、第1実施形態における検証処理と同様である。第2実施形態の手法と組み合わせる場合、検証処理は、第2実施形態における検証処理と同様となる。
【0243】
第3実施形態に係る投票管理システム10Bでは、証明者端末500による署名及び有権者端末200と管理者端末100とによる閾値署名によって票の改ざんが防止できる。また、有権者は、投票期間中は再投票を行うことができるので、有権者の意思が適切に反映されるようにできる。また、票管理情報の更新の際に証明者による承認を必要とすることで、票管理情報を更新する者が有権者本人であることを確実にでき、不正の余地がなくなる。
【0244】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその条件等は、例示したものに限定されるわけではなく適宜変更することができる。また、以上の実施形態において説明してきたプログラムは、記憶媒体に格納することができる。当該プログラムを格納した記憶媒体は、非一時的な記憶媒体(Non―transitory computer readable medium)であってもよい。非一時的な記憶媒体は特に限定されないが、例えば、USBメモリ又はCD-ROM等の記憶媒体であってもよい。
【符号の説明】
【0245】
10…投票管理システム、100…管理者端末、101…記憶部、102…通信部、103…投票情報取得部、104…票生成部、105…鍵情報生成部、106,106B…票管理情報記録部、107…投票部、108,108B…票点検情報生成部、109…票点検情報記録部、110…集票部、111…証明情報生成部、112…得票数暗号化部、113…順位情報生成部、114…順位情報記録部、115…投票先情報取得部、116…署名部、117…投票数情報取得部、200…有権者端末、201…記憶部、202…通信部、203…投票情報送信部、204…票管理情報更新部、300…分散台帳、301…スマートコントラクト、400…検証者端末、401…記憶部、402…通信部、403…検証情報取得部、404…検証部、500…証明者端末、501…記憶部、502…通信部、503…投票数暗号化部、504…証明部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22