본문 바로가기
CS

암호화 알고리즘 : 대칭키 암호화 알고리즘

by CAP.HEK 2024. 8. 6.

암호화 알고리즘에는 크게 대칭키 알고리즘과 비대칭키 2가지로 나눌 수 있습니다.

 

이는 암호화 키 값과 복호화의 키 값이 같은지 다른지로 구분합니다. 

암호화 할 때 사용한 키로 복호화를 하는 암호화 기법은 대칭키.(같은 키를 사용함)

다르다면 비 대칭키 암호화입니다.(다르기 때문에 비대칭.)

 

주로 대칭키 암호화 기법은 비공개키 암호,

비대칭키 암호화 기법은 공개키 암호기법에 사용합니다.

 

대칭키 암호화 기법의 종류

DES(Data Encryption Standard)

1975년 IBM에서 개발, 1979년 미국 National Bureau of Standards (현 NIST)가 

국가 표준 알고리즘으로 지정한 대칭키 암호 알고리즘 입니다.

블록 암호 기법을 사용하며 64 비트 평문을 64 비트 단위로 암호화 합니다.

실제로는 패리티 비트가 8 비트 붙어있어 실제 키 길이는 56비트입니다.(키 길이는 암호화 강도와 직결됩니다.)

현대에는 Brutal Force Attack(무차별 공격) 방식에 취약해 1일, 수 시간 내에 뚫을 수 있기 때문에

사용하지 않는 것을 권장하고있습니다. 3번 적용해 키 길이를 3배 늘려 보안을 개선한 3-DES 도 있습니다. 

이후 NIST는 2001년 새 표준 알고리즘으로 AES를 지정했습니다. 

 

AES(Advanced Encryption Standard)

NIST가 Rijdael(레인달 : 빈센트 레이먼, 조앤 대먼) 알고리즘을 채택해 2001년 새로 지정한 표준 대칭키 암호화 방식입니다. NSA에 의해 1급 비밀에 사용할 수 있도록 승인된 암호화 알고리즘입니다. 높은 안정성과 속도로 인기를 얻어 전 세계적으로 많이 사용되고 있습니다.

암호화 블럭의 크기는 128비트, 키의 길이는 다음의 128, 192, 256비트 3가지 종류가 있습니다.

AES-128 : 10 라운드 실행

AES-192 : 12 라운드 실행

AES-256 : 14 라운드 실행

최근의 권장 암호화 수준은 192비트 이상이며 금융기관, 웹사이트들은 256비트 이상의 암호화 체계로 전환했습니다.

Java 같은 JVM 언어도 AES 암호화 사용 가능합니다.

C/C++ 기본 라이브러리에 포함되어 있지 않지만 다른 서드파티 라이브러리를 통해 사용할 수 있습니다.

 

IDEA : DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 알고리즘.

128bit의 키 사용, 64bit의 평문을 8라운드를 거쳐 64bit의 암호문을 만드는 방식의

암호화 알고리즘입니다.

 

SEED : 한국 인터넷진흥원(KISA) 1999년 개발한 대칭키 암호화 알고리즘

DES와 가까운 암호화 방법으로 파이스텔 네트워크(Feistel Network) 알고리즘을 사용합니다.

128비트의 키를 가지고 있으며 16라운드에 걸쳐 암호화를 진행합니다.

 

ARIA (Academy, Research Institute, Agency): KISA에서 2003년 개발한 대칭키 암호화 알고리즘

국정원과 함께 개발한 암호 알고리즘입니다. 평문 128비트를 암호화 하며  라운드 키는 Feistel 알고리즘을 바탕으로 키를 생성합니다.

128bit 12 라운드

192bit 14 라운드

256bit 16 라운드

 

LEA(Lightweight Encryption Algorithm) 2013년 국내 개발된 128비트 경량 암호 알고리즘입니다.

국가보안기술연구소에서 개발한 128비트 데이터 블록을 암호화 알고리즘입니다. ARX(Addition, Rotation, XOR)형태로 설계되어있습니다.

평문 128비트

LEA-128 128bit 24 라운드

LEA -128 192bit 28 라운드

LEA -128 256bit 32 라운드

AES보다 1.5~2배 가량 빠르며 기존 경량화 암호인 HIGHT보다 안전성이 높습니다.

KISA에서 오픈소스로 배포중입니다.

 

Camellia : 일본의 미쓰비시전기, NTT에서 개발한 알고리즘

128비트 블록. 128/192/256 비트 키를 사용합니다.

 

GOST : 소련/러시아의 KGB가 개발한 표준 암호

키 값이 256 비트로 값은 크지만 DES와 비슷한 수준으로 나중에 Kuznyechik가 새롭게 만들어집니다.

 

공부하며 필요한 부분을 기록하는 블로그입니다.
틀린 부분, 보완이 필요한 부분이 있다면 알려주시면 감사하겠습니다!