본문 바로가기
Computer Science 📑

암호화 알고리즘

by 서니서닝 2023. 3. 8.
728x90

암호화 알고리즘🔐

데이터의 무결성 및 기밀성을 유지하기 위하여 정보를 쉽게 해독할 수 없도록 암호화하는 알고리즘

암호화 : 메시지의 내용이 불명확하도록 평문(Plain text, 원본 데이터)재구성하여 암호화된 문장(Cipher text)으로 만드는 과정

평문 : 해독 가능한 형태의 텍스트
ex) 123456

암호문 : 해독 불가능한 형태의 텍스트
ex) aWfwlknr!

 

1. 암호화의 특성

특성 기능 적용기술
인증(Authentication) PKI 사용자에 대한 신원 확인 기능 인증서
기밀성(Confidentiality) 송·수신자 이외는 송신내용 인지 불가 암·복호화
무결성(Integrity) 정보의 조작 및 변경 여부 확인 해쉬함수
부인 방지(Non-repudiation) 송수신자의 송수신 사실 부인 봉쇄 전자서명
가용성(Availability) 정합한 요구 시 서비스 제공 암호/인증

부인 방지(Non-repudiation)

메시지의 송·수신이나 교환 후 또는 통신이나 처리가 실행된 후에 그 사실을 사후에 증명함으로써 사실 부인을 방지하는 보안기술

🙎‍♀️(은선) : 돈 좀 빌려줄 수 있어?일주일 후에 갚을게
🙋‍♂️(상혁) : 알겠어 차용증에 서명 좀 해주라

<일주일 후>

💁‍♂️(상혁) : (차용증 제출) 빌린 돈 돌려줄래?
🤷‍♀️(은선) : 나 돈 빌린 적 없는데? 그 서명도 내 서명 아니야~
🤦‍♂️(상혁) : ...

상혁이 문서에 있는 서명이 은선의 것이 맞다는 것을 확인하는 것을 부인 방지라고 한다.

  • 대칭 키의 경우에는 부인 방지가 불가능하다.
  • 공개 키의 경우에는 발행자의 증명과 동일한 절차로 부인 방지가 이루어진다.

 

만일 부인 방지를 했다면??

🙎‍♀️(은선) : 돈 좀 빌려줄 수 있어? 일주일 후에 갚을게
🙍‍♂️(상혁) : 개인키/공개키 생성한 뒤, 공개키를 공개해줘
🙆‍♀️(은선) : 알겠어
🙍‍♂️(상혁) : '문서'를 개인키로 암호화해줘
💁‍♀️(은선) : (은선의 개인키로 암호화 하여 전달)

<일주일 후>

💁‍♂️(상혁) : 빌린 돈 돌려줄래?
🤷‍♀️(은선) : 나 돈 빌린 적 없는데?
💁‍♂️(상혁) : ('암호화된 문서'를 은선의 공개 키로 해독하여, 이 문서가 제대로 암호화되었음을 검증)
🤦(은선) : ...💰

타인은 은선의 공개키로 복호 가능한 문서를 생성할 수 없고 암호화된 문서는 은선의 공개키로만 해독이 가능하므로, 이는 은선만이 발행했다는 증거가 된다. 동시에 변조되지 않았음을 증명할 수도 있다.

 

2. 암호 시스템

암호화/복호화 개념도

침해자는 암호키가 없기 때문에 암호문 파악 불가

암호화 구성 요소

  • 평문(Plaintext) : 해독 가능한 형태의 메시지(암호화전 메시지)
  • 암호문(Cipertext) : 해독 불가능한 형태의 메시지(암호화된 메시지)
  • 암호화(Encryption) : 평문을 암호문으로 변환하는 과정
  • 복호화(Decryption) : 암호문을 평문으로 변환하는 과정
  • 키(Key) : 암호화 알고리즘의 매개변수
  • 암호 알고리즘(Encryption Algortihm) : 암호화와 복호화에 이용되는 알고리즘
  • 암호 시스템(Cryptosystem) : 암호화 기술과 복호화 기술의 통칭

 

3. 암호 알고리즘 분류

1) 양방향 방식

암호화와 복호화가 양방향으로 이루어지는 방식

[ 대칭키 방식(Symmetric-key Cryptography) ]

