In 앱실링 블로그

AES알고리즘이란

기술의 발전에 따라 모든 정보가 데이터화 되고 있으며 이에 대한 의존도가 점점 커지고 있습니다. 해커들은 이러한 데이터를 표적 삼아 공격을 지속적으로 가하고 있으며, 최근 생성형 AI를 활용한 해킹 공격도 등장하며 사이버 보안에 빨간불이 들어왔습니다. 지난 2년 간 데이터 유출로 인해 약 26억 건의 개인 정보 유출이 발생했으며, 피해액이 지난 3년간 19% 증가하며 평균 45억 3,600만원의 피해를 봤다고 합니다. 데이터 유출 피해를 최소화하기 위해 기업은 데이터 암호화를 통해 보안 환경을 구현해야 합니다. 이번 포스팅에서는 데이터를 안전하게 지킬 수 있는 AES 알고리즘 정의 및 작동 방식에 대해 설명해 드립니다. 

 

AES(Advanced Encryption Standard, 고급 암호화 표준) 알고리즘

고급 암호화 표준(이하 AES 알고리즘) 알고리즘은 블록 암호를 사용하여 암호화 및 복호화 진행하는 대표적인 암호화 알고리즘입니다. 기존 DES(Data Encryption Standard, 데이터 암호화 표준) 암호화 강도가 약해지면서 새롭게 개발된 차세대 표준 알고리즘으로 채택됐습니다. 높은 안전성과 효율성, 유연성, 알고리즘 단순성 등을 자랑하며, 미국 국가안보국에서는 1급 비밀에 이용하는 등 전 세계적으로 사용되고 있습니다.   

 

AES 알고리즘은 소프트웨어와 하드웨어  모두에 구현할 수 있으며 128비트의 고정적인 블록 크기를 사용합니다. 이 알고리즘은 데이터를 128비트 블록으로 나눈 다음, 대체, 배치, 그리고 XOR(배타적 논리합)과 같은 수학적 연산들을 이용하여 각 블록을 암호 블록으로 변환하는 방식으로 작동합니다. 

AES algorithm design

 

출처: Techtarget

 

AES 알고리즘 장점

1. 무차별 암호 대입 공격으로부터 강력

올바른 키를 찾을 때까지 가능한 모든 키 조합을 시도하는 무차별 암호 대입 공격에 효율적으로 대응할 수 있습니다. 키 크기가 128비트인 경우, 가능한 키의 수는 2128 또는 3.4 x 1038개이므로 무차별 암호 대입으로 암호화를 해독하는 것은 사실상 불가능합니다.

 

2. 효율성

AES 알고리즘은 적은 처리 능력으로도 빠르게 데이터를 암호화하고 복호화할 수 있습니다. 그렇기에 온라인 거래 및 보안 통신과 같이 실시간 암호화 및 복호화가 필요한 애플리케이션에 적합합니다.

AES 라운드 작동 방식

출처: Geeksforgeeks

AES 알고리즘은 대부분의 최신 운영 체제 및 플랫폼에서 지원하고 있어 온라인 뱅킹, 전자상거래, 메신저 등 다양한 애플리케이션에서 기밀 데이터를 보호하는 데 널리 사용됩니다.

 

결론적으로, AES 알고리즘은 안전하고 효율적이며 신뢰성이 높아 민감한 정보를 보호하는데  매우 효과적입니다. 무차별 암호 대입 공격에 대한 저항력이 강점이며, 효율성이 뛰어나 실시간 암호화 및 복호화가 필요한 애플리케이션에 사용하기에 적합합니다.

 

AES 알고리즘 작동 방식

앞서 설명했듯이 AES 알고리즘은 128비트의 고정 블록 크기를 사용하며 128, 192, 256비트의 키 크기를 지원합니다. 키 크기에 따라 암호화 강도가 결정되며, 키 크기가 클수록 보안이 강화됩니다. AES 알고리즘은 암호화할 데이터를 128비트 블록으로 나눈 다음 일련의 수학적 연산을 사용하여 각 블록을 암호 블록으로 변환하는 방식으로 작동합니다.

 

AES 알고리즘은 다음의 네 가지 주요 작업으로 구성됩니다:

  1. SubBytes
  2. ShiftRows
  3. MixColumns
  4. AddRoundKey

 

