이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

보안

PKI 리서치 - 암호화 알고리즘 개념

이쿠우우 2022. 4. 2. 11:01
반응형

 

PKI 리서치

 

목표

SSH, Kubernetes 등을 리서치 하면서 항상 개념이 혼란스러웠던 주제가 바로 인증서였음.
그러다 보니 ca.crt, ca.key, server.crt 같은 인증서 관련 파일만 보면 시작하기도 전에 걱정이 먼저였음...
대칭키, 공개키 알고리즘 개념은 완벽히 알고있지만 인증서, 전자서명 개념만 들어가면 개념이 흔들렸음.
이를 해결하기 위해 날을 잡고 개념부터 심화까지 글과 그림을 그려가며 리서치를 진행함.
개념적인 부분 부터 하나하나 다시 복습하는 마음으로 필자가 궁금증이 생겼던 시점의 순서대로 정리해봄.

 


PKI 리서치 시리즈 이동

PKI 리서치 - 암호화 알고리즘 개념
PKI 리서치 - 비대칭키(공개키) 알고리즘을 이용한 전자서명
PKI 리서치 - 공개키를 공개하는 방법 : PKI
PKI 리서치 - 실생활에서의 PKI : HTTPS - SSL/TLS
PKI 리서치 - OpenSSL을 통해 직접 PKI 환경을 구축해보자

 


 
 
 

암호화 알고리즘 개념

 
인증에 대해서 이해하기 위해서는 보안에서 가장 기본 개념이 되는 암호화 알고리즘인
대칭키 알고리즘, 비대칭키 알고리즘, 그리고 Hash에 대해 알고있어야함.
 

대칭키 알고리즘

 

대칭키 알고리즘 동작 과정

 
1. A사용자가 암호화에 사용할 Key를 생성
2. A사용자와 B사용자가 서로 암호문을 주고받기 위해 사전에 A가 생성한 Key를 B에게 전달(대칭키 교환)
3. B사용자가 A사용자가 전달한 Key를 보관하고 있음.
4. A가 생성했던 Key를 이용해서 대칭키 알고리즘을 통해 평문을 암호화 함.
5. 암호문을 B에게 전송
6. B는 받은 암호문을 기존에 보관하고 있던 Key로 동일한 대칭키 알고리즘을 통해 복호화해서 평문을 확인함.

 

 

대칭키 알고리즘 특징

암호화에 사용되는 암호화 키와 복호화 키가 동일안 암호화 기법.
키를 전달, 관리하는데 어려움이 있음.
하지만 연산속도가 빠른 장점을 가지고 있음.
 
대칭키 알고리즘은 "블록암호", "스트림 암호"로 구분됨.
 

블록 암호

평문을 고정된 크기의 블록단위로 암/복호화함.
암호키 크기에 따라 64~256비트 블록 크기로 연산수행함.
하나의 에러데이터가 '블록' 전체에 영향을 미침.
"페이스탈 구조""SPN 블록" 으로 구분됨.
 
[페이스탈] 
입력되는 평문 블록을 좌,우 2개 블록으로 분할해서 진행.
페이스탈 구조 암호화로는 DES, 3DES 가 있음.
 
[SPN 블록 구조]
평문 블록을 분할하지 않고 전체 블록을 적용하는 방식.
SPN 블록 구조 암호화로는 AES, ARIA 가 있음.
AES가 현재 가장 널리 사용되고 있음.
 
[암호 운용모드]
암호화 하려는 정보가 블록의 길이보다 길 경우는 특정 운용보드가 사용됨
CBC, ECB, OFB, CFB, CTR 
암호 운용모드 사용 시
입력의 크기가 블록의 배수가 되어야 하지만
정확한 배수가 되지 못할때 암호화 전에 패딩 데이터를 추가하는 작업을 해야한다.
 
 

스트림 암호