암호화를 할 때와 복호화를 할 때 같은 암호키를 사용하는 알고리즘

  • 암호키 = 복호키
    • 키의 수 : 1개 - 두사람이 한 개의 비밀키를 공유
    • 키의 관리 : 모든 전송 당사자간암·복호화를 위한 키를 공유해야함
    • 암호화 키 : Secret Key
    • 복호화 키 : Secret Key
  • 대칭키로 인하여 부인방지 불가능
  • 비트 단위 암호화, 간단한 내부 구조로 상대적으로 빠른 속도 제공
  • 용도 : 개인파일 암호화, 특정 불특정 그룹내의 통신에 사용
  • 장점 : 구현 용이, 변형 가능
  • 단점 : 상대적으로 쉽게 해독 가능(보안 취약)하며, 키 관리가 어려움
  • 구현 방식 :
    • 블록 암호 방식(Block Cipher) 고정 길이의 블록을 할당하여 암호화하는 방식(ex. DES, AES, SEED)
    • 스트림 암호 방식(Stream Cipher) 유사 난수를 연속적으로 생성하여 암호문을 생성하는 방식(ex. RC4, A5/1, A5/2)

 

블록 암호는 암호화 과정이 블록 단위로 처리되기 때문에 암호화가 어디까지 진행되었는지에 대한 내부 상황을 알 필요가 없지만, 

 

스트림 암호는 데이터의 흐름대로 1비트 혹은 1바이트씩 순차적으로 처리하기 때문에 암호화가 어디까지 진행되었는지 내부 상태를 알아야 한다.

 

구분 블록 암호(Block Cipher) 스트림 암호(Stream Cipher)
개념 평문을 일정한 블록 단위로 나누어서 각 블록마다 암호화 과정을 수행하여 고정된 크기의 블록단위의 암호문을 생성 평문과 같은 길이의 키 스트림을 생성하여 평문과 키 이진 수열 비트단위 배타적 논리합(XOR) 이진연산으로 결합하여 암호문 생성
장점 높은 확산, 기밀성, 해쉬함수 다양 암호 속도 빠름, 에러전파 현상 없음
단점 느린 암호화, 에러 전달 낮은 확산
주요 대상 일반데이터 전송, 스토리지 저장 음성, 오디오 스트리밍, 비디오 스트리밍
예시 DES, AES, SEED LFSR,RC4, A5/1, A5/2
단위 블록 단위 비트 단위

블록 암호

스트림 암호

AES와 DES

1975년부터 DES(Data Encryption Standard)라는 알고리즘이 사용되었음. 너무 오래되어 취약점이 발견되어 AES 등장
AES는 현 미국 표준 방식이며, 128~256비트의 키를 적용할 수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구나 사용 가능

 

[ 비대칭키 방식(공개키 방식) ]

메시지 암호화 하는 키와 복호화 하는 키가 다른 알고리즘 (공개키와 암호화키)

 

  • 암호키 ≠ 복호키
    • 키의 수 : 전송 당사자간에 각각 **키쌍(Private Key, Public Key)**를 공유
    • 키의 관리 : 인증기관을 통해 전송 당사자 별 Private Key 발급
    • 암호화 키 : Public Key
    • 복호화 키 : Private Key
  • 키의 이원화로 부인방지 가능
  • 큰 소수를 찾거나, 곡률 방정식 등의 연산으로 속도가 느림
  • 용도 : 다수의 정보교환(Key)에 주로 사용
  • 장점 : 암호해독이 어려움(보안 강화)
  • 단점 : 해독시간이 상대적으로 오래 걸림, 중간자 공격
  • 전자서명, 공인인증서 등에서도 사용함
  • 구현 방식 :
    • 소인수분해(RSA), 이산대수(DSA, ECC), 근저백터(Lattice)
    • 전자 서명(Digital Signature) : 인터넷 상에서 본인임을 증명하기 위해 서명을 하는 수단, 공개키 암호를 거꾸로 활용하는 방식(ex. DSA, RSA, Signature, ECDSA)

중간자 공격

해커가 중간에서 통신을 가로채어 수신자에게는 송신자인척하고, 송신자에게는 수신자인 척 하여 양쪽의 공개키와 실제 암호화에 사용되는 대칭키를 모두 얻어내는 기법

 

예시 (인터넷 뱅킹)

1. 👩‍💻 사용자가 인터넷 은행 사이트 접속
    - 💻(사용자의 컴퓨터) : 공개키, 비밀키 생성
2. 🔑 사용자의 공개키가 은행으로 전송
3. 🏧 은행에서 중요한 정보 공개키로 암호화하여 암호문 사용자에게 전달
4. 👩‍💻 사용자는 비밀키로 암호문을 해독하여 중요한 정보를 은행과 공유하며 통신

 

중점에 따른 암호화 방식

Public Key로 암호화 하면 Data 보안에 중점을 두고, Private Key로 암호화 하면 인증 과정에 중점을 둔다.

 

2) 일방향, 단방향 방식(해쉬 암호 방식)

