암호화 종류

GreenBean·2023년 1월 6일
0
post-thumbnail
post-custom-banner

암호화 종류

암호화란?

  • 암호화 (暗號化) 또는 엔크립션 (Encryption) 은 특별한 지식을 소유한 사람들을 제외하고는 누구든지 읽어볼 수 없도록 알고리즘을 이용하여 정보를 전달하는 과정
    • 이러한 과정을 통해 암호화된 정보 (=암호문) 를 생성
  • 이에 역행하는 과정을 해독 또는 디크립션( Decryption )이라고 하며 이로써 암호화된 정보를 다시 읽을 수 있음
  • 암호화하기 이전 데이터를 평문이라 하면 암호화된 정보는 암호문이라고 함
    • 암호화 엔진은 제 2차 세계 대전에 사용되었던 암호기 에니그마( Enigma ) 처럼 기계적 장치일 수도 있지만, 요즘은 대부분 컴퓨터 프로그램 형태로 만들어짐
    • 평문이 암호화 엔진으로 들어가면 암호화 엔진이 암호문을 만들어 내는 방식으로 암호화가 진행

암호화와 복호화

  • 암호화
    • 평문을 암호문으로 변환하는 과정
    • 예시: 평문("123456") → 암호화 → 암호문("aEerwlrkn!")
  • 복호화
    • 암호문을 평문으로 변환하는 과정
    • 예시: 암호문("aQwqlen!") → 복호화 → 평문("123456")

암호화의 종류

  • 암호화 방식은 간단한 형식부터 복잡한 형식까지 다양하게 존재
    • 따라서 어떤 종류의 암호화 방식이 항상 우수하다는 상위와 하위의 개념보다는 보안 환경 및 경제성 등 필요한 상황에 따라 결정된다고 보는 것이 더 적합

단방향 암호화

📮 단방향 암호화

단방향 암호화: 해시 ( Hash )

  • 단방향 암호화는 대표적으로 신원 증명과 인증 과정에서 사용
    • 예를 들어 비밀번호를 'wiki123' 이라고 지정했을 때 이를 암호화하여 'A3pnqq49.Hw' 라는 아무런 유사성 없는 암호문을 만들어 냄
  • 단방향 암호화의 특징역으로 변환하는 것이 불가능하고 어떤 방법을 쓰더라도 암호문을 원래의 평문으로 되돌릴 수 없음
    • 예시: 사용자 비밀번호
    • 사용자가 입력한 비밀번호를 암호화하여 DB에 저장이 될 때, 모든 접근자는 암호화 된 코드를 다시 평문으로 볼 수 없음
    • 해킹이 되어도 복호화가 매우 힘든 것이 특징
  • 해시 방식이 대표적
    • 해시 함수: 해시 함수는 임의의 길이의 데이터를 입력받아 일정한 길이의 비트열로 반환 시켜주는 함수
    • 입력값의 길이가 달라도 출력값은 언제나 고정된 길이로 반환되며 동일한 값이 입력되면 언제나 동일한 출력값을 보장하는 함수를 의미

양방향 암호화

📮 비밀키 암호화 (=대칭형 암호화)

  • 비밀키 암호화는 말 그대로 비밀키를 사용하여 암호화와 복호화하는 과정
    • 평문에 암호화 키 값을 이진수 연산 처리하여 암호문을 생성하고 암호문을 받은 수신자는 동일한 암호화 키 값을 역으로 대입하여 암호문을 해독
    • 따라서 비밀키 암호화를 위해서는 송신자와 수신자 모두 동일한 암호화 키를 알고 있어야 함
  • 암호화와 복호화에 서로 동일한 키가 사용되는 암호화 방식으로 키를 비공개하는 것이 특징
    • 속도가 빠르다는 장점이 존재하지만 키 배송 위험성이 존재하여 송신 측에서 수신 측에 비밀키를 전달하는 과정에서 키가 노출될 우려가 있다는 단점이 존재
    • 대표적으로는 AES 가 있음
  • 비밀키 암호화는 사용하는 키와 복호화 할때 사용하는 키가 동일한 암호화 기법
    • 대게 암호화 알고리즘이라 하면 해당 알고리즘을 가리킴
    • 현재 가장 보편적으로 쓰이는 암호화 방식은 현 미국 표준 방식인 AES 로 128-256 비트 키를 적용할 수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구나 사용 가능
    • 그 전에는 DES ( Data Encrytion Standard ) 라는 알고리즘이 1975년부터 사용되고 있었으나 너무 오래되어 취약점이 발견됨에 따라 이를 대체 하기 위해 등장한 것이 AES
  • 비밀키 암호화는 훌륭한 암호화 방식이긴 하지만 키 배송 관련으로 결정적인 문제가 존재
    • 어떻게든 송신 측에는 수신 측에 암호키를 전달해야만 하고 이 키가 배송 과정에서 탈취 당하게 되면 아무리 뛰어난 암호화 알고리즘을 사용했더라도 평문이 노출 됨
    • 안전하게 평문을 전달하기 위해 만든 것이 암호문인데 정작 키를 안전하게 전달할 방법이 없다는 것이 가장 큰 단점
  • 키 배송에 대한 방법이 여러가지 연구되면서 나타난 해결책이 바로 바로 공개키 암호화