이 작업은 키 크기에 따라 여러 번 반복되어 여러 라운드의 암호화를 생성합니다. 라운드 수는 128비트 키는 10라운드, 192비트 키는 12라운드, 256비트 키는 14라운드로 키 크기에 따라 달라집니다.

Bytes are inbut in to 16bytes of 4x4

 

1. SubBytes

이 연산에서는 입력 블록의 각 바이트가 S-박스라고 하는 고정 치환 테이블에서 해당 바이트에 해당하는 바이트로 대체됩니다.

S-Box에서 바이트 치환하는 방식

S-박스에는 가능한 모든 8비트 값의 무작위로 생성된 순열이 포함되어 있어 암호화된 데이터에서 원본 데이터를 파악하기 어렵습니다.

 

2. ShiftRows

이 연산에서는 입력 블록의 각 행에 있는 바이트가 왼쪽으로 특정 위치만큼 이동합니다. 첫 번째 행은 이동되지 않습니다. 두 번째 행은 한 위치 왼쪽으로 이동하고, 세 번째 행은 두 위치 왼쪽으로 이동하며, 네 번째 행은 세 위치 왼쪽으로 이동합니다.

2nd step of AES algorithm is shifting the rows of the bytes

이 작업을 통해 데이터가 블록 전체에 분산되고 인접한 바이트 간의 상관관계가 감소하여 암호화된 데이터에서 원본 데이터를 식별하기가 더 어려워집니다.

 

3. MixColumns

이 연산에서는 입력 블록의 각 열에 고정 행렬을 곱하여 새 열을 생성합니다.

3단계는 바이트 열에 고정 행렬을 복산 하여 결과값을 산출하는 과정입니다.

이 작업을 수행하면 출력 블록의 각 바이트가 입력 블록의 여러 바이트의 영향을 받게 되므로 암호화된 데이터에서 원본 데이터를 식별하는 것을 이전 단계보다 더 복잡하고 어렵게 변환합니다.

 

4. AddRoundKey

이 연산에서는 입력 블록의 각 바이트가 원래 키에서 생성된 키 스케줄의 해당 바이트와 XOR(배타적 논리합) 처리됩니다.

4단계는 생성된 라운드키와 배타적 논리합 처리되어 변환됩니다.

이 연산은 각 출력 블록 바이트가 키의 해당 바이트에 따라 달라지도록 하여 올바른 키가 없으면 데이터를 복호화할 수 없도록 합니다. 

 

첫 번째 암호화 라운드 이후에는 키 크기에 따라 이 네 가지 작업을 여러 번 반복하여 여러 라운드의 암호화를 생성합니다. 각 라운드는 원래 키에서 생성된 키 스케줄과 다른 키를 사용합니다. 마지막 라운드에는 MixColumns 연산이 포함되지 않아 해독을 간단화 합니다.

 

AES 알고리즘을 사용하는 앱

AES 알고리즘은 민감한 데이터를 무단 액세스로부터 보호해야 하는 많은 애플리케이션에서 사용할 수 있습니다. 여기에는 보안 통신, 데이터 스토리지, 클라우드 컴퓨팅, 전자상거래, VPN, 모바일 애플리케이션이 포함됩니다.

AES 알고리즘은 파일 보안과 통신 보안등 다양하게 활용됩니다.

다음은 AES 알고리즘을 활용할 수 있는 몇 가지 예시입니다:

 

커뮤니케이션 앱

AES 알고리즘은 이메일, 채팅 애플리케이션, 인스턴트 메시징 등 두 당사자 간의 통신을 보호할 수 있습니다. 두 당사자 간에 교환되는 데이터를 권한이 없는 사람이 도청하거나 가로채지 못하도록 보호합니다. 또한, 앱 간 전송되는 데이터의 기밀성, 무결성 및 인증을 제공합니다. AES 알고리즘은 앱 사이에 안전한 통신을 보장하기 위해 다음과 같은 방법을 활용합니다.

