热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SPN:代换置换网络简述

基本技术:代换和置换迭代密码方案安全需求:混乱性:密钥和明文密文间有复杂的依赖扩散:单个密钥或明文的变化影响到更多的密文迭代密码使用密钥扩展算法将输入的一个密钥扩展为多个子密钥(

  • 基本技术:代换和置换
  • 迭代密码方案
  • 安全需求:
    1. 混乱性:密钥和明文密文间有复杂的依赖
    2. 扩散:单个密钥或明文的变化影响到更多的密文



迭代密码


  • 使用密钥扩展算法将输入的一个密钥扩展为多个子密钥(Subkey)
  • 每轮使用一个子密钥进行加密
  • 上一轮的输入作为下一轮的输出,也就是自身迭代

代换置换网络


代换-置换网络是一系列被应用于分组密码中相关的数学运算,高级加密标准(英语:AES)、3-Way(英语:3-Way)、Kuznyechik(英语:Kuznyechik)、PRESENT(英语:PRESENT_(cipher))、SAFER(英语:SAFER)、SHARK、Square都有涉用。这种加密网络使用明文块和密钥块作为输入,并通过交错的若干“轮”(或“层”)代换操作和置换操作产生密文块。代换(Substitution)和置换(Permutation)分别被称作S盒(替换盒,英语:S-boxes)和P盒(排列盒,英语:P-boxes)。由于其实施于硬件的高效性,SPN的应用十分广泛。


在这里插入图片描述
该网络的加密过程由n轮组成.对于每一轮:


白化

就是和子密钥异或以消除明文的统计特征.
注意:由于S(a⊕b)=S(a)⊕S(b)S(a\oplus b)=S(a)\oplus S(b)S(ab)=S(a)S(b),在解密过程中反代换和反白化可以不分先后.


代换

在这里插入图片描述
将明文分为m组,每组长度为l,按照一定规则πs(z)\pi_s (z)πs(z)进行代换.代换规则称为S盒.


置换

代换后进行置换操作,存放置换规则的称为P盒.



S,P盒规则如下:
πs:{0,1}→{0,1}lπp:{1,2,...,lm}→{1,2,...,lm}\pi_s :\{ 0,1\}\rightarrow \{0,1\}^l\\ \pi_p:\{1,2,...,lm\}\rightarrow\{1,2,...,lm\}\\ πs:{0,1}{0,1}lπp:{1,2,...,lm}{1,2,...,lm}
也就是说,代换过程是分为m组,每组长度为lll分组改线;而置换过程则是整个明文l×ml\times ml×m进行置换.

对于NNN组长度为l×ml\times ml×m的密钥
K∈({0,1}l×m)NK\in (\{0,1\}^{l\times m})^N K({0,1}l×m)N
按如下顺序加密NNN轮:

XOR(u,k0);
Round = 0;
if(Round != N){w=S(x);u=P(w);x_nextroundXOR(u,k_Round);Round+1;}

被选作高级加密标准的Rijndael使用的就是8比特映射到8比特的S盒,密钥长度最小为128比特,最小轮数为10,分组长度同样为128比特。该大小的S盒和密钥长度保证了安全性。常用的变种包括使用不止一个S盒,或者在每一轮中增加或替换一个可逆的线性变换,这可在高级加密标准中看到。



推荐阅读
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • andr ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
author-avatar
hytyj_989
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有