2024년 11월 18일 ・ 읽는 시간 11분
데이터 보안 관점에서 해싱과 암호화라는 용어가 자주 등장하는데요. 비슷한 것 같아도 엄연히 다릅니다. 해싱과 암호화는 언제 어떻게 사용해야 될까요? 이번 아티클에서는 해싱과 암호화의 기본 개념, 주요 차이점, 그리고 각각을 언제 사용해야 하는지 알아볼게요.
해싱은 데이터를 고정된 길이의 문자열, 즉 해시(또는 다이제스트)로 변환하는 일방향 함수예요. 이 과정은 역으로 되돌릴 수 없기 때문에, 해시값만으로는 원본 데이터를 복구할 수 없습니다. 해싱은 주로 데이터 무결성 확인, 즉 파일이 수정되었는지 확인하거나 비밀번호를 안전하게 저장하는 용도로 사용돼요. 토스페이먼츠는 웹훅 데이터의 무결성을 보장하기 위해 데이터의 해시값을 웹훅 헤더에 포함합니다.
좋은 해시 함수는 항상 동일한 입력값에 동일한 해시값을 출력합니다. 또, 두 가지 다른 입력값에 같은 해시 값이 출력되는 해시 충돌이 일어날 확률을 최소화합니다. SHA와 MD5는 자주 사용되는 해시 함수입니다.
- SHA (Secure Hash Algorithm): SHA-1 (구버전), SHA-256, SHA-3 등 다양한 길이의 해시를 제공하며, 보안용이나 블록체인에 주로 사용됩니다.
- MD5 (Message Digest Algorithm 5): 데이터 무결성 검사에 사용되지만, 보안이 중요한 용도로는 권장되지 않아요.
- 비밀번호 저장: 많은 서비스는 비밀번호를 해싱하여 저장합니다. 실제 사용자의 비밀번호를 저장하지 않기 때문에 해킹을 당해도 비밀번호가 노출되지 않습니다.
- 데이터 무결성 검사: 파일, 파일의 해시값을 함께 수신합니다. 수신한 파일을 직접 해싱해서 수신한 해시값과 비교하여 데이터 무결성을 검증할 수 있어요.
- 디지털 서명: 디지털 서명을 해시값으로 만들어서 데이터의 진위 여부를 확인할 수 있어요.
암호화는 데이터를 암호화된 형태로 바꿔주는 양방향 과정이에요. 암호화된 데이터는 비대칭 또는 대칭 키로 다시 복호화할 수 있어요. 해싱과 달리 암호화는 데이터를 안전하게 인코딩하고 필요할 때 기존 형태로 복구하기 위해 만들어졌습니다. 해싱과 달리 입력값에 따라 출력값의 길이도 달라질 수 있습니다.
암호화는 데이터를 보호하고, 허용된 수신자만 데이터를 읽을 수 있게 하는 용도로 사용돼요. 토스페이먼츠에서는 지급대행과 같이 강화된 보안 절차가 필요한 서비스에는 API 데이터 요청과 응답을 암호화합니다.
대칭 암호화는 암호화 및 복호화에 같은 키를 사용하는 방법입니다. 대칭 암호화에는 대표적으로 AES, DSE 방법이 있어요. 비대칭 암호화는 공개키와 개인키를 한 쌍으로 사용하여 데이터를 암호화 및 복호화합니다. 공개키로 암호화된 데이터는 개인키로만 복화화가 가능해요. 비대칭 암호화에는 대표적으로 AES, RSA 방법이 있어요.
- AES (Advanced Encryption Standard): 대칭 암호화 방식 중에서 보안성이 높아 많이 사용됩니다.
- RSA (Rivest-Shamir-Adleman): 비대칭 암호화의 대표적인 알고리즘으로, 인터넷 통신 보안이나 디지털 서명 등에 자주 쓰입니다.
- 데이터 전송: 민감한 정보의 데이터는 암호화하여 전송하면 클라이언트와 서버 간 통신 중에 데이터가 노출될 위험이 줄어요.
- 데이터 저장: 데이터를 물리적 디스크나 온라인 데이터베이스에 저장할 때 암호화하면 데이터를 보호할 수 있어요.
- 인증 및 디지털 서명: 인증 프로토콜 보안 및 문서나 이메일에 디지털 서명하는 데 암호화는 필수로 사용됩니다.
특징 | 해싱 | 암호화 |
---|---|---|
복구 가능성 | 일방향, 복구 불가 | 양방향, 키가 있으면 복구 가능 |
주요 목적 | 데이터 무결성 확인 | 데이터 기밀성 유지와 안전한 통신 |
출력 길이 | 고정 길이 (입력 크기와 무관) | 가변적 또는 암호화 알고리즘 요구사항에 따름 |
사용 사례 | 비밀번호 저장, 데이터 무결성 검사, 디지털 서명 | 안전한 통신, 데이터 저장, 인증 |
키 필요 여부 | 키 불필요 | 암호화 키 필수 |
요약하자면 해싱은 원본 데이터를 되돌릴 필요가 없고 데이터 무결성이 더 중요할 때 사용해요. 암호화는 민감한 데이터를 보호하고 필요할 때 다시 복구해야 할 때 사용합니다. 하지만 때때로 보안 강화를 위해 해싱과 암호화를 동시에 사용합니다.
해싱과 암호화는 둘 다 중요한 데이터 보안 방식이지만, 역할이 다르면서도 서로 보완적이에요. 해싱은 데이터 무결성 확인과 비밀번호 보호에, 암호화는 데이터 기밀성과 접근 제어에 적합합니다. 이 차이를 잘 이해하면 데이터와 통신 보안을 강화하는 데 큰 도움이 될 거예요.