📮 공개키 암호화 (=비대칭형)

  • 공개키 암호화는 공개키개인키라고 불리는 서로 다른 두 개의 키를 사용
    • 앞선 비밀키 암호화 방식과 비교해보면 송 ∙ 수신자에게 공개된 공개키를 사용하여 암호화하는 점은 비슷하지만 복호화는 개인키를 가진 사람만 할 수 있다는 점에서 차이가 발생
  • 조금 더 복잡해 보이는 해당 방식은 비밀키 암호화 방식보다 처리가 느리기 때문에 실제 암호화 시스템은 비밀키 암호화 방식과 공개키 암호화 방식을 혼합하여 구축
  • 암호화와 복호화에 서로 다른 키가 사용되는 방식으로 하나의 키는 공개키로 사용하는 것이 특징
    • 키 배송의 문제를 근본적으로 차단하여 안정성이 높지만 대칭키 방식에 비해 속도가 느리다는 단점이 존재
    • 대표적으로는 RSA 가 있음

Tip! RSA 란?

  • 공개키 암호화 방식 중의 하나로 암호화 뿐만 아니라 전자 서명이 가능한 최초의 알고리즘
    • 주로 적은 양의 데이터나 전자서명에 사용
    • 비밀키인 DES, AES 보다 속도가 느리기 때문에 메시지 암호화에는 쓰이지 않고 주로 키를 암호화 하는데에 사용
  • 공개키 암호화 (=비대칭형) 는 이름 그대로 암호화 키와 복호화 키가 다른 것을 의미
    • 암호화를 하면 하나의 키 쌍이 생기고 이 두 개의 키는 수학적으로 밀접한 관계를 가지게 됨
    • 두 개의 키를 각각 A키 ∙ B키 라고 했을 때 A키로 암호화 한 암호문은 B키로만 복호화 할 수 있고 B키로 암호화 한 암호문은 A키로만 복호화 할 수 있음
    • 따라서 이 중 하나의 키만 비밀로 하면 다른 하나의 키는 누구에게 공개 되어도 보안에 문제 없는 키가 됨
  • 이렇게 둘 중 하나의 키는 반드시 공개 되어야 통상적인 사용이 가능함으로 공개키 암호화 라고 불림
    • 공개키로 암호화한 암호문은 개인키를 가진 사람만이 풀어볼 수 있기 때문에 상호 간에 공개키만 교환하고 상대의 공개키로 암호화를 해서 데이터를 교환하면 자신의 개인키로 복호화를 함
    • 따라서 키 배송 문제가 발생하지 않게 됨
  • 예를 들어, 인터넷 뱅킹을 생각해봤을 때
    1. 사용자가 인터넷 은행 사이트에 접속하게 되면 사용자 컴퓨터에는 공개키와 비밀키가 생성됨
    2. 사용자 컴퓨터에서 공개키가 은행으로 전송되면 은행에서는 중요한 정보를 공개키로 암호화하며 암호문을 사용자에게 전달
    3. 사용자는 비밀키로 암호문을 해독하여 중요한 정보를 은행과 공유하며 통신을 하게 됨
    • 이러한 공개키 방식은 공인인증서 ∙ 전자 서명 등에서 사용하고 있는 것이 특징
  • 하지만 공개키 암호화는 비밀키 암호에 비해 암호화 ∙ 복호화가 현저하게 느리다는 문제점이 존재
    • 현실적으로는 공개키 암호화를 이용해 비밀키 암호화의 비밀키를 배송하고 실제 암호문은 비밀키 암호화를 사용하는 식으로 상호 보완적으로 이용하는 것이 일반적
    • 공개키 암호의 약점으로는 중간자 공격을 꼽을 수 있음

Tip! 중간자 공격 란?

  • 해커가 중간에서 통신을 가로채어 수신자에게는 송신자인 척하고 송신자에게는 수신자인 척 해서 양쪽의 공개키와 실제 암호화에 사용되는 대칭키를 모두 얻어내는 기법
profile
🌱 Backend-Dev | hwaya2828@gmail.com
post-custom-banner

0개의 댓글