-
AES 복호화 (Rijndael 알고리즘)알고리즘/알고리즘 개념 및 정리 2018. 1. 26. 07:07
복호화를 보시기전에 이전포스팅인 암호화를 먼저 숙지하시기 바랍니다. http://ho-story.tistory.com/27
AES복호화에 성공하였다.ㅎㅎ
AES암호화를 해봤기 때문에 AES복호화는 간단하다.
암호화하는것을 거꾸로 진행해주면 된다.
하지만 주의 할점들이 몇가지 있다.
1.S-BOX 뿐만아니라 inverse S-box도 필요하다.
2.또한 Shift Rows 단계에서는 암호화와 반대로 Shift를 진행하여야 한다.
암호화에서 왼쪽으로 Shift를 진행하였다면
복호화에서는 오른쪽으로 Shift를 진행한다!!
3.Mix Columns 단계에서 암호화에서 쓰였던 4x4 행렬이 아닌
새로운 행렬 즉 암호화에 쓰인 행렬의 역행렬이 필요하다
이러한 모습으로 이루어져있다.
숫자가 커졌다고해서 겁먹을 필요가 없다!
친절하게 계산방법도 첨부하였다^^. 간단하게 아래의 수식대로 사용하면 된다.!
( 캐리가 발생할 시에 0x1b와 XOR하는것과 + 는 XOR로 연산하는것을 까먹지 말것! )
혹시나 어지러울수 있으니 간략하게 단계별로 예시를 들었다.
이러한 암호화된 CipherText와 Cipher Key가 있다면
우선은 Cipher Key를 가지고 RoundKey를 만들어주자!
즉, Key Scheduling!
이것은 그냥 그대로 하면되니깐 Skip!!
(미리 해놓는게 복호화할때 편리하다)
그 뒤 첫번째로 나온 Roundkey(암호화에서는 10번째 Key이다)를 가지고 Ciphertext와 XOR을 진행한다.
다음엔 위에서 설명한 것 처럼 Shift연산을 하고 inverse S-box를 이용하여 SubBytes과정을 진행한다.
그 다음 RoundKey와 Xor 후 위에서 설명한 Mix Column을 진행하면 다음 Round시작 key가 나온다.
이것이 한개의 Round과정이다
이를 계속 반복~해서 Round 10이되면 SubBytes진행 후 Round Key10와 Xor까지만 진행하면 Plain Text가 나온다!
마지막으로 암호화한 데이터를 복호화하는 코딩에 성공한 사진이다ㅎㅎ
혹시나 궁금하신거나 잘못된점이 있다면 댓글 남겨주세요~
이해가 되지 않는다면 테스트 사이트에서 글을 읽고 테스트 사이트에서 한번 구동시켜 보면 이해가 될 것이다.
Rijndael 테스트 사이트 : http://www.formaestudio.com/rijndaelinspector/archivos/inspector.html
:https://www.hanewin.net/encrypt/aes/aes-test.htm
반응형'알고리즘 > 알고리즘 개념 및 정리' 카테고리의 다른 글
퀵 정렬 Quick Sort (0) 2019.03.09 삽입정렬 Insert Sort (0) 2019.03.07 버블 정렬 Bubble Sort (0) 2019.03.07 선택정렬 Selection Sort (0) 2019.03.07 AES암호화 (Rijndael 알고리즘) (5) 2018.01.25 댓글