网络安全和密码学的课后习题
英语
谈论家乡
谈论网安
谈论研究生规划
谈论职业规划
谈论家庭
空闲时间干嘛
喜欢的科目
面试问题
- 录取的优势在哪里:
我报考的是网安方向的电子信息专硕,对于计算机学科基础、网安相关技术以及编程能力都有一定的要求,下面是我的录取优势- 我本科是网络工程,而网络安全恰恰是由网络工程知识体系衍生出来的
- 我本科接触过一些网安方面的知识,比如密码学、XSS、CSRF等等
- 我个人独立开发过若干软件项目,使用过spring、springMVC、Mybaitis以及springboot等框架技术,有一定的工程能力
- 最近在看什么书:
最近在看吴军博士的《浪潮之巅》,体会:一个正确的商业策略很重要。
小米科技公司运用互联网思维,颠覆了传统手机厂商渠道销售的模式,大力进行“饥饿”营销,公司成立才短短几年,就成为了中国智能手机的强者,创造了以小胜大的神话。 - 最近的技术(电子货币):
比特币是基于区块链技术实现的。
区块链(Blockchain):通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案
即在没有中心化中介介入的情况下实现数据的高安全性和高可靠性 - 你为什么要选择这个专业
- 从兴趣角度:本科大三有网络安全原理与技术这门课,才知道之前听说过
死亡之PING
、泪滴
的原理是这样的,萌生对网络安全专业的兴趣。 - 从学校角度
北邮是国内计算机顶尖高校,网安专业更是国内前3的存在,所以我选择报考北邮网安专业
- 从兴趣角度:本科大三有网络安全原理与技术这门课,才知道之前听说过
Ping of Death是一种畸形报文攻击,方法是由攻击者故意发送大于64k字节的ICMP数据包给对方
泪滴攻击:黑客向受害者的机器发送序号重叠的IP片段。
由于TCP / IP碎片重新组装的方式存在错误,因此显然会导致操作系统和服务器崩溃。
所有操作系统的许多类型的服务器都容易受到这种类型的DOS攻击,包括Linux。
5-8是我针对当时报的组的研究方向的问题
5. 属性加密(ABE)
- 同态加密
提供一种对加密数据进行处理的功能。
其他人可以对加密数据进行处理,但处理过程不会泄露任何原始内容。
拥有密钥的用户对处理过的数据进行解密,得到的正好是处理后的结果
同态加密特别适合云计算(Cloud Computing)
A way to delegate processing of your data, without giving away access to it.
用户使用同态来加密数据后,上传给云,让云对加密数据进行直接处理,并将处理结果返回给用户。
这样用户不用担心自己的数据泄密。
-
函数加密
函数加密中拥有解密密钥的用户,可以获得的是数据的函数值,不会获得其他有关明文的任何消息。 -
广播加密
一种将数据内容通过广播信道安全地分发给合法用户的机制
目前在付费电视、视频会议、无线传感网等方面得到了广泛的应用 -
简述下你的毕业设计?
在做毕设过程中,遇到了哪些问题?如何解决这些问题?
我的毕业设计是基于spring boot的高校社区系统,采用spring boot框架来整合spring、springMVC、Mybatis,从而来简化项目中spring的配置开发。
主要功能有:- 登录注册功能
- 敏感词过滤功能
- 帖子评论回复功能
- 利用AOP进行统一记录日志
- 点赞关注功能
- 系统通知功能
使用kaptcha谷歌验证码生成工具、Redis高性能内存数据库以及Kafka高性能消息队列服务器等组 件来配合开发项目
项目开发主要问题:
1. 分布式seesion问题
将客户端会话数据不存到session中而是存到数据库中。
优化性能的话,将会话数据存到Redis数据库
2. 密码安全问题
加盐之后MD5
3. 数据库事务问题
添加评论时(添加评论和更新评论数量放在一个事务中)
使用spring声明式事务管理 @Transactional
20 考研同学面试题样例-1
- 防火墙技术
防火墙技术是建立在现代通信网络技术和信息安全技术基础上的应用性安全技术。它是一个系统,位于被保护网络和其它网络之间,进行访问控制,阻止非法的信息访问和传递。防火墙并非单纯的软件或硬件,它实质是软件和硬件加上一组安全策略的集合。
- 与入侵防御系统的区别:
防火墙是防御为主,入侵检测是主动监测是否被攻击,是对防火墙的补充 - 网络欺骗:IP 欺骗,DNS 欺骗,IP源路由欺骗
IP地址欺骗是指黑客发出IP数据包的源IP地址是伪造的,以便冒充其他系统或发件人的身份。
DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。
IP源路由欺骗,如果发送方进行了源路由欺骗,比如说,C进行源路由欺骗,伪装成B的ip地址,给服务器A发送了一个包。此时A收到包后发现要返回信息,正常的话因为发送栏地址是B,应该返回给B 但是由于源路由信息记录了来时的路线,反推回去就把应该给B的信息给了C,而A没有意识到问题,B对此一无所知,C拿到了B才能拿到的信息
IP报文首部的可选项中有"源站选路",如果要求源站选路,则目的站在收到信息后返回信息给源站。
- TCP 和 UDP 的区别:一个提供可靠传输(连接),一个不提供(连接)
TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。
- 顺序表和链表的区别
顺序表存储位置是连续的、支持随机访问,链表可以是不连续的、不能随机访问,只能从头到尾逐个遍历。
- 密码法和网络安全法:
明确对核心密码、普通密码与商用密码实行分类管理的原则。
注重把握职能转变和“放管服”要求与保障国家安全的平衡。
注意处理好密码法与网络安全法、保守国家秘密法等有关法律的关系。 - 匿名网络:暗网,使用洋葱路由,一层一层包裹数据包,网络节点都不知道目的端和起始端,所以匿名
被称作洋葱路由的原因在于消息一层一层的加密包装成被称作洋葱数据包的数据结构,层数取决于到目的地中间会经过的节点数,每经过一个节点层会将数据包的最外层解密,因此任一个节点都无法同时知晓这个消息最初与最终的目的地,使发送者达到匿名的效果。
-
SSL 的英文简称:Secure Sockets Layer
SSL(Secure Sockets Layer 安全套接字协议),及其继任者TLS(Transport Layer Security,传输层安全协议)是为网络通信提供安全及数据完整性的一种安全协议。
TLS与SSL在传输层与应用层之间对网络连接进行加密。
HTTPS=HTTP+SSL/TLS -
网安相关技术:PKI 技术、防火墙技术、虚拟专用网技术、入侵监测技术、病毒防护技术、访问控制、数字签名和身份认证、消息加解密,
-
用户隐私泄露怎么看,怎样防止泄露:
用户隐私泄露,即用户在注册和使用相关网络应用上传的个人信息和数据被他人盗取,比如CSDN社区600万用户账号密码泄露,说明相关企业的网络安全意识淡薄,相关安全策略缺失。
在今天“数据为王”的当今社会,数据所给企业带来的收益,已远大于其它资产产生收益,数据泄露直接会给企业造成经济损失并影响其品牌形象。
如何防止泄露:首先相关安全技术实施好,比如密码不要明文存储,采用MD5加密,页面数据交互部分后端处理不能采取简单的拼接,防止SQL注入等等,然后也是最重要的相关技术人员和管理人员的网络安全意识一定要有,不然即使安全技术再好,也抵不住社会工程学攻击。
网络安全三分靠技术七分靠管理 -
漏洞扫描:漏洞扫描器包括网络漏扫、主机漏扫、数据库漏扫等不同种类。
漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测(渗透攻击)行为。
- 网络攻击有哪些:
Web :SQL 注入,XSS,CSRF
其他:拒绝服务攻击,密码破解, 端口渗透,网络监听
SQL注入是网站存在最多也是最简单的漏洞,主要原因是程序员在前端和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。
XSS(Cross-site scripting)
服务器对客户端的输入检测不严格 ,导致客户端输入的恶意JS代码被植入到HTML代码中,这些JavaScript代码得以执行,实现一些特殊的目的.
防御对策:
对输入内容中特殊字符进行转义
种类:持久型XSS、非持久型XSS
持久型XSS也叫存储型XSS
非持久性XSS分为反射型XSS和DOM型XSS
非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。
非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户浏览器执行,从而达到攻击目的。
持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。
永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。
CSRF(Cross-site request forgery):
跨站请求伪造,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
通过伪装来自受信任用户的请求来利用受信任的网站。
防御对策:
- 阻止不明外域的访问:验证HTTP Referer字段
根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问http://bank.test/test?page=10&userID=101&money=10000页面完成,用户必须先登录bank.test,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,该转账请求的Referer值就会是转账按钮所在页面的URL(本例中,通常是以bank. test域名开头的地址)。而如果攻击者要对银行网站实施CSRF攻击,他只能在自己的网站构造请求,当用户通过攻击者的网站发送请求到银行时,该请求的Referer是指向攻击者的网站。因此,要防御CSRF攻击,银行网站只需要对于每一个转账请求验证其Referer值,如果是以bank. test开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果Referer是其他网站的话,就有可能是CSRF攻击,则拒绝该请求。- 提交时要求附加本域才能获取的信息:在请求地址中添加token并验证
CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,该请求中所有的用户验证信息都存在于Cookie中,因此攻击者可以在不知道这些验证信息的情况下直接利用用户自己的Cookie来通过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,并且该信息不存在于Cookie之中。鉴于此,系统开发者可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
XSS 与CSRF的区别:
XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
- 重放攻击:再次发送已经发过并且接收到的包,跳过身份认证
重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。
攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。
重放攻击在任何网络通过程中都可能发生,是计算机世界黑客常用的攻击方式之一。
防御(每次发送一个随机数)
- 加随机数
该方法优点是认证双方不需要时间同步,双方记住使用过的随机数,如发现报文中有以前使用过的随机数,就认为是重放攻击。缺点是需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大。- 加时间戳
该方法优点是不用额外保存其他信息。缺点是认证双方需要准确的时间同步,同步越好,受攻击的可能性就越小。但当系统很庞大,跨越的区域较广时,要做到精确的时间同步并不是很容易。- 加流水号
就是双方在报文中添加一个逐步递增的整数,只要接收到一个不连续的流水号报文(太大或太小),就认定有重放威胁。该方法优点是不需要时间同步,保存的信息量比随机数方式小。缺点是一旦攻击者对报文解密成功,就可以获得流水号,从而每次将流水号递增欺骗认证端。
20 考研同学面试题样例-2
- 用英语介绍一下你自己
- 你如何看待中美关系?
- 简述下TCP建立连接的过程
- 简述下DNS域名解析的过程
- 请说明一下冒泡排序的过程
- 什么是虚拟内存管理?有哪些页面置换算法
- C语言与Java有哪些区别
- 已知你有6升和5升的杯子,如何通过这两个杯子,量出3升的水?
- 数字图像可以应用到哪些领域
- 简述下你的毕业设计。在做毕设过程中,遇到了哪些问题?如何解决这些问题的?
网上面试问题
-
互联网七层协议是什么?
互联网七层协议指的是物理层,链路层,网络层,数据传输层,会话层,表示层,应用层。
物理层是低层表示数据的01信号,
链路层负责搬运这些01信号,
而网络层负责选择合适路由传递,
数据传输层负责端口通信,
会话层用于管理会话,
表示层负责数据的表示方法,
应用层就是各种应用了。 -
浏览器访问网页的流程?
浏览器会根据域名到本地DNS缓存查找有没有对应的IP,没有的话,浏览器会访问本地DNS服务器,由本地DNS服务器进行迭代查询得到对应IP地址。然后浏览器对域名对应的IP地址进行访问。
- 根域名服务器
根域名服务器是由互联网管理机构配置建立的,是最高层次的域名服务器,负责对互联网所有“顶级域名服务器”进行管理,有全部顶级域名服务器的IP地址和域名映射。
根域名服务器并不直接用于域名解析,因为其没有保存全部互联网域名记录,只是负责顶级域名服务器相关内容。- 顶级域名服务器
“顶级域名服务器”是各顶级域名自己的域名服务器,负责他们各自管理的二级域名解析。- 权限域名服务器
“权限域名服务器”是针对dns区域提供名称解析服务而专门配置、建立的域名服务器,可为用户提供最权威的dns域名解析。
每个域名在互联网上都可以找到一台权限服务器,个人理解一台权限服务器可以为很多域名提供域名解析。- 本地域名服务器
一般是指ISP提供的域名服务器(也就是本地DNS服务器)
例如我们使用的114.114.114.114,Google的8.8.8.8,这些都可以是。
- DES加密的大致过程
64位明文经过初始置换之后,然后进行16轮迭代,进行逆置换,生成64位密文。 - AES加密的大致过程
输入明文、子密钥,进行r轮迭代得到密文。
每一轮迭代过程为:明文先进行字节代替变换、行移位变换、列混合变换,再进行轮密钥加变换,得到下一轮输入 - 死锁是什么?产生条件是什么?如何避免?
多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
互斥条件、不剥夺条件、请求并保持条件、循环等待条件
死锁预防,死锁避免、死锁的检测及解除 - 处理机调度算法有哪些以及如何实现的?
- 先来先服务调度算法(FCFS)
- 短进程优先调度算法(SPF)
- 优先级调度算法
- 时间片轮转调度算法
- 高响应比优先调度算法
- 多级反馈队列调度算法
- 时分复用的原理
时分多路复用是将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。 - Java中的堆栈有什么作用?
java内存是分为堆,栈和方法区。
堆中分配的是对象,也就是new出来的东西。
栈中分配的是基本类型和自定义对象的引用。
方法区存放的是类信息和static变量 - 对SSH框架有没有了解?
struts+spring+hibernate
其中使用Struts作为前端的整体基础架构,负责MVC的分离,利用Hibernate框架对持久层提供支持,Spring管理容器对象。 - spring中核心概念:AOP(Aspect Oriented Programming,面向切面编程)和IOC(Inversion of Control,控制反转)
loC——Inversion of Control 即“控制反转”,是一种设计思想。在java开发中,loc意味着将你设计好的对象交给容器控制,而不是传统的由对象内部控制。
- 数据库原理中事务的四大性质?
ACID
原子性、一致性、隔离性、持久性
第一种隔离级别:Read uncommitted(读未提交)
如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据,该隔离级别可以通过“排他写锁”,但是不排斥读线程实现。这样就避免了更新丢失,却可能出现脏读,也就是说事务B读取到了事务A未提交的数据
解决了更新丢失,但还是可能会出现脏读
第二种隔离级别:Read committed(读提交)
如果是一个读事务(线程),则允许其他事务读写,如果是写事务将会禁止其他事务访问该行数据,该隔离级别避免了脏读,但是可能出现不可重复读。事务A事先读取了数据,事务B紧接着更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。解决了更新丢失和脏读问题
第三种隔离级别:Repeatable read(可重复读取)
可重复读取是指在一个事务内,多次读同一个数据,在这个事务还没结束时,其他事务不能访问该数据(包括了读写),这样就可以在同一个事务内两次读到的数据是一样的,因此称为是可重复读隔离级别,读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务(包括了读写),这样避免了不可重复读和脏读,但是有时可能会出现幻读。(读取数据的事务)可以通过“共享读镜”和“排他写锁”实现。解决了更新丢失、脏读、不可重复读、但是还会出现幻读
第四种隔离级别:Serializable(可序化)
提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行,如果仅仅通过“行级锁”是无法实现序列化的,必须通过其他机制保证新插入的数据不会被执行查询操作的事务访问到。序列化是最高的事务隔离级别,同时代价也是最高的,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻读解决了更新丢失、脏读、不可重复读、幻读(虚读)
-
CSMA/CD最小帧长为什么为64字节
因为最大长度为2500米的10Mbps 网络和四个中继器(来自802.3规范),在最坏的情况下,往返时间(包括通过四个中继器的传播时间)被确定为接近50微秒。
设定争用期为51.2微妙,则最小帧长为64字节。 -
数字签名其实也是一种消息认证技术,但是数字签名属于非对称密码体制,而消息认证码属于对称密码体制,所以消息认证码的处理速度也会比数字签名快很多,但是消息认证码无法实现不可否认性。
消息认证码认确保的消息源是已授权用户发送的,但是不能确保具体是谁;数字签名,更进一步,可以确保具体是哪个用户发送的。 -
Ethernet II和IEEE802.3的帧格式比较类似,主要的不同点在于前者定义的2字节的类型,而后者定义的是2字节的长度;所幸的是,后者定义的有效长度值与前者定义的有效类型值无一相同,这样就容易区分两种帧格式了.