投票申请的安全性

时间:2008-08-27 02:09:30

标签: java security desktop

我有一个项目,用于为Java中的类构建投票桌面应用程序。虽然安全性不是项目的重点,但我希望尽可能地保持现实。将安全性集成到Java应用程序中的主要工具是什么。

编辑:我不是主要担心物理安全,我们只是构建一个应用程序而不是整个系统。我想确保正确记录投票,不能被其他人更改或阅读。

8 个答案:

答案 0 :(得分:3)

这实际上取决于您希望集成哪种安全性。您是否希望安全性确保用户没有运行任何调试器或类似的操作来翻转应用程序中的位以更改投票?您是否希望确保用户不安装日志记录软件以跟踪谁投票谁?您是否希望确保应该投票的人实际投票?安全是一个非常广泛的主题,如果不知道您究竟在寻找什么,就很难给出答案。

答案 1 :(得分:2)

我的公司最近的应用程序具有非常强大的安全性。也许有帮助。

我们的应用

这是java EE应用程序。

架构如下:

  1. 客户端计算机具有加密包。
  2. 存储加密用户输入和输出
  3. 的脏服务器
  4. 清除外部无法访问的存储密钥和解密数据的服务器。
  5. 用户被发布加密卡(您可能希望使用不太安全的东西 - 例如.pgp),并且jsp页面需要用它们加密所有输入。页面包含连接到cryctography app的组件,要求用户输入密钥密码,使用服务器公钥对其进行加密并使用用户私钥对其进行签名,然后提交。

    数据存储在外部服务器中,然后传输到内部服务器,在那里解密并验证签名,然后处理和重新加密数据,然后将其发送到脏服务器,然后用户可以获取它。

    因此,即使有人破解了脏服务器(甚至获取数据库),他也会获得大多数无用的数据。

    您的应用

    我会向服务器发送加密和签名的投票。它会断言两件事:

    1. 你知道是谁投了票。
    2. 没有人能够知道投票是什么。
    3. 然后从服务器获取数据,声称每个人最多投票一次计票,瞧!

答案 2 :(得分:1)

如果你正在寻找这个东西的“更高层次”解释(如,而不是代码),Applied Cryptography有相当多的相关例子(我相信一个关于“安全选举”的部分,涵盖一些投票策略)。

答案 3 :(得分:0)

我认为物理安全对投票展位系统更重要,而不是你所知道的代码安全性 这些机器本质上不应该连接到任何类型的公共网络,尤其是互联网。但是,拥有良好的物理安全性以防止任何形式的物理篡改是非常重要的。

答案 4 :(得分:0)

我并不担心物理安全,我们只是构建应用程序而不是整个系统。我想确保正确记录投票,不能被其他人更改或阅读。

答案 5 :(得分:0)

提出防止物理篡改的问题(例如基础数据库),因为您已经规定物理安全不是目前的问题......

我认为首要考虑因素是如何确保特定选民只投票一次。在一次纸质民意调查中,每个登记的选民都被限制在特定的展位/地点,并通过姓名+ SSN和签名进行核实。

您可能需要高分辨率数字签名捕获,因此需要触摸屏捕获外围设备或触摸屏终端。更复杂的方法是生物识别扫描仪,但这需要政府的拇指/指纹或视网膜扫描记录 - 我已经可以看到隐私权倡导者在律师办公室排队。

另一种方法是选民“注册办公室”​​在选举前向每位选民发放数字密钥 - 一个(相对)短(密码强)随机字母/数字密钥,用选民姓名和/或SSN进入应用程序。在该特定选举中,该特定选民需要知道该密钥。这些密钥将通过防篡改信封发布,如银行用于邮政确认电汇和PIN号码的信封。密钥必须包含校验和数据,以便用户可以立即验证它的条目,它应该是4组,所以像XXXX-XXXX-XXXX-CCCC。

任何其他“秘密”知识,例如SSN,很可能很容易被大量人口发现(尽管我们似乎无法让信贷授予组织理解这一点),因此不适合用于身份验证。

投票计数可以通过生成公钥加密数据文件来完成,该文件被传送(通过运动鞋网?)到中央系统。这必须包括“投票站”身份信息和每个选民的记录,包括他们的SSN和数字密钥(或签名或生物识别数据)。消除了无效键的投票。具有相同密钥和相同投票的多个投票被视为该候选人的单一投票。具有相同密钥和不同投票的多个投票被标记为进行欺诈调查(通过电话联系成员,发布新密钥,并指示撤销)。

答案 6 :(得分:0)

您的问题是您需要可靠地识别用户,以便您可以阻止他们重新投票并访问彼此的投票。

这与需要身份验证(以及可能的授权)的任何其他桌面应用程序没有任何不同。如果您的选民是具有用户帐户的网络上的封闭组,您可以与该目录集成并要求用户登录。

如果选民没有网络用户帐户,那么这就是它变得有趣的地方。每个用户仍需要对应用程序进行身份验证。您可以在应用程序中生成带密码的帐户,并在投票前安全地分发此信息。您的应用程序可能会要求用户在首次访问应用程序时选择密码。

在不知道具体细节的情况下,很难给出更具体的答案。

答案 7 :(得分:0)

您知道电子投票是一个未解决的研究问题吗?大规模欺诈应该付出很大的努力。