基于RSA加密算法身份认证方案的设计

众所周知,计算机网络系统的安全性常取决于能否正确地验证通信或终端用户的个人身份。如机要部门或地区的进入、自动出纳机提款以及各种计算机资源系统的接入等都需要对用户的个人身份进行识别认可,为此,我们提出了一种基于RSA加密算法的身份认证方案。

一、RSA加密体制及身份认证

由于计算机网络通信和各类应用业务的需求,要求相应的数据文件加密方法应具有灵活性和快速的特点。

RSA加密体制是1978年提出来的,它是第一个理论上最为成功的公开密钥加密体制,它的安全性基于数论中的Euler定理和计算复杂性理论中的下述论断:求两个大素数的乘积是很容易计算的,但要分解两个大素数的乘积,求出它们的素数因子却是非常困难的,它属于NP完全类,是一种幂模运算的加密体制。除了用于数据文件加密外,它还能用于数字签字和身份认证。要构造RSA加密算法和解密算法中的公钥和私钥,必须首先构造两个大素数,RSA加密算法和解密算法的安全性与所使用的大素数有密切关系。因此。研究RSA公钥加密体制中的大素数生成,构造符合RSA安全体系要求的强素数,是RSA加密算法算法实用化的基础。

身份认证可以防止非法人员进入系统,防止非法人员通过违法操作获取不正当利益、访问受控信息和恶意破坏系统数据完整性的情况发生。同时,在一些需要具有较高安全性的系统中,通过用户身份的唯一性,系统可以自动记录用户所做的操作,进行有效的核查。在一个有竞争和争斗的现实社会中,身份欺诈是不可避免的,因此常常需要证明个人的身份。通信和数据系统的安全性也取决于能否正确验证用户或终端的个人身份。对于计算机的访问和使用、安全地区的出入也都是以精确的身份验证为基础的。网络中的各种应用和计算机系统都需要身份认证来确认一个用户的合法性,然后确定这个用户的个人数据和特定权限。

二、基于RSA加密算法身份认证方案的设计

1、数字证书

数字证书建立在公开密钥和数字签名技术基础上,其主要作用是将持有人的身份与其公钥绑定在一起。数字证书由可信赖的而且独立的第三方认证中心(CA)颁发。证书的内容包括一个公开密钥、拥有该证书实体的身份信息以及CA中心对这些内容的数字签名,CA对数字证书的签名确保了该证书内容的完整性和真实性,CA不仅负责产生数字证书,而且承担对证书的管理、存档、发放以及作废等任务。基于公开密钥加密体制RSA的认证系统中,通信各方首先要获得数字证书,数字证书是通过管理仲裁机构建立的。

参加通信的所有各方事先自己生成一对密钥,将其中公开密钥部分作为申请书的一部分交给一个管理仲裁机构。仲裁机构对该用户及其公钥进行审查,认为其可以参加通信后,由该仲裁机构用自己的秘密密钥对一条信息进行数字签名,该信息包括该参加者的公开密钥和其他附加信息。仲裁机构将签名后的信息交给参加者,此信息就是证书(Certificate)。通信各方通过某种途径获得对方的数字证书后,用仲裁者的公开密钥验证证书的合法性,同时获得该用户的公开密钥。

2、用户间身份认证的设计思想

假设需要认证双方为A和B,A和B在通信前需要进行身份认证,以下是本文设计的身份认证思想。

(1)A将自己的身份IDA传递给B,但是B不能确定此信息是来自A还是窃密者C。

(2)B收到IDA后,产生一个随机的消息RB,用A的公钥PA加密IDA和RB得到y1=EPA(IDA+RB),并用自己的私钥SB做y2=DSB(EPA(IDA+RB))运算即签名,将结果EPA(IDA+RB)和DSB(EPA(IDA+RB))传送给A。

