西电《网络空间安全数学基础》 网安数基
西电网络空间安全数学基础《第一章:线性系统与矩阵乘法》
文章目录
- 讲在前面
- 章节脉络
- 第一章 线性系统与矩阵乘法
- 概述
- 一、线性反馈移位寄存器(LFSR)的引入
- 1.1 移位寄存器:
- 1.2 反馈移位寄存器:
- 1.3 线性反馈移位寄存器:
- 二、线性反馈移位寄存器(LFSR)
- 2.1、LFSR的反馈函数:
- 2.2、LFSR的级数:
- 2.3 运用矩阵的形式表达
- 三 实例分析:以三级线性反馈移位寄存器为例
- 四 实战演练:编程实现130级的线性反馈移位寄存器
- 4.1.问题的转化:
- 4.2.代码的实现:
- 4.3 测试用例:
- 五 求解线性反馈移位寄存器的输出(**考试重点考察**)
- 5.1 反馈多项式已知,通过观测连续的输出,可以得到Y~0~
- 5.2反馈多项式未知
- 参考文献:
讲在前面
大二下学期网络与信息安全学院开展了网络空间安全数学基础(网安数基)
个人认为这个对于只有概率论基础的普通大二学生是比较困难的,如果只听一遍基本消化不了,甚至我经常听着听着就听不懂了。
课程分两位老师讲解,第一位老师讲课很是有趣,并且在带着学生学知识,但是我说实话,有一些比较困难的的东西有点难听懂。并且老师对于考试的考察也比较灵活。
第二位老师讲课也是比较有趣的,但是第二部分的内容我感觉整体上是难度高于第一部分的,而且课程的知识量变多了,也挺难的,基本都是自己自学了,好的一点是由于比较困难,加上有ppt,考的内容比较固定,考试会相对轻松一点。
在此写出本课程的总结,方便后续的复习,并且帮助在这门课上迷茫的同学们。
平时作业建议: 本课程是没有教材的,也没有练习题和标准答案。所以需要自己在网上搜索相关的资料,并且根据出题人的意图对题目进行猜测,自己平常经一些练习。并且由于本课程的存在一下比较难的积分计算,所以需要大家了解一些积分公式。
备考建议: 平时作业认真做,老师上课讲过的题目都复习一遍,包括一些证明,不懂就背下来记忆,千万不要有侥幸心理(我就吃了这个亏),考试会出现比较多的作业题,这些复习到了基本就是80+的卷面分,剩下的就是曾老师的变式题,需要对知识了解的深刻一些。
个人总结:
本课程学到的东西确实是不少的,对于一些方法的实现,在编程的作业中有所感受,但是我认为这门课的考核是需要一些思考的。没有书,没有习题,没有答案,这个是一个比较开发的方式在锻炼我们的开放性思维,但是考试是有标准答案的,这个时候考生就不知道应该怎么办了。
一个建议,如果老师考察的知识变得灵活起来,建议老师可以讲解习题,或者可以把答案发给学生供学生思考,供学生参考。不然,建议老师考察的知识就是平时讲的习题,因为对于掌握知识比较少的学生是比较痛苦的一件事。
章节脉络
课程一共分为2个部分,每个部分6次课
- 线性系统与矩阵乘法
- 矩阵的分解
- 范数、距离与相似度
- 最优化入门
- 概率+矩阵
- pagerank的两个数学解释
- bloom过滤器
- 贝叶斯推理
- 信息熵与决策树
- 差分隐私
- 网络传播
- 随机过程
第一章 线性系统与矩阵乘法
概述
本章节主要讲了下关于矩阵乘法的的几何意义:伸缩和旋转。
并讲解了线性反馈移位寄存器,实现的原理,代码,求解其输出(用到了关于矩阵乘法的思想)。
重要考点:线性反馈移位寄存器的原理以及求解其输出;
ps:现在不懂不着急,下面将详细讲解,看完后在思考,便可以理解。
一、线性反馈移位寄存器(LFSR)的引入
1.1 移位寄存器:
移位寄存器(Shift Register,SR)曾在《数字电路与设计基础》,是指有若干个寄存器排成一行,每个寄存器中都存储着一个二进制数(0或1)。移位寄存器每次把最右端(末端)的数字输出,然后整体向右移动一位。
图片:
图1: D触发器构成的移位寄存器
假设一个5位移位寄存器中存储着数据10110,则不断移位、输出的效果如图所示:
图2:输出效果示意图
1.2 反馈移位寄存器:
在移位寄存器向右移位一位以后,左边就会空出一位(如上图所示),这时如果采用一个反馈函数,以寄存器中已有的某些序列作为反馈函数的输入,在函数中经过一定的运算后,将反馈函数输出的结果填充到移位寄存器的最左端,那么这样的移位寄存器就会有源源不断的输出。通俗来讲,就是通过已知的 r1 到rn-1,可以对这些数字通过定义一定的运算,从而得到rn,下面将会有具体实例讲到。这样的,拥有反馈函数的移位寄存器称为反馈移位寄存器(Feedback Shift Register,FSR)
1.3 线性反馈移位寄存器:
如果反馈移位寄存器的反馈函数是线性函数(即只进行简单线性运算的函数),那么这种寄存器就被称为线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)。
图3 线性反馈移位寄存器示意图
二、线性反馈移位寄存器(LFSR)
2.1、LFSR的反馈函数:
LFSR的反馈函数就是简单地对移位寄存器中的某些位进行异或,并将异或的结果填充到LFSR的最左端,如图所示。对于LFSR中每一位的数据,可以参与异或,也可以不参与异或。其中,我们把参与异或的位称为抽头。
图4 笔记
如ci表示第i位是否是抽头,如果是,则ci=1,表示该位将参与运算;如果不是,则 ci=0,表示该位将不参与运算。上式表示了LFSR的一种递推关系,在这个式子中,可以明显看出,ci将抽头位选出并留下来参与运算,并且将不是抽头的位剔除掉。
2.2、LFSR的级数:
我们通常把LFSR中的寄存器个数称为LFSR的级数。
状态的概念:一个LFSR寄存器中当前存储的序列被称为一个状态。在LFSR输出一位,由反馈函数补充一位后,LFSR就移动到了下一个状态。
2.3 运用矩阵的形式表达
可以看出,通过使用矩阵的可以实现状态的变换
三 实例分析:以三级线性反馈移位寄存器为例
图5 分析案例示意图
四 实战演练:编程实现130级的线性反馈移位寄存器
题目:基本要求:80分
实现130级的线性反馈移位寄存器
不使用大数库提供的数据结构
至少给出一组测试向量,即给定初始寄存器的值,给定反馈多项式,移位129次以后,连续的32比特是多少
按照自己的理解给出实验报告,要求原理部分手写截图放入报告,代码部分给出核心代码并注释,测试向量列表展示
附加要求:20分
采用西电学报的论文模板10分
使用大数库提供的数据结构,和自己写的代码进行效率比较10分(本人尚未理解使用大数库是在哪里使用,欢迎大家提供思路)
4.1.问题的转化:
移位129位后,在该状态下,再移位32比特。
等价于向右移动161位,其中a130——a161,即为所求的连续的32位比特。
4.2.代码的实现:
结合老师上课讲的伪代码可以更好的理解代码
图六 核心代码:反馈多项式部分
4.3 测试用例:
移位寄存器:1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 1 1
反馈多项式:1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1
具体的实现代码:
#include<stdio.h>
#define weishu 130 //移位寄存器的寄存器个数 :130
#define yiweishu 161 //希望移位寄存器移位的数目 :161
int main()
{// int weishu,yiweishu;
// printf("请输入移位寄存器的级数:");
// scanf("%d",&weishu);
// printf("请输入移位数:");
// scanf("%d",&yiweishu);int a[weishu+yiweishu]={0}; //寄存器中初始的130位 +移位129位 int x[weishu]={0}; //描述反馈函数表达式 寄存器130位 int function1,function2,temp; //均作为临时变量 printf("请输入130级移位寄存器的数值 a1到a130:"); for(int i=0;i<weishu;i++) //寄存器130位 {scanf("%d",&a[i]); //输入 }printf("请输入反馈多项式的系数:c1到c130") ;for(int i=0;i<weishu;i++) //寄存器130位 {scanf("%d",&x[i]);} int first_cnt; //先找到第一个系数不是零的项,用来记录第一个不是零的项在第几位 for(int i=0;i<weishu;i++){if(x[i]!=0){first_cnt=i; break;}} int a_left=0; //开始时最右侧的项 for(int i=0;i<yiweishu;i++) //一共需要移位161次 { temp=a[first_cnt+a_left]; //找到在该状态下第一个系数不是零的项 for(int j=a_left;j<a_left+weishu;j++) //反馈多项式部分:关于反馈函数所有抽头的异或 {if(j!=first_cnt+a_left && x[j-a_left]!=0 ) //此时的j不是第一个系数不为零的项 // 表示此时a[j]的系数想不为零 {temp=temp^a[j]; // 进行异或 }}a[a_left+weishu]=temp; //将反馈函数的结果填到最左端 a_left++; //该状态下的第一位 下标加一 ,也就是向右面移一位 } // for(int i=0;i<weishu+yiweishu;i++)
// {// printf("%d %d\n",i+1,a[i]);
//
// }printf("\n移位129次后,线性反馈移位寄存器中的值(从左往右即a259到a130)\n");for(int i=258;i>=129;i--){printf("%d",a[i]);}
//向右移动129位后,在移位32比特
// 等价于向右移动161位,其中输出连续的32比特就是a130-a161,所以连续的32位比特为// for(int i=129;i<161;i++)
// {// printf("%d",a[i]);
//
// } printf("\n再次经过32位移位后连续输出的32比特(从左往右即a161到a130):") ; for(int i=160;i>=129;i--){printf("%d",a[i]);} return 0;}
五 求解线性反馈移位寄存器的输出(考试重点考察)
5.1 反馈多项式已知,通过观测连续的输出,可以得到Y0
5.2反馈多项式未知
反馈多项式未知,那么我们就求解得到反馈多项式,从而转换为情形一,进而求解
线性反馈多项式的状态输出我们是可以通过观测得到的,那么我们就可以构造上面的4个等式,并且四个等式中的未知量有4个,这样我们转换为情形1了。
参考文献:
[1] url:https://zhuanlan.zhihu.com/p/366067972
[2] url: https://blog.csdn.net/Drifter_Galaxy/article/details/107618275
西电《网络空间安全数学基础》 网安数基相关推荐
- NJUPT 《信安数基》第 11 章解题攻略
NJUPT <信安数基>多项式环和有限域解题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业 ...
- NJUPT 《信安数基》第 10 章证明题攻略
NJUPT <信安数基>环和域证明题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业为了应付 ...
- 信安数基Z/nZ的含义
信安数基Z/nZ的含义 z/nz表示这样一个集合(群),它的元素也是集合,这些集合是:属于z且除以n余0的所有数,属于z且除以n余1的所有数,属于z且除以n余2的所有数,--属于z且除以n余n-1的所 ...
- 【信安数基】数论篇(一):整除
[信安数基]数论篇(一):整除 文章目录 [信安数基]数论篇(一):整除 0x00 整除符号 1. 对符号的定义 2. 符号本身有以下性质 0x01 取余 对符号的定义 0x02 素数的四个定理 0x ...
- 【信安数基】数论篇(二):同余
[信安数基]数论篇(二):同余 文章目录 [信安数基]数论篇(二):同余 0x00 同余的概念和性质 1. 符号的定义 2. 同余符号本身的性质 3. 同余式之间的关系 a. 总纲 b. 推论式 3. ...
- 桂电计算机网络老师,刘忆宁-桂电网络空间安全博士点获批,且行且珍惜
桂林电子科技大学获批网络空间安全一级博士点,既是机遇也是挑战. 2017年在我校信息与通信学院招收第一位博士生,尚无太多经验可写.硕士生是从2009年开始招生,当时条件十分艰苦,2009-2015年, ...
- 西电网络攻防大赛--渗透测试第二题
地址:http://test.xdsec.org/1/ 使用google浏览器打开 点击Resources 找到cookie 发现key 不过也是加密的 猜测是base64加密 so,百度一个解密网站 ...
- 【网络空间安全数学基础第8章】环和域
1 环和域的基本概念 概念: 定义: 设 R R R是非空集合,其上定义了两种运算(通常表示为加法运算 + + +和乘法运算 ⋅ \cdot ⋅),满足以下条件: (1) < R , + > ...
- 中国人民公安大学 网络对抗技术 15网安六区 杨益 201521460031
虚拟机的安装 安装windows和linux(kali)两个虚拟机. windows linux windows系统 ping命令 dir显示目录 cd进入目录 arp缓存 net share 查看计 ...
最新文章
- 把浮点型数值用科学计数法输出
- 列举一些RNN类模型的常见使用形式以及常见的应用
- 关于运算符重载的问题
- leetcode 368. Largest Divisible Subset | 368. 最大整除子集(动态规划详解)
- 当前工作目录Python
- 工作221:控制弹出框不全屏
- redistemplate怎么修改数据_如何使用RedisTemplate访问Redis数据结构?
- link.exe 的参数
- 矩阵的对数运算公式_对数(运算层面)
- 归并排序算法(java实现)
- 西门子plc程序好坏判定
- Webstorm汉字乱码时
- unity批量设置图片为etc2格式或者astc格式
- 平台级SAAS架构——统一身份管理系统
- 百度内部发文:砥砺风雨坚守使命的背后
- OSError: Unable to create file (unable to open file: name = ‘../working/best.hdf5 No such file or di
- Maven(自动化构建工具)
- 计算机视觉中的变分方法-扩散(Diffusion)
- 不想做CEO的程序员不是好码农?
- Tableau各版本更新情况
热门文章
- 关键讲述亚军背后的故事
- wpa或者wpa2暴力破解WiFi
- python mysql 双主_keepalived+mysql双主复制高可用方案
- Spring的@Enable*注解的工作原理
- BitBlt实现透明背景贴图
- c语言写pid算法,用c语言实现的pid算法
- itoa 头文件 linux,Linux C编程 itoa()函数 atoi()函数
- 4种典型限流实践保障应用高可用|云效工程师指北
- 关于 QWidget+Qml程序打包到ubuntu时,程序与系统库版本不同,编译时添加并依赖自带库 的方法
- 前台autoForm控件的只读和隐藏