Substitution-permutation network
In cryptography, an SP-network, or substitution-permutation network (SPN), is a series of linked mathematical operations used in block cipher algorithms such as AES.
These networks consist of S-boxes and P-boxes that transform blocks of input bits into output bits.
S-boxes substitute or transform input bits into output bits. A good S-box will have the property that changing one input bit will change about half of the output bits. It will also have the property that each output bit will depend on every input bit. P-boxes permute or rearrange bits across S-box inputs. In addition, at each round the key is combined using some group operation, typically XOR.
Substitution-permutation Network Media
- Error creating thumbnail: About to transcode 1 SVG file(s)
Converting SubstitutionPermutationNetwork-en.svg to /var/www/html/w/images/temp/transform_6db5d2a7285a.png ... org.w3c.dom.DOMException: file:/var/www/html/w/images/temp/svg_7fc14d9392b9216bbbb0b033/SubstitutionPermutationNetwork-en.svg: The attribute "style" represents an invalid CSS declaration ("fill:context-stroke;fill-rule:evenodd;stroke:none"). Original message: The "context-stroke" identifier is not a valid value for the "fill" property. at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:824) at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:867) at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:81) at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:563) at org.apache.batik.bridge.AbstractGraphicsNodeBridge.getDisplay(AbstractGraphicsNodeBridge.java:158) at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:134) at org.apache.batik.bridge.SVGMarkerElementBridge.createMarker(SVGMarkerElementBridge.java:83) at org.apache.batik.bridge.PaintServer.convertMarker(PaintServer.java:137) at org.apache.batik.bridge.PaintServer.convertMarkers(PaintServer.java:98) at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createMarkerPainter(SVGDecoratedShapeElementBridge.java:67) at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createShapePainter(SVGDecoratedShapeElementBridge.java:86) at org.apache.batik.bridge.SVGShapeElementBridge.buildGraphicsNode(SVGShapeElementBridge.java:91) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:224) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82) at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:210) at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92) at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142) at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:158) at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1008) at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:719) at org.apache.batik.apps.rasterizer.Main.execute(Main.java:956) at org.apache.batik.apps.rasterizer.Main.main(Main.java:1009) ERROR: null Enclosed Exception: file:/var/www/html/w/images/temp/svg_7fc14d9392b9216bbbb0b033/SubstitutionPermutationNetwork-en.svg: The attribute "style" represents an invalid CSS declaration ("fill:context-stroke;fill-rule:evenodd;stroke:none"). Original message: The "context-stroke" identifier is not a valid value for the "fill" property. org.apache.batik.transcoder.TranscoderException: null Enclosed Exception: For input string: "auto-start-reverse" at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:228) at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92) at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142) at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:158) at org.apache.batik.apps.rasterizer.SVGConverter.transcode(SVGConverter.java:1008) at org.apache.batik.apps.rasterizer.SVGConverter.execute(SVGConverter.java:719) at org.apache.batik.apps.rasterizer.Main.execute(Main.java:956) at org.apache.batik.apps.rasterizer.Main.main(Main.java:1009) Caused by: org.apache.batik.bridge.BridgeException: For input string: "auto-start-reverse" at org.apache.batik.bridge.SVGMarkerElementBridge.createMarker(SVGMarkerElementBridge.java:134) at org.apache.batik.bridge.PaintServer.convertMarker(PaintServer.java:137) at org.apache.batik.bridge.PaintServer.convertMarkers(PaintServer.java:98) at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createMarkerPainter(SVGDecoratedShapeElementBridge.java:67) at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createShapePainter(SVGDecoratedShapeElementBridge.java:86) at org.apache.batik.bridge.SVGShapeElementBridge.buildGraphicsNode(SVGShapeElementBridge.java:91) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:224) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:219) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171) at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82) at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:210) ... 7 more ... error (SVGConverter.error.while.rasterizing.file)
A sketch of a substitution–permutation network with 3 rounds, encrypting a plaintext block of 16 bits into a ciphertext block of 16 bits. The S-boxes are the Si, the P-boxes are the same P, and the round keys are the Ki.
Related pages
References
- Jonathan Katz and Yehuda Lindell, "Introduction to Modern Cryptography". CRC Press, 2007.