AES 암호화란 무엇이며 어떻게 작동하나요?
악의적인 해커들이 데이터를 훔치거나 파괴할 기회를 찾고 있는 세상에서, 암호화는 디지털 세계에서 필수적인 부분이 되었습니다. 암호화는 데이터를 스크램블링하여 비밀 키를 가진 인가된 사람만이 해독하고 읽을 수 있도록 보호하는 방법입니다. AES는 VPN 서비스 제공업체와 정부 기관이 데이터를 보호하기 위해 널리 사용하는 암호화 알고리즘입니다. 이 글은 AES 암호화와 그 작동 방식에 대해 다룹니다.
AES 암호화란 무엇인가?
암호화에는 대칭 암호화와 비대칭 암호화라는 두 가지 주요 유형이 있습니다. 비대칭 암호화는 데이터를 암호화하고 복호화하기 위해 두 개의 다른 키(개인 키와 공개 키)를 사용하는 반면, 대칭 암호화는 암호화와 복호화에 단일 키를 사용합니다. 고급 암호화 표준(AES)은 대칭 암호화 범주에 속합니다. 이는 1998년 Vincent Rijmen과 Joan Dae에 의해 개발된 대칭 블록 암호인 Rijndael 가족의 하위 집합이며, 이로 인해 “Rijndael”이라는 이름이 붙었습니다.
AES는 치환 순열 네트워크(SPN) 알고리즘을 기반으로 하는 반복 암호입니다. SPN 알고리즘은 반복되는 일련의 수학적 연산의 라운드를 포함하는 블록 암호의 한 클래스입니다. 이러한 암호화 라운드 때문에 AES는 강력한 암호화 암호입니다. AES에는 암호화 키의 길이에 따라 세 가지 다른 유형이 있습니다. 이들은 AES-128, AES-192, AES-256을 포함합니다.
이러한 유형의 AES 각각의 키 길이는 그들의 강도를 결정합니다; 길이가 길수록 암호화는 더 강해집니다. 128비트와 192비트 AES 암호화 알고리즘은 각각 3.4 x 10^38과 6.2 x 10^57의 가능한 키 조합을 가지고 있습니다. AES-256은 가장 강력한 암호화 알고리즘으로 1.1 x 10^77의 가능한 키 조합을 가지고 있습니다. 키 길이에 차이가 있음에도 불구하고, AES의 블록 크기는 항상 동일하게 유지됩니다–128비트.
AES가 개발된 이유는 무엇인가요?
이전의 암호화 암호는 더 단순했으며, 충분한 시간과 도구가 있다면 누구나 그것을 해독할 수 있었습니다. 기술이 계속 발전함에 따라, 해커들은 암호화 암호와 싸우기 위해 더 나은 도구를 사용할 수 있게 되었습니다. 당시 존재했던 데이터 암호화 표준(Data Encryption Standard, DES)보다 더 복잡한 암호화 암호가 필요하다는 것이 분명해졌습니다.
AES와 마찬가지로 DES도 대칭 키 알고리즘입니다. IBM이 1970년대에 DES를 개발했고, 미국 국립 표준국(NBS)은 민감한 정부 정보를 암호화하는 표준 암호로 이를 채택했습니다. NBS와 미국 정부가 DES를 채택함에 따라 다양한 분야에서 DES를 받아들였습니다. 이는 학계의 관심을 끌었고, 암호학 연구에 대한 관심을 촉발시켰습니다. 수십 년 동안 DES는 강력한 것으로 입증되었지만 1997년 6월에 DESCHALL 그룹이 공개적으로 해독에 성공했습니다.
전자 프런티어 재단(EFF)의 DES 크래커는 다음 해에 56시간 만에 같은 업적을 달성했습니다. 1999년에는 DES 키를 해독하는 데 24시간도 걸리지 않았습니다. 이러한 중요한 사건들은 컴퓨팅 파워와 기술의 발전이 계속됨에 따라 DES를 쉽게 해독하는 것은 시간 문제일 뿐이라는 것을 보여주었습니다. 게다가, DES 키 길이는 전능한 256비트 AES에 비해 56비트를 넘지 않았습니다.
2001년, 국립표준기술연구소(NIST)는 AES 암호화 알고리즘을 그것의 전반적인 능력 때문에 채택했다고 발표했습니다. AES는 성능면에서 DES보다 우수하며, 구현하기 쉽고, 깨기 매우 어렵습니다.
AES 암호화가 어떻게 데이터를 보호하는가
AES 암호화 알고리즘을 이해하는 것은 적절한 수학 배경이 없다면 어려울 수 있습니다. 하지만, 우리는 그 과정을 단순화하여 여러분이 기본적으로 어떻게 작동하는지 이해할 수 있도록 노력할 것입니다. AES 암호화 알고리즘은 128비트 블록 단위로 데이터를 암호화하고 복호화합니다. 키 길이에 변화가 있더라도 블록 크기는 변하지 않습니다.
AES 암호화 알고리즘은 비밀 키(128, 192, 또는 256비트 키)와 평문(암호화하고 싶은 민감한 데이터)을 결합하여 암호문을 생성합니다. AES 암호문은 비밀 키와 평문을 사용하여 일련의 수학적 변환(치환-치환)을 수행합니다. 어떠한 작업이 발생하기 전에, 평문 데이터는 16바이트 또는 128비트(1바이트는 8비트와 같음)의 4 x 4 행렬로 분리됩니다. AES는 비트 블록 단위로 데이터를 암호화합니다.
AES 알고리즘은 여러 라운드의 치환-순열을 사용하여 평문 데이터를 최종 암호문으로 변환합니다. 키 크기가 라운드 수를 결정합니다. 128비트 키 크기는 10라운드, 192비트 키 크기는 12라운드, 256비트 키 크기는 14라운드입니다. 이제 평문 데이터를 암호문으로 변환하는 과정에 관련된 작업을 살펴보겠습니다.
1. 키 확장 및 라운드 키 추가
이 작업에서 AES는 Rijndael 키 일정을 사용하여 기본 비밀 키에서 새로운 128비트 라운드 키(서브키)를 생성합니다. 즉, 초기 비밀 키를 사용하여 암호화 작업의 각 라운드에 대한 일련의 키를 생성하는 것을 포함합니다. AddRoundKey 작업에서, 현재 데이터 상태의 각 바이트는 비트 단위 XOR 연산을 사용하여 현재 라운드 키의 바이트와 혼합됩니다.
2. SubBytes (바이트 치환)
이 작업에서 16바이트 블록은 Rijndael 치환 상자(S-Box)를 통해 실행되어 각 바이트에 대한 대체 값을 제공합니다. 각 바이트는 사전 정의된 Rijndael S-Box에 의해 규정된 규칙에 따라 대체됩니다. S-Box는 값을 취하고 다른 값으로 대체합니다. 이 과정은 훨씬 더 복잡하지만, 세계의 컴퓨팅 자원으로는 AES 암호를 깨는 것을 거의 불가능하게 만듭니다.
3. ShiftRows
ShiftRows 연산은 첫 번째 행을 제외한 16바이트 블록의 모든 행을 이동시킵니다. SubBytes 연산에 비해 이해하기 쉽습니다. 첫 번째 행은 변경되지 않고 그대로 유지됩니다. 두 번째 행은 왼쪽으로 한 바이트 이동하고, 세 번째 행은 왼쪽으로 두 바이트 이동하며, 네 번째 행은 왼쪽으로 세 바이트 이동합니다.
4. MixColumns
이 작업은 16바이트 블록의 각 열을 선형적으로 변환합니다. 이 작업이 얼마나 복잡할 수 있는지를 고려하여, 우리는 이에 대해 너무 깊이 다루지 않을 것입니다. 행렬 곱셈과 비트 단위 XOR 덧셈을 사용하여, 이 작업은 각 열을 사전 정의된 4 x 4 행렬과 곱하여 새로운 열과 블록을 생성합니다.
연산 순서
AES가 암호화하는 모든 데이터는 위의 각 연산을 거쳐야 합니다. 이러한 연산은 필요한 라운드 수에 따라 여러 번 반복됩니다. 128비트 키는 10라운드가 필요하고, 192비트 키는 12라운드가 필요하며, 256비트 키는 14라운드가 필요합니다. 아래에서는 이러한 연산이 데이터를 암호화하기 위해 실행되는 순서를 살펴보겠습니다.
1. 키 확장
2. 라운드 추가
3. 다음 작업은 아래 순서대로 9, 11, 또는 13 라운드 동안 진행될 것입니다:
SubBytes
ShiftRows
MixColumns
AddRound
4. 다음 작업은 마지막 라운드(비밀 키의 길이에 따라 10번째, 12번째 또는 14번째)에서 진행됩니다:
SubBytes
ShiftRows
AddRound
AES 암호화 해독하기
우리는 AES가 데이터를 어떻게 암호화하는지 보았지만, 데이터를 어떻게 복호화하는지는 어떨까요? 복호화 과정은 간단합니다. 암호화 과정에 관련된 모든 단계를 역순으로 진행하면 데이터를 복호화할 수 있습니다. 데이터를 복호화하는 과정이 어떻게 될지 살펴봅시다.
1. 다음 작업은 비밀 키의 길이에 따라 마지막 라운드인 10번째, 12번째 또는 14번째에서 수행됩니다):
역 AddRound
역 ShiftRows
역 SubBytes
2. 다음 작업은 아래 순서대로 9, 11, 또는 13 라운드 동안 진행될 것입니다:
역 AddRound
역 MixColumns
역 ShiftRows
역 SubBytes
역 AddRound
AES 암호화에 보안 문제가 있나요?
AES 암호화에 대한 성공적인 공격이 기록된 바는 없지만, 잘못 구현하면 해커들이 취약점을 발견하고 이를 악용할 수 있습니다. 암호학자들이 항상 AES의 취약점을 찾고 있기 때문에, 몇 가지 성공적인 이론적 및 사이드 채널 공격이 있었습니다. 몇 가지를 살펴보겠습니다.
1. 알려진 키 구별 공격
2009년에 AES-128의 8라운드 버전을 알려진 키 구별 공격으로 해독하는 시도가 성공했습니다. AES-128은 암호화 라운드가 열 번이므로 여전히 뚫을 수 없습니다. 또한 공격자는 이 공격이 작동하기 전에 암호화 키를 알아야 하는데, 이는 매우 희박한 일입니다.
2. 사이드 채널 공격
사이드 채널 공격은 AES 암호화가 올바르게 구현되지 않은 경우에만 작동합니다. 이는 시스템이 정보를 유출하는 것에 의존하기 때문입니다. 공격자는 전자기 정보, 전력 소비, 타이밍 정보 등과 같은 데이터 유출에 주의를 기울여 알고리즘에서 정보를 수집합니다. AES는 이러한 유형의 공격에 완전히 면역되지 않습니다.
3. 기타 공격
암호학자들이 AES 암호화를 깨뜨리기 위해 시도한 다른 공격에는 키 복구 공격과 관련 키 공격이 포함됩니다. 두 경우 모두 공격자는 암호화 키를 목표로 합니다. 키 복구 공격에서는 공격자가 최소한 한 쌍의 암호화된 메시지와 해독된 메시지를 가지고 있어야 합니다. 관련 키 공격에서는 공격자가 두 개의 다른 키 사이의 관계를 알아야 합니다. 이러한 공격은 AES를 잘못 구현한 시스템에서만 작동하며 중요한 위협이 아닙니다.
결론
보안 기관과 최고의 VPN 서비스가 AES 암호화를 사용하는 주된 이유는 공격에 대한 면역성 때문입니다. 깨기가 거의 불가능할 뿐만 아니라, 고급 암호화 표준은 빠르고, 다재다능하며, 구현하기 쉽습니다. DES와 같은 다른 암호화 유형에 비해 메모리 사용량도 적습니다. 또한 다른 보안 프로토콜과 결합하여 높은 수준의 보안을 보장할 수 있습니다.