1.S/KEY协议的作用。

身份认证,是任何网络安全方案的一个基础。如在大部分情况下,需要认证的实体是通信的发送者,即需要确定访问者的合法性问题。 S/KEY协议主要是用于身份认证。

2.S/KEY协议的安全性分析。

S/KEY身份认证解决方案,可以有效解决重放攻击。重放攻击是指攻击者通过某种方式在网络连接中获取他人的登陆账户与口令,然后利用它多某个网络资源的访问权限。而现在S/Key协议分配给访问者的口令每次都不同,所以,就可以有效解决口令泄漏问题。因此,可以避免重放攻击。

3.SKEY协议的实现过程。

实现过程分析:

为了实现起来简单明了一些,我采用了一个比较简单的方式进行。要模拟客户端保存数据比较不容易实现,对服务器生成的hash值,保存在本地文件中,当然这个hash的值是动态的,每次hash都会加上相应的登陆次数(这个hash方式和一般的s/key协议有些不同),这样可以动态的获取。通过文件读写的方式获得。对于生成的hash值从100到0次访问的问题也是使用一个文件来储存,每次验证完成后,都会把前一次存的数据减1然后重新的写入文件中。

总的流程图如下:

辅助文件:

md5.txt为存储hash值的文件:

int.txt文件为存储登陆后修改的数据:

写进去的格式不是10进值的,所以读出来后才可看懂。

部分代码:

FileOutputStream fos = new FileOutputStream(file_int);FileWriter writer = new FileWriter(file_md5);BufferedWriter bw = new BufferedWriter(writer);fos.write(1);for(int a=1;a<100;a++){MD5String md5 = new MD5String(string+a);System.out.println(md5.GetMD5Code());bw.write(md5.GetMD5Code().toString());bw.write("\r\n");}bw.close();writer.close();FileInputStream fis = new FileInputStream(file_int);System.out.print(fis.read());
FileInputStream fis = new FileInputStream(file_int);int a = fis.read();FileReader fileReader = new FileReader(file_md5);BufferedReader bReader = new BufferedReader(fileReader);//从文件读出来MD5值String string2 = (String)readLine(a, bReader);MD5String md5String = new MD5String(string+a);String compare_string = md5String.GetMD5Code();if(string2.equals(compare_string)){
Private String readLine(int lineNumber,BufferedReader reader)throws Exception{String line="";int i=0;while(i<lineNumber){line=reader.readLine();i++;}return line;}

初始化:

登陆:

登陆成功跳转到密码学界面:

登陆失败:

[问题讨论]

1. 分析SKEY的安全性;

①每个数只使用一次,对数据库攻击用处不大

②可防止重放攻击

代码下载地址(s/key协议实现,有些加密算法还没有加到监听器)

http://download.csdn.net/detail/u011496891/7261337

SKEY协议设计实验相关推荐

  1. 2017-2018-1 20155327 实验五 通讯协议设计

    2017-2018-1 20155327 实验五 通讯协议设计 实验一: 实验要求: 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中 ...

  2. 2017-2018-1 20155222 201552228 实验五 通讯协议设计

    2017-2018-1 20155222 201552228 实验五 通讯协议设计 实验内容和要求 通讯协议设计-1 在Ubuntu中完成 http://www.cnblogs.com/rocedu/ ...

  3. 2018-2019-1 20165201 实验五 通讯协议设计

    2018-2019-1 20165201 实验五 通讯协议设计 实验五 通讯协议设计-1 任务详情 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623 ...

  4. 2018-2019-1 20165212 实验五 通讯协议设计

    2018-2019-1 20165212 实验五 通讯协议设计 OpenSSL简介 OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及 ...

  5. 2017-2018-1 201553334 实验五 通讯协议设计

    2017-2018-1 201553334 实验五 通讯协议设计 1.在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业 提交运行 ...

  6. 2018-2019 1 20165203 实验五 通用协议设计

    2018-2019 1 20165203 实验五 通用协议设计 OpenSSL学习 定义:OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功 ...

  7. 2018-2019-1 20165318 20165326 实验五 通讯协议设计

    2018-2019-1 20165318 20165326 实验五 通讯协议设计 目录 实验内容 问题及解决 参考资料 实验内容 任务一 在Ubuntu中完成作业 openSSL OpenSSL是一个 ...

  8. 2017-2018-1 20155229 实验五 《通讯协议设计》

    2017-2018-1 20155229 实验五 <通讯协议设计> 实验目的 通过学习openssl,了解openssl,并且能够通过它来实现密码算法的印证 实验步骤 实验五 通讯协议设计 ...

  9. 2019-2020-1 20175227张雪莹《信息安全系统设计基础》 实验五 《通讯协议设计》

    2019-2020-1 20175227张雪莹<信息安全系统设计基础> 实验五 <通讯协议设计> 实验报告封面 课程:信息安全系统设计基础 班级:1752班 姓名:张雪莹 学号 ...

最新文章

  1. 《Android应用开发攻略》——1.3 从命令行创建 “Hello, World”应用程序
  2. 圆形百分比_还有半圆形的饼图!怎么做出来的?
  3. UA MATH567 高维统计I 概率不等式2 在Erdős–Rényi随机图模型中的应用
  4. 第二次讲课内容(函数和快速幂)
  5. centos 6.6 oracle 10g,centos 6.2 安装 oracle 10g 问题
  6. Hibernate 常见异常
  7. jquery.validate
  8. git小乌龟不显示图标状态解决方案
  9. Java支付宝app wap支付接入
  10. php统计页面访问量_PHP 统计 网页 总访问次数 附代码
  11. linux 软件脱壳机,关于UPX脱壳后程序无法运行
  12. 去除win10快捷方式的小箭头
  13. 红茶保质期一年半,我都放了五年了,打开还有茶味,能喝吗?
  14. Linux下RTL8723BE无线网卡驱动问题解决方法
  15. MOBA移动游戏性能分析报告:渲染、UI和逻辑代码是性能头号杀手!
  16. 寒武纪笔试——嵌入式
  17. 2020区块链春风不止,河北、湖南、北京等5省发布区块链专项发展政策|链塔智库...
  18. python decode函数的用法_decode函数的用法
  19. 十一、HTML常用标签
  20. 【Linux】Linux文件目录

热门文章

  1. 傅里叶变换 二维离散傅里叶变换
  2. 高中计算机教案excel,[转载]高中信息技术教案(第三章Excel)
  3. 64位系统Python注册表问题修复方案
  4. 中国移动:以改革为动力 促进科技创新发展
  5. 基于springboot2.0的易居二手房网站-房屋管理系统
  6. 【深度学习】02-04-类神经网络训练不起来怎么办?(自动调整学习速率)-李宏毅老师2122深度学习课程笔记
  7. 用友t3服务器系统管理显示类型不匹配,登录账套提示:“类型不匹配”
  8. 跳跃的青蛙,C语言实现版本
  9. 怎么把mp4转换成mp3音频
  10. 互联网公司让行政给员工发中秋节福利,看到预算后:还是别发了