지난 프로젝트인 웹 로그인 성능 및 보안 개선 프로젝트를 진행을 하면서 실제로 사용되는 웹사이트에는 성능과 보안이 굉장히 중요하다는 것을 계속해서 언급을 해왔었는데요. 특히, 해싱 알고리즘의 적용에 대해 중점적으로 다루었습니다. 왜 해싱 알고리즘이 비밀번호 저장에 사용이 되는 것일까요? 이번에는 해싱 알고리즘의 중요성과 기존의 다른 암호화 알고리즘에 대해 알아보겠습니다.
목차
1. 문제 시나리오 분석
2. 암호화 알고리즘 비교
3. 분석
#1 문제 시나리오 분석
시나리오 : 어느 회사의 DB 개발자가 비밀번호를 평문으로 저장함. 이를 암호화하지 않고 운영을 하다가는 데이터베이스 파일이 유출될 경우, 평문으로 저장된 비밀번호가 악의적인 사용자에게 전달됨. 또는 회사의 개발자가 마음대로 타인의 개인정보를 조회할 수 있음. 위와 같은 상황을 방지하고자 회사는 비밀번호를 암호화하고자 함.
요약
- 데이터베이스 파일이 유출되었을 때, 악의적인 사용자가 개인정보를 남용 가능함.
- 모든 개발자가 개인정보 조회가 가능함.
위의 시나리오는 실제로 사례가 여러 차례 존재했습니다. 최근 5년 동안에는 트위터와 페이스북이 사용자의 비밀번호를 평문으로 저장하고 있었다는 것, 더 과거에는 링크드인(LinkedIn)의 데이터베이스가 해킹되어 평문 형태의 비밀번호가 유출되었습니다.
해킹 기법이 다양해지는 현재, 데이터베이스 파일이 해킹이 되지 않을 것이라는 보장은 할 수가 없습니다. 그렇기 때문에 우리는 해킹이 되더라도 악의적인 사용자가 이를 사용할 수 없도록 하는 것이 바로 암호화 작업입니다.
그렇다면 암호화 작업을 위해서는 우리가 무엇을 고려해야 할까요? 암호화 알고리즘들에 대해 알아보겠습니다.
#2 암호화 알고리즘 비교

암호화 알고리즘은 크게 양방향 암호화와 단방향 암호화로 나눌 수 있습니다.
🔑양방향 암호화 알고리즘
양방향 암호화란 평문을 암호문으로 암호화가 가능하고, 암호문을 평문으로 복호화도 가능한 알고리즘입니다.
양방향 암호화는 또 두 가지의 알고리즘으로 분류됩니다.
- 대칭키 알고리즘
대칭키 알고리즘은 암호화가 가능하고 빠르지만, 타인에게 키가 유출되면 매우 쉽게 복호화가 가능하다는 단점이 존재합니다.
- 비대칭키 알고리즘
비대칭키 알고리즘은 대칭키 알고리즘과는 달리 해시 성격을 띠기 때문에 상대적으로 더 안전성이 있습니다. 하지만 그저 키가 개인키와 공개키로 두 개인 것이기 때문에 이도 공개키가 유출되면 쉽게 복호화가 가능하고, 속도도 대칭키 알고리즘보다 상대적으로 느리다는 단점이 존재합니다. 그럼에도 비대칭키 알고리즘을 사용하는 경우가 존재하는데, 이 경우에는 수학적 난제를 이용하여 복호화를 어렵게 한 후 사용합니다. (ex. RSA 암호 - 소인수분해)
위의 두 개의 양방향 암호화 알고리즘은 모두 개발자가 키를 항상 알 수 있기 때문에 개발자가 악의적으로 복호화하여 사용할 가능성도 존재한다는 치명적인 단점이 공통적으로 존재합니다. 그렇다면 양방향 암호화 알고리즘은 사용해서는 안 되는 것 아니냐고 생각하실 수도 있어요. 그래서 등장한 것이 아래에 나오는 단방향 암호화 알고리즘입니다.
🔑단방향 암호화 알고리즘
단방향 암호화는 평문을 암호문으로 암호화가 가능하지만, 암호문을 평문으로 복호화하기 어렵게 한 알고리즘입니다.
- 해싱 알고리즘
해싱 알고리즘은 단방향 암호화에 사용되는 알고리즘입니다. 여기서 해싱이란 평문의 문자열을 해석하기 어려운 문자열로 컨버트 해주는 작업을 의미합니다. (3As92Nf92d1Mb6)와 같이 외계어처럼 말이죠. 이렇게 암호화했을 때는 복호화가 사실상 불가능합니다.(양자컴퓨터는 가능하려나..)또한 굉장히 빠르다는 장점이 있습니다.

<그림 2>는 지난 프로젝트에서 SHA-256 해싱 알고리즘을 이용해서 암호화한 이미지입니다. 외부인이 데이터베이스 파일에 접근해도 저렇게 비밀번호를 저장하면 알아보기가 쉽지 않아 보이죠? 그래서 해싱 알고리즘은 많은 웹사이트들이 현재도 사용 중이랍니다.
#3 분석
현재, 존재하는 암호화 알고리즘은 양방향과 단방향이 있지만, 양방향보다 단방향이 보안성과 성능이 더 우수하다고 할 수 있습니다. 따라서 비밀번호 저장에 있어서는 해싱 알고리즘의 사용은 높은 보안성과 성능을 제공하는 효과적인 방법입니다. 그러나 단방향 알고리즘이라는 장점을 가진 해싱 알고리즘들 중에서도 사전 공격과 레인보우 테이블 공격을 당하는 등의 취약점이 존재할 수 있습니다.
더 깊은 내용은 다음 포스팅에서 해싱 알고리즘들의 종류들, 비밀번호와 같이 짧고 단순한 문자열에 효과적인 BruteForce 공격에 대해 알아보겠습니다!
'Computer Science' 카테고리의 다른 글
| 데이터 불균형 문제 해소를 위한 SMOTE와 SMOTEENN 샘플링 기법 (0) | 2025.08.26 |
|---|---|
| B+트리를 활용하여 DB 인덱싱하기 (0) | 2024.07.23 |
| 대규모 데이터베이스 성능 향상을 위한 샤딩 알고리즘 (0) | 2024.07.14 |
| 데이터베이스 정규화와 성능 최적화 전략 (0) | 2024.07.04 |
| BruteForce 공격 방어를 위한 해싱 알고리즘 #2 (0) | 2024.07.03 |