보안/개념

AES 암호화 총정리

수달정보보호 2023. 12. 30. 19:39

1. AES(Advanced Encryption Standard) 암호화 개념

AES는 미국 국립 표준기술 연구소(NIST)가 2001년에 제정한 데이터 암호화 규격이다. DES의 대안으로 등장한 것으로 현재에도 널리 사용되고 있다. AES는 블록암호로, 키 크기는 128/192/256 비트일 수 있고, 각각 128 비트 블록으로 암호화를 진행한다. 그러니까 입출력되는 크기가 128 비트인 것이다. 그리고 라운드의 수는 키 길이에 따라 달라지게 된다. 128 비트 키 - 10 라운드, 192 비트 키 - 12 라운드, 256 비트 키, 14 라운드로 말이다.

AES는 DES와 마찬가지로 대칭 키 암호화이므로, 암호화 및 복호화에 동일한 키를 사용한다. 그렇기에 송신자와 수신자는 모두 동일한 비밀 키를 알고 있어야 할 것이다.

위에서 AES는 10/12/14 라운드로 진행된다고 말했는데, 이 라운드는 입력한 평문을 암호문으로 최종 변환하기 위해 대체, 전치 및 혼합을 포함하는 여러 처리 단계로 구성된다. 그렇기에 AES 암호화 알고리즘은 저장된 데이터에 대해 수행될 많은 변환을 의미한다고도 볼 수 있다. 암호화의 첫 번째 단계는 데이터에 배열을 넣는 것이다. 그 후 여러 암호화 라운드에 걸쳐 암호 변환이 반복된다.

 

AES 암호화의 첫 번째 변환은 대체 테이블을 사용한 데이터 대체이다. 두 번째 변환은 데이터 행을 이동한다. 세번 째는 열을 혼합하는 것이다. 마지막 변환은 암호화 키의 달느 부분을 사용하여 각 열에서 수행된다. 키가 길어질수록 완료하기 위한 더 많은 라운드가 필요해지게 되는 것이다.

 

1.1 AES가 선택되었던 기준

NIST는 DES를 대체할 새로운 알고리즘이 128, 192, 256 비트의 키를 사용하여 128 비트 블록을 암호화할 수 있어야 한다고 공표했다. 그리고 이것 다음으로 AES 암호화 알고리즘으로 선택되기 위한 기준은 다음과 같았다.

 

ㄱ. 보안

새로 제시되는 알고리즘은 다른 암호와 비교하여 공격에 얼마나 저항하는지, 그 능력을 기준으로 판단되었다. 보안 강도가 가장 중요한 요소로 여겨진 것은 당연하다.

 

ㄴ. 비용

전 세계적으로 비독점적이며, 로열티 없이 출시되도록 의도되었으며, 알고리즘 계산 및 메모리 효율성에 대해서도 평가되었다.

 

ㄷ. 구현

마지막으로 알고리즘의 유연성, 하드웨어 또는 소프트웨어 구현에 대한 적합성 및 전반적인 단순성이 포함되었다.

 

위의 기준에 의거하여 15개의 대칭 키 암호화 알고리즘이 테스트를 거치게 되었고, 많은 토론과 피드백을 거쳐 Rijndael이 AES에 적합한 알고리즘으로 선택되었다. 

 

2. AES 암호화 과정

키 스케줄 알고리즘은 키에서 모든 라운드 키를 계산하는 데 사용된다. 그래서 초기 키는 암호화의 해당 라운드에 사용될 많은 다른 라운드 키를 만드는 데 사용된다.

암호화: AES는 열의 배열에서 각 블록을 16바이트(4바이트 x 4바이트 = 128) 그리드로 간주한다.

 

그리고 각 라운드는 4단계를 수행한다. SubBytes → ShiftRows  → MixColumns → Add Round Key 에 이른다. 마지막 라운드에서는 MixColumns가 존재하지 않는다. SubBytes는 substitution을 수행하고, ShiftRows와 MixColumns에서는 permutation을 수행하게 된다.

 

ㄱ. SubBytes

이 단계에서는 substitution을 구현한다. 이 단계에서 각 바이트는 다른 바이트로 대체된다. S-box라고도 불리는 룩업 테이블을 사용하여 수행된다. 이 substitution은 한 바이트가 결코 그 자체로 대체되지도 않고, 현재 바이트를 보완하는 다른 바이트로도 대체되지 않는 방식으로 수행됩니다. 이 단계의 결과는 이전과 마찬가지로 16바이트 매트릭스이다.

 

ㄴ. ShiftRows

이 단계에서는 각 행은 특정 횟수만큼 이동한다.

첫 번째 행은 시프트되지 않는다.

두 번째 행은 왼쪽으로 한 번 시프트된다.

세 번째 행은 왼쪽으로 두 번 시프트된다.

네 번째 행은 왼쪽으로 세 번 시프트된다.

 

ㄷ. MixColumns

이 단계는 기본적으로 행렬 곱셈이라고 할 수 있다. 각 열에는 특정 행렬이 곱해져서 각 바이트의 위치가 바뀌게 된다. 위에서도 말했듯, 이것은 마지막 라운드에서는 생략된다.

 

