본문 바로가기

CS

AES-128

반응형

학습목표

암호화 방식들에 대해서 알아보자. 깊게 파고들순 없어도, 개론수준까지는 알고있도록 하자. 이번 포스팅에서는 여러 암호화 방식중 AES-128 암호화에 대해서 알아보도록 하자.

AES-128

AES는 <Advanced Encryption Standard>의 약자로 '고급 암호화 표준'라는 의미이다.

AES는 미국 표준 기술 연구소에 의해서 연방 정보 처리 표준으로 지정된 암호화 방식이며 NSA에 의해 1급 비밀에 사용할 수 있도록 승인된 암호화 알고리즘 중 유일하게 공개된 알고리즘이다.

Hash암호화와는 다르게 '대칭키'를 가지고 암호화와 복호화를 진행한다.

AES 뒤에 붙는 128,192,256은 대칭키 bit수로 AES-128은 128bit의 대칭키를 쓰은 암호와 알고리즘 이다.

128bit는 16Byte이므로, 키가 16자이다.(192bit = 24자리, 256bit = 32자리)

키의 길이에 따라서 암호화 라운드의 수만 다르기 때문에, 구현 로직은 같다.

그러나 Java에서는 AES 키 길이의 제한을 두어 AES-128만 지원한다.

AES 알고리즘의 내부동작(개론)

AES알고리즘은 bit수에 따라 키의 자릿수 뿐아니라 암호화 라운드의 횟수도 다르다.

(암호화 라운드란, 암호화 연산의 반복횟수를 말한다.)

  • 128bit = 10라운드
  • 192bit = 12라운드
  • 256bit = 14라운드

https://dailyworker.github.io/AES-Algorithm-and-Chiper-mode/
https://dailyworker.github.io/AES-Algorithm-and-Chiper-mode/

 

  1. S-Box :GF(2⁸)을 이용한 치환연산
  2. Shift Row : 단순 자리바꿈
  3. Mix Column : GF(2⁸)을 이용한 치환연산
  4. Add RoundKey : XOR 연산을 이용

여기서 GF(2⁸)을 이용한 계산이란, 기약 다항식 m(x)=x⁸+x⁴+x³+x+1

을 사용하는 다항식 체를 말한다.

위 네 가지 세부 연산은 모두 역이 가능하므로,

따라서 라운드 키를 적용하는 부분을 제외하고는 그 자체로 어떤 안전성도 제공하지 않는다.

Feedback

암호화 알고리즘의 더 세부적인 내용은 다음 포스팅에서 알아보자.

알게된 점

  • AES-128의 숫자의 의미
  • Java의 AES 지원범위
  • AES는 대칭키 암호화 방식이다.
  • AES암호화 방식의 내부연산 4가지

알아야할 점

  • [ ] 알고리즘 내부동작 자세히

References

 

안전한 암호화를 위한 AES 알고리즘에 대한 이해와 구현코드(Java, C#)

 

안전한 암호화를 위한 AES 알고리즘에 대한 이해와 구현코드(Java, C#)

개요오랜만에 쓰는 글입니다. 요 근래 정신이 너무 없어서 블로그 글도 못쓰고 있던 찰나에 인턴으로 근무하고 있는 회사에서 맡게 된 업무인 C# 암호화, Java 복호화에 대해서 설명하고자 합니다

dailyworker.github.io

 

반응형

'CS' 카테고리의 다른 글

Hash암호화  (0) 2021.08.08
ReadTimeout  (0) 2021.07.24
Page  (0) 2021.06.04