这里学点go的基础知识。

GoLang基础知识

定义

变量

整型,字符串,数组,字典

  1. var 变量名 变量类型[键类型]值类型{初始化内容}
  2. 变量名 := make(变量类型[键类型]值类型)

函数

func (输入) 函数名 返回类型 {}

I/O

输入

scan,scanf,scanln

输出

print,printf,println

语句

条件语句

if _, ok := dic[key]; ok {}

循环语句

for i, str := range array{}

特性

协程

go func1()

go func2()

go func3()

通道

有点类似于队列,用于协程之间数据传递。

线程安全,无需加锁。

有缓冲和无缓冲通道的区别:即异步与同步的区别,无缓冲的一开始就会被堵塞,有缓冲的等缓冲满了才会被堵塞。

接口

类似于cpp的继承

框架

gin

反馈

  1. 时间管理上有问题,每天完成的任务很少
  2. 课程推进慢,多门进度没跟上
  3. 创新框架还是应用
  4. 学的知识太零碎了

纠正

  1. none
  2. none
  3. none
  4. 找本书or课程

自顶向下第8章概览

8.7 网络层安全性:IPsec和虚拟专用网

许多机构使用IPsec创建了虚拟专用网(VPN)。

网络层安全性地毯式覆盖。

IPsec提供了机密性,源鉴别,数据完整性和重放攻击防护。

IPsec和虚拟专用网

概述VPN过程:内对内不加密;内到外先加密,按正常包传输,最后接收方解密。

AH协议和ESP协议

AH:鉴别首部,提供源鉴别和数据完整性服务

ESP:封装安全性载荷,提供源鉴别,数据完整性和机密性服务

安全关联

在发送数据报前创建一个逻辑连接,称之为安全关联(SA),单工,由发送方路由器维护。

SAD:安全关联数据库

SA identifier: SPI(security parameter index)

IPsec数据报

隧道模式or运输模式,以下关注隧道模式。

IPsec数据报结构为:新IP首部+ESP首部+初始IP首部+初始IP数据报载荷+ESP尾部+ESP-MAC。

其中先加密“初始IP首部+初始IP数据报载荷+ESP尾部”,再由“ESP首部+被加密的部分”生成MAC。

ESP协议的IPsec数据报的协议号:50

ESP首部以明文发送,其中由SPI和序号。

目的路由器接收步骤:

  1. 查看IP地址
  2. 判断协议号
  3. 通过SPI确定SA
  4. 使用MAC密钥计算MAC值
  5. 检查序号
  6. 解密
  7. 删除填充并抽取初始IP报文
  8. 转发进VPN

SPD:安全策略库

IKE:IPsec中的密钥管理

IKE:因特网密钥交换,用于自动生成SA。

两个阶段:具体操作略

8.8 使无线LAN安全

WEP:有线等效保密

有线等效保密

鉴别方式:

  1. 无线主机通过接入点请求鉴别
  2. 接入点以nonce响应鉴别
  3. 无线主机用共享的密钥加密nonce
  4. 接入点解密加密的nonce

具体过程:略

IEEE 802.11i

8.9 运行安全性:防火墙和入侵检测系统

对流量进行安全检查

防火墙

目标:

  1. 所有流量都通过防火墙
  2. 仅授权流量允许通过
  3. 自身免于渗透
传统的分组过滤器

根据规则决定是否丢弃

可根据ACK比特设置使得内部用户能够连接到外部服务器,而外部用户无法连接到内部服务器。有哄骗攻击。

需要知道怎么生成连接表。

状态过滤器

需要知道怎么生成访问控制列表。

应用程序网关

根据应用程序控制访问。

邮箱服务器,web高速缓存等等都是应用程序网关。

入侵检测系统

IDS:入侵检测系统,告警

IPS:入侵防止系统,滤除

基于特征or基于异常

基于特征的缺点:需要先验知识;处理能力要求高

基于异常的挑战:怎么区分正常流量和异常流量

自顶向下第8章概览

8.5 安全电子邮件

为什么要在多层提供安全性功能:

  1. 用户级安全:一个商业网站不能依赖于IP层安全性
  2. 低层部署困难

安全电子邮件