커뮤니케이션 앱에서 활용
기밀성 두 앱 간에 전송되는 데이터를 암호화하여 기밀성을 유지합니다. 즉, 공격자가 데이터를 가로채더라도 암호화 키 없이는 데이터를 읽을 수 없습니다. 따라서 비밀번호, 금융 데이터 또는 개인 식별 정보와 같은 민감한 정보를 안전하게 보호할 수 있습니다.
무결성 메시지 인증 코드(Message Authentication Code, MAC)를 사용하여 두 앱 간에 전송된 데이터가 변조되지 않았는지 확인함으로써 무결성을 보장합니다. MAC은 비밀 키와 해시 함수를 사용하여 계산되며 암호화된 데이터에 추가됩니다. 이렇게 하면 공격자가 데이터를 수정하려고 해도 MAC이 일치하지 않으며, 수신 앱은 데이터가 변조되었음을 알 수 있습니다.
인증 디지털 서명을 사용하여 데이터 발신자와 수신자의 신원을 확인함으로써 인증 작업을 진행합니다. 디지털 서명은 개인 키와 해시 함수를 사용하여 생성되며 해당 공개 키를 사용하여 확인할 수 있습니다. 이를 통해 수신 앱은 데이터가 신뢰할 수 있는 출처에서 왔으며 전송 중에 변조되지 않았다는 신뢰성을 부여합니다.
키 교환 안전한 통신을 위해 앱은 데이터를 암호화하고 해독하는 데 사용되는 공유 암호화 키를 설정해야 합니다. AES 알고리즘 키를 교환할 때 암호화되지 않은 통신망을 통해 공통의 비밀 키를 공유하게 하는 Diffie-Hellmam 키 교환 알고리즘과 같은 비대칭 암호화를 사용해 안전한 키 교환을 실행할 수 있습니다. 이 알고리즘을 사용하면 두 당사자가 안전하지 않은 통신 채널에서도 공격자에게 키를 공개하지 않고 공유 비밀 키를 생성할 수 있습니다.
데이터 저장 AES 알고리즘은 디바이스나 서버에 저장된 데이터를 보호하는 데 사용할 수 있습니다. 여기에는 비밀번호, 금융 기록, 개인 식별 정보 또는 무단 액세스로부터 보호해야 하는 기타 민감한 데이터가 포함될 수 있습니다.

클라우드 컴퓨팅

클라우드 제공업체는 전송 중인 데이터와 미사용 데이터에 대해 AES 알고리즘을 제공합니다. 예를 들어, Amazon Web Services(AWS)는 Simple Storage Service(S3) 및 Elastic Block Store(EBS) 스토리지 서비스에 대해 AES-256 암호화를 제공합니다.

 

전자상거래

일반적으로 이커머스 사이트나 앱에서는 결제를 위한 카드 정보 등 유저의 민감한 개인 정보를 사용합니다. AES 알고리즘은 이러한 민감한 정보를 사용 또는 저장할 때 암호화 및 안전한 키 관리를 통해 유출로부터 보호할 수 있게 합니다.  

 

AES 알고리즘은 이커머스 웹 사이트에서 데이터를 인터넷으로 전송하기 전에 암호화하여 온라인 거래 시 신용 카드 정보와 같은 민감한 정보를 보호할 수 있습니다. 이렇게 하면 공격자가 데이터를 가로채더라도 암호화 키 없이는 데이터를 읽을 수 없습니다. 다음은 전자상거래 웹 사이트가 온라인 거래 시 민감한 정보를 보호하는 데 AES 알고리즘을 활용할 수 있는 방법입니다.

전자상거래에서 활용
전송 계층 보안 (Transport Layer Security, TLS) AES 알고리즘은 사용자의 브라우저와 전자상거래 웹 사이트의 서버 간에 전송되는 데이터를 암호화하기 위해 TLS 프로토콜의 일부로 사용됩니다. TLS는 데이터를 암호화하기 위해 AES를 사용한 대칭 암호화를 사용하고, 암호화 키를 안전하게 교환하기 위해 공개 키 인프라(PKI)를 사용한 비대칭 암호화를 사용합니다. 이를 통해 인터넷을 통해 전송되는 데이터의 기밀성과 보안을 유지합니다.
결제 카드 산업 데이터 보안 표준 (PCI DSS) 준수 민감한 데이터 보호를 위한 PCI DSS 표준에서 AES 알고리즘을 권장합니다. 이 표준은 카드 소유자의 민감한 데이터를 전송 중일 때와 사용중이지 않을 때 모두 암호화하도록 요구합니다. 이커머스 웹 사이트는 AES 알고리즘을 사용하여 PCI DSS 표준을 준수하고 고객의 민감한 데이터를 보호할 수 있습니다.
민감한 데이터 암호화 이커머스 웹 사이트는 신용카드 정보와 같은 민감한 데이터를 데이터베이스에 저장하기 전에 AES알고리즘을 활용해 암호화할 수 있습니다. 이렇게 하면 공격자가 데이터베이스에 액세스하더라도 암호화 키 없이는 민감한 데이터를 읽을 수 없습니다. 암호화 키는 키 파생 알고리즘, 키 래핑 또는 하드웨어 보안 모듈(HSM)을 사용하여 안전하게 관리하여 무단 액세스를 방지할 수 있습니다.
2단계 인증 전자상거래 웹사이트는 2단계 인증과 함께 AES 알고리즘을 사용하여 온라인 거래에 추가적인 보안 계층을 제공할 수 있습니다. 2단계 인증은 거래 시 최종 결제가 진행되기 전 사용자의 비밀번호와 휴대전화와 이메일 등으로 전달되는 일회성 코드를 입력하여 본인이 진행하고 있음을 인증하는 것입니다. 전자상거래 웹사이트는 AES 알고리즘을 사용하여 민감한 데이터를 암호화하고 2단계 인증을 통해 사용자의 신원을 확인해 안전한 온라인 거래 환경을 조성할 수 있습니다.

