密码学与网络安全-基本概念
安全方法
安全模型
- 无安全性
- 隐藏安全:一件事物不为人知,那么它是安全的。如密码。类比代码实现防范,路径,端口等。
- 主机安全性
- 网络安全性
安全管理
- 向有关方面解释安全策略
- 该要介绍每个人的责任
- 建立可监察性
- 提供预期和定期审查
安全原则
举例:
小李向小黄写了封求爱情书,由邮递员小张寄送,但不希望小张知道书中的内容。
四大原则:
保密性(confidentiality)
:其它人收到了加密的消息,但不会知道细节。完整性(integrity)
:要保证小黄收到的消息没有被添油加醋(篡改)鉴别 (authentication)
: 小黄要保证收到的书是小李寄来的,而不是老王(伪装小李)寄来的。不可抵赖(non-repudiation)
:小黄收道后要避免小李反悔(反复无常是渣男的表现)。仲裁者要用定情信物(小李的签名)否认小李的抵赖。
针对整个系统的两个原则:
5. 访问控制(access control)
:确定谁能访问什么。
6. 可用性(availability)
:
攻击类型
攻击方法:
保密性(confidentiality)
~截获(interception)
: 例如网络抓包
完整性(integrity)
~篡改(modification)
:数据内容是否完整。
鉴别 (authentication)
~伪造(fabrication)
:数据的来源是否正确。
不可抵赖(non-repudiation)
:防止发消息的人否认,如银行转账者。
可用性(availability)
~ 中断(interruption)
如饱和攻击造成拒绝服务(Denial of Service, DOS)
。
- 被动攻击(passive attacks):监听截获但不会对数据进行修改。
a. 消息内容泄漏
b. 通信量分析(Taffic analysis) - 主动攻击(active attacks):
a. 中断
b. 修改:重放攻击(replay attacks)
改变消息(alteration of messages)
c. 伪造
特定攻击
数据包窃听(Packet sniffing / snooping)
or IP sniffing
数据包伪装(Packet spoofing)
or IP spoofing
伪装的几种情况
- 截获答复, 发动劫持(hijacking)攻击
- 攻击者不用看到答复:拒绝服务攻击。
病毒(virus)
特洛伊木马(Trojan horse)
蠕虫病毒(worm)
编程练习题
主要数字逻辑中
编写一个程序, 包含字符串值"Hello World", 分别将字符串的每个字符与 1 进行异或运算并显示结果,再将每个值与0异或,看看有什么特殊之处。
代码如下:def show_xor(string:str, x:int):print("将%s 的每个字符与 %s (%s)的异或结果为:" % (string, x, bin(x)))xor = []for _ in string:print("{} {:4} {:10} {:4} {:10} {}".format(_, ord(_), bin(ord(_)),ord(_)^x, bin(ord(_)^x),chr(ord(_)^x)))xor.append(chr(ord(_)^x))print(string)print(''.join(xor)) if __name__ == '__main__':string = "Hello World"show_xor(string, 1)show_xor(string, 0)
将Hello World 的每个字符与 1 (0b1)的异或结果为: H 72 0b1001000 73 0b1001001 I e 101 0b1100101 100 0b1100100 d l 108 0b1101100 109 0b1101101 m l 108 0b1101100 109 0b1101101 m o 111 0b1101111 110 0b1101110 n32 0b100000 33 0b100001 ! W 87 0b1010111 86 0b1010110 V o 111 0b1101111 110 0b1101110 n r 114 0b1110010 115 0b1110011 s l 108 0b1101100 109 0b1101101 m d 100 0b1100100 101 0b1100101 e Hello World Idmmn!Vnsme 将Hello World 的每个字符与 0 (0b0)的异或结果为: H 72 0b1001000 72 0b1001000 H e 101 0b1100101 101 0b1100101 e l 108 0b1101100 108 0b1101100 l l 108 0b1101100 108 0b1101100 l o 111 0b1101111 111 0b1101111 o32 0b100000 32 0b100000 W 87 0b1010111 87 0b1010111 W o 111 0b1101111 111 0b1101111 o r 114 0b1110010 114 0b1110010 r l 108 0b1101100 108 0b1101100 l d 100 0b1100100 100 0b1100100 d Hello World Hello World
编写一个程序, 包含字符串值"Hello World",将每个字符与 127 进行 与 或 异或 运算并显示结果, 为什么结果不同?
def show_xor(string:str, x:int):print("将%s 的每个字符与 %s (%s)的异或结果为:" % (string, x, bin(x)))xor = []for _ in string:print("{} {:4} {:10} {:4} {:10} {}".format(_, ord(_), bin(ord(_)),ord(_)^x, bin(ord(_)^x),chr(ord(_)^x)))xor.append(chr(ord(_)^x))print(string)print(''.join(xor)) def show_and(string:str, x:int):print("将%s 的每个字符与 %s (%s)的与结果为:" % (string, x, bin(x)))and_ = []for _ in string:print("{} {:4} {:10} {:4} {:10} {}".format(_, ord(_), bin(ord(_)),ord(_)&x, bin(ord(_)&x),chr(ord(_)&x)))and_.append(chr(ord(_)&x))print(string)print(''.join(and_))def show_or(string:str, x:int):print("将%s 的每个字符与 %s (%s)的每个字符的或结果为:" % (string, x, bin(x)))or_ = []for _ in string:print("{} {:4} {:10} {:4} {:10} {}".format(_, ord(_), bin(ord(_)),ord(_)|x, bin(ord(_)|x),chr(ord(_)|x)))or_.append(chr(ord(_)|x))print(string)print(''.join(or_)) if __name__ == '__main__':string = "Hello World"# show_xor(string, 1)# show_xor(string, 0)show_and(string, 127)show_or(string, 127)show_xor(string, 0)
将Hello World 的每个字符与 127 (0b1111111)的与结果为: H 72 0b1001000 72 0b1001000 H e 101 0b1100101 101 0b1100101 e l 108 0b1101100 108 0b1101100 l l 108 0b1101100 108 0b1101100 l o 111 0b1101111 111 0b1101111 o32 0b100000 32 0b100000 W 87 0b1010111 87 0b1010111 W o 111 0b1101111 111 0b1101111 o r 114 0b1110010 114 0b1110010 r l 108 0b1101100 108 0b1101100 l d 100 0b1100100 100 0b1100100 d Hello World Hello World 将Hello World 的每个字符与 127 (0b1111111)的每个字符的或结果为: H 72 0b1001000 127 0b1111111 e 101 0b1100101 127 0b1111111 l 108 0b1101100 127 0b1111111 l 108 0b1101100 127 0b1111111 o 111 0b1101111 127 0b1111111 32 0b100000 127 0b1111111 W 87 0b1010111 127 0b1111111 o 111 0b1101111 127 0b1111111 r 114 0b1110010 127 0b1111111 l 108 0b1101100 127 0b1111111 d 100 0b1100100 127 0b1111111 Hello World将Hello World 的每个字符与 0 (0b0)的异或结果为: H 72 0b1001000 72 0b1001000 H e 101 0b1100101 101 0b1100101 e l 108 0b1101100 108 0b1101100 l l 108 0b1101100 108 0b1101100 l o 111 0b1101111 111 0b1101111 o32 0b100000 32 0b100000 W 87 0b1010111 87 0b1010111 W o 111 0b1101111 111 0b1101111 o r 114 0b1110010 114 0b1110010 r l 108 0b1101100 108 0b1101100 l d 100 0b1100100 100 0b1100100 d Hello World Hello World
结论
主要考察逻辑运算(布尔运算)的基本性质。这种性质在密码学中应用广泛。
通过程序的输出不难看出几点性质:
按位异或的3个特点:
- 任何数与 0 异或 都等于 任何数。(若是0 变为0, 若是1 变为1)
- 任何数与 1 异或 都等于 该数取反(若是0 变为1, 若是1 变为0)
- 任何数与 它自己 异或 都等于 0。(若是0 变为0, 若是1 变为0)
按位与的特点:
0 & 1 = 0
1 & 1 = 1
按位或的特点:
0 | 1 = 1
1 | 1 = 1
密码学与网络安全-基本概念相关推荐
- 密码学与网络安全第七版部分课后习题答案
原始博客地址:密码学与网络安全第七版部分课后习题答案 第0章 序言 1.课后题汇总(仅部分) 第一章 思考题:1.2.4.5 第二章 习题:10.12.16 第三章 习题:9 第四章 思考题:4.5. ...
- 应用密码学与网络安全上机题通关秘籍
(1条消息) 西电应用密码学与网络安全.rar_西电密码学实验-网络安全文档类资源-CSDN文库 点上面的链接跳转!
- 计算机网络教程第五版|微课版 - 第七章 网络安全 - 重要概念【补充】
第七章.网络安全[补充] 本章的重要概念 计算机网络中需要提供的基本安全服务有机密性.报文完整性.不可否认性.实体鉴别.访问控制和可用性等. 密码学是计算机网络安全的基础,是实现机密性.报文完整性.实 ...
- 计算机网络中的安全(一)网络安全的概念与加密原理
参考:<Computer Networking: A Top Down Approach >--Chapter 8 security及随书PPT 文章目录 目录 文章目录 一.什么是网络安 ...
- 密码学与网络安全课程习题集及参考答案(一些思考题)
1. 请分别举例说明什么是保密性原则?完整性原则?认证原则?不可抵赖原则?访问控制原则?可用性原则?为了实现这六个安全原则,主要采用哪些密码技术? 答: (1) 保密性原则是指不经过授权,不能访 ...
- 网络安全设备概念的熟悉和学习
什么是网络安全? 网络安全技术有哪些? Web应用防火墙(WAF) 为什么需要WAF? 什么是WAF? 与传统防火墙的区别 WAF不是全能的 入侵检测系统(IDS) 什么是IDS? 跟防火墙的比较 部 ...
- 计算机与网络安全基本概念
计算机安全 计算机安全是指对于一个自动化的信息系统,采取保护措施确保信息系统资源(包括软硬件.固件.信息.数据和通信)的完成性.可用性.保密性. 保密性(Confidentiality) 数据保密性: ...
- 电力网络安全区域概念及划分
笔者的专栏有很多人询问电力网络安全区的内容,加上笔者多年来也一直看得很混乱,这次多方收集信息,加上自己的理解,写成此文. 内容可能更符合电网网络结构,如有疏漏欢迎到电力知识图谱网站:https://w ...
- 密码学与网络安全 - 7 分组加密的工作模式 8 伪随机数的产生和流密码
7 分组加密的工作模式 7.1 多重加密与三重DES 7.1.1 双重DES 双重DES所对应的映射不被单DES所定义,所以是强于单DES的 中间相遇攻击:可能的密钥加密明文,然后用可能的密钥解密密文 ...
最新文章
- 为什么很多程序员面试造火箭,入职拧螺丝?
- 利用node、express初始化项目
- Java基础篇:final关键字
- java 万年历_非常实用的java万年历制作方法
- 力扣--扁平化嵌套列表迭代器
- java 状态机_基于 RAFT 一致性算法的 Java 实现 SOFAJRaft
- python mysqldb 查询不到最新记录_Python MySQLdb更新查询失败
- linux之如何快速查看文件的大小
- nssl1337-矩形统计【单调栈】
- android 技能标签功能_android专业技能总结.doc
- Android中使用shape来定义控件的显示属性
- Jim Marino与Meeraj Kunnumpurath专访:关于SCA和Fabric3
- ie浏览器html状态栏隐藏,我的IE浏览器忽然上面的菜单栏及地址栏都不见了
- 克拉克松Clarkson Research情报网注册登录及进行数据查询(以世界造船厂分布为例)
- 六足仿生机器人的控制与实现
- 苹果发布新召回计划,这款iPhone两年内免费维修
- Linux motd详解
- 服务程序占用服务器内存过大处理
- 【DIP/数字图像处理】第二次习题(DCT、DFT、DWT、DHT频谱分布;证明DFT平移性质;ILF与BLF的区别)
- 什么会导致HTTP出现429请求过多错误?
热门文章
- 作为全球最大的电商平台,亚马逊有什么过人之处?
- SoapUI——创建一个SOAP工程
- oracle 12c r2下载地址,Oracle 12C R2安装尝鲜
- 登陆QQ手机版,免费拿精品靓号
- linux 进程监控
- 怎么样启用小米手机5s的Root超级权限
- linux 修改cvs密码,cvs修改用户的密码
- 美国计算机属于敏感专业吗,美国留学F1签证中最常见被check的14个敏感专业
- android apk 反编译
- 记一次压测Feign调用时Hystrix could not be queued for execution and no fallback available.