[F-Lab] 모각코 챌린지 5일차

tree·2023년 5월 5일
0

암호화

암호화(Encryption)란?

  • 암호화 알고리즘을 이용해 평문의 데이터를 암호문으로 변환하는 것.
  • 반대로 암호문을 평문으로 변환하는 과정을 복호화(해독, Decryption)라고 한다.

암호화가 필요한 이유

  • DB에 고객의 데이터를 평문의 데이터로 저장하면 DB의 데이터가 해커로부터 도용 당했을 때 고객의 데이터가 유출되어 악용될 수 있다. 하지만 암호화된 암호문으로 저장하면 도용당하더라도 해커들이 악용할 수 없다.
    • 정보통신망법과 개인정보보호법은 고객의 개인정보를 암호화활 것을 요구한다.
  • 네트워크를 통해 프로세스 간에 데이터를 주고 받을 때, 데이터는 전송 과정에서 스니핑(Sniffing) 되어 악용될 수 있다. 하지만 암호문으로 주고 받는다면 스니핑되더라도 악용될 수가 없다.

암호화 키

  • 고전 암호 체계에서는 암호화 알고리즘을 알면 해독이 가능해진다는 문제점이 있었다.
  • 이를 극복하기 위해서 암호화 키가 사용되기 시작.
    • 암호화 알고리즘을 알더라고 키가 없으면 해독이 불가능.

암호화 알고리즘

단방향 알고리즘

  • 평문에서 암호문으로의 암호화는 가능하지만 암호문에서 평문으로의 복호화는 불가능.
  • 대표적으로 해싱기법(데이터를 고정된 길이의 암호문으로 변환)이 있다.
  • ex
    • SHA-2, SHA-3

양방향 알고리즘

  • 암호화와 복호화가 모두 가능한 알고리즘.

대칭키 방식

  • 하나의 키를 이용하여 암호화, 복호화를 할 수 있는 알고리즘
  • 키가 노출되면 암호가 해독될 수 있으므로 키를 비공개한다.
  • 문제점
    • 송신 측에서 수신 측에 키를 전송할 때, 키가 제 3자에게 노출될 우려가 있다.
  • ex
    • DES, AES

비대칭키 방식

  • 공개키(Public Key), 비공개키(Private Key)가 별도로 존재.
  • 하나의 키를 사용해 암호화를 하고, 다른 하나의 키를 사용해 복호화를 한다.
  • 문제점
    • 대칭키 방식에 비해 느리다.
      • 대칭키를 비대칭키 방식으로 전달하고, 실제 암호화와 복호화는 대칭키를 이용하는 방식이 일반적이다.
  • ex
    • RSA

SHA-256

  • SHA(Secure Hash Algorithm) 알고리즘의 한 종류이다.
  • 256비트로 구성된 64자리 문자열(0 ~ f로 이루어진 문자열) 다이제스트를 반환한다.

특징

  • 단방향 암호화 방식
    • 암호화는 가능하지만 복호화는 불가능하다.
  • 안정적
    • 256 비트 사이즈의 문자열을 반환한다는 것은 만들 수 있는 문자열의 경우의 수가 22562^{256}이라는 뜻이다. 따라서 브루트 포스 공격에 안전하다고 볼 수 있다.
  • 데이터의 무결성을 검증하거나 패스워드 암호화에 많이 사용된다.

한계

  • 레인보우 테이블(여러 해시 함수에 대해 입력값을 대입했을 때 얻을 수 있는 다이제스트들을 대량으로 모아둔 표)를 사용해 원문을 알아낼 수 있다.
    • 만약 다이제스트 값이 레인보우 테이블에 존재한다면 원문을 쉽게 알아낼 수 있다.

해결방법

  • 원문에 솔트를(임의의 문자열)를 덧붙인 다음 알고리즘을 적용하여 다이제스트를 얻는다.
    • 입력값이 길고 복잡할수록 레인보우 테이블에 존재할 확률은 낮아진다.
    • 원문마다 서로 다른 솔트를 가진다면 다이제스트 값으로 원문을 찾는 것은 더욱 힘들어진다.

0개의 댓글