如何设计网络传输信息加密解密系统

描述

计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。由此看来,网络的安全系数一般都比较小。数据加密是确保计算机网络重要的安全机制,但是,利用公钥体制,尤其是利用RSA算法的实用加密解密软件系统很少。最庞大的计算机网络就是因特网。它由非常多的计算机网络通过许多路由器互联而成。因此因特网也称为“网络的网络”。另外,从网络媒介的角度来看,计算机网络可以看做是由多台计算机通过特定的设备与软件连接起来的一种新的传播媒介。

网络加密的方式主要有链路加密、端对端加密。端对端加密的工作仅在目的节点和源节点进行,所以成本低、使用灵活。本文采用这种方式,其处于网络OSI模型的应用层或表示层。

1公钥密码体制

公钥密码就是一种陷门单向函数。我们说一个函数f是单向函数,即若对它的定义域中的任意x都易于计算y=f(x),而当f的值域中的y为已知时要计算出x是非常困难的。公钥密码体制就是基于这一原理而设计的,将辅助信息(陷门信息)作为秘密密钥。这类密码的安全强度取决于它所依据的问题的计算复杂度。

公钥密码体制的基本思想是:密钥分为加密密钥E,解密密钥D和公钥M。加密密钥E和公钥M可以公开,D不能公开。加密时采用以E,M为参数的函数f1(E,M)进行加密,解密时采用以D,M为参数的函数f2(D,M)进行解密。

在传统密码体制的算法中,知道了加密过程,则可以推出解密过程。而在公钥密码体制的算法中,即使知道了加密过程,也不可能推出解密过程。因而计算加密密钥E,公钥M和解密密钥D需要特殊的算法和步骤。以确保不能从加密密钥E和公钥M推导出解密密钥D。

RSA体制是一种新型公钥密码体制。该公钥密码体制以数论为基础,其原理是:求2个大素数的乘积很容易实现,但将一个大的合数分解成2个大素数很难实现。RSA加密和解密运算的数学表达式为:

 C=XE(mod M)

X=CD(mod M)

其中:X为明文,C为密文,(0  (1)M是2个大素数P,Q的乘积,从而M的欧拉数φ(M)=(P-1)×(Q-1)。

(2)D是大于P,Q的并与φ(M)互素的正整数。

(3)E是D关于φ(M)的乘逆。即ED=1 mod(φ(M))。

满足以上3个条件,(E,M)便可作公钥对,(D,M)作密钥对。

例如:P=101,Q=113,那么M=P×Q=11 413,φ(M)=(P-1)×(Q-1)=100×112=11 200,与φ( M)互素的整数E有无数个,因此,假设E=3 533,根据公式ED=1mod(φ(M)),求得D =6 597。假设明文X=9 726,那么加密时密文C=9 7263 533mod (11 413)=5 7 61,在解密时明文Y=5 7616 597mod(11 413)=9 726。因此只要加密密钥E,解密密钥D和公共密钥M选择正确,加密前的明文X和解密后的明文Y一定是相同的。

2系统设计

网络信息加密解密系统包含2个主要部分,主机程序和客机程序。主机程序具有以下功能:密钥参数的选择、对文件的加密解密、加解密文件的校验、修改用户密码;而客机程序则只有一个加密模块和用户重置加密密钥E和公钥M。如果B有重要的数据往A发送,则该节点就用A节点所发布的加密密钥E和公钥M为参数对重要数据进行加密,然后再将加密后的数据发送到A,由于这些数据都经过特殊的处理,不用再为数据的安全而担心。当一个网络的许多高级用户之间需要频繁地互相传递信息,并且还要求高级用户既能够对需要发送的数据加密,也能够对收到的经过加密的数据进行解密。这就要求在网络的高级用户的计算机上运行网络信息加密解密系统的主机程序。

该系统的设计分为密钥选择模块、文件加密模块、文件解密模块、数据验证模块、修改密码模块、系统简介模块和退出系统模块等7大模块。

因特网

3程序的模块设计

3.1密钥选择模块的设计

选择RSA密码体制的密钥对主要是确定E,D,M。因为密钥对的选择不能随意产生,且P,Q的位数越多,攻破该密码体制所需时间也越长,系统就越安全。但位数越多,速度也越慢。该模块可以让用户自己来选择素数位数。

为方便用户,该模块不需用户直接输入2个大的素数P、Q的值,而是输入他们的邻近似任意数,然后由计算机根据特定的算法在邻近值附近找。得到2个大素数后,也得到公钥M=P×Q,从而也得到M的欧拉数φ(M)=(P-1)×(Q-1)。

大于P,Q并和φ(M)互素的数有无数个,所以依旧采用由用户输入邻近值,系统在其附近寻找一个满足条件的整数E(其中用欧几里德算法判断E是否与φ(M)互素),得到加密密钥E之后,将进行寻找密钥的最后一步:求出解密密钥D,这可以根据式ED=1 mo d(φ(M))求得。

经过以上3个步骤,计算机辅助产生密钥对的工作结束。随后,计算机会提示是否将新产生的参数值更新为系统默认的参数值。用户有两种选择,更新和不更新。

3.2加密模块的设计

文件在计算机里是以“0”、“1”的形式存储,一定的二进制比特流将表示一定大小的十进制整数。C是一个十进制的数(0≤C≤M),然后将十进制的数C写到目标文件。

3.3解密模块的设计

解密运算为X"=CD(mod M)。解密模块和加密模块原理基本相同,只是从文件里读取需要解密的数据时必须与经过加密算法后写入目标文件时的数据相同。这一点是系统能否正确运行的前提条件。加密模块和解密模块是系统的核心模块。

3.4数据验证模块设计

数据验证是将你刻在刻录盘上的数据和你硬盘上源文件进行对比MD5值,看是否一致的。在网站开发中,数据验证分为客户端验证和服务器端验证。客户端验证是为了验证数据的长度、类型等是否符合输入要求,一般用JavaScript实现;服务器端验证则是验证输入数据是否与数据库中已存在的数据匹配,在MVC框架开发中一般采用三层模式进行验证。

数据验证模块是用户对自己本人计算机上的本地文件进行加密和解密用的。如果多人共同使用一台计算机最好的方法就是用自己的加密密钥E和公钥M为参数对数据加密,然后用相应的解密密钥D和公钥M对加密后的数据进行解密。这样其他用户就无法查看该文件。需要这些数据时,进入网络信息加密解密系统,输入合适的解密密钥D和公共密钥M,将文件恢复。

3.5修改用户密码模块设计

为了保证本系统的安全性,如果用户3次输入不正确,将终止系统的正常运行。当用户输入密码泄露后,可以通过修改用户密码模块来解决。

该模块也采用RSA算法设计,系统的合法用户必须知道该模块正确的解密密钥、公钥和用户密码,才能进入系统。否则系统将拒绝进入。

由于解密密钥、公钥和用户密码可以随时更改,这就增加了非法用户进入系统的难度,将系统的不安全系数降至最低,从而保证系统的安全。

4结语

Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。网络传输信息加密解密系统经在实际网络环境 下测试表明:安装简单、人机界面良好、保密性高、实用性强、可对任何类型的文件加密解密。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分