HMAC와 RSA의 암호화 방식: 대칭키와 비대칭키 차이 이해
1. 대칭키와 비대칭키 개념
-
대칭키(Symmetric Key)
- 하나의 키로 데이터를 암호화(Encrypt)하고 복호화(Decrypt)합니다.
- 송신자와 수신자가 동일한 키를 공유해야 합니다.
- 장점: 연산 속도가 빠르고 구현이 간단합니다.
- 단점: 키를 안전하게 공유하기 어려움(키 배포 문제).
예시:
- 메시지를 암호화:
Encrypt(message, key)
- 메시지를 복호화:
Decrypt(encryptedMessage, key)
-
비대칭키(Asymmetric Key)
- 두 개의 키를 사용합니다:
- 공개키(Public Key): 데이터를 암호화할 때 사용.
- 개인키(Private Key): 데이터를 복호화할 때 사용.
- 공개키는 누구나 알 수 있지만, 개인키는 소유자만 알고 있어야 합니다.
- 장점: 키 배포 문제를 해결(공개키를 자유롭게 공유 가능).
- 단점: 연산 속도가 느림.
예시:
- 메시지를 암호화:
Encrypt(message, publicKey)
- 메시지를 복호화:
Decrypt(encryptedMessage, privateKey)
2. HMAC (대칭키 방식)
- HMAC(Hash-based Message Authentication Code)는 대칭키를 사용하는 데이터 무결성 확인 및 인증 방식입니다.
- 특정 키와 메시지를 조합하여 해시 값을 생성.
- 이 해시 값을 통해 데이터가 위변조되지 않았음을 확인.
- 특징:
- 키를 공유한 두 당사자만 해시 값을 생성하고 검증할 수 있음.
- 빠르고 간단하지만, 키를 안전하게 공유해야 함.
HMAC 동작 원리 예시:
1. 송신자:
- 메시지: "Hello"
- 키: "secret"
- HMAC:
HMAC("Hello", "secret") = hashValue
- 수신자:
- 동일한 키("secret")로 메시지 검증:
HMAC("Hello", "secret") == hashValue
3. RSA (비대칭키 방식)
- RSA는 비대칭키를 사용하는 암호화 알고리즘입니다.
- 데이터를 암호화할 때는 공개키를 사용.
- 데이터를 복호화할 때는 개인키를 사용.
- 반대로, 데이터에 개인키로 서명을 생성하고 공개키로 검증할 수도 있음(디지털 서명).
RSA 동작 원리 예시:
1. 송신자:
- 메시지: "Hello"
- 수신자의 공개키 사용:
Encrypt("Hello", publicKey) = encryptedMessage
- 수신자:
- 자신의 개인키 사용:
Decrypt(encryptedMessage, privateKey) = "Hello"
4. 대칭키와 비대칭키 비교
특성 | 대칭키 (HMAC) | 비대칭키 (RSA) |
---|
키의 개수 | 하나의 키 | 공개키 + 개인키 (두 개의 키) |
보안성 | 키가 유출되면 모든 정보가 위험 | 공개키를 사용하므로 키 유출 위험 낮음 |
속도 | 빠름 | 느림 |
사용 예 | HMAC, AES | RSA, SSL/TLS 인증 |
키 공유 문제 | 키를 안전하게 전달해야 함 | 공개키를 통해 문제 해결 |
추가 학습 자료