Katz 3.5 3.6

3.5 选择明文攻击(CPA)的安全性

选择明文攻击背后的基本思想是,敌手可以适应性地选择多条消息请求加密。
在这里插入图片描述
在这里插入图片描述
注意这里的定义,如果加密方案是确定的话,则无法抵御选择明文攻击,因此任何CPA安全的加密方案必须是概率性的。

CPA安全的重要技术优势是,他足够证明一个方案对单次加密是CPA安全的,然后可以得到他对于多次加密也是CPA安全的。

3.6 CPA安全的加密方案创建

先引入伪随机函数的概念。

3.6.1 伪随机函数

同理于伪随机字符串,任何一个确定的函数是伪随机函数都是没有意义的。因此要说明这个函数分布的伪随机性。

在这里插入图片描述

在这里插入图片描述

3.6.2 基于伪随机函数的CPA安全加密

在这里插入图片描述
该构造方法,先均匀随机输出一个密钥k,在随机均匀选择r,通过这两个东西来制造密文,并且是Fk对r进行作用之后再与m进行异或操作,而不是直接用Fk作用m。

注:这个r是随机生成的,当攻击者访问预言机时,预言机生成的不一定是r。

以上的加密方案在选择明文攻击下,具有不可区分加密性。其证明思路为在理想的世界中分析方案的安全性,也就是说用一个真正的随机函数来代替伪随机函数,然后说明这种情况下是安全的。接下来反证如果Fk不安全,推出Fk可以被区分从而导出矛盾。以下的图片非常直观的描述了伪随机函数加密过程。
在这里插入图片描述

3.6.3 伪随机置换

在这里插入图片描述

3.6.4 加密模式

在这里插入图片描述
该模式在F为伪随机置换的时候,是CPA安全的。缺陷是必须依次执行。

在这里插入图片描述
该模式解决了无法并行操作的问题,因为其生成的流是独立于明文的,并且不需要F是一个置换,只需F是一个伪随机函数就可满足CPA安全。

在这里插入图片描述
随机计数模式(即每次消息被加密,当ctr是随机均匀选择的时候)是CPA安全的

katz中心性是一种衡量节点在网络中的重要性的指标。实现katz中心性的代码可以如下所示: ```python import numpy as np import networkx as nx def katz_centrality(G, alpha, beta, max_iter=100, tol=1e-6): # 创建邻接矩阵 A = nx.adjacency_matrix(G).toarray() n = len(G.nodes()) # 计算最大特征值 lmax = np.max(np.abs(np.linalg.eigvals(A))) # 计算Katz中心性 centrality = np.zeros(n) centrality_new = alpha * np.linalg.inv(np.eye(n) - alpha * beta * A.T) @ np.ones(n) centrality_diff = np.linalg.norm(centrality_new - centrality) iter_count = 0 while centrality_diff > tol and iter_count < max_iter: centrality = centrality_new centrality_new = alpha * np.linalg.inv(np.eye(n) - alpha * beta * A.T) @ centrality_new centrality_diff = np.linalg.norm(centrality_new - centrality) iter_count += 1 return centrality_new # 创建一个图 G = nx.Graph() G.add_edges_from([(1, 2), (1, 3), (2, 3), (2, 4), (3, 4)]) # 计算Katz中心性 alpha = 0.1 beta = 0.5 katz_centralities = katz_centrality(G, alpha, beta) # 打印结果 for node, katz_centrality in enumerate(katz_centralities): print(f"Node {node+1}: {katz_centrality}") ``` 在这个例子中,我们使用 NetworkX 库创建了一个简单的图。然后,我们定义了一个 `katz_centrality` 函数来计算 Katz 中心性。该函数使用迭代方法计算 Katz 中心性,并返回每个节点的中心性值。 在主程序中,我们设置了图的参数,然后调用 `katz_centrality` 函数计算 Katz 中心性。最后,我们打印出每个节点的中心性值。 注意:在计算 Katz 中心性时,需要指定一个合适的 `alpha` 和 `beta` 值。这些参数的选择可以根据具体问题和需求进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值