密码学与网络安全-基本概念

2023-11-09

在这里插入图片描述

安全方法

安全模型

  1. 无安全性
  2. 隐藏安全:一件事物不为人知,那么它是安全的。如密码。类比代码实现防范,路径,端口等。
  3. 主机安全性
  4. 网络安全性

安全管理

  1. 向有关方面解释安全策略
  2. 该要介绍每个人的责任
  3. 建立可监察性
  4. 提供预期和定期审查

安全原则

举例:
小李向小黄写了封求爱情书,由邮递员小张寄送,但不希望小张知道书中的内容。

四大原则:

  1. 保密性(confidentiality):其它人收到了加密的消息,但不会知道细节。
  2. 完整性(integrity):要保证小黄收到的消息没有被添油加醋(篡改)
  3. 鉴别 (authentication): 小黄要保证收到的书是小李寄来的,而不是老王(伪装小李)寄来的。
  4. 不可抵赖(non-repudiation):小黄收道后要避免小李反悔(反复无常是渣男的表现)。仲裁者要用定情信物(小李的签名)否认小李的抵赖。

针对整个系统的两个原则:
5. 访问控制(access control):确定谁能访问什么。
6. 可用性(availability)

攻击类型

攻击方法:

保密性(confidentiality)~截获(interception): 例如网络抓包
完整性(integrity)~篡改(modification):数据内容是否完整。
鉴别 (authentication)~伪造(fabrication):数据的来源是否正确。
不可抵赖(non-repudiation):防止发消息的人否认,如银行转账者。
可用性(availability)~ 中断(interruption) 如饱和攻击造成拒绝服务(Denial of Service, DOS)

  1. 被动攻击(passive attacks):监听截获但不会对数据进行修改。
    a. 消息内容泄漏
    b. 通信量分析(Taffic analysis)
  2. 主动攻击(active attacks):
    a. 中断
    b. 修改:重放攻击(replay attacks) 改变消息(alteration of messages)
    c. 伪造
特定攻击

数据包窃听(Packet sniffing / snooping) or IP sniffing
数据包伪装(Packet spoofing) or IP spoofing

伪装的几种情况
  1. 截获答复, 发动劫持(hijacking)攻击
  2. 攻击者不用看到答复:拒绝服务攻击。

病毒(virus)
特洛伊木马(Trojan horse)
蠕虫病毒(worm)

编程练习题

主要数字逻辑中

  1. 编写一个程序, 包含字符串值"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  n
        32 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  o
        32 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
    
  2. 编写一个程序, 包含字符串值"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  o
        32 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  o
        32 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个特点:

  1. 任何数与 0 异或 都等于 任何数。(若是0 变为0, 若是1 变为1)
  2. 任何数与 1 异或 都等于 该数取反(若是0 变为1, 若是1 变为0)
  3. 任何数与 它自己 异或 都等于 0。(若是0 变为0, 若是1 变为0)

按位与的特点:
0 & 1 = 0
1 & 1 = 1

按位或的特点:
0 | 1 = 1
1 | 1 = 1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码学与网络安全-基本概念 的相关文章

  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • Android SDK开发艺术探索(五)安全与校验

    一 前言 本篇是Android SDK开发艺术探索系列的第五篇文章 介绍了一些SDK开发中安全方面的知识 包括资源完整性 存储安全 权限校验 传输安全 代码混淆等知识 通过基础的安全配置为SDK保驾护航 探索SDK开发在安全方面的最佳实践
  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 网络安全:绕过 MSF 的一次渗透测试

    这次渗透的主站是 一个 Discuz 3 4 的搭建 违法招 piao 网站 配置有宝塔 WAF 用 Discuz ML 3 X 的漏洞进行攻击 但是没有成功 发现主站外链会有一个发卡网 引导人们来这充值 是 某某发卡网 而且域名指向也是主
  • 数据加密保障数据安全

    一 目标 1 1 预研需求 数据加密是安全领域中常用的安全措施 它们的主要作用是保护数据的机密性和完整性 以防止未经授权的访问 窃取 篡改或泄漏敏感信息 数据传输加密 保护敏感数据在传输过程中的安全 当数据通过网络传输时 它们可能会经过多个
  • 国外拨号VPS指南:开启你的全球网络之旅

    在当今数字化时代 互联网已经成为了我们生活的一部分 而要在全球范围内畅通无阻地访问互联网 拥有一个可靠的国外拨号VPS是非常重要的 无论您是为了工作 学习还是娱乐 国外拨号VPS都可以为您提供更广泛的网络体验 本文将为您提供国外拨号VPS的
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 【网络安全】——区块链安全和共识机制

    区块链安全和共识机制 摘要 区块链技术作为一种分布式去中心化的技术 在无需第三方的情况下 使得未建立信任的交易双方可以达成交易 因此 区块链技术近年来也在金融 医疗 能源等多个行业得到了快速发展 然而 区块链为无信任的网络提供保障的同时 也
  • 全网最全(黑客)网络安全自学路线!熬夜两周整理(巨详细)

    学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想成为计算机
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学
  • 通过 url 将整数传递给 php $_GET

    所以我正在做一些 CTF 挑战之一是关于 php 类型杂耍 代码看起来像这样 if GET var1 hash md4 GET var1 print flag 所以我 80 确定我需要传入一个整数 这样它就会是真的 但我能操作的只是 url

