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

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命
  • J2EE常见面试题(一)

    StringBuilder和StringBuffer的区别 String 字符串常量 不可变 使用字符串拼接时是不同的2个空间 StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加 StringBuilder
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • Android开发中常见安全问题和解决方案

    前言 开发APP时经常有问到 APP的安全怎么保障 应用程序被PJ了怎么办 手机被人捡去了怎么办 特别在号称 安全第一 风控牛逼 的银行系统内 移动产品安全性仍被持有怀疑态度 那我们来总结下APP安全的方向和具体知识 1 应用程序安全 2
  • Android SDK开发艺术探索(五)安全与校验

    一 前言 本篇是Android SDK开发艺术探索系列的第五篇文章 介绍了一些SDK开发中安全方面的知识 包括资源完整性 存储安全 权限校验 传输安全 代码混淆等知识 通过基础的安全配置为SDK保驾护航 探索SDK开发在安全方面的最佳实践
  • Python爬虫实战:IP代理池助你突破限制,高效采集数据

    当今互联网环境中 为了应对反爬虫 匿名访问或绕过某些地域限制等需求 IP代理池成为了一种常用的解决方案 IP代理池是一个包含多个可用代理IP地址的集合 可以通过该代理池随机选择可用IP地址来进行网络请求 IP代理池是一组可用的代理IP地址
  • 【网络安全】Facebook代码执行实现命令执行、敏感信息泄露

    部分网站开设编码练习 若安全配置不当 则代码执行将升级为操作系统命令注入 导致敏感信息泄露 本文仅分享命令执行相关知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 未经许可 不可转载 文章目录 信息泄露 扩大危害 信息
  • 小白入门黑客之渗透测试(超详细)基本流程(内附工具)

    经常会收到小伙伴们这样的私信 为什么我总是挖不到漏洞呢 渗透到底是什么样的流程呢 所以全网最详细的渗透测试流程来了 渗透测试其实就是通过一些手段来找到网站 APP 网络服务 软件 服务器等网络设备和应用的漏洞 告诉管理员有哪些漏洞 怎么填补
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 网络安全(黑客)自学

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

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 为什么我强烈推荐大学生打CTF!

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

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 【安全】mybatis中#{}和${}导致sql注入问题及解决办法

    0 问题 使用mybatis的时候遇到了 和 可能导致sql注入的问题 1 预先了解 1 底层通过prepareStatement对当前传入的sql进行了预编译 一个 被解析为一个参数占位符 解析之后会将String类型的数据自动加上引号
  • 【方法】如何把Excel“只读方式”变成可直接编辑?

    Excel在 只读方式 下 编辑后是无法直接保存原文件的 那如何可以直接编辑原文件呢 下面来一起看看看吧 如果Excel设置的是无密码的 只读方式 那在打开Excel后 会出现对话框 提示 是否以只读方式打开 如果想直接编辑文件 选择 否
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 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
  • 密码学与网络安全-基本概念

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