安全特性:

  1. 机密性:对称加密,非对称加密,会话密钥
  2. 发送方鉴别
  3. 报文完整性:数字签名,报文摘要
  4. 接收方鉴别

安全电子邮件系统:将会话密钥,数字签名和报文摘要结合使用。

PGP

8.6 使TCP连接安全:SSL

SSL ——> TLS

宏观描述

SSL有三个阶段:握手,密钥导出和数据传输

  1. 握手:创建TCP连接,验证身份,发送主密钥(MS)
  2. 密钥导出:使用MS生成4个密钥(两个会话加密密钥,两个会话MAC密钥)
  3. 数据传输:SSL将数据分割成记录,对每个记录附加一个MAC(=H(数据, MAC密钥))用于完整性检查,然后用会话加密密钥加密”记录+MAC”

这种数据传输方式存在“报文顺序不对但完整性检查正确”的情况。

记录格式:记录头(1字节content type+2字节SSL版本+3字节长度)+加密后的数据和MAC

更完整的描述

SSL握手
  1. 客户发送支持的算法列表,以及一个nonce
  2. 服务器选择一个对称算法,一个非对称算法和一个MAC算法。返回算法,证书和一个nonce
  3. 客户验证证书并提取公钥,生成一个前主密钥(PMS),发送用服务器公钥加密过的PMS
  4. 客户和服务器分别从PMS和不重数中计算出主密钥(MS),然后将该MS切片以生成4个密钥

CBC模式有幺蛾子。

  1. 客户发送所有握手报文的一个MAC
  2. 服务器发送所有握手报文的一个MAC
关闭连接

在记录的类型字段中指出该记录是否用于终止SSL。

课程作业:

科目 作业 ddl
电子商务安全 none
人工神经网络 none
网络协议逆向 none
云计算技术 none
网络安全技术 hw3(还有final exam) 4.15
计算机视觉 hw1 4.30
专业综合实践 none

想做的事:

雅思,普通话

区块链

课程作业

网安考试

夏令营

先拿中文版的教材花两天过一遍。

自顶向下第8章概览

8.1 什么是网络安全

8.2 密码学原理

古典密码

流密码,块密码

对称密码

非对称密码(会话密钥)

8.3 报文完整性和数字签名

哈希函数

压缩函数

报文鉴别码

MAC

数字签名

数字签名拥有可鉴别和不可伪造的特点。

可用公钥密码直接进行数字签名但代价过大,所以一般先用哈希函数进行压缩,再用私钥进行签名(即加密)

进行公钥认证需要PKI做支撑

CA(认证中心):绑定公钥和特定实体,且验证之后会生成将公钥和实体绑定的证书

8.4 端点鉴别

端点鉴别就是一个实体通过网络向另一个实体证明身份的过程,发生在其他协议之前。

ap1.0

Alice直接发送报文给Bob,说“我是Alice”。

缺陷:Bob无法判断发送的人就是Alice。

ap2.0

Alice有一个周知网络地址,Bob通过数据报的源地址是否与Alice的周知IP地址相匹配来判断。

缺陷:容易被假冒。

ap3.0

使用口令进行鉴别。

缺陷:容易被窃听

ap3.1

Alice向Bob发送报文和加密后的口令,Bob解密口令进行鉴别。

缺陷:回放攻击

ap4.0

Alice先向Bob发送报文,然后Bob发送一个nonce给Alice,Alice加密这个nonce并发回给Bob,最后Bob解密并接收报文。

ap5.0

相较ap4.0,ap5.0使用公钥加密。

缺陷:中间人攻击

资料

Solidity教程——学习如何构建您的第一个智能合约 - 知乎 (zhihu.com)

以太坊之Remix部署智能合约(Remix简介,使用,测试网络部署合约)remix智能合约-CSDN博客

智能合约

Remix上编译与部署。

编写

使用solidity语言,

开头指明编译器版本

状态变量

函数

事件

修饰器

结构体

编译

选择合适的编译器编译生成ABI文件

部署

remix中提供10个测试账户

也可以连接自己的钱包,添加自己的地址

交互

调用ABI接口

资料

一个“区块链智能合约”如何诞生及运行? - 知乎 (zhihu.com)

