欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    信息安全课程设计报告CA系统...docx

    • 资源ID:671361       资源大小:172.83KB        全文页数:47页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    信息安全课程设计报告CA系统...docx

    1、信息安全课程设计说明书题 目:CA系统学 院:计算机与信息安全学院专 业:姓 名:学 号:指导教师:摘要CA系统是基于数字证书的一种认证机制,是用于互联网通讯中标志互相身份的一种 已签名数字,数字证书提供了一种验IE通信双方的途径,它的功能相当于我们日常的身 份证,还有营业执照之类的。它是基于PKI公钥基础设施的一种认证技术,是由一个权 威机构CA (Certificate Authority)中心发布的,又被称为证书授权机构。数字证书包 含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、用户信 息及证书授权中心的信息以及数字签名,数字证书还有一个重要的特征就是只在有效期

    2、的时间段内有效。在日常生活中,人们可以通过互相交换证书借助CA认证机构来进行身 份识别,特别是在在线购物,如淘宝、京东等,数字证书对于交易的安全进行起到极其 重要的作用。本次课程设计中,首先是利用keysotre生成密钥库以及颁发者自己的证书,这个就 充当CA颁发机构,然后判断申请用户是否合法,认证通过后,根据提交的公钥,以及个 人信息给用户颁发数字证书。【关键字】CA用户证书数字签名1. 前言12. 系统分析22. 1系统需求22.2数据库连接32.3功能需求42.4开发环境63. 详细设计73.1系统设计框架73.2界面设计83.3主要代码113.4测试和运行结果144. 所遇到的问题及分

    3、析解决165. 系统特色及关键技术186. 结论及体会20参考文献211.前言随着科技的不断进步,人们生活水平的不断提高,电子商务越来越受到当今人们的 青睐,如网上签约、网上购物、网上缴费等。这是因为人们不需要为大笔的现金交易和 而头疼,取而代之的是在线支付,如支付宝、快捷支付,交易的不再是简单的现金,而 是电子现金,更不用大老远的去实体店购物和参加会议协商。但也无可避免的带来的隐 患,也就是交易过程中的安全问题,如何保证信息的保密性,如何确定交易者就是本人, 如何保证交易达成后双方不能否认,又如何保证交易信息(如日期)没有被篡改?于是 数字证书应运而生,数字安全证书提供了一种在网上验证身份的

    4、方式。安全证书体制主 要采用了公开密钥体制,其它还包括对称密钥加密、数字签名、数字信封等技术。数字 证书的加密机制保证了信息的保密性,数字签名等技术保证了数据的不可修改性,认证 机制保证了交易的不可否认性。虽然之前在密码学课程学习中有接触过有关数字证书的知识,但是大部分内容已变 得生疏,所以在准备阶段,我就先去学校的图书馆浏览一些相关电子资源,以及借阅了 张明徳和刘伟写的PKI/CA/数字证书技术大全,打算使用Java语言编写,顺便借阅了 叶乃文写的Java语言程序设计教程,从以往的硕士论文中可以知道,关于CA系统的 设计见仁见智,不过总体上已实现了大体上的自己充当颁发机构进而进行数字证书的颁

    5、 发。本次课程设计,在已实现的技术基础上进行功能、数据传输上的完善,在Java的 keytool中生成颁发机构的keystone以及颁发者的数字证书,然后将颁发者的信息加载, 用自己的私钥对提交的用户信息以及公钥进行签名,生成数字证书并颁发给用户。在用 户信息的提交的过程中,会先对用户身份进行身份认证,在验证用户身份合法之后,才 对用户进行签名,然后再保存用户的信息到数据库中。另外,在CA系统的设计过程中,考虑到用户因可能因丢失公钥而造成损失,所以基 于这个隐患而添加了一个用户证书挂失的功能,这样就能在很大的程度上减少用户的损 失。在挂失之前会首先核对挂失者的身份是否合法,防止别人恶意的挂失行

    6、为,而且, 已经挂失的会弹出错误提示,避免重复挂失。在挂失之后会把公钥存入到不受信任的公 钥数据库中,当用户再次使用该公钥时会也会弹出错误提示。而且,本次CA系统设计中 一个人是可以使用多个验证信息申请多个用户证书的,这样就提高了数字证书用途的广 泛性,而不必受限于数字证书在不同领域上的使用。2. 系统分析2.1系统需求首先,我们先来看一下静态口令身份认证方式的的安全隐患:(1)口令容易遗失用户名、口令在应用系统中以明文方式传输,容易被截取,造成口令遗失,还有输 入口令时被窥视造成口令遗失:用户名、口令存在数据库中,非法用户可以通过进入数 据库获取口令信息。(2)遗失不容易察觉用户口令遗失后,

    7、自己并不知道,不会采取措施防范遗失后可能造成的损失。(3)大量口令需要记忆(不易保管)如果存在多个应用系统,可能存在多组用户名、口令,不方便记忆。然而,在使用数字证书代替传统静态口令身份方式具有以下优势:(1)权威性:数字证书设备由CA中心颁发,使用其作为身份识别设备局域哦很高的权威性:(2)不可伪造型:数字证书设备经过国家相关部门审核批准,设备中保存的用户私钥无法被读岀,不 可伪造:(3)不容易被冒用:使用证书需要同时持有数字证书设备和设备启动口令,缺一不可,因此只要保护好 证书设备,他人无法冒用用户身份:(4)不可破解:数字证书设备具有口令保护机制,在连续输入错误一定次数后,设备将锁定,防

    8、止 暴力破解:(5)容易保管:数字证书设备形状与普通U盘相似,方便携带保管,不易遗失;(6)遗失容易发现:万一数字证书设备遗失,能够及时发现,并采取相应措施。根据以上分析,选择使用数字证书的身份模式,能够极大的提高用户身份的安全性, 保障应用系统用户身份安全。和传统”用户名+ 口令”应用模式,CA具有高强度的通讯方 式,能够实现传输数据的安全保障,是通过数字签名技术实现,通过签名验证确定数据 传输和存储的完整性,因为只有授权用户才能进行解密并使用,所以保证了数据的机密 性:另外,这是通过数字签名技术实现的,因此用户不得否认签名操作,即不可否认性。本次课程设计是实现一个简单的CA颁发系统,基本要

    9、求如下:(1)利用Java中的keytool生成的Keystore和CA证书来充当可信任的CA颁发 机构,CA颁发机构本身是存储有一定的用户的认证信息的,然后接受用户的 认证请求,通过用户的认证信息可以判断申请用户是否合法或者用户的公钥 是否已申请注册过;(2)认证通过后开始接收用户信息和用户自己产生的PublicKey(3)接收完成后,先通过加载CA数字证书获得CA颁发机构的信息以及CA的私钥, 然后对接收到的用户信息和公钥进行打包即数字签名,生成数字证书并颁发 给用户,安全储存用户信息:(4)数字证书吊销:这里是通过将用户需要挂失的公钥存入到不受信任的公钥数 据库中,这样,该密钥将被作废;

    10、在挂失前会对挂失用户进行身份验证,防 止恶意挂失行为,验证通过后还要访问一下不受信任的公钥数据库中是否已 存在该公钥,若已存在则弹出错误提示;若不存在,则进行公钥挂失过程。 挂失之后,当用户再次使用到该公钥认证时会弹出错误提示。2.2数据库连接Navicat for MySQL是一套专为MySQL设计的高性能数据库管理及开发工具。它 可以用于任何版本3.21或以上的MySQL数据库服务器,并支持大部份MySQL最新版 本的功能,包括触发器、存储过程、函数、事件、视图、管理用户等。点击或选择文件-新建连接来设置连接属性。连接设置:在创建连接后,你可以连接到数据库,管理它的对象、表中的数据等。请看

    11、下面的 帮助,以了解如何用最简单的方法运行这些操作。与数据库或模式工作:与数据库或模式的对象工作Navicat浏览器!Navicat窗口包括一个导览窗格(左边的窗格)及一个对象窗格(右边的窗格)。 导览窗格一个是导览连接、数据库及数据库对彖的基本途径。它采用树状结构,让你透 过弹出菜单快捷及方便地使用数据库和它们的对象。对象窗格显示开启表、査询等。在窗口顶部的工具栏提供其他控制项,你可以用它 来操作你的数据。navicat 如何连接 mysql:1、首先你电脑上必须安装了 mysql的数据库。(如果你不淸楚自己是否已经安装成 功mysql,你可以在开始菜单输入“mysql”,进行搜索)2、打开

    12、你的Navicat for Mysql (这里也可以使用上面的方法,在开始菜单搜索 框中输入navicat)3、打开后单机工具栏左边第一个connection,进入连接页面。34、最重要的一步:打开的界而有五个框需要输入,第一个:connection Name需 要输入的是你新建的连接的的名字,这里我们就命名为localhost,第二个:Host Name/Ip Address你需要输入的是你本机的ip地址或者直接输入” localhost”, 这里我们选择第二种。第三个:Port,输入你安装时候的端口号,一般为默认的 3306:第四个和第五个分別为:UserName和Password,意思为

    13、你需要输入你数据库名用 户名和密码,我的用户名是:root,密码:。最后把下而那个Save Passwod的小框 框给勾上。5、完成上面步骤,然后点击左下角有个testConnectiion如果弹岀success, 恭喜你直接点击右下角的save按钮就可以了。如果弹出error ,你则需要再重新 仔细查看自己哪里填错了。6、点击4save后,你就可以双击“本地”(这里的本地是你刚才输入的 connection Name),然后打开你的数据库了。2.3功能需求用户证书信息设计:数字证书的主要思想是实现对于合法用户信息的数字签名并生成数字证书,然后颁 发给合法用户,所以对于数字证书生成之前需要设计

    14、如下信息:(1) 版本(Version)版本信息,这个是证书的版本号,不同版本的证书格式是不同的(版本1、版本2、 版本3)。这里我用的是V3版本。(2) 序列号(Serial Number)证书序列号,同一身份验证机构签发的证书序列号是唯一的,这就是数字证书的不可 否认性。(3) 颁发者(Issuer)颁发者,也就是CA颁发机构,指岀这个证书是由谁颁发的:如果是自己所在机构生 成的,比如自己所在的公司,那么颁发者就是自己的公司。(4) 签名算法(Signature Algorithm)签名算法,指的是对数字证书进行签名的时候所使用的算法,可以根据颁发者的公 钥进行解密。(5) 使用者(Sub

    15、ject)使用者就是证书的持有者,可以是个人、公司、企业、网站等等需要认证自己身份 的个体或者集体。(6) 有效期(Valid form begin_date to end_date)证书的有效期就是证书所允许使用的期限,当数字证书过了有效期将无效,即对于 用户身份的认证将无效,这就需要重新申请数字证书方能进行通倍或者交易。(7) 公钥(Public Key)证书的公钥,主要是用来对消息进彳亍加密的,这个证书的公钥是2048位的,他的 值可以在对话框中看到,是很长的一段十六进制数。(8) 指纹和指纹算法指纹以及指纹算法,在证书发布的时候,发布机构会根据指纹算法先计算出整个证 书的hash值,并

    16、使用证书发布机构的私钥对其进行签名构成一个指纹,并将指纹与该证 书放在一起。构建自签名证书:申请数字证书之前,需要在密钥库中以别名的方式生成本地数字证书,建立相应的 加密算法,密钥,有效期等信息。keytool -genkcypair -keyalg RSA -keysize 2048 -sigalg SHAlwithRSA -validity3600 -alias server -keystore server, keystore各参数含义如下:-genkeypair -keyalg -keysize -sigal -validity -alias -keystore表示生成密钥对指左密钥算

    17、法,这里是RSA指定密钥长度,默认1024,这里指左2048指定签名算法,这里是SHAlwithRSA 指定有效期,单位为天指定别名指怎密钥库存储位置这里我输入参数作为密钥库的密码,也可通过参数-storepass指左密码。 注意:一个keystore应该是可以存储多套私钥-数字证书的信息,通过别名来区分。通过实践,调用上述命令两次(别名不同),生成同一个keystore,用不同别名进行 加密解密和签名验签,没有任何问题。经过上述操作后,密钥库中已经创建了数字证书。虽然这时的数字证书并没有经过 CA认证,但并不影响我们使用。我们仍可将证书导出,发送给合作伙伴进行加密交互。 keytool -e

    18、xportcert -alias server -keystore server, keystore -file server, cer -rfc各参数含义如下:-exportcert -alias -keystore -f订e -rfc 打印证书表示证书导出操作指定别名指定密钥库文件指定导出证书的文件路径指左以Base64编码格式输岀keytool -printcert -file server, cer2.4开发环境运行系统:Windows 10开发环境:eclipse, Navicat for MySQL基于eclipse编程软件对CA系统的设计与实现MySQL安装教程:1、把mysql

    19、-5. 7. 19-winx64. zip压缩文件解压到D:目录下:2、在 D:mysql-5. 7. 19-winx64 目录下新建 my. ini 配置文件:3、用文本编辑器或其他编辑器打开my.ini文件,把以下代码复制粘貼进去,保存 退岀:#代码开始Client#设置3306端口port - 3306mysqld#设置3306端口port - 3306#设置mysql的安装目录basedir= D:mysql-5. 7. 19-winx64#设置mysql数据库的数据的存放目录datadir= D:mysql-5. 7.19-winx64data#允许最大连接数max_connect

    20、ions=200#服务端使用的字符集默认为8比特编码的latinl字符集 character-set-server=utf8#创建新表时将使用的默认存储引擎default-storage-engine=INNODBsql_mode=NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLESmysql#设置mysql客户端默认字符集defaulL-character-set=utf8#代码结束4、配置环境变屋;4.1、新建系统变量MYSQLJIOME ,并配置变量值为D: :4.2、编辑系统变量Path ,将;NYSQLOHE%bin添加到Path变量值后面。65、以

    21、管理员身份运行命令提示符cmd (宦要用管理员身份运行,不然权限不够);5.1、使用dos指令,进入D:mysql-5. 7. 19-winx64目录,运行以下指令mysqld defaults-file=my. ini initialize-insecuremysqld installnet start mysql5.2、设置mysql的root密码,运行以下指令mysql -u root -puse mysql;update user set authentication_string=password(,) where user=,root5 ; flush privileges;exi

    22、t安装到此完成。3. 详细设计3.1系统设计框架首先,用Java的keytool生成Keystore和CA证书,实现自我的签发,然后开始监 听用户的信息传送,当用户通过验证并把用户信息和用户的公钥进行签名,然后对用户 信息进行封装,生成数字证书,并保留用户信息,最后就是验证数字签名。如果用户公 钥丢失需要挂失,用户需要先验证自己的身份,通过验证才可以进行挂失:如果公钥已 经挂失,则挂失失败。具体的结构设计如下图:CA系统挂失申请身份认证数字签名保存信息验证签名生成证书身份验证吊销证书图3-1 CA系统模块图22本次课程设计涉及到了主界而的设计,具体的系统包括内部的程序设计以及运行界 面的设计,

    23、内部的程序主要是将界面输入的数据接收,而且需要连接数据库进行用户信 息的验注,以及证书的吊销:然后在后台进行用户信息的处理,包括数字签名以及封装 数字证书,最后把扫描数字签名的结果放主界而显示,其内部程序运行的流程图如下图:9吊销证书 申请证书Yes图3-2 CA系统流程图3.2界面设计本程序的界面设计主要是显示数字签名以及保存的结果,以及将用户信息存入到数 据库中。申请证书之前需要设置用户信息,然后单击申请按钮,即可进行证书申请,最 后在中央窗体的状态显示区中显示数字签名的结果,签名完成后用户可以继续进行挂失 申请或者直接退岀界面。Swing提供了三个通用的顶层容器类JFrame, JDia

    24、log和JApplet。JFrame提供了 基于窗体的应用程序,JDialog提供对话框形式的界面,JApplet提供Java小应用程序 的界面形式。在顶层容器下是中间容器,用于容纳其他的组件。通常窗格本身在显示界 面中是看不到的。面板类Panel是一种中间容器,它的唯一作用是使组件更容易定位。 顶层容器通过getContentPane0方法获取内部的一个内容窗格。(1) 常用S叭ng组件: 文本区: JTextArea 按钮:button 标签组:JLabel 文本字段:JTextField(2) 主机IP而板实现(其他类似):jContentPane = new JPanel();jCon

    25、tentPane. setLayout(null);jContentPane. add(ipHostLabel, null);(3) 标签(JLabel)用来显示文字,图标(可以文字与图标同时显示)。JLabel构造方法JLabel 0创建一个空标签JLabel (String c)指定标签文本起始端口标签的设计如下(其他类似):jbPortLabel = new JLabel();jbPortLabel. setBounds(new Rectangle(228, 10, 65, 28);jbPortLabel. setText(”起始端口: ”);(4) 文本区域倍息添加函数:public

    26、static void appendTextArea(String s) jTexlArea.append(n + s + n);(5) 单行文本框(JTextField)构造方法JTextFieldOJTextField(int columns)指定宽度JTcxtField(String text)指定初始化文本JTextField(String text, int columns)编辑框函数设计如下(其他类似):private JTextField getJHostTextFieldO if (jHostTextField = null) jHostTextField = new JTex

    27、tField;jHostTextField. setBounds(new Rectangle(105, 10, 110, 26);return jHostTextField;(6)按钮的创建构造方法:JButtonOJButton(String c)指定显示文本JBut ton (Icon image)指定显示图标JButton(String c , Icon image)申请按钮函数实现(保存按钮类似):private JButton getConnJButtonO if (okJButton = null) okJButton = new JButtonO ;okJButton. setB

    28、ounds(new Rectangle(300, 145, 97, 26);okJButton. setText (* 申请);okJButton. addActionListener(this);return okJButton;(7)多彳亍文本框(JTextArea)构造方法JTextArea()JTextArea(int rows,columns)JTextArea(String text)指定尺寸指怎初始化文本JTextArea(String text,int rows, int columns)常用设置方法public void setLineWrap(boolean wrap):换

    29、彳亍状态设置public void setRows(int rows):设置行数public void setColumns(int columns):设置列数说明:颜色、字体、内容的设置同上(setForegroundx setFont、setText) 文本显示框代码设计如下:private TextArea getJTextAreaO if (jTextArea = null) jTextArea = new TextArea():jTextArea. setEditable(false);jTextArea. setBounds(new Rectangle(15, 180, 580,

    30、205);return jTextArea;(8)初始化界面函数实现:private void initializeO throws IOException this. setSize(720, 440);this. setContentPane(getJContentPane();this. setTitle(*MyCertificate(Vl. 0) By Gan);this. setDcfaulLCloseOperation(JFrame. EXIT_ON_CLOSE); this. setVisible(true);3.3主要代码数据库的连接(査找删改略):static driverClass = com. mysql. jdbc. Driver;url = *jdbc:mysql:/localhost:3306/mydb*;user = root;password =”;try 通过字节码对象方式加载静态代码块从而注册驱动程序Class. forName(driverClass); catch (ClassNotFoundException e) System, out. print In (” 无法创建实体);e. printStackTraceO ;public static Connection get


    注意事项

    本文(信息安全课程设计报告CA系统...docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开