zoukankan      html  css  js  c++  java
  • 《信息安全系统设计与实现》选做一

    1. 移动硬盘加密系统

        

            1.1解决什么问题

        用于解决传统u盘或移动硬盘内部信息安全性低的问题。传统装有重要信息的移动存储设备,在被偷窃、扫描等非授权操作后,极易发生信息泄露问题,该系统旨在解决这类问题。

            1.2由什么组成

        ①身份认证程序。在使用者将硬盘插入电脑接口以后,会要求用户输入已授权用户所知的口令,否则不能使用该硬盘。

        ②对称加密程序。改装主板,在信息被存入存储颗粒以前使用对称加密技术,使用者可以输入一个只与该信息有关的对称密钥,对信息进行DES加密。在从硬盘中读取数据的时候,只有输入对称密钥,才能获取信息。

            1.3有什么功能

        ①对使用该加密移动硬盘的使用者进行身份认证。

        ②对存入的信息进行DES加密,使得攻击者无法暴力读取。

    1. 基于时间的一次性口令生成程序

            2.1解决什么问题

         远程身份认证有时需要发送一个临时口令给用户个人设备,但这容易被第三方截获,这个程序基于时间采用本地生成的方式解决上述问题。

            2.2由什么组成

    本生程序使用python语言。

    通过调用time来达到获得时间的目的,调用hashlib进行sha256哈希算法,调用tkinter实现界面友好。

    TOTP()设计思路:对当前时间到纪元时间之间的秒数除30作为参数,与双方共同知道的密钥一同哈希以后取其中n位再分别由十六进制转换为十进制,组合起来形成30秒有效的一次性口令。

    其中,关键n位选取方法:取哈希结果(由于每一位都具有不确定性)的最后一位十六进制数,用这个数对应的位数后取四位得到最终结果。如果用示意图表示则图示(n=8)如下:

            2.3有什么功能

    ①界面图形化,用户易于理解

    ②用户和服务器两端在已知一个密钥的情况下可以各自生成一个一次性口令,过程不用担心被截取。

    ***这里自己做一个小程序为例子(为了简单起见,n4,密钥使用我自己的学号):

    源代码:

    #假定密钥为:20191212
    from tkinter import *
    import time
    import hashlib
    def oxtod(i):                       #该函数用于十六进制转换为十进制并且补零
        j=int(i,16)
        if j<10:
            return'0'+str(j)
        else:
            return str(j)
    def TOTP():                         #实现生成一次性口令
        t=time.time()                   #纪元以后的秒数
        c=int(t)/30
        C=int(c)
        value='K'+str(C)                #密钥和时间参数生成值
        a=value.encode("utf-8")
        ha=hashlib.sha256(a).hexdigest()   #对结果哈希
        n=ha[-1]                            #取最后一位
        number=int(n,16)
        command=oxtod(ha[number])+oxtod(ha[number+1])+oxtod(ha[number+2])+oxtod(ha[number+3])
        #取最后一位对应数字的对应位的相连四位为一次性口令
        return command                    #返回口令



    window = Tk()
    window.title("验证程序")
    window.geometry('300x170')
    window.maxsize(400,200)
    window.minsize(200,120)
    window.configure(bg='MintCream')
    #定义界面尺寸、最大最小尺寸、背景颜色

    lbl = Label(window,text = "点击此处生成一次性口令→",bg='MintCream',fg='tomato')
    lbl.grid(column=0,row=0)
    lb = Label(window)
    def clicked():                          #定义点击按钮后的结果
        lb.configure(text = "口令为:" + TOTP(),bg='MintCream',fg='Brown')
        lb.grid(column=0,row=1)
    btn = Button(window,fg="tomato",bg="Aquamarine",text="生成",command=clicked)
    btn.grid(column=2,row=0)
    window.mainloop()                       #使程序一直运行

     

    运行程序,同时将在结果栏输出哈希结果(实际使用不需要这一步):

    点击“生成”:

    可见哈希最后一位是0x0C,即12,从哈希结果的第十三位开始后四位是f906,分别转换为十进制结果即为15090006

    多次运行,由结果可见30秒有效时间以内得到的结果都相同,但是30秒过后程序的验证口令发生改变。

    1. 安全上网路由系统

            3.1解决什么问题

    普通路由器可能被他人用软件破解占用,并且扫描占用。针对这个安全隐患,开发了这个系统,用来解决这个问题。

    3.2由什么构成

    使用IPSec协议(包括ESP封装安全负载、AH报头验证协议、IKE密钥管理协议等)。其中AH协议能够提供无连接的完整性、数据发起验证及重放保护,ESP主要用于提供额外的加密保护,而IKE则主要提供安全加密算法与密钥协商。这些机制均独立于算法,协议的应用与具体加密算法的使用均可取决于用户及应用程序的安全性要求。

            3.3有什么作用

    ①可靠性与线路安全。可靠性主要体现在接口故障和网络流量增大两种情况下,为此,备份是路由器不可或缺的手段之一。当主接口出现故障时,备份接口应可以自动投入工作,保证网络的正常运行。当网络流量增大时,备份接口又可承当负载分担的任务。

    ②身份认证。包括访问路由器时的身份认证、对端路由器的身份认证和路由信息的身份认证。

    ③信息隐瞒。与对端通信时,不一定需要用真实身份,通过地址转换,可以隐藏网内地址。除了由内部网络首先发起的连接,网外用户不能通过地址转换直接访问网内资源。

  • 相关阅读:
    nginx rewrite 模块
    nginx 的请求处理流程
    nginx keepalive 长连接
    cglib、orika、spring等bean copy工具性能测试和原理分析
    jackson、fastjson、kryo、protostuff等序列化工具性能对比
    Java源码详解系列(十一)--Spring的使用和源码(共计4篇博客)
    Spring源码系列(四)--spring-aop是如何设计的
    Spring源码系列(三)--spring-aop的基础组件、架构和使用
    JMH--一款由OpenJDK开发的基准测试工具
    MySQL系列文章汇总
  • 原文地址:https://www.cnblogs.com/stx3220665294/p/15270132.html
Copyright © 2011-2022 走看看