(3)A收到消息后用B的公钥PB对DSB(EPA(IDA+RB))进行验证,验证原理是根据EPB(DSB(EPA(RB))=EPA(RB)。由于只有合法的B才拥有公钥SB,因此可以通过将计算结果与EPA(RB)比较,A就可以确认通信对方是否是B。如果验证通过,A就可以确认通信对方的确是B,并且对EPA(IDA+RB)进行解密,解密的原理是DSA(EPA(IDA+RB))=IDA+RB。通过解密得到IDA+RB,分离IDA和RB。

(4)A将求得的RB用B的公钥PB加密传送给B,因为只有合法的A可以求得RB从而可以得到正确的EPB(RB);B只需用自己的私钥SB解密(EPB(RB))即可得到DSB(EPB(RB))=RB,将此RB与原来的RB对比就可以确认对方是否是A。

三、基于RSA加密算法身份认证方案的实现

为了实现信息的网络化管理,系统采用了VC.NET结合SQLServer2000数据库的解决方案,即将用户数字证书等有关信息存放在SQLServer数据库中。选用SQLServer2000作为后台数据库是因为该系统数据量大,系统的安全性较高,而且SQLServer2000在构造、部署和管理大中型的Web应用方面,有它独一无二的优点。利用VC.NET通过ADO.NET对学生选课数据库进行管理,ADO.NET是Mi2crosoft的数据访问框架,其核心采用了非连接数据的概念,而用于Internet通信的HTTP协议没有包含维护请求间状态机制,这样使得系统数据处理通过Internet进行非常顺利。

1、基于RSA加密算法身份认证方案的体系结构

系统采用了B/S(Browser/Server)三层体系结构,即表示层(Browser)、功能层(WebService)和数据服务层(DataBaseService);IIS架设Web站点;VC.NET通过ADO.NET访问数据库。方案的体系结构图如图1所示。

对数据库的访问在Web服务器端完成。客户端无须安装任何专门软件,通过浏览器即可访问Web服务器并运行其程序。采用了这种体系结构的系统充分利用了服务器资源,提供了跨平台、简单一致的应用环境,实现了开发环境与应用环境的分离,减少了系统开发和维护的工作量,便于用户群的扩展。

2、基于RSA加密算法身份认证方案的实现过程

(1)建立数字证书

选取两个大素数:p和q,并且两数的长度相等,以获取最大程度的安全性;计算两数的乘积:n=p3q;随机选取加密密钥d,为满足ed=1mod(p-1)(q-1),则d=e-1mod((p-1)(q-1)),d和n也互素;e是公钥,d是私钥,n是公开的。两个素数p和q不再需要,可以被舍弃,但决不能泄露。这里我们假设生成了用户A的密钥对(eA,dA)和用户B的密钥对(eB,dB)。

用户将私钥d秘密保存,公钥e交给一个管理仲裁机构认证中心,获得自己的数字证书,然后将数字证书保存在自己的机器上,同时认证中心将合法用户的数字证书保存在数据库中,以便用户查询。用户当与网络上某个用户通信需要进行身份认证时,将自己的数字证书发送给通信的对方。对方收到数字证书后,首先通过认证中心验证其合法性。如果是合法的,就可以从证书中获得需要的用户公钥,然后利用该公钥验证对方的身份;如果不合法,就可以终止通信。

(2)进行身份认证

第一步:用户A对用户B的认证。

a、用户A发送自己的身份IDA传递给B。

b、加密:当用户B收到用户A的通信标识符后产生一个随机消息RB,用户B把用户A的标识符IDA和随机数RB组合在一起,构成明文m,然后把明文m进行分组。最后使用A的公钥利用加密公式Ci=meAi(modn),对每个分组mi进行加密。

c、签名:用户B用自己的私钥dB把加密后的消息Ci签名,公式为Si=CdBi(modn),用户B把Ci和Si组合到一起组成C和S发给用户A。

d、验证:当用户A收到用户B发来的消息后首先对消息进行分离,分离出C和S,再将C和S分组为Ci和Si,用户A使用用户B的公钥eB对用户B的身份进行验证,验证公式为Vi=SeBi(modn),如果Vi和Ci完全相等,就可以说明对方就是用户B。

e、解密:用户A再使用自己的私钥dA对Ci进行解密,解密公式为mi=CdAi(modn),然后把mi整合后,分离出用户A的标识符IDA′和随机数RB′,用户A把IDA′和自己的标识符IDA进行比较,如果相同则对方就是B。用户A对用户B的身份认证结束。

第二步:用户B对用户A的认证。

a、加密:用户A把RB′用用户B的公钥eB进行加密,加密公式为y3=EeB(RB′),用户A把加密后的消息发送给用户B。

b、验证:当用户B收到消息后,使用自己的私钥对消息进行解密,解密公式为RB″=DdB(y3)。

由于RB是用户B产生的,如果RB″和RB相等,则说明对方就是用户A。用户B对用户A的认证过程结束。

认证过程如图2所示。

(3)基于RSA加密算法身份认证方案的实验

b、代码实现

在认证过程使用的加密和解密算法相同,已利用VisualC++6.0实现,另外签名和验证的算法也和加密算法相同,只是每次利用的秘钥不同,这也是利用RSA加密算法进行认证的优势。这里只列出少数代码:

classCRsa{public:

{

CRsa();

intEncrypt(char3Out,char3In,UINTlen,char3KeyStr,char3ModStr);

//加密intDecrypt(char3Out,char3In,UINTlen,char3KeyStr,char3ModStr)//解密

{returnEncrypt(Out,In,len,KeyStr,ModStr);}

boolGetKey(BigInt&p,BigInt&q,BigInt&e,BigInt&d,BigInt&n,UINTplen,UINTqlen,UINTelen);

//获取RSA密钥对boolSetKey(char3KeyStr,char3ModStr);

//由输入密钥串设置RSA密钥和模nprivate:BigIntkey,n,Zero;

//密钥,模n,常量0

CBigIntBI;

};

intCRsa::Encrypt(char3Out,char3In,UINTlen,char3KeyStr,char3ModStr)

staticBigInta,c;

CHECK(Out&&In&&len&&SetKey(KeyStr,ModStr))//由输入构造一个大数a

CHECK_MSG(BI.BuildBIFromByte(a,In,len)&&a.len<=n.len,“错误:RSA加密(解密)的内容过长!”)//加密(解密)

CHECK(BI.PowMod(c,a,key,n))CGfL::HalfByteToByte(Out,c.bit,c.len);return(c.len+1)>>1;

}

本方案实现了一个基于RSA加密算法认证系统,其中RSA密钥长度最大可达600bits16进制数(约合720位10进制数),而且产生RSA密钥对的速度非常快,一般在3s以内完成.在认证过程中,加密(签名)和解密(验证)时可以从文件中导入密钥,而且加密(签名)和解密(验证)速度也非常快,一般在6s以内完成。

小知识之Euler定理

在数学及许多分支中都可以见到很多以欧拉命名的常数、公式和定理。在数论中,欧拉定理(EulerTheorem,也称费马-欧拉定理或欧拉函数定理)是一个关于同余的性质。欧拉定理得名于瑞士数学家莱昂哈德·欧拉,该定理被认为是数学世界中最美妙的定理之一。欧拉定理实际上是费马小定理的推广。此外还有平面几何中的欧拉定理、多面体欧拉定理(在一凸多面体中,顶点数-棱边数+面数=2)。西方经济学中欧拉定理又称为产量分配净尽定理,指在完全竞争的条件下,假设长期中规模收益不变,则全部产品正好足够分配给各个要素。另有欧拉公式。

欢迎访问夏冰加密软件技术博客,您的数据安全知识库和加密技术资讯平台。我们致力于提供最新的加密技术动态、深入的行业资讯以及实用的软件使用技巧,帮助您在数字时代中保护好每一比特的数据。

THE END
1.什么是TLS证书?如何使用证书进行身份验证?TLS(传输层安全)证书是用于加密通信和验证通信双方身份的一种安全证书。TLS证书可以用于HTTPS协议,用于保护网站或应用程序与用户之间的通信安全。TLS证书包含了一些关键信息,例如证书持有者的公钥、证书持有者的身份信息、证书的有效期等。 使用TLS证书进行身份验证的过程如下: 客户端发起连接请求:客户端向服务端发起连接https://www.mbalib.com/ask/question-b5a5c3e2a5f8d2a9582207d107c1541b.html
2.该证书无效不能用于验证此web站点的身份阿里云为您提供该证书无效不能用于验证此web站点的身份相关的19276条产品文档内容及常见问题解答内容,还有等云计算产品文档及常见问题解答。如果您想了解更多云计算产品,就来阿里云帮助文档查看吧,阿里云帮助文档地址https://help.aliyun.com/。https://help.aliyun.com/wordpower/5705748-1.html
3.服务器身份验证当您的设备或其他客户端尝试连接时 AWS IoT Core, AWS IoT Core 服务器将发送一个 X.509 证书,您的设备将使用该证书对服务器进行身份验证。身份验证是通过验证 X.509 证书链在TLS层上进行的。这与您访问时浏览器使用的方法相同HTTPSURL。如果要使用您自己的证书颁发机构提供的证书,请参阅管理CA 证书。 当您https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/server-authentication.html
4.如何选择三种验证类型的https证书选择用于身份验证的证书https证书验证类型的选择主要取决于您要加密其网站的企业或组织的类型。个人或博客类的网站选择DV SSL证书就足够了。 另一方面,如果您是为事业单位机构,非营利组织或运营受限的注册商业实体购买的,则可能要考虑OVSSL证书。涉及到在线交易、可识别个人身份或敏感信息的较大企业必须选择EV SSL证书。 https://blog.csdn.net/weixin_43762887/article/details/114526188
5.IPsec使用证书身份验证进行配置要进行证书身份验证,您需要在您的FSxONTAP文件系统上生成并安装来自证书颁发机构的证书,以及将访问文件系统数据的客户端。以下示例 Amazon Private Certificate Authority 用于设置私有证书颁发机构,并生成要安装在文件系统和客户端上的证书。使用 Amazon Private Certificate Authority,您可以创建由根证书颁发机构和从属证书https://docs.amazonaws.cn/fsx/latest/ONTAPGuide/config-ipsec-ca-auth.html
6.什么是SSL双向认证,与单向认证证书有什么区别?是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书。服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书。但是,如果服务器需要对客户端进行身份验证,该怎么办?这就需要双向认证证书。 https://maimai.cn/article/detail?fid=1563723342&efid=22hpZvd6d4O3gruA01YrTA
7.HTTPS权威指南:在服务器和Web应用上部署SSL/TLS和PKI(2) 验证出示的证书,或使用其他方式进行身份验证。 (3) 对将用于保护会话的共享主密钥达成一致。 (4) 验证握手消息并未被第三方团体修改。 注意 在实际使用中,第2步和第3步都是密钥交换(更通用的说法是密钥生成)的一部分,密钥交换是一个单独的步骤。我更喜欢将它们分开来说,用以强调协议的安全性取决于正确https://www.ituring.com.cn/book/tupubarticle/11135
8.什么是相互身份验证TLS(mTLS)?mTLS如何运作如何使用?相互身份验证传输层安全协议(mTLS)是一种在网络通信中用于确保通信双方身份验证和数据机密性的协议。它建立在传输层安全协议(TLS)的基础之上,通过在TLS握手过程中进行双方证书的互相验证,以确保通信双方的身份合法和可信。在mTLS中,通。 币界网报道: 相互身份验证传输层安全协议(mTLS)是一种在网络通信中用于确保通信https://www.528btc.com/college/1696744275134611.html
9.WorkspaceONEBoxer的应用程序配置AuthenticationType 字符串 证书 当身份验证类型设置为证书时,如果为 Exchange Server 配置了身份验证证书,则将自动启用基于证书的身份验证并对用户进行身份验证。OnlineMeetingsCBAEnabled 是基于帐户的 KVP,用于从适用于 Android 的 Workspace ONE Boxer 到 Microsoft Teams 和 Zoom 会议的现代身份验证。注意https://docs.vmware.com/cn/VMware-Workspace-ONE-UEM/services/Boxer_Admin_Guide/GUID-ApplicationConfigurations.html
10.配置X.509证书身份验证—GeoServer2.24.xUserManual证书身份验证涉及使用公钥/私钥来标识自己。与基本用户名和密码方案相比,这是一个更安全的替代方案。 X.509是一个定义良好的公钥证书格式标准。本教程将介绍设置X.509证书身份验证的过程。 先决条件? 本教程假设: 支持使用客户端证书进行身份验证的Web浏览器,也称为“双向SSL”。本教程使用火狐. https://www.osgeo.cn/geoserver-user-manual/security/tutorials/cert/index.html
11.金山办公技能认证隐私政策为帮助您成为我们的用户,即完成账号创建,以便我们为您提供注册我们用户服务,我们为您提供了多种注册渠道供您自行选择。当您选择使用手机号码或电子邮箱注册时,您需要向我们提供您的手机号码、电子邮箱地址及密码,我们使用这类信息发送验证码信息以供您提交验证身份是否有效。 https://www.wps.cn/privacy/kos
12.上海市数字证书认证中心有限公司产品介绍行业动态代码签名证书(Code Signing Certificates)针对程序代码和内容建立了一种数字化的验证及保护,用于识别和验证您的身份与您的代码,并保证代码自添加签名后未被篡改。可在您的代码被用户下载、安装或运行时,通过系统显示您的身份信息,大幅提高代码的安全性和可信性。 https://www.sheca.com/industry/c5c686992d20430eb603206f03f64b22
13.什么是相互身份验证?双向身份验证CloudflareSSH 可以使用公钥身份验证或证书身份验证。换句话说,在 SSH 中可以用公钥或公钥证书进行相互身份验证。 TLS:虽然默认情况下 TLS 不会相互验证连接的两端,但它可以用于此目的。Mutual TLS (mTLS) 是最常用的相互身份验证类型之一。在 mTLS 中,连接的两端都有一个 TLS 证书。mTLS 常被用于 API 安全、IoT 安全和https://www.cloudflare-cn.com/learning/access-management/what-is-mutual-authentication/
14.什么是身份验证?Cloudflare额外的身份验证因素 除了上面列出的三个主要因素之外,安全行业的一些成员还提出或使用了额外的身份验证因素。其中两个额外因素是位置(用户在哪里)和时间(他们访问系统的时间)。 通过数字证书验证身份 除了使用上述身份验证因素之外,还可以向已知和受信任的实体颁发数字证书。数字证书是一个小的数字文件,其中包含用于验证https://www.cloudflare.com/zh-cn/learning/access-management/what-is-authentication/
15.基于属性的云计算远程证明认证研究AET本文介绍了基于云计算下的TPM框架实现的基于属性的云计算远程证明,在进行属性远程证明过程中,采用了属性权威中心作为可信第三方,对云平台的配置计算其满足的属性,并能够验证属性证书的可靠性。此外,本文基于可信第三方AIK证书中心对用户和平台身份进行认证。针对属性证书验证中的签密过程,本文做了缓存处理,减少了签密算法http://www.chinaaet.com/article/3000016262
16.什么是radius认证服务器?Worktile社区身份验证:Radius认证服务器可以提供各种不同的身份验证方法,如基于口令(用户名和密码)、证书、令牌等。用户在连接到网络后,通过提供相应的凭证来进行身份验证,并验证其合法性。 Radius(Remote Authentication Dial-In User Service)是一种用于网络身份认证和授权的协议。而Radius认证服务器是指用来进行Radius协议认证的服https://worktile.com/kb/ask/1389037.html
17.什么是相互身份验证TLS(mTLS)?mTLS如何运作如何使用?相互TLS 简称 mTLS,是一种相互身份验证的方法。mTLS 通过验证他们都拥有正确的私人密钥来确保网络连接两端的各方都是他们声称的身份。他们各自的 TLS 证书中的信息提供了额外的验证。 mTLS 通常被用于零信任安全框架*,以验证组织内的用户、设备和服务器。它也可以帮助保持 API 的安全。 https://www.jb51.net/blockchain/888058.html
18.什么是ca证书?ssl证书与ca证书的区别有哪些?聚名资讯CA 证书是由认证机构(CA,Certificate Authority)签发的数字证书,用于验证网站或服务器的身份和加密通信。CA 是一个可信任的第三方实体,其责任是验证证书请求者的身份,并签发证书来证明该身份的真实性。 SSL 证书是一种由 CA 签发的特定类型的数字证书,用于保护网站和服务器的安全通信。SSL(Secure Sockets Layer)是https://www.juming.com/zx/19849.html
19.HTTP转HTTPS—使用OpenSSL创建自签名SSL证书以及Tomcat配置SSLhttps协议中身份认证的部分是由数字证书来完成的,证书由公钥、证书主体、数字签名等内容组成,在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端会对证书进行验证,并获取用于秘钥交换的非对称密钥。 数字证书有两个作用: 1)身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。 2)分发公钥。每个数https://cloud.tencent.com/developer/article/1558378