详解语义安全(semantically secure)

目录

一. 引入

二. 密文与明文

2.1 通俗性理解

2.2 定理

2.3 定理理解

三. 语义安全的第一个版本

3.1 基本理解

3.2 定理

3.3 定理理解

四. 语义安全的第二个版本

4.1 直观解释

4.2 小结


一. 引入

密码学中安全加密要求:敌手(adversary)根据密文(ciphertext)不能推导出关于明文(plaintext)的任何信息。

本文将重点介绍语义安全(semantic security)的理解。

二. 密文与明文

2.1 通俗性理解

密码学的目标:密文不会泄露明文的任何一比特信息。

Enc:加密方案

Dec:解密方案

Gen:产生密钥。在不外加条件的情况下,通常认为Gen算法输出的密钥为n比特的均匀分布。

Message:明文。l比特可写作:

在理想条件下,攻击者在拿到密文后,猜测明文m的第i个比特(可以写做m^i)的概率为1/2.也就等同于胡乱猜测。

2.2 定理

PPT:probabilistic polynomial-time algorithm 概率多项式时间算法

negl:negligible 可忽略函数

假定某对称加密方案的明文是固定长度的,写做:

明文的长度为l,第i位比特。

给定任意的PPT敌手A,以下式子是满足的:

通常认为明文m与密钥k是均匀分布的:

需要注意的是,敌手A是具有随机性的。加密算法Enc也是有随机性的。

2.3 定理理解

证明过程比较繁琐,建议了解的小伙伴略过此部分。

本小节给出一个有意思的安全性归约证明(proofs by reduction)。

对于密文Enc(m),如果敌手可以确定出明文的第i个比特会发生什么?

换句话说,如果有两个明文m0与m1,这两个明文的第i个比特不一样。敌手就可以区分出这两个明文对应的密文。很明显这违反了我们加密的目标。

密码学需要构造两个敌手A和A',通过归约证明,来验证安全性。

引入一个PPT的敌手A,以及比特i:

第一个集合I0代表所有第i个比特为0的比特串:

第二个集合I1代表所有第i个比特为0的比特串:

明文m0要么来自于I0,要么来自于I1.而且两者的概率肯定是相等的。由此可得:

两个概率均代表敌手猜对的概率。

接下来我们构建另外一个敌手A'

第一步:均匀选取m0与m1,如下:

第二步:给定密文c。将密文c输入到敌手A的程序中:

如果A输出0,那么b'=0;如果A输出1,那么b'=1.

因为A是多项式时间的,所以A'也是多项式时间的。

对于敌手A'来讲,将其试验的结果表示为:

核心:当A成功时,A'也就成功了。由此可得:

第一个概率代表A'的试验输出1,也就是A'成功的概率;

第二个概率代表A成功的概率;

第三行代表分成两种情况;

第四行代表猜对明文m的第i个比特。

因为密码方案(Enc,Dec)是安全的。所以A'成功的概率是不会优于1/2,也就是:

最终可得敌手A不会猜出明文m的任意1比特信息:

三. 语义安全的第一个版本

3.1 基本理解

更进一步的目标:给定明文m的分布D,我们希望没有PPT敌手可以从密文学习到关于明文m的任意函数f信息。

我们希望给定密文Enc(m),敌手正确计算f(m);

敌手根据m的分布,直接计算f(m);

我们希望这两者的概率是一样的。也就是密文并没有起到任何辅助的作用,这样才能满足密码学的要求。

3.2 定理

(Enc,Dec):固定明文长度的对称加密方案,其中明文长度为l

明文的分布为D:

A与A'均为PPT算法

函数f定义为:

以下两个概率相减是可忽略的:

第一个概率:明文m是根据分布D选取的,密钥k是n长的均匀分布。算法A与加密Enc本身会引入随机性。

第二个概率:明文m是根据分布D选取的,算法A'会引入随机性。

3.3 定理理解