随机推荐

  • windows下安装pyinstaller以及依赖的软件安装

    为了能在windows下打包python代码 因此需要在windows下安装pyinstaller工具 注意 安装下面软件时请选择对应的版本 可能版本不对也会失败 1 首先因为调用pyinstaller需要执行一个脚本 在win下 执行脚本
  • (简易)字符串转换成十进制整数

    7 6 字符串转换成十进制整数 15分 输入一个以 结束的字符串 本题要求滤去所有的非十六进制字符 不分大小写 组成一个新的表示十六进制数字的字符串 然后将其转换为十进制数后输出 如果在第一个十六进制字符之前存在字符 则代表该数是负数 输入
  • 本地HTML访问后端获取数据使用@CrossOrigin仍出现跨域问题

    Access to XMLHttpRequest at http localhost api admin authorizations from origin http localhost 9528 has been blocked by
  • 小红书web端cookie信息生成

    小红书web端的cookie包含4个参数 xhsTrackerId extra exp ids timestamp2 timestamp2 sig 前面两个参数直接携带请求小红书主页即可获取 后两个需要携带data两个参数做post请求获取
  • erp系统多少钱一套

    erp系统多少钱一套 鼎捷ERP来告诉你 ERP价格与企业的规模和职工数有关 几千块的有 从几万到几十万的也有 企业自身规模200 上千人 ERP价格几万到几十万不等 这个规模的公司 一般在行业里面都做的不错 订单量也不错 对生产过程要求比
  • Java基础-继承

    对外是一个对象 内部还是两个空间 子类信息还是放在子类空间中 父类信息还是放在父类空间中 继承的特点 子类可以继承父类的属性和行为 但是子类不能继承父类的构造器 Java是单继承模式 一个类只能继承一个直接父类 Java不支持多继承 但是支
  • JavaGUI(JavaFX)程序打包成jar包和直接运行的exe文件全过程一条龙手把手教学

    文章目录 1 先打包成jar包 Intellij IDEA为例 2 下载exe4j 3 使用exe4j打包生成可直接运行的exe文件 1 先打包成jar包 Intellij IDEA为例 在file中 gt Project Structur
  • 点击和滚动监听事件(接口)监听器

    点击和滚动监听事件 接口 实现方法 加载适配器
  • python 安装chromadb报错:hnswlib

    conda install c conda forge hnswlib
  • 《Python 计算机视觉编程》学习笔记(一)

    Python计算机视觉编程 文章目录 前言 第 1 章 基本的图像操作和处理 引言 1 1 PIL Python图像处理类库 图像读取 显示 显示对应灰度图 更改图像格式 后缀 创建缩略图 复制和粘贴图像区域 调整尺寸和旋转 1 2 Mat
  • opencv实践项目-修改表格缺失轮廓

    目录 1 背景 2 修复步骤 2 1 图像灰度化 并进行高斯模糊 2 2 对图像进行阀值处理 2 3 查找轮廓 2 4 利用存储的值了解表格的位置 2 5 提取所有的水平线和垂直线 2 6 合并垂直和水平的两个模版 3 完整代码 1 背景
  • 如何去掉 Discuz标题后缀power by discuz

    如何去掉 Discuz标题后缀power by discuz 打开如下文件 template default common header common htm php 找到如下代码 navtitle G setting bbname Pow
  • Package包 和 Library库 理解

    Library 库 一组相关功能的模块的集合 import的类库 最常用的有java util等 通过动态链接在程序中实现功能 Package 包 一个有层次的文件结构 Java源文件第一条语句 解决类冲突 包名要与文件夹一致
  • KVM管理工具

    kvm实现方式 qemu工具 qemu kvm qemu img qemu 处理器模拟器 仿真各种IO设备 将仿真设备连接至主机的物理设备 提供用户接口 基本格式 qemu kvm 选项 磁盘镜像文件 标准选项 machine type n
  • 数组应用(C): 数据求均值

    数组应用 数据求均值 问题描述 由键盘输入读取整型数据 数据数量不超过100个 当读取到数据 1时 停止读取数据 并计算这些数据的均值 不包含 1 问题分析 给定了数据数量不超过100 若将每个输入数据分别赋值给变量 a1 a2 a3 a4
  • Aop监控所有Controller,包括void类型的response中的出参(工具类)

    一 主要坐标
  • 了解实现一个高并发的内存池——TLS Memmory Pool

    为什么需要内存池 1 效率问题 如果我们直接向系统申请内存 当我们需要频繁的申请释放内存时 就需要频繁的与系统层产生交互 多次切换用户态和内核态 而用户态和内核态之间的切换的消耗是非常大的 因此申请内存的消耗就会很大 程序效率也就随之降低了
  • 数据结构—判断一棵二叉树是否是完全二叉树(java)

    判断一棵二叉树是否是完全二叉树 一 完全二叉树的三种节点 完全二叉树有右树必有左树 节点编号和满二叉树一一对应 1 度为2的节点有n个 2 度为1的节点只能有1个 3 度为0的节点有n个 二 具体思路 1 分两个阶段 第一阶段所有节点都有左
  • Linux下安装Lua脚本

    yum install libtermcap devel ncurses devel libevent devel readline devel curl R O http www lua org ftp lua 5 3 5 tar gz
  • 密码学与网络安全-基本概念

    安全方法 安全模型 无安全性 隐藏安全 一件事物不为人知 那么它是安全的 如密码 类比代码实现防范 路径 端口等 主机安全性 网络安全性 安全管理 向有关方面解释安全策略 该要介绍每个人的责任 建立可监察性 提供预期和定期审查 安全原则 举