해싱(Hashing)을 이용한 암호화 방식

  • 데이터의 진위여부는 확인하고 싶으나, 본 데이터의 privacy를 지키고 싶은 경우에 사용
  • 임의의 길이의 메시지를 입력으로 받아 고정된 길이의 해시 값을 출력하는 함수
  • 해시 함수에는 암호 키가 사용되지 않기 때문에, 같은 입력에 대해서 항상 같은 해시 값을 얻을 수 있음 -> 무결성을 제공
  • 평문을 암호문으로 암호화는 가능하지만 암호문을 평문으로 복호화 하는 것은 불가능

암호학적 해쉬 함수가 가져야하는 특징

  1. 역상 저항성(preimage resistance)
    • 어떤 해시 값에 대하여, 원래 입력 값을 찾는 것이 어려워야함
    • 최초, 해시값(y)이 확인된 상태, 임의의 출력 값 y에 대해 y=H(x)를 만족하는 입력 값 x를 갖는 것이 계산적으로 불가능 해야 한다
    • 일방향성(One-wayness)라고도 함
  2. 제 2 역상 저항성(second premimage resistance)
    • 최초, 입력값(x)이 확인된 상태, 어떤 입력 값의 해시 값과 같은 또다른 입력값을 찾는 것이 어려워야 함
    • 입력 값 x에 대해 H(x)=H(x’), x=x’를 만족하는 x’를 찾는 것이 불가능해야 한다
  3. 충돌 저항성(collision resistance)
    • 같은 해시 값을 갖는 두 입력 값을 찾는 것이 어려워야 함
    • 최초, 확인된 정보가 없는 상태, H(x)=H(x’)를 만족하는 임의의 두 입력값 x, x’를 찾는 것이 계산적으로 불가능하다

 

Hash 알고리즘

  • MD5: MD4 개선한 암호화 알고리즘, 파일의 무결성 검사에 사용
  • SHA-1: 1993년 NSA에 미국 정부 표준 지정
  • SHA-256/384/512: 256비트의 해시값을 생성하는 해시함수
  • HAS-160: 국내 표준 서명 알고리즘
  • HAVAL: 메시지를 1024bits 블록으로 나눔

 

디지털 메시지를 다룰 때, 그 메시지가 변경되었는지 혹은 내가 알고 있는 그 사람에게 온게 맞는지 확인할 필요가 있다. 이때, 변경 감지 코드(MDC)와 메시지 인증 코드(MAC)가 이용된다.

 

[ MDC(Modification Detection Code, 변경 감지 코드) ]

변경 감지 코드로 메시지의 무결성을 보장해주는 알고리즘

변경메시지를 암호학적 해쉬 함수를 통해 해쉬값을 만든 것

 

송신자 : 원본의 메시지는 그대로 보내고 해쉬값MDC를 만들어 안전한 채널에 보낸다.
이 때, 안전한 채널로 외부로부터 변경이 되지 않는다는 보장이 필요

수신자 : 전달받은 메시지를 MDC로 다시 만들어 전달받은 MDC와 비교하여 이 둘이 같으면 변경되지 않은 것, 변경 되었다면 변경되었다고 판단
=> 메시지의 변경이 일어났는지 확인하면서 데이터 무결성을 판단

[ MAC(Message Authentication Code, 메시지 인증 코드) ]

메시지 인증코드로 메시지의 무결성과 송신자의 인증을 보장

메시지가 외부에 노출되어도 상관없을 때 사용한다.

MAC 방식은 양방향 암호화 알고리즘보다 빠르다는 장점을 가지고 있지만, 기밀성을 제공하지 않기 때문에 보안에 취약하다는 단점이 있다.

송신자 : 수신자와 미리 공유된 키를 가지고 메시지 해쉬값 MAC를 만들고 메시지와 함께 보냄

수신자 : 송신자로부터 받은 MAC와 메시지를 키와 함께 해쉬값으로 만든 후 비교하여 같으면 송신자로 온 게 맞고 아니면 메시지 변경으로 판단




 관련 질문

Q1. 비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요.

Q2. 단방향 암호화에 대해서 간단히 설명해주세요.

Q3. OAuth에 대해 간단히 설명해주세요.

📖 참고 자료

암호 알고리즘 개념 및 종류

[Programming] 암호화 알고리즘 종류와 분류

KISA 암호이용활성화

암호화 알고리즘 종류

지덤사전 - 암호화(DES, SEED, ARIA 등)

[암호학] MDC(MODIFICATION DETECTION CODE)와 MAC(MESSAGE AUTHENTICATION CODE) 개념과 차이, CMAC 설명

정보보안기사 정리 2 - 해시함수, MDC, MAC(메세지 인증 코드)

정보보안기사 개인 정리 05 - 해시함수와 응용

728x90

댓글