证明过程比较繁琐,建议了解的小伙伴略过此部分。

假定有两种明文。第一个是从分布D中随机选取,第二个是全为1的比特串,也就是:

Enc_k(m)\quad Enc_k(1^l)

如果加密方案是安全的,那么PPT敌手无法区分这两个密文。

接下来我们按密码学的语言来进行解释。

从分布D中选取m0.

确定m1为:

密文c可以是对m0进行加密,也可以是对m1进行加密。

将该密文输入到算法A中。如果A可以输出f(m),那么试验结果为0.

情况1:给定对m的加密,输出f(m)

情况2:给定对全为1的加密,输出f(m)

这两者其实是相等的。

四. 语义安全的第二个版本

本小节介绍是最全面的版本。

4.1 直观解释

明文为任意分布,可以由某些多项式时间算法产生Samp

可以允许敌手额外获取某些关于明文的信息h(m)。

消息的长度是任意的,该长度敌手可获取。|m|代表明文的长度

综上目前有两个多项式时间可计算的函数f与h

语义安全要求以下表达式是可忽略的:

明文输入依靠算法:

密钥k均匀选取,Enc和A,还有A'本身具有随机性。

第一个概率理解:敌手A拥有密文Enc(m),外部信息h(m)。尝试猜测f(m)的值

第二个概率理解:A'的目标也是尝试猜测f(m)的值,但只知道m的长度与h(m)的值。

语义安全要求A和A'猜测的概率是相等的。

换句话说,语义安全要求密文Enc(m)不会泄露关于f(m)的任何信息。

4.2 小结

语义安全跟不可区分安全是等效的。

### 路由类型的概述 路由机制在网络通信和软件架构设计中扮演着至关重要的角色。不同类型的路由适用于不同的应用场景和技术需求。 #### 逻辑路由的概念及特点 逻辑路由主要依赖于预定义的规则集来决定数据包或请求应转发到哪个目的地。这些规则可以基于源地址、目的地址或其他元数据属性。逻辑路由通常用于网络层,通过静态配置或动态协议自动调整路径选择策略[^1]。 对于应用程序内部而言,逻辑路由可能涉及根据输入参数匹配特定处理函数或模块: ```python def route_request(request_type, data): routes = { 'military': handle_military_news, 'sports': handle_sports_news, 'daily': handle_daily_news } handler = routes.get(request_type.lower(), default_handler) return handler(data) def handle_military_news(data): print("去找军事新闻记者") process_finished() def handle_sports_news(data): print("去找体育新闻记者") process_finished() def handle_daily_news(data): print("去找日常新闻记者") process_finished() ``` 此代码片段展示了如何利用字典映射实现简单的逻辑路由功能。 #### 语义路由的概念及特点 相比之下,语义路由更加智能化,它不仅考虑形式上的条件判断,还深入理解消息的内容含义。借助自然语言处理技术和机器学习模型,能够解析文本中的意图并据此做出更精准合理的分发决策。这种方式特别适合复杂多变的信息流环境,如社交媒体监控平台或是客服聊天机器人系统等场景下应用。 以下是简化版的语义路由示例,假设已经训练好了一个分类器`semantic_classifier`: ```python from sklearn.pipeline import Pipeline import joblib # 加载预先训练好的语义分类器 semantic_classifier = joblib.load('path_to_model.pkl') pipeline = Pipeline([ ('classifier', semantic_classifier), ]) def semantically_route_message(message_text): prediction = pipeline.predict([message_text])[0] handlers = { 'military': handle_military_news, 'sports': handle_sports_news, 'daily': handle_daily_news } selected_handler = handlers[prediction] selected_handler(message_text) semantically_route_message("最新足球比赛结果") # 应该调用handle_sports_news方法 ``` 在这个例子中,`semantically_route_message` 函数接收一条消息作为输入,并使用 `Pipeline` 对象对其进行预测分析,最终依据预测类别选择相应的处理器执行具体操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值