암호화 방식에는 크게 두 가지가 있다.
1. 대칭키 암호화
대칭키는 암호화 및 복호화에 사용하는 키가 동일한 방식이다.
암복호화에 참여하는 쪽에서 해당 키를 통해 데이터에 접근할 수 있게 되며 대표적인 알고리즘으로는 AES, DES, SEED 등이 있다.
대칭키 방식은 비대칭키 방식보다 속도가 빠르다는 장점이 있다. 하지만 키가 하나이기 때문에 키를 교환해야 하는 문제가 발생할 수 있다. 이것은 키를 탈취 당하는 문제가 발생할 수 있고 해당 데이터를 복호화하여 사용하는 사람이 많을수록 키 교환을 따로 해줘야 하기 때문에 관리해야 할 키가 방대해 질 수 있다.
2. 비대칭키 암호화
비대칭키는 암호화하는 키와 복호화하는 키가 서로 다른 방식이다.
일반적으로, 암호화를 위한 키는 공개키, 복호화를 위한 키는 개인키라고 부른다. 공개키는 누구에게나 공개되어 데이터를 전송하기 전 암호화를 가능케 하고 개인키는 특정 데이터를 받는 쪽에서만 가지고 있으며 개인키를 통해 전송받은 데이터를 복호화한다.
비대칭키는 키를 교환할 필요가 없기 때문에 키 탈취 문제가 발생하지 않으며 개인키로만 복호화가 가능하여 기밀성을 제공한다. 하지만 대칭키의 장점인 속도의 측면에서는 효율적이지 못할 수는 있다.
3. AES 알고리즘
AES(Advanced Encryption Standard) 는 고급 암호화 표준의 의미이다. 대칭키 알고리즘을 사용하며
AES-128, AES-192, AES-256 으로 3종류의 알고리즘을 가지고 있다. 숫자의 의미는 암호화 및 복호화에 사용되는 키의 길이를 의미한다.
AES는 안정성과 속도가 뛰어나기 때문에 대중적으로 사용되고 있다.
1) Block Cipher
AES는 128비트의 고정된 블록 단위로 암호화를 진행하게 된다.
주어진 암호화 대상을 128 비트씩 나눠 블록 단위로 암호화를 진행하는데 이것을 Block Cipher라고 부른다.
또 Block Cipher에는 CBC와 ECB로 두 가지 종류로 나뉘게 되는데 보통 CBC 방식이 권장되고 있다.
CBC는 이전 블록에 의존하도록 만드는 방식이며, 여기서 IV라는 개념이 사용된다.
CBC는 앞서 말한 것처럼 이전 블록에 의존하도록 하는 방식인데 첫 번째 블록에서는 이전 블록이 존재하지 않는다.
이때, IV가 사용되게 된다. 생성된 128 비트 IV값을 가지고 첫 번째 블록을 암호화한다.
2) Padding
AES는 128비트의 블록 단위로 암호화를 진행한다. 그렇기 때문에 데이터의 길이는 한 블록의 크기인 128비트의 배수인 것이 가장 좋을 것이다.
하지만 모든 경우에서 128비트의 길이를 가지게 할 수는 없을 것이다. 따라서, 데이터의 길이가 128비트의 배수가 아닌 경우 128비트를 맞추기 위해 마지막 블록에 값을 추가하게 되는데 이 과정을 Padding이라고 한다.
'Spring' 카테고리의 다른 글
[Spring] Scheduled 어노테이션 (0) | 2024.10.30 |
---|---|
[Spring] WAR과 JAR (2) | 2024.10.25 |
[Spring] Spring에서 redis 서버 사용 (3) | 2024.09.30 |
[Spring Boot] 외장 톰캣 웹 배포하기(apache-tomcat) (0) | 2024.09.25 |
[Spring] web.xml 한글 필터 (0) | 2024.05.20 |