基于DES算法的银行系统安全登录设计


    基DES算法银行系统安全登录设计


    着信息通信技术迅猛发展广泛应网络信息系统基础性全局性作日益增强 通互联网进行信息交流难免涉户登陆安全问题仅关系隐私甚国家机密国家安全银行系统旨员工提供信息理安全高效操作方便界面建立沟通员工理员员工银行服务系统意义说采取银行系统户密码效加密邮箱账号激活异登陆提醒等措施必须面问题
    文户安全登陆进行深入研究方面采DES算法密码进行加密存储会步骤:初始置换IPDES算法子密钥产生DES算法扩展置换S盒置换P盒置换末置换函数第二方面javaMail户邮箱发送激活账号邮件刚注册账号果没邮箱激活程户登陆系统第三方面系统动匹配邮箱前登陆IP址出现新IP登陆时判断陌生IP异登陆连续次输入错密码次数进行登录限制
    DES存弱密钥补密钥特征前密钥设计程中弱密钥避免户告诫量补密钥次毕设中补密钥实现加密解密程
    终通三步骤SSM框架整系统划分表现层Controller层Service层Dao层四层完成整银行登录设计系统功设计保证银行系统户登陆安全性

    关键词: DES 登录 SSM 安全



    Abstract

    With the rapid development and wide application of information and communication technology the basic and overall role of network and information system is increasing day by day People communicate information through the Internet which inevitably involves the security of user landing This is not only related to personal privacy but also possibly national secret and national security The bank system aims to provide employees with information management safe efficient and easy to operate interface and establish a service system to communicate with employees and managers employees and banks In this sense we have to face the problem of effectively encrypting user passwords activating mailbox accounts and reminding people to log on in different places
    This paper makes a deep research on user's secure login On the one hand we use DES algorithm to encrypt and store passwords which will go through the following steps initial replacement IP generation of DES algorithm subkey extended replacement of DES algorithm Sbox replacement Pbox replacement and last replacement function on the other hand we use Java Mail to send activation account email to users For newly registered accounts if there is no email activation process users will not be able to login to the system third the system automatically matches the IP address before the mailbox login When a new IP login occurs it judges that the unfamiliar IP is landing in another place and restricts the number of times that the wrong password is entered repeatedly
    DES has the characteristics of weak key and complementary key In the past key design process weak key is inevitable but users are warned not to use complementary key as far as possible Therefore the complementary key is used to realize the encryption and decryption process
    Finally through the above three steps and using the SSM framework the whole system is divided into four layers the performance layer the controller layer the service layer and the DAO layer to complete the design of the whole bank login design and system functions It guarantees the security of user login in banking system
    Key words:Data Encrytion Standard landing SSM Security
    目 录
    1 绪 1
    11 研究背景 1
    12 研究容 2
    13 文结构 2
    2 DES算法特点实现原理 3
    21 DES算法特点 3
    22 DES算法实现原理 3
    221DES算法基结构 4
    222DES算法初始置换函数IP 4
    223DES算法子密钥Ki产生 5
    224DES算法密码函数F 6
    225DES算法工作模式 9
    3 系统功设计 11
    31 注册功设计 11
    32 登录功设计 12
    33 功设计 12
    4 系统实现 13
    41数库表设计 13
    42数库操作接口 13
    43实现注册功 17
    431注册页面实现 17
    432邮箱激活账号实现 19
    44实现登录功 21
    441登录页面实现 21
    442权限控制实现 22
    443异登录提醒实现 25
    444限制登录错误次数实现 26
    45实现系统功 27
    451员工信息理实现 28
    452理财理账目理实现 29
    453账户信息理实现 29
    5 总结 31
    参考文献 32
    致 谢 33
    1 绪
    11 研究背景
    网银行信息时代产物诞生原必须银行柜台办理业务客户直接通互联网进入网银行进行相关业务操作银行理系统开通银行客户说提高工作效率资金创造高效益降低生产营成
    银行理系统指网银行员工终端设备完成交易业务服务系统银行绝部分业务均银行理系统实现应银行数量集中等特点设计套安全稳定高效银行理系统具非常重现实意义
    中功模块系统必少登录模块登录模块负责生成存储验证户身份数户系统进行操作时候验明户真实身份进行权限控制系统中登录模块作系统安全重控制入口登录系统时候应该关注意安全等提示安全性考虑系统应该邮箱账号激活密码加密异登陆提醒限制登录错误次数等功保证户安全性
    段时间国外许公司少安全功放等重位置导致许安全事件发生点国尤突出公司出现安全问题新闻屡见鲜2017年10月雅虎发布公告称2013年数泄露事件中概30亿笔帐号(包含时雅虎户)泄露前估计10亿笔数泄露影响范围远超前估计2017年11月Uber动公开年发生起严重数泄露事件悉黑客通外部代码托网站GitHub获UberAWS账号密码盗取5700万客姓名电子邮件电话号码约60万名美国司机姓名驾号码隐瞒事件Uber黑客支付10万美元封口费见需制定准保证公司安全
    国外目前仅密码基础理方面研究做实际应方面做非常制定系列密码标准特规范算法征集讨已公开化密码技术作种关键技术国会放弃权控制权争夺霸权位美国征集DES活动充分体现点1977年美国数加密标准(Data Encryption Standard DES)颁布30年DES成世界范围标准外公开密钥算法RSA样发展迅速相关算法断改进新方法新思路断涌现称密码加密算法深入研究起作时国银行系统会涉安全登录问题密码加密邮箱账号异登陆提醒必少安全员致力方面研究投入量力财力保障客户财产安全
    总说PKI技术发展中国外调查公司说法PKI系统仅仅做示范工程IDC公司Internet安全资深分析家认:PKI技术成应计算基础结构核心部件包括越出传统网络界限应B2B电子商务活动需认证否认等
    PKI产品力提供功
    12 研究容
    文着重解决DES算法密码存储领域重应邮箱激活账号异登陆提醒限制登录错误次数等系列登录时会出现问题
    DES算法安全性部分赖密钥长度DES密钥长度64位穷举法定条件密钥攻击实现增加密钥长度DES算法中64位密钥中中56位实际应中应避开第8162464位作效数位56位作效数位保证DES算法安全发挥作课题研究程中意避免第8162464位
    邮箱激活逻辑户注册页面输入邮箱址台生成激活码户信息存储发送激活邮件户点击邮箱中链接激活异登陆提醒系统动匹配邮箱前登陆IP址出现新IP登陆时判断陌生IP异登陆限制登录错误次数已错误登录5次返回特定编码告知前台显示错误信息次数足5次错误登录次数+1返回正常错误信息
    13 文结构
    第章介绍国外公司关安全防范发展历程银行系统需求源登录模块引出DES算法发展历程简介DES算法密码存储领域重应邮箱激活账号异登陆提醒限制登录错误次数登录模块应
    第二章详细介绍DES算法特点实现原理算法基结构算法子密钥产生算法迭代程算法加密解密程深入阐述
    第三章介绍系统功设计注册功登录功系统功设计原理注意事项
    第四章介绍系统需数库表数库操作接口实现注册登陆系统功出核心代码
    第五章总结整模型框架结果总结利DES算法密码存储块优势缺点
    2 DES算法特点实现原理
    21 DES算法特点
    DES算法种通称密钥算法属分组密码算法DES民敏感信息加密DES算法密码体制中称密码体制称美国数加密标准1972年美国IBM公司研制称密码体制加密算法 明文64位进行分组密钥长64位称密钥算法分两种:分组密码流密码分组密码明文分割干定长数块称分组次分组进行处理流密码称序列密码次输入元素进行处理
    基密钥算法安全性密钥安全性算法身公开基密钥算法通常两类:称算法公开密钥算法称算法称传统密钥算法称算法称性体现加密密钥够解密密钥推算出反成立数称算法中加解密密钥相见堆成密钥算法加解密密钥保密公开密钥算法加密密钥公开解密密钥保密
    DES算法具极高安全性目前止穷举搜索法DES算法进行攻击外没发现更效办法56位长密钥穷举空间2^56意味着果台计算机速度秒钟检测百万密钥搜索完全部密钥需2285年时间见难实现然等说DES破解实际着硬件技术Internet发展破解性越越需时间越越少特殊设计硬件行处理时
    22 DES算法实现原理
    DES加密四部分完成分:初始置换函数IP子密钥Ki获取密码函数F末置换函数IP算法入口参数三keydatamodekey加密解密密钥data加密解密数mode工作模式DES作种基结构Feistel结构加密算法加密核心F函数Feistel结构决定加密解密流程相硬件实现软件实现需种结构需分实现DES分组长度64位初始置换函数IP接受长度64位明文输入末置换函数IP输出64位密文子密钥获取程中通密钥置换获取K1K1616子密钥16子密钥分序应密码函数16次完全相迭代运算中DES解密算法加密算法完全相需密钥应次序加密时相反应解密程初始置换函数IP接受长度64特密文输入16子密钥K16K1序应函数F16轮迭代运算中然迭代结果末置换函数IP64位明文输出
    221DES算法基结构

    图21 DES算法基结构

    222DES算法初始置换函数IP
    64位明文分组x首先初始置换函数IP进行置换运算产生64位输出x0该输出分成两分32位左半部分L0右半部分R0F函数16轮迭代运算首次迭代初始输入初始值换函数IP实际张8x8迭代表图22示明文分组中64位表中规定重新进行排序排列序左右表示明文中第58位放置x0第1位第50位放第2位类推

    图22初始置换函数IP
    223DES算法子密钥Ki产生
    子密钥获取通置换移位运算实现首先DES16轮循环需64bit机密钥Key生成16子密钥KiKey64bit字节位先通初始置换64bit密钥转换56bit8行8列左右排列中行第8位奇偶校验DES加密算法中子密钥获取程中DES系列置换移位运算K1K1616子密钥子密钥长度48位实现程:
    首先输入64位密钥掉列8校验位然密钥置换函数PC1剩56位密钥进行置换图23示

    图23密钥置换函数PC1表

    图23知户输入64位密钥中第8162432404856648校验位掉剩余56位图23示摆放第57位放第1位第49位放第2位第41位放第3位第33位放第4位第25位放第5位第17位放第6位第9位放第7位
    PC1置换置换输出分前28位C028位D0两部分轮置换输出两部分循环左移1位者2位轮图24示进行移位然两部分合成56位压缩置换PC2前轮置换48位子密钥置换压缩图25示

    图24子密钥循环左位移表


    图25压缩置换PC2
    PC2置换压缩置换置换输出数位数置换前输入次数少某位数置换程中掉图25知压缩置换程中原7
    行8列58位数压缩成8行6列48位数压缩置换程中第9182225353843548位数丢掉时轮移位两部分进行移位作子密钥产生PC2置换输入16次循环左移16次置换16子密钥

    子密钥产生代码:
    if(key NULL){
    memcpy(temp key 8)
    permute(temp DesTransform 56)
    memset(lkey 0 4)
    memset(rkey 0 4)
    for(i 0 i < 28 i++)
    {
    set_bit(lkey i get_bit(temp i))
    set_bit(rkey i get_bit(temp i+28))
    }
    for(i 0 i < 16 i++)
    {
    rol_bit(lkey 28 DesSubkey[i])
    rol_bit(rkey 28 DesSubkey[i])
    for(j 0 j < 28 j++){
    set_bit(subKey[i] j get_bit(lkey j))
    set_bit(subKey[i] j+28 get_bit(rkey j))
    }
    permute(subKey[i] DesPermuted 48)
    }
    }

    224DES算法密码函数F
    密码函数F接受两输入:32位数48位子密钥函数F运算程:
    先数右半部分Ri通扩展置换E32位扩展48位称扩展置换置换数置换前数位数扩展置换E通原2位数中某位重复出现达扩展目置换函数26示扩展置换称选择函数俗称E盒

    图26扩展置换
    图26知扩展置换通第321245891213161720212425282919位分放置两位置32位数扩展48位接着扩展置换48位输出E压缩置换48位密钥Ki作异运算异运算48位结果数分成86位块块通应S盒产生4位输出S盒实际张4行16列置换表值注意S盒行列编号0开始显然需8S盒
    S盒接受6位输出置换输出4位数具体置换程:6位输入中第1位第6位取出形成2位二进制数x该数出S盒行数然6位输入中间4位构成外二进制数y该数S盒列数然查出Sx行y列应整数该整数转换4位二进制数S盒输出
    面86位数置换结果连起形成32位输出输出结果通P盒置换产生32位输出P盒置换图27示

    图27 P盒置换
    P盒置换结果左半部分进行异运算然左右两半部分交换进行轮迭代完成相16轮运算两部分数合起末置换函数IP164位密文末置换函数IP1初始置换IP逆运算图28示

    图28末置换函数IP1
    扩展置换S盒置换P盒置换代码:
    memcpy(temp data 8)
    permute(temp DesInitial 64)
    memcpy(ldata &temp[0] 4)
    memcpy(rdata &temp[4] 4)
    for(i 0 i<16 i++){
    memcpy(exp_data rdata 4)
    permute(exp_data DesExpansion 48)
    if(type ENCRYPT){
    xor_bit(subKey[i] exp_data exp_data 48)
    }
    else{
    xor_bit(subKey[15i] exp_data exp_data 48)
    }
    for(j 0 p 0 j < 8 j++){p0~32
    row (get_bit(exp_data j*6+0) * 2) + (get_bit(exp_data j*6+5) * 1)
    col (get_bit(exp_data j*6+1) * 8) + (get_bit(exp_data j*6+2) * 4) +
    (get_bit(exp_data j*6+3)) * 2 + (get_bit(exp_data j*6+4) * 1)
    value (unsigned char)DesSbox[j][row][col]
    for(k 4 k < 8 k++){
    set_bit(exp_data p get_bit(&value k))
    p++
    }
    }
    permute(exp_data DesPbox 32)
    xor_bit(exp_data ldata exp_data 32)
    memcpy(ldata rdata 4)
    memcpy(rdata exp_data 4)

    末置换代码:
    memcpy(data rdata 4)
    memcpy(data + 4 ldata 4)
    permute(data DesFinal 64)
    return
    225DES算法工作模式
    实际应中DES根加密算法定义明文分组(64bits)数割成干64bits加密区块加密区块单位分进行加密处理根数加密时加密区块间关联方式分4种加密模式包括ECBCBCCFBOFB
    1电码模式(ECB)
    ECB模式DES加密基工作模式ECB模式加密区块次独立加密产生独立密文区块加密区块加密结果受区块影响种方式利行处理加速加密解密运算网络传输时区块错误发生会影响区块传输结果该模式优点该模式缺点容易暴露明文数模式
    2 密码分组链接模式(CBC)
    CBC模式第加密区块先初始量IV做异运算进行加密加密区块加密前必须前加密区块密文作次异运算进行加密区块加密结果均会受前面区块容影响明文中出现次相明文会产生密文密文容遭剪贴换网络传输程中发生错误续密文破坏法利解密原模式优点缺点CBC模式加密作业法利行处理加速加密运算解密运算利行处理加速
    3密文反馈方式(CFB)
    CFB模式区块加密算法作流密码加密器流密码加密器实际需次加密区块订区块明文前区块加密密文做异成密文区块加密结果受前区块容影响会明文中出现次相明文均产生密文模式位加密第区块必须选择初始量初始量必须惟次加密时必须样难利行处理加快加密作业
    4输出反馈模式(OFB)
    OFBCFB致相区块明文前区块加密结果做异产生密文前区块加密结果独立产生区块加密结果受前密文区块容影响果区块传输程中遗失发生错误法完全解密模式加密第区块必须设置初始量否难利行处理加快加密作业

    3 系统功设计
    31 注册功设计
    注册网站基功工作流程:客户端(浏览器)服务端发起request请求服务端通监听8080端口接收请求服务端接收请求进行相关处理服务端客户端发response响应客户端接收response响应完成次交互注册期间引入邮箱激活账号功目户完成注册利发送邮件进行验证户输入邮箱真实性进行账户激活保证续信息通邮件发送户邮箱激活账号工作原理户注册机生成uuid作户标识传递户然作路径参数发送html容户注册邮箱里户点击页面提交usernamepassword成功户验证成功里QQ邮箱作邮件发送者
    值注意关前端校验端校验实前端端进行简单数校验注意:前端没表单校验程(然简单数校验更)端必须数校验原:前端数校验容易绕curl 命令绕前端直接台发请求赖网页中JS校验必须台数校验确保数安全实际开发中密码直接传数库存储数库中应该存户密码加密数然户果登录服务端密码加密数库中信息做总体注册程图示:

    图31注册序图

    32 登录功设计
    登录页面重三部分登录邮箱密码登入钮 户分输入邮箱密码点击登录钮进行登录操作前端部分做事判断户否两部分输入信息接着判断邮箱格式否正确(前端进行判断邮箱格式端服务器会判断次)户容输入正确客户端会户输入容传服务器服务器信息会次判断信息格式等否符合求误信息数库中信息作较果数库中找邮箱密码传入信息相服务器设置cookie返回HTTP状态码200客户端前端登录成功信息跳转登录成功页面果返回HTTP状态码401客户端客户端提示户邮箱密码匹配登录失败前端需户写登录信息传数库会做简单数校验
    里果户常IP登陆时会提示异登录异登录提醒作果户信息窃取第时间反馈户户够时修改信息保证信息窃取样做极保障户信息安全性
    项目登录模块中常会连续N次输错密码禁止登录需求户登陆时查询数库表般user表中会:否禁次登陆时间(秒)户登陆错误次数户登陆时查询该户数进行判断正确更新否禁登陆时间错误次数0登陆错误时错误次数+1错误次数3更新否禁禁更新次登陆时间登陆时该户数中否禁禁判断次登陆时间前登陆时间相较半时登陆重复面流程
    33 功设计
    银行理系统指网银行员工终端设备完成交易业务服务系统银行绝部分业务均银行理系统实现应银行理系统采前端加台架构模式前台员工登录进行查询转账充值等相关操作台理员登录进行相关信息增删改更新操作系统利BS结构模式实际需求出发实现基功时突破局域网限制满足前Internet开放互连信心享新求员工时通浏览器访问网站数信息提高银行理效率时保护员工权益意义外系统会功模块说明果疑问话员工客户服务端理员提问时理员进行时回复银行理系统旨员工提供信息理安全高效操作方便界面建立沟通员工理员员工银行服务系统

    4 系统实现
    41数库表设计
    首先户表户表属性包括户表键户ID户名户密码姓名年龄权限户邮箱址户IP址属性中户名户密码电子邮箱址IP址属性作唯标识户身份编码方式设置UTF8避免数库出现空数数项NOT NULL关键字修饰非空DEFAULT关键字设置默认值户表包含约束键约束键户ID值注意明文保存密码信息安全隐患般数库里存户姓名手机号户名等信息旦数库发生泄漏加户明文密码攻击者户名密码网站尝试登陆(户会网站密码根惯设成样)旦登陆成功会造成更严重果具体实现代码:
    CREATE TABLE `yonghu` (
    `id` int(11) NOT NULL AUTO_INCREMENT
    `yonghuming` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
    `mima` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
    `xingming` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
    `nianling` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
    `quanxian` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
    `regisStatus` int(255) NULL DEFAULT 0 COMMENT '否激活1激活 0未激活'
    `code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '激活码'
    `addr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '址'
    PRIMARY KEY (`id`) USING BTREE
    ) ENGINE InnoDB AUTO_INCREMENT 30 CHARACTER SET utf8 COLLATE utf8_general_ci ROW_FORMAT Dynamic
    42数库操作接口
    设计采BS模式SSM框架会分两部分:数库接口类接口类应映射xml文件需导入相应jar包图4142示需配置
    jdbcproperties文件图43示邮件配置文件图44示

    图 41 mybatisspringjar包


    图 42 mysqlconnectorjavajar包


    图 43 jdbcproperties配置文件

    图 44 mailproperties配置文件

    配置文件代码:
    <邮件配置>

    < 引入jdbc配置文件 >




    <创建jdbc数源 >
    destroymethodclose>






    <配置邮件接口>







    {mailsmtpauth}
    {mailsmtptimeout}




    接口类代码:
    public interface YonghuMapper {
    public void insert(Yonghu yonghu)
    public void delById(@Param(id) int id)
    public void updateById(Yonghu yonghu)
    public Yonghu checkCode(@Param(code) String code)
    public List getYonghuByConditionAsc(Yonghu yonghu)
    public List getYonghuByConditionDesc(Yonghu yonghu)
    public List getYonghuByConditionOrder(Yonghu yonghu)
    public List getYonghuByConditionOrderIds(Map params)
    public List getYonghuByConditionOrderCols(Map params)
    public Yonghu getYonghuById( @Param(id) int id )
    public int getByConditionForNum(Yonghu yonghu)
    public void insertBatch(List list) }

    映射文件代码:


    insert into
    yonghu(yonghumingmimaxingmingnianlingquanxianaddrregisStatuscode)
    values(#{yonghuming}#{mima}#{xingming}#{nianling}#{quanxian}#{addr}#{regisStatus}#{code})




    update yonghu set id id code #{code} regisStatus #{regisStatus}


    select * from Yonghu where 1 1


    select * from Yonghu where id #{id}