优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

基于零知识证明的身份认证系统设计与实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:
摘要 为了适应了网络安全的需要,人们研究了一种多种现代加密技术,它可以提供我们进行一般的网络活动的安全保障。零知识指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。 本文研究了零知识的内容,对加密算法的要求。使用Visual C++,开发实现了一个零知识身份认证系统,该系统可以通过RSA算法,利用配对的公钥私钥对人的身份进行认证。 ? 关键词:公钥加密系统,RSA,DES,AES 基本原理 80年代初,Goldwasser等人提出了零知识证明这一概念。从本质上讲,零知识证明是一种协议。所谓协议(Protocol),就是两个或两个以上的参与者为完成某项特定的任务而采取的一系列步骤,包括以下三个特征: 1. 协议自始至终是有序的过程,每一步骤必须依次执行,在前一步骤没有执行完之前,后面的步骤不可能执行。 2. 协议至少需要两个参与者,一个人可以通过执行一系列的步骤来完成某项任务,但它不构成协议。 3. 通过执行协议必须能够完成某项任务。 零知识证明必须包括两个方面,一方为证明者,另一方为验证者。证明者试图向验证者证明某个论断是正确的,或者证明者拥有某个知识,却不向验证者透露任何有用的消息。零知识证明目前在密码学中得到了广泛的应用,尤其是在认证协议、数字签名方面,人们利用数字签名设计出了大量优良的算法。常用的就是RSA算法,其基本步骤如下: 1)大质数的获取 质数是只能由他本身和1相乘得到的数,RSA加密的安全性基于这么一个假设: 分解因子在计算上是困难的,就是说很容易将两个质数相乘,但是确不容易分解该乘积。因此质数的生成与获取是RSA安全的保证。根据数论的基本原理,如果一个数不能被2到他的平方根的数整除的话,那这个数就是一个质数。因此,一个数是否为质数的基本方法就是把这个数从2开始到其平方根分别进行除法,如果没有找到其因子,那么这个数就是质数。为了获取任意位数的质数,我们采用生成随机数的方法,任意生成两个足够大的随机数,分别对这两个数做递增运算,直到增长到为质数为止。这样我们就有两个足够大的质数了,记为:p,q。 2)密钥的计算 公钥是用以加密的密钥,它是对外公开的一对数,为了表达方便,统一记为:PK(e,n)。私钥是用来解密的密钥记为:SK(d,n)。计算n 的方法为:n=p*q,计算(p-1)*(q-1)的值为phi ,e是公钥中的一元,它是随机选取的,但是必须满足条件是大于1且小于phi并且与phi互为质数。私钥中的d必须满足d*e=1(mod phi),通过对这个方程的求解可以解出d。 系统模块分析 根据系统功能需求,把系统划分为以下几个模块: l? 用户接口模块 完成与用户的交互,具体就是执行控制、单步控制、重新演示程序等。 l? 质数生成模块 根据对位数的要求,生成大质数。 l? 公钥计算模块 根据生成的大质数,计算公钥。 l? 私钥计算模块 根据生成的大质数和公钥,计算私钥。 l? 加密模块 使用密钥进行加密。主要包括字符串数字化,加密运算等。 l? 解密模块 进行解密运算,对于解密文本进行字符化。 ?????? 各模块功能上相互依奈性比较强,可以思路清晰,加密过程程序化,简洁易读。