서론
이번글에서는 AES란 암호화에 대해 정리해볼려 한다. 우선 프로그래밍에 앞서 사용자의 개인 정보에 대해서 암호화는 필수라고 생각한다. 필자는 이번에 대표적인 AES의 암 복호화에 대한 개념들을 정리해보려한다.
암호화란 ?
요즘의 우리는 컴퓨터, 휴대폰 등 전자 기기에 은행(금융) 정보나 본인의 민감 정보들을 넣어놓고 지낸다. 이러한 정보들을 외부에서 함부로 들춰보거나 해킹을 하면 안되기 때문에 우리 개발자들은 해당 정보들을 암호화를 하기 시작했다.
이러한 정보들을 암호화 처리할 경우 해당 정보를 읽을 수 없는 형식으로 변환을 하게 되는데, 우리는 이를 암호문이라 부르며 해당 정보에 접근하기 위해서는 암호화 키가 필요하다. 이 암호화 키를 이용하여 암호화 한것을 복호화하고 해당 정보들을 해당 키를 이용하여 암호화 할 수 있는것이다.
현재 이용 가능한 최고 수준의 암호 방식은 256bit와 128bit이다. 여기서 이 bit가 크면 클 수록 암호화 키의 크기가 커진다는 것을 의미하며 은행같은 곳에선 당연 높은 bit를 이용하여 사용한다고 한다.
암호화 구조
위의 이미지는 따로 공부하다가 정리한 부분인데 암호화 구조 이해에 더 도움이 될까 생각하여 악필이라 쑥쓰럽지만 올려본다.
(위의 이미지에서 개인키가 아래의 대칭키, 공개키가 비대칭키를 뜻한다.)
암호 알고리즘의 유형 (대칭 & 비대칭)
- 대칭키
대칭키 암호화 혹은 비밀 키라고도 불리는 이 키는 정보의 암호화와 복호화 처리에 동일한 키를 사용한다.
이 대칭 키는 개발자 입장에서 송신자와 수신자끼리 공유되는 키이며, 이 키가 외부에서 알게 된다면 해당 암호 방식은 안전하다고 할 수 없는 상태가 된다. 그러므로 대칭키 방식을 이용할 경우엔 해당 키를 내부에서 잘 관리해야한다.
특징
- 속도는 비트 단위 암호화로 상대적으로 빠른 속도를 제공한다.
- 용도로는 보통 개인 파일 암호화, 특정 불특정 그룹내의 통신에서 사용한다.
- 장점으론 구현이 용이하고 변형이 가능하다.
- 단점으론 상대적으로 쉽게 해독이 가능한 대신 키관리가 어렵다.
종류
- SEED, DES, 3DES, AES, ARIA, ChaCha20
- 비대칭 키 (공개 키)
비대칭 키의 암호 방식은 데이터의 암호화와 복호화에 서로 다른 키를 사용하는 경우이다.
소유자만 알고있는 개인 키와 공공 키를 사용하며 공공 키로 암호화 처리된 정보는 이에 상응하는 키로만 해독할 수 있다.
특징
- 속도는 큰 소수를 찾거나 곡률 방정식 등의 연산으로 속도가 느리다.
- 용도로는 보통 다수의 정보교환(Key)에서 주로 사용된다.
- 장점으론 암호 해독이 어렵다.
- 단점으론 해독시간이 상대적으로 오래 걸린다.
종류
- RSA, DSA, ECC, Diffie Hellman
고급 암호 표준 - AES (Advanced Encryption Standard) 란?
라인달(Rijndael)이라고 불렸던 AES는 고급 암호 표준을 의미하며, 이는 중요 자료를 암호화 처리하는데 가장 흔하게 처리 하는 방법 중 하나이다. 대표적인 사용 기업으로는 애플, 마이크로소프트 등 미 국가안보국에서도 사용중이라고 한다. AES는 대칭 암호 방식이며, 즉 암호화와 해독 과정에서 같은 키를 사용한다. 이 때 대칭키의 특성을 보면 알 수 있듯 발송인과 수령인은 자신들이 동일한 키를 사용함에 이미 숙지하고 있어야한다.
AES의 종류
종류로는 AES-128, AES-192, AES-256 세가지가 있다.
각 128, 192, 256bit의 암호 키로 사용하여 암호 처리 및 해독을 하며 그 중 당연 256bit가 가장 안전한 방법이다. 암호화 처리의 횟수는 각 128bit는 10번, 192bit는 12번, 256bit는 14번의 암호화 처리를 거치게 된다.
SHA - 256 이란 ?
SHA -256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로써 256비트로 구성되며 64자리 문자열을 반환한다. SHA -256은 단방향 암호화 방식이기 때문에 복호화가 불가능 하다는 것이 큰 특징이며, 복호화를 하지 않아도 되기 때문에 속도가 빠른 장점이 있다.
그러하여 해당 암호화는 사용자만 알고 있어야 하는 정보들을 관리하는 기능에서 사용되며 흔히 쓰는 부분들로는 사용자 패스워드나 인터넷뱅킹에서 사용한다 한다.
추가로 위의 대칭키 - 비대칭키는 양방향 방식에 속하고 SHA-256같은 경우는 단방향 암호화 방식에 속한다.
마치며..
이렇게 암호화 종류로 AES, SHA 암호화에 대해 알아보았고 이제 실제 해당 암호화를 프로그래밍으로 구현한 부분들을 정리하여 올려볼 생각이다.
'Computer Science > etc' 카테고리의 다른 글
Producer-Consumer Pattern이란? (개념 /예제) (0) | 2022.07.29 |
---|---|
윈도우 후킹(Window Hooking)이란? ( Win32 API / API 정의) (0) | 2021.12.26 |
JIT와 AOT 컴파일러는 무엇일까? (JIT, AOT 방식 / 특징 / 사용언어) (0) | 2021.12.21 |
PS(Problem Solving) 에러와 디버깅에 관련하여.. (0) | 2021.09.29 |
댓글