본문 바로가기
Computer Science/데이터베이스

개인키(대칭키) vs 공개키(비대칭키)

by Libi 2021. 7. 10.
반응형

특정 웹사이트나 게임 같은 곳에 로그인하기 위해서는 ID와 Password를 입력할 것이다. 예를 들어 다음과 같이 로그인 정보를 입력하다고 하자.

 

만약 로그인을 할 때 ID는 그렇다 치고 Password를 현재 상태 그대로 해당 서버의 DB에 저장한다면 어떻게 될까? 이는 외부로 노출될 경우 쉽게 나의 비밀번호를 알 수 있기 때문에 보안상 굉장히 위험하다.

이를 해결하기 위해 Password를 평문 상태로 저장하지 말고 특정한 알고리즘을 적용하여 암호화된 Password를 서버의 DB에 저장한다. 이러한 과정을 암호화라고 한다.

또한, 반대로 암호화된 Password를 다시 평문으로 복구시키는 과정을 복호화라고 한다.

물론 암호화 과정을 통해 100%로 노출을 막을 수 있는 것은 아니지만 암호화하는 것이 훨씬 안전할 것이다.

 

그렇다면 평문을 암호화하는 방법에는 어떤 것들이 있을까? 암호화 기법은 개인키 암호 방식과 공개키 암호 방식이 존재한다. 하나씩 살펴보도록 하자.

개인키 암호 방식(Private Key Encryption)

  • 비밀키 암호 방식, 대칭 암호 방식, 단일키 암호화 기법
  • 데이터를 암호화, 복호화할 때 동일한 키를 사용
  • 비밀키는 제3자에게 노출시키지 않고 데이터베이스 사용 권한이 있는 사용자만 나누어 가짐
  • 동일한 키를 사용하기 때문에 공개키 암호화 방식에 비해 암호화 및 복호화가 빠름
  • 하지만 키를 교환하는 과정에서 키가 노출될 위험이 큼
  • 또한, 개인마다 키를 교환해야 하기 때문에 키를 관리하기가 어려워짐
  • DES, AES, SEED, ARIA 등의 알고리즘이 존재

 

 

공개키 암호 방식(Public Key Encryption)

  • ​비대칭 암호 방식
  • 데이터를 암호화, 복호화할 때 서로 다른 키를 사용
  • 데이터를 암호화할 때 사용하는 키(공개키)는 데이터베이스 사용자에게 공개하고, 복호화할 때의 키(비밀키)는 관리자가 비밀리에 관리하는 방법
  • A(Client)에서 B(Server)로 비밀번호를 전송할 경우 B의 공개키를 통해 Client의 키를 암호화하여 전송하고 B는 자신만 알고 있는 비밀키로 비밀번호를 복호화하는 방식
  • 개인키의 단점을 해결하였지만 암복호화 과정이 시간이 걸리고 복잡함
  • 대표적으로 RSA 알고리즘이 존재

 

 

반응형

'Computer Science > 데이터베이스' 카테고리의 다른 글

Redis란?  (0) 2021.08.27
트랜잭션 고립화 레벨(Transaction Isolation Level)  (0) 2021.07.11
NoSQL  (0) 2021.07.10
인덱스(Index)  (0) 2021.07.10
DML - JOIN  (0) 2021.07.10

댓글