秘密分享
1. 定义秘密分享,即需要传输的隐私数据被分割成n份,参与方分别拥有一份,这些参与方一般是对等的角色,且其中的分享或者说分割和还原均不涉及加解密,只有多于特定t个参与者合作才可以计算出或是恢复秘密,而少于t个参与者则不可以得到有关秘密。秘密分享的优势正在于此,数据的分裂和还原运算一般来说成本极低,如加性秘密分享(Additive Secret Sharing),分裂和还原只是加减法,除此之外,就是对分裂点的选择需要做一次随机数生成,这些运算成本远低于一般的加解密运算。更为重要的是,秘密分享真正价值在于处于分裂态可以运算,而运算的结果在多方参与的情况下可以还原。
2. Shamir密钥分享算法 其基本思想是分发者通过多项式,将一个密文C分成 N份共享单元,使得其中的任意 t 份共享单元可以组合重构出C ,但是其中任何的 t−1 份共享单元都无法得到关于C 的信息。
依赖的数学基础:
算法原理:
基于异或运算的秘密分享:
加法重构:多方计算 M+N
乘法重构:多方计算 M*N
【参考】
多方安全计算之秘密分享 - 知乎 (zhihu.com)
应用密码学 | 秘密共享 ...
全同态加密
1. 同态加密内容参考于https://mp.weixin.qq.com/s/pOtCtwphPnKesef3iaLpCQ
同态加密是允许在加密后的密文上进行运算,且解密后和直接在原始数据上运算结果相同。
1.1 部分同态加密主要是为乘法同态(RSA加密)和加法同态(Paillier加密)
注意:加法同态是密文上的乘=明文上的加
1.2 全同态加密全同态加密可以在密文上进行加法和乘法的操作。
容错学习(LWE,Learning With Error)问题:给定一个秘密的向量s,以及一个随机选取的向量a,还有一个符合某种分布的一个错误e,或者把它叫做噪声。将这一个随机选取的向量和秘密向量进行一个内积,再将噪声加上,将这两项发送给另一方,另一方是无法通过a和b来计算得出s的。
RLWE问题就是将LWE问题迁移到了环上,Rq是一个整数的多项式,除掉一个分源多项式,在系数上模掉一个模数q。
BGV,BFV和CKKS三种加密算法都是基于RLWE的加密方案,区别在于前两者的明文空间都在中Rt,CKKS的明文空间是R,不受该限制。另外主要的区别就在于BGV,BFV是在一个有限域内的精确运算。然后 ...
Split-learning
Split Learning(分裂学习)Split Learning被提出的场景是:多个常规算力节点(Alices)+一个超级算力节点(Bob)。核心思想是各方在不泄露原始数据的情况下,共同训练一个完整的模型,同时将模型中计算负载较高的部分安排在Bob节点。
1.经典架构普通型
普通型架构中只有一个Client节点(Alice)和一个Server节点(Bob)。Client根据其原始数据前向计算半模型得到cut layer(绿色框条)的前向值,Client随后将此值发送至Server侧,Server接收后完成剩余的前向计算;Server根据前向结果与label计算Server节点半模型的梯度,然后通过Server的cut layer把梯度反传给Client节点,最后Client完成它的半模型的BP梯度计算。注意:Server节点的label有可能是Client节点share给它的。
内容参考于https://zhuanlan.zhihu.com/p/541880009
分类模型处理
1.相关矩阵(Correlation Matrix)删除相关变量以改进模型是必要的。可以使用pandas“.corr()”函数找到相关性,并可以使用plotly express可视化相关性矩阵。相关代码如下:
12import plotly.express as pxpx.imshow(df.corr(),title="Correlation Plot of the Heat Failure Prediction")
数据分析相关代码:12import seaborn as snssns.pairplot(df,hue="HeartDisease")
这段代码使用Seaborn库中的pairplot函数,用于绘制数据集中各个变量之间的散点图和直方图,并且根据“HeartDisease”变量的不同取值对数据进行分组,以不同颜色来表示。
具体来说,df是一个数据框,包含多个变量(列),pairplot函数会对每两个变量之间进行散点图和直方图的绘制。hue参数指定了用于分组的变量名,即“HeartDisease”,如果数据集中有该变量,则会根据该变 ...
密码学基础
[TOC]
密码学基础1.1 密码根据密钥的使用方法,可以将密码分为对称密码与公钥密钥(也称为非对称密码)两种。使用密码是为了保证消息的机密性。
对称密码是指在加密与解密过程中使用同一密钥的方式。
公钥密码是指在加密和解密时使用不同的密钥的方式。
混合密码系统是将对称密码和公钥密码结合起来的密码方式。
1.2 安全威胁及应对方法
单向散列函数是利用哈希函数来计算散列值,其保证了消息的完整性。完整性是指数据是正确的而不是伪造的,通过使用单向散列函数就可以检测数据是否被篡改过。
消息验证码是一种可以保证完整性和提供认证的密码技术,其可以确认消息是否被篡改,同时也可以确认消息是否来自期待的通信对象。
数字签名是一种能够确保完整性、提供认证并防止否认的密码技术。
1.3 对称密码对称密码是加密和解密使用相同密钥的方式,在计算机上的加密解密过程如下:
对明文进行编码为比特序列,例如将字母根据ASCII编码映射为比特序列;
加密:明文编码后的比特序列与密钥进行XOR运算,得到密文,运算规则如下:
解密:密文再次与密钥进行XOR运算,得到明文。
1.4 非对称密码非对称密钥又称 ...
联邦学习实战
1.联邦学习定义 联邦学习强调的核心理念是数据不动模型动,数据可用不可见,这就保证了数据在不出本地的前提下,各参与方之间协同训练模型。联邦学习是利用分散在各参与方的数据集,通过隐私保护技术融合多方数据信息,协同构建全局模型的一种分布式训练方式。在模型训练过程中,模型的相关信息(如模型的参数、模型结构、参数梯度等)能够在各参与方之间交换(交换的方式可以是明文、数据加密、添加噪声等),但是本地训练数据不会离开本地。
1.1 联邦学习性能损失 联邦学习性能损失存在两种定义方式:一种狭义联邦学习性能损失;另一种是广义联邦学习性能损失。
狭义联邦学习性能损失:在分布式数据源上本地训练的性能近似于所有数据集中到一个地方进行训练的性能。
广义联邦学习性能损失:在分布式数据源上本地训练的性能存在比所有数据集中到一个地方进行训练的性能好的情况。例如多个参与方进行联邦训练时,如果部分客户端的数据质量都很差(比如客户端故障),那么将导致集中式训练结果会很差,但是联邦训练会在开始训练时对客户端进行检测,异常客户端将被剔除,所以联邦式训练性能自 ...
MYSQL基础
MySQL
Command
Description
General
mysql -u root -h docker.hackthebox.eu -P 3306 -p
login to mysql database
SHOW DATABASES
List available databases
USE users
Switch to database
Tables
CREATE TABLE logins (id INT, ...)
Add a new table
SHOW TABLES
List available tables in current database
DESCRIBE logins
Show table properties and columns
INSERT INTO table_name VALUES (value_1,..)
Add values to table
INSERT INTO table_name(column2, ...) VALUES (column2_value, ..)
Add values ...
逻辑漏洞
逻辑漏洞逻辑越权逻辑越权分为水平越权、垂直越权与未授权访问
水平越权:通过更换的某个 ID 之类的身份标识,从而使 A 账号获取(修改、删除等)B 账号数据。
垂直越权:使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
未授权访问:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。
如果在访问网站的数据包中有传输用户的编号、用户组编号或者类型编号的时候,那么尝试对这个值进行修改就是测试越权漏洞的基本。
墨者学院实战:
登录后抓包,发现ID这种身份标识,
尝试更换成ID,结果返回他人信息
进行穷举爆破,得到所有人的信息
得到了所有人的ID,密码等信息,但是怎么知道题目要求的人物的账号ID呢,要找页面中有关人物的所有信息,查看网页源代码
发现人物的ID为20128880316,根据爆破得到的信息
密码经过MD5加密,解密得到密码,登录拿到flag。
逻辑越权之登录脆弱登录脆弱如果网站采用的协议是http,那么大多数情况下其数据包中登录的账号与密码是不加密的,但不是绝对,此时可以看一下其加密的方式是什么,目前大多是MD5和Base64,此 ...
i春秋练习
CTF大本营-web login进入环境后
查看网页源代码发现最底部出现信息(所以一定要滑倒底部去看完整)
经过测试发现可以登录,但是没有显示有用信息
于是,抓包查看返回信息,发现特殊信息show:0
尝试请求包中加入show:1,得到响应包中返回的源码,进行审计发现要在请求包中有token,token的值是user经过进行unserialize,gzuncompress,base64_decode等一系列操作得到login
unserialize:对单一的已序列化的变量进行操作,将其转换回 PHP 的值
gzuncompress:解压被压缩的字符串
于是根据操作得到token的值
将token的值加入到cookie中就得到了flag.