区块链技术:智能合约入门 - 知乎 (zhihu.com)

史上最全以太坊“新手入门”攻略 - 知乎.

如何购买ETH | ethereum.org.

智能合约

部署和调用本质都是交易。

前提

在部署智能合约之前,需要理解以太坊机制,GAS和以太坊钱包。

部署

将代码编译成字节码后,外部用户发起部署合约的交易,经矿工验证后打包进区块链中,该过程需要向打包的矿工支付费用(gas)。

调用

合约部署在区块链上,任何人只要知道合约ID都可以调用。

以太币

以太币的获取方式有三种:直接购买、赠送、挖矿。

挖矿

1650算力:13MH

3090算力:115MH

4090算力:1TH

主流矿机:350MH

免费

看广告。。。

课程作业:

科目 作业 ddl
电子商务安全 none
人工神经网络 none
网络协议逆向 none
云计算技术 none
网络安全技术 hw3(还有final exam) 4.15
计算机视觉 hw1 4.30
专业综合实践 none

想做的事:

雅思,普通话

区块链

资料

以太坊(ETH)到底是什么? - 知乎 (zhihu.com)

一文读懂以太坊 —— ETH 2.0发展与投研报告 - 知乎 (zhihu.com)

以太坊外部账户和合约账户是如何存在于区块链中,余额又是怎么更新的? - 知乎 (zhihu.com)

「ETH 基本功」什么是内部转账(Internal Transactions)?| 如何销毁通证? - 知乎 (zhihu.com)

以太坊相关

以太坊是一个去中心应用编程平台,相当于一个分布式计算机。

提供了许多API接口,其中封装了网络服务,底层服务(数据库,算法),共识等等。

网络和应用互相成就:应用需要更健壮强大的网络作为承载,网络需要功能完善的应用场景服务用户。

智能合约

一段程序,达到条件后即可执行。

new bing的解释

智能合约是一种计算机协议,是以数字方式促进、验证或执行合同的谈判或履行。智能合约是表示为一段代码的合约,旨在执行一组指令。一旦某个事件触发合约中的条款,代码即自动执行。智能合约可以在不需要中间人的情况下自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与,也不会浪费时间。

智能合约可以用于各种应用程序,例如数字货币、投票、物流、供应链管理等。智能合约可以存储和检索数据,并根据预定义的规则自动执行操作。智能合约还可以在区块链上实现去中心化应用程序(DApps)。

简单应用

代码
1
2
3
4
5
6
7
8
9
10
11
12
13
pragma solidity ^0.4.0;

contract SimpleStorage {
uint storedData;

function set(uint x) public {
storedData = x;
}

function get() public view returns (uint) {
return storedData;
}
}
部署过程
  1. 用户用solidity编写智能合约,假设源码文件为contract.sol,经过编译器编译后变成字节码的形式

  2. 外部账户发起部署合约的交易,字节码作为input data随交易一起提交到区块链上

  3. 该交易会被节点验证是否合法,若合法则被放入交易池中等待矿工打包进区块,分发到节点

  4. 遍历区块中的交易,该智能合约在EVM虚拟机中执行,计算出智能合约部署的地址等运算结果

  5. 运算结果被打包到区块中,经过共识后新区块将被链接到主链

PS. 外部用户和内部用户:外部账户(Externally Owned Account ,EOA)是由以太坊网络的人类用户创建的帐户。它与公钥、私钥对相关,他是通过对公钥进行二次哈希后结果的最后20个字节导出的。以太坊内部账户是由智能合约的代码控制的账户,与外部账户不同,它们没有私钥,只能由智能合约进行交互。

过程
  1. 编码部署,全网验证
  2. 定期检查是否触发
  3. 若触发,验证节点先签名验证,多数验证节点就此事件达成共识后,合约成功执行
  4. 合约移出区块

逻辑越复杂,消耗的以太币就越多。

先存以太币才执行合约。

以太币

以太坊中的货币,可用于支付交易费用,可用于创建智能合约。

应用生态

DAO,DeFi,NFT,ERC-20

网络扩容

链上:改进链结构(改变共识or分片技术)

链下:链下计算结果,主链只关注结果。

0%