가상 사설망(VPN) 

VPN은 AES 알고리즘 및 기타 보안 조치를 사용하여 민감한 기업 데이터를 보호하고 데이터 침해 또는 유출을 방지할 수 있습니다. 다음은 AES 알고리즘이 VPN이 원격 사용자와 기업 네트워크 간에 전송되는 데이터를 안전하게 보호하는 방법입니다:

가상 사설망에서 활용
터널링 VPN은 터널링이라는 프로세스를 사용하여 인터넷을 통해 전송되기 전에 데이터를 캡슐화 및 암호화합니다. 암호화된 데이터는 터널을 통해 전송하고 수신 VPN 게이트웨이에서 암호를 해독합니다. AES 알고리즘은 터널을 통해 전송되는 데이터를 암호화하는 데 사용되며, 공격자가 데이터를 가로채더라도 데이터가 안전하게 유지됩니다.
보안 키 교환 VPN은 데이터를 암호화하는 데 사용되는 암호화 키의 보안을 유지하기 위해 Diffie-Hellman 또는 IKE(인터넷 키 교환)와 같은 보안 키 교환 프로토콜을 사용합니다. 이러한 프로토콜을 사용하면 VPN 터널의 두 엔드포인트는 잠재적 공격자에게 암호화 키를 노출하지 않고 안전하게 교환할 수 있습니다.
강력한 암호화 AES 알고리즘은 많은 보안 전문가들이 인터넷을 통해 전송되는 데이터 보안을 위해 권장하는 강력한 암호화 알고리즘입니다. VPN은 256비트 키 크기의 AES 알고리즘을 사용할 수 있으며, 이는 무차별 암호 대입 공격에 대해 높은 수준의 보안을 제공합니다.
멀티팩터 단계 인증 VPN은 멀티팩터 인증을 사용하여 회사 네트워크에 액세스하는 원격 사용자에게 추가적인 보안 계층을 제공할 수 있습니다. 멀티팩터 단계 인증은 사용자가 네트워크에 액세스하기 전에 비밀번호와 휴대폰으로 전송된 일회용 코드 등 두 가지 유형의 인증을 완료해야 합니다. VPN은 멀티팩터 인증과 AES 알고리즘을 함께 사용하여 기업 네트워크에 대한 원격 액세스를 안전하게 보호할 수 있습니다.

모바일 애플리케이션

AES 알고리즘은 모바일 애플리케이션이 데이터를 데이터베이스에 저장하기 전에 암호화하여 디바이스에 저장된 데이터를 보호하는 데 사용됩니다. 다음은 AES 알고리즘이 모바일 애플리케이션이 장치에 저장된 데이터를 보호하는 데 도움을 주는 몇 가지 방법입니다.

