[MUKBO.log] Backend Dev_101 = Encryption

먹보·2023년 1월 31일
0

MUK_BO's General Info.

목록 보기
8/9

이전 게시글에서 인증&인가에 대해서 다뤘었고 그 이후에 Session-Cookie 그리고 Token에 대해서 간단하게 다뤘었다.

하지만 사실상 가장 중요한건 인증 시 받은 회원의 정보를 어떻게 암호화하여 데이터베이스에 저장해야 안전한지 이다.

하지만 프로그래밍을 배운지 얼마 안된 입장에서 보안성 문제는 너무나 방대하고 경험치가 적다보니 어떤게 최선인지 아는 것은 한계가 있기 때문에 이번 게시글에서는 암호화가 무엇이고 어떤 것이 있는지만 간략하게 파악하고 넘어갈 예정이다.

✍ 단방향 암호화

입력된 평문(본래의 Input 값)을 암호화 할 수는 있지만 암호화된 평분을 복호화(복구) 하지 못하는 암호화 방식을 말하며 주로 Hash Algorithm이 여기에 속합니다.

=> 주로 저자서명, 파일 또는 데이터 식별자, 비밀번호, 그리고 블록체인등에 활용되고 있습니다.

📝 솔팅(Salting)

Hash Algorithm을 통해 암호화를 진행 할 때 본래 input 값에 추가적으로 랜덤한 데이터를 더하여 암호화를 진행하는 방식

📝 키 스트레칭 (Key Streching)

해시 값이 계산된 뒤, 그 해시 값을 또 다시 해시하고 또 이를 반복하는 방식입니다. 서비스마다 반복하는 횟수가 상이하지만 평균적으로 10번 정도 진행 합니다.

📝 단방향 암호화의 장단점

장점

  1. 단방향 암호화는 암호화 절차를 복구하기 어렵기 때문에 상대적으로 보안에 강하다.
  2. 인 풋 값에 변화를 줘 고유의 해시 값을 반환하기 때문에 비교적 숴운 위변조 검출이 가능하다.
  3. 데이터의 복호화 과정 없이 효율적으로 인증 확인이 가능하다.

단점

  1. 복호화가 불가능
  2. 아주 간혹, 해시 값이 동일하게 반환될 때가 생기며, 이럴 경우 충돌이 일어나 보안에 문제가 생길 가능성이 있다.
  3. 데이터의 Confidentiality를 제공하지 않기 때문에 암호화에 적합하지 않을 때가 있다.

📝 단방향 암호화를 공격하라! Rainbow Attack

해시 알고리즘은 동일한 input에 대해 항상 동일한 해시 값을 가지고 있기 때문에 예측이 가능하며 이런 모든 가능성을 모아놓은 곳을 레인보우 테이블이라고 합니다. 이 테이블을 이용해 해킹하는 것을 레인보우 공격이라고 합니다.

✍ 양방향 암호화

📝 대칭키 암호화 (Symmetric Encryption)

단방향 암호화하는 다르게 복호화가 가능하며, 이중 대칭키 암호화는 인풋 값을 암호화 하는 과정에서 쓰인 보안키와 복호화하는 과정에서 쓰인 보안키가 동일한 암호화 방식을 뜻합니다.

장점

  1. 빠른 속도 : 대칭키 암호화는 비대칭키 암호화보다 빨라 다량의 데이터를 암호화 할 때 용이합니다.
  2. 간결함 : 보안키가 동일하기에 상대적으로 사용하기 간단합니다.
  3. 효율적인 키 관리 : 하나의 키만 관리하면 되는 것이기에 관리가 간단합니다.

단점

  1. 보안키가 하나이기에 탈취 당하지 않도록 신경 써야 한다.
  2. 규모가 큰 웹 개발에 적합하지 않을 수도 있다.

📝 비대칭키 암호화 (Asymmetric Encryption)

비대칭이란 단어에서 알 수 있듯이 암호화 과정과 복호화 과정시에 필요한 보안키를 달리 사용하는 방식을 뜻하며 암호화 과정시 쓴 보안키를 퍼블릭 키 복호화 과정 중 사용한 보안키를 프라이빗키라고 합니다.

장점

  1. 키 가 2개 이기 때문에 상대적으로 대칭키 암호화 방식보다 보안이 강하다.
  2. 비대칭 암호화는 전자 거래에 대한 신뢰성과 거부권을 제공하는 디지털 서명을 만드는 데 사용될 수 있다.
  3. 규모가 큰 웹 개발에 적합하다.

단점 (단점이 명확하기 때문에 자세한 설명은 Skip)

  1. 복잡성
  2. 상대적으로 느린 속도
  3. 키 관리
profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글