ㄹ. Add Round Key

이제 이전 단계의 결과 출력은 해당 라운드 키로 XOR-ed가 된다. 여기서 16바이트는 그리드로 간주되지 않고, 128비트의 데이터로 간주된다. 이 모든 라운드가 끝나면 128비트의 암호화된 데이터가 출력으로 되돌아온다. 이 과정은 암호화될 모든 데이터가 이 과정을 거칠 때까지 반복되는 것이다.

 

복호화는 Add round key  → Inverse MixColumns → ShiftRows → Inverse SubByte 의 과정으로 이해하면 되겠다.

 

 

※ 그래서 AES는 안전한가?

물론, 완벽하게 안전한 암호화 개념은 존재하지 않다. 모든 것은 상대적일 뿐이다. AES에 대한 그간의 공격을 살펴보았을 때, AES 암호화의 주요 위험은 부채널 공격에서 비롯되었다. 무차별 대입 공격을 하는 대신, 부채널 공격을 하여 시스템에서 유출된 정보를 수집하는 것을 선별적으로 진행한다. 그렇게 Side Channel Attack을 통해 Brute Force Attack을 진행하기 위한 경우의 수를 최대한 줄이는 것이다.  부채널 공격에는 컴퓨팅 장치가 암호화 작업을 수행할 때 수행하는 작업에 대한 정보를 수집하고 해당 정보를 사용하여 장치의 암호화 시스템을 리버스 엔지니어링하는 작업이 포함된다. 이러한 공격은 컴퓨터가 계산을 수행하는 데 걸리는 시간과 같은 타이밍 정보를 얻게 해준다. 그래서 데이터가 유출될 수 있는 경로를 방지해서 부채널 공격에 대한 방어를 하는 것도 중요하다. 보안 전문가들이 AES가 안전하다고 말하는데, 그것은 정확히는 'AES가 올바르게 구현되면' 안전하다는 것이다. AES 암호화 키는 분명 보호되어야 하고, 공격자가 키에 접근할 수 있게 된다면 시스템은 취약해질 수밖에 없다. AES를 사용한다고 안전하다고 여기지 말고, 보안을 보장하기 위한 수단을 강구해야 할 것이다. 강력한 비밀번호를 쓴다던지, MFA 인증을 구현한다던가, 방화벽이나 맬웨어 방지 소프트웨어를 제대로 구축한다던지, 직원이 사회 공학적 공격의 대상이 되어도 문제가 없도록 교육을 철저히 한다던지 등의 방법으로 말이다.

 

※ AES-128 vs AES-256, 그래서 뭐가 좋은 것인가?

보안 전문가들은 AES가 아직까지는 Brute Force Attack에서 안전하다고 여기고 있다. Brute Force Attack은 공격자가 올바른 키를 찾을 때까지 모든 키 조합을 확인하는 것인데, AES 암호화에 사용되는 키의 크기는 무어의 법칙에 따른 프로세서 속도의 발전을 고려하더라도 최신 컴퓨터로 해독할 수 없을 만큼 충분히 크다. 256 비트의 암호화 키는 당연히 128 비트의 키에 비해 Brute Force Attack에 의해 뚫리기가 매우 어려운 것이다. 양자 컴퓨터를 이용해서도 쉽지는 않을 것이다. 그럼 무조건 AES-256이 AES-128 보다 우수하냐고 물어보면, 그것은 아니다. 당연히 256 비트의 키에서는 더욱 많은 처리 능력이 요구되며, 처리 시간이 더욱 오래 걸릴 것이다. 특히 소형 장치에서 전력이 문제가 되거나, 대기 시간이 문제가 될 가능성이 있는 경우에는 128 비트의 키가 훨씬 나은 옵션일 수 있을 것이다. 공격자가 시스템에 접근하려고 할 때, 공격자가 노리는 것은 취약점이다. 128 비트인지, 256 비트인지 따지는 게 아니라, 타깃으로 지정한 시스템의 소프트웨어가 제대로 작동하는지, 데이터를 잘 보호하고 있는지, 전체 프로세스에 약점이 생기지는 않는지가 중요한 것이다. 괜히 256 비트의 키로 했다가 그것을 소화하지 못해서 취약점을 노출한다면, 오히려 128 비트의 키를 사용했을 때보다 공격자에게는 좋은 먹잇감이 될 수 있다는 것이다. 무작정 우수하다고 여겨지는 것을 선택하지 말고, 현재의 인프라에서 온전히 소화할 수 있는 선에서 자산을 고려했을 때 가장 합리적인 것을 고르는 게 중요할 것이다.

728x90

'보안 > 개념' 카테고리의 다른 글

랜섬웨어 총정리  (2) 2024.01.01
IDEA 암호화 총정리  (0) 2023.12.31
3DES 암호화 총정리  (1) 2023.12.29
데이터베이스 총정리  (2) 2023.12.29
FIDO2 총정리  (0) 2023.12.29