모바일 애플리케이션에서 활용
파일 수준 암호화 AES 알고리즘은 디바이스 저장소의 개별 파일 또는 디렉토리를 암호화하는 데 사용할 수 있습니다. 이를 통해 사용자 인증 정보, 금융 데이터, 개인 식별 정보와 같은 민감한 파일은 디바이스가 손상되더라도 암호화되어 안전하게 유지됩니다.
데이터베이스 암호화 AES 알고리즘은 애플리케이션에서 사용하는 전체 데이터베이스를 암호화하는 데에도 사용할 수 있습니다. 이렇게 하면 사용자 프로필, 채팅 기록, 거래 기록 등 데이터베이스에 저장된 모든 데이터가 암호화되어 안전하게 유지됩니다.
키 관리 AES 알고리즘은 모바일 애플리케이션이 키 파생 알고리즘, 키 래핑 또는 하드웨어 보안 모듈(HSM)을 사용하여 암호화 키를 보호하는 데 도움이 됩니다. 디바이스가 손상되더라도 암호화 키가 안전하게 유지됩니다.
인증 및 액세스 제어 권한이 부여된 사용자만 디바이스에 저장된 데이터에 액세스할 수 있도록 모바일 애플리케이션은 인증 및 액세스 제어 메커니즘을 구현해야 합니다. AES 알고리즘은 사용자의 자격 증명을 암호화하고 이를 사용하여 암호화 키를 도출함으로써 모바일 애플리케이션이 안전한 인증 및 액세스 제어를 구현하는 데 도움이 될 수 있습니다. 올바른 자격 증명을 가진 인증된 사용자만 암호화된 데이터에 액세스할 수 있습니다.

AES 알고리즘의 안전성

애플리케이션 보안의 관점에서 볼 때, AES 알고리즘은 매우 안전하다고 평가되고 있습니다. 다양한 암호화 커뮤니티에서 광범위하게 테스트 및 평가되어 안전성이 입증이 되었으며, 민감한 정보를 보호하기 위해 많은 애플리케이션에 적용돼 사용하고 있습니다.

AES 알고리즘이 안전한 것으로 평가되는 주된 이유 중 하나는 키 크기입니다. AES가 지원하는 128, 192, 256비트의 키 크기는 각각 2^128, 2^192, 2^256개의 가능한 키가 있다는 것을 의미합니다. 따라서 올바른 키를 찾을 때까지 가능한 모든 키를 시도하는 무차별 암호 대입 공격으로 암호화를 해독하는 것은 사실상 불가능합니다. 아무리 성능이 좋고 빠른 컴퓨터를 사용하더라도 가능한 모든 키를 시도하는 데는 비현실적으로 오랜 시간이 걸립니다.

AES알고리즘의 취약점

취약한 키 보관 또는 IV를 사용한다는 점이 약점입니다. 취약한 키 보관은 암호화를 공격에 무력하게 될 수 있습니다. 또한 약한 IV는 공격자가 악용할 수 있는 예측 가능한 암호 텍스트로 이어질 수 있습니다. 그러므로 개발자는 강력한 무작위 키와 IV를 사용하고 다른 세션이나 애플리케이션에서 재사용하지 않도록 해야 합니다.

또 다른 잠재적인 취약점은 사이드 채널 공격입니다. 이러한 공격은 전력 소비, 전자기 방사 또는 타이밍 정보와 같은 암호화 프로세스의 물리적 구현의 약점을 악용하여 키 또는 텍스트를 복구합니다. 개발자는 하드웨어 보안 모듈(HSM) 또는 정시 알고리즘이나 무작위 지연과 같은 소프트웨어 기반 대응책을 활용해 사이드 채널 공격의 위험을 완화할 수 있습니다.

AES 기술 기반의 앱 보안 솔루션으로 안전하게 데이터 보호하기

앱에는 다양한 개인 정보가 포함돼 있습니다. 유저들에게 신뢰를 얻기 위해서는 소중한 개인 정보가 유출되지 않도록 예방 및 조치를 상시적으로 취해야 하며, AES 알고리즘 기반의 앱 보안 솔루션을 통해 효율적으로 대응할 수 있습니다.

앱실링(AppSealing)이 제공하는 데이터 암호화 기능은 회사가 허용하지 않은 접근이나 수정으로부터 인증 토큰, 고유 식별자, 비밀번호 등 민감한 데이터를 보호합니다. 주요 기능은 다음과 같습니다.
AES-256기반 데이터 암호화
Whitebox AES 128 및 FIPS 140-2 암호화
RASP(런타임 애플리케이션 자체 보호) 보안
끝까지 지원되는 시스템

앱실링을 통해 데이터를 안전하게 보호된 상태로 유지할 수 있으며, 접근 권한이 있는 사람만이 인증 토큰, 고유 식별자, 비밀번호 등에 접근해 수정할 수 있도록 보장합니다. 앱실링을 통해 안전한 데이터 보안 환경을 만들어 보세요!


appsealing contact

지스타 앱실링 현장 스케치owasp top 10 mobile risks