- 대칭키 암호화, 비대칭키 암호화, 단방향 암호화2024년 12월 03일 16시 57분 32초에 업로드 된 글입니다.작성자: Jeyeon
암호화 방식은 크게 대칭키 암호화, 비대칭키 암호화, 단방향 암호화로 구분할 수 있다. 각 암호화 방식은 서로 다른 특징이 있어 특정 용도에 따라 암호화 방식을 선택하게 된다.
대칭키 암호화란
대칭키 암호화는 암호화와 복호화에 동일한 키를 사용하는 암호화 방식이다. 이는 가장 기본적이고 단순한 형태의 암호화 방식으로, 하나의 비밀키로 데이터를 암호화하고 같은 키로 암호화된 데이터를 복호화한다.
대칭키 암호화의 주요 특징은 아래와 같다.
- 암호화와 복호화에 같은 키를 사용
- 빠른 암호화/복호화 속도
- 키의 길이가 상대적으로 짧음
- 안전한 키 교환 방식이 필요
이러한 대칭키 암호화 알고리즘은 다양한데 대표적으로 DES(Data Encryption Standard), AES(Advanced Encryption Standrard), SEED(한국형 블록 암호화 알고리즘)이 있다.
- AES는 DES의 보안 취약점을 보완하여 현재까지 가장 많이 사용되는 대칭키 암호화 알고리즘이다.
특징에서 알 수 있듯 구현이 쉽고 암/복호화 연산 속도가 빠르다는 장점이 있다. 하지만 같은 키를 사용하여 암/복호화하는 만큼 안전하게 키 교환하는 방식이 필요하다. 또한, 많은 사용자가 있는 경우 키 개수도 그만큼 증가하기에 키 관리가 복잡해진다는 문제가 있다.
비대칭키 암호화란
비대칭키 암호화는 데이터를 암호화할 때와 복호화할 때 서로 다른 키를 사용하는 암호화 방식이다. 공개키(Public Key)와 개인키(Private Key)라는 한 쌍의 키를 사용하며, 이 두 키는 수학적으로 연관되어 있다.
공개키는 모든 사람에게 공개되어 누구나 사용할 수 있지만, 개인키는 소유자만이 알고 있어야 한다. 한쪽 키로 암호화한 데이터는 반드시 다른 쪽 키로만 복호화할 수 있다는 특징이 있다.
비대칭키 암호화의 주요 특징은 아래와 같다.
- 암호화와 복호화에 서로 다른 키를 사용
- 키 교환이 필요 없음 (공개키는 공개되어 있음)
- 대칭키 방식보다 느린 암호화/복호화 속도
- 높은 보안성 제공
대표적인 비대칭키 암호화 알고리즘으로는 RSA(Rivest Shamir Adleman), DSA(Digital Signature Algorithm), ECC(Elliptic Curve Cryptography) 등이 있다.
비대칭키 암호화는 키 교환이 필요 없고 높은 보안성을 제공한다는 큰 장점이 있어 대칭키 암호화의 키 교환을 위해 사용하기도 한다. 또한 디지털 서명이 가능하여 부인 방지와 인증에 활용될 수 있다. 하지만 암호화/복호화 과정에서 복잡한 수학적 연산이 필요하여 속도가 느리고, 키의 길이가 대칭키 방식보다 길어 더 많은 시스템 자원을 필요로 한다는 단점이 있다.
단방향 암호화란
단방향 암호화는 해시(Hash) 함수라고도 불리며, 원본 데이터를 암호화된 데이터(해시값)로 변환할 수 있지만 암호화된 데이터로부터 원본 데이터를 복원할 수 없는 암호화 방식이다. 즉, 복호화가 불가능한 암호화 방식이다.
단방향 암호화의 주요 특징은 아래와 같다.
- 복호화가 불가능함 (원본 데이터 복원 불가)
- 동일한 입력값에 대해 항상 같은 해시값을 생성
- 입력값이 조금만 달라져도 완전히 다른 해시값이 생성됨
- 해시값으로부터 원본 데이터를 유추하기 어려움
대표적인 단방향 암호화 알고리즘으로는 MD5(Message-Digest algorithm 5), SHA(Secure Hash Algorithm) 시리즈, bcrypt, PBKDF2(Password-Based Key Derivation Function 2) 등이 있다.
MD5는 128비트 해시값을 생성하는 알고리즘이지만 현재는 보안 취약점이 발견되어 보안이 중요한 용도로는 사용하지 않는다. SHA 시리즈는 SHA-1, SHA-2, SHA-3 등이 있으며, 특히 SHA-256은 현재 가장 널리 사용되는 해시 알고리즘 중 하나이다.
bcrypt와 PBKDF2는 비밀번호 저장을 위해 특별히 설계된 알고리즘으로, 일부러 해시 생성 속도를 늦추고 솔트(salt)를 사용하여 레인보우 테이블 공격 등을 방지할 수 있도록 설계되었다.
이러한 특성 때문에 주로 사용자의 비밀번호를 저장하거나 데이터의 무결성을 검증하는 용도로 사용된다. 예를 들어, 웹 서비스에서는 사용자의 비밀번호를 평문으로 저장하지 않고 해시값으로 변환하여 저장한다. 로그인 시에는 사용자가 입력한 비밀번호를 동일한 해시 함수로 변환하여 저장된 해시값과 비교하는 방식으로 인증을 수행한다.
'Programming Note' 카테고리의 다른 글
Docker 원격 사용 및 Docker Engine API (0) 2024.12.19 변수의 Scope란 (0) 2024.12.18 프레임워크(Framework)와 라이브러리(Library)의 차이 (0) 2024.12.02 SSL/TLS란? (1) 2024.12.02 다음글이 없습니다.이전글이 없습니다.댓글