** ๊ตฌํ์ ์ฐ์ต์ค์ด๋ ์ฐธ๊ณ ํ์ง ๋ง์ธ์
[ ๊ตฌ์กฐ ]
- SPN ๊ตฌ์กฐ
์์ ์ฑ ํ๋ผ๋ฏธํฐ | ํค ๊ธธ์ด | ๋ธ๋ก ํฌ๊ธฐ | ๋ผ์ด๋ ์ |
128 | 128 | 128 | 10 |
192 | 192 | 192 | 12 |
256 | 256 | 256 | 14 |
- AES๋ 128์ ์ฃผ๋ก ์ด๋ค ํจ.
SubByte
- ์
๋ ฅ๊ฐ์ ๋ฐ์ดํธ ๋จ์๋ก ์ชผ๊ฐฌ
- 128๋นํธ = 16 ๋ฐ์ดํธ
- state : 16byte -> 4byte x 4byte ํ๋ ฌ๋ก ํํ
- S-box ์ฐ์ฐ (ํ
์ด๋ธ ์ฐธ์กฐ)
ShiftRow
- state ๊ฐ์ ๊ฐ ํ์ ์ํํธ ์ฐ์ฐ
MixColumn
- state ๊ฐ์ ๊ฐ ์ด์ 4x4 ํ๋ ฌ์ ๊ณฑํด์ฃผ๋ ์ฐ์ฐ
AddRoundKey
- ๋ผ์ด๋ ํค ๊ฐ์ ๊ฐ ๋ฐ์ดํธ์ xor ํด์ค
AES KeySchedule
- 128bit ํค -> 4byte word๋ก ์ชผ๊ฐฌ (4๊ฐ)
- RotWord : word๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก 1์นธ ์ํํธ
- SubWord : ๋ฐ์ดํธ ๋จ์๋ก S-box ์ฐ์ฐ
- Rcon : ๋ผ์ด๋ ์์ ๋ํด์ค
[ ๊ตฌํ ]
typedef unsigned char BYTE;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "aes.h"
state[4][4];
Rkey[4][4];
BYTE Key[] = { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c };
//16์ง์ 2๊ฐ = 8bit, 1byte=8bit => 128bit=16byte๋ก ๋ง๋ค์ด์ key์ ๋ฃ๊ธฐ
'์ํธ > ์ํธ ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํธ ๊ตฌํ] RSA (0) | 2022.05.04 |
---|