데이터 흐름을 순차적으로 처리해가는 암호 알고리즘의 총칭
암호화 방식은 평문과 키 스트림을 XOR 하여 생성함
암호화 강도는 약함
실시간 성이 중요하게 생각되는 음성, 영상 스트리밍 전송 및 무선 암호화 방식에 사용됨
1비트가 왜곡되도 평문에서 '1비트'만 왜곡된다
동기식 스트림 암호, 비동기식 스트림 암호화 구분
 

대칭키 키전달 문제점 극복

대칭키 알고리즘의 가장 큰 문제점은 바로 Key 전달 과정에서 발생함.
암복호화에 사용하는 Key가 동일하기 때문에 Key를 전달하는 과정에 유출되면 문제가 매우 커짐.
그렇기 때문에 별고의 Key 교환 알고리즘이 제공됨.
Key 교환 방식은 Diffie-Hellman, SSL 프로토콜과 같이 공개키 암호에 기반한 방법을 사용함.
또는 Kerberos와 같이 중앙기관이 키교환을 도와주는 방식을 사용.
 
 
 
 
 

비대칭키(공개키)

 

 

 

비대칭키 암호화 알고리즘 동작 과정

 

 

1. B사용자가 Private Key, Public Key를 생성.
2. A사용자와 B사용자가 서로 암호문을 주고받기 위해 사전에 B가 생성한 Public Key를 A에게 전달 
    (사실상 A이외에도 모두가 B가 생성한 Public Key를 받을 수 있음)
3. A사용자가 B사용자가 전달한 Public Key를 보관하고 있음.
4. A는 보관하고 있는 B의 Public Key를 이용해서 공개키 알고리즘을 통해 평문을 암호화 함.
5. 암호문을 B에게 전송
6. B는 받은 암호문을 기존에 보관하고 있던 Private Key로 동일한 공개키 알고리즘을 통해 복호화해서 평문을 확인함.
 
 

비대칭키 알고리즘 특징

대칭키의 기 전달에 있어서 취약점을 해결하고자 만든 방식.
공개키 암호는 한쌍의 키가 존재함.
하나는 특정 사람만이 가지는 개인키(Private Key).
다른 하나는 누구나 가질 수 있는 공개키(Public Key).
이때 공개키는 이름 그대로 모두에게 공개가 되도 보안상 전혀 문제가 안됨.
개인키로 암호화 한 정보는 그 쌍이 되는 공개키로만 복호화 가능.
공개키로 암호화 한 정보는 그 쌍이 되는 개인키로만 복호화 가능.
단점으로는 수학연산을 해서 대칭키에 비해 속도가 느림.
RSA, DSA, ECC(타원곡선) 알고리즘이 있지만 대표적으로 "RSA 알고리즘" 사용됨.
비대칭키 알고리즘은 대칭키 알고리즘에 비해 많이 느림.
 
 
 
 

Hash(단방향 암호화) 

 
위에서 알아본 대칭키, 비대칭키 암호화 알고리즘의 경우 암호화도 되고 복호화도 됨.
즉 양방향임.
하지만 Hash의 경우 암호화는 되고 복호화는 불가능함.
즉 단방향임.
Hash는 평문을 고정된 길이의 암호화된 문자열로 변경해주는 알고리즘임.
 

Hash의 특징

복호화 불가능(단방향)
Hash 알고리즘은 특정 입력 대해 항상 같은 해시 값을 리턴함. 
Hash 알고리즘을 특정 입력 대해 항상 고정된 길이의 결과값이 나옴.
Hash 알고리즘 종류에 출력값 길이가 다름. (SHA 128 : 길이가 128, SHA 256 : 길이가 256)
Hash 알고리즘을 통해 나온 값은 입력이 다른 값이지만 결과가 같을 수 있음. 
(중복이 적게 나타날 수록 좋은 Hash 함수임)

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

참고
학부생 때 기록했던 자료 및 내 머리...

 

반응형