카테고리 없음

[CS] 암호화 알고리즘

Rizingblare 2024. 5. 11. 21:31

1. 암호란?

중요한 정보를 읽기 어려운 값으로 변환하여 제3자가 볼 수 없도록 하는 기술

 

2. 암호의 구성요소

 

3. 암호가 제공하는 기능

 

  • 기밀성: 허가되지 않은 사용자는 데이터를 볼 수 없다. 노출 위험으로부터 데이터를 보호하는 기능.
  • 무결성: 데이터를 변조하는 것이 불가능하거나 변조된 데이터를 검증할 수 있다. 변조 위험으로부터 데이터를 보호하는 기능.
  • 인증: 객체의 정체성을 식별할 수 있다. 안전한 사용자인지 확인하는 기능.
  • 부인 방지: 객체가 메시지를 송신 혹은 수신했다는 사실을 부인할 수 없도록 하는 기능.

4. 암호화 알고리즘

4-1) 커크호프의 원리 (Kerkhoff’s Principle)

키를 제외한 모든 정보가 알려지더라도 안전해야 한다 - Auguste Kerckhoff, 1883

 

암호문이나 암호화되기 전의 평문, 혹은 암호화 알고리즘까지 전부 공개되더라도 키를 유추하지 못하면 안전성이 보장됨. 물론 보안이 철저히 유지된다면 좋겠지만 암호 시스템의 근본 원칙은 공격자가 키를 제외한 암호 체계 내부에서 작동되는 모든 것들을 알고 있다고 가정하는 것이다.

 

열쇠를 안전하게 관리해서 보안을 유지하는 자물쇠의 원리

 

 

4-2) 암호의 분류

 

(사진 출처: https://blog.skby.net/%EC%95%94%ED%98%B8%ED%99%94-encryption/)

 

(1) 단방향 암호

평문을 암호문으로 바꾸는 암호화는 가능하지만, 암호문을 평문으로 바꾸는 복호화는 불가능하다

대표적으로 해쉬 함수가 있다.

해시 함수는 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수다.

 

대부분의 암호화 알고리즘에는 키가 사용되지만,

해시 함수는 키를 사용하지 않으므로 같은 입력에 대해서는 항상 같은 출력이 나온다는 특징.

그리고 복호화에 대한 개념이 불필요하므로 실행 속도가 매우 빠르다.

 

보통 메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하기 위한 목적으로 사용된다.

 

대표적인 종류로 MD(Message Digest), SHA(Secure Hash Algorithm) 시리즈가 있다.

MD5는 많은 취약점이 발견되어 보안적 용도로는 거의 사용되지 않는다.

SHA가 현재 가장 많이 쓰이고 있는 알고리즘이다. 비트코인에서도 실제로 사용되고 있다.

 

충돌 및 Rainbow Table & Brute Force 공격에 취약하다는 문제점을 내포하고 있다.

임의의 문자열을 추가하는 Salt나 동일한 암호화를 여러 번 반복하는 Key Stretching의 해결방안



(2) 양방향 암호

평문을 암호문으로 바꾸는 암호화, 암호문을 평문으로 바꾸는 복호화가 모두 가능한 암호화 방식

 

1. 대칭키 암호 : 암호화와 복호화에 같은 키를 사용하는 방식

ex) Block 방식, Stream 방식

 

특징:

비대칭키 암호보다 연산량이 적고 빠름 (대용량 데이터 암호화)

기밀성 외의 기능 제공이 어렵다. 통신마다 별도의 키가 필요하기 때문에 키 관리가 어렵다.

Block 방식

블록 길이 단위로 암호화

블록의 단위 길이는 보통 키의 길이로 결정됨

길이가 맞지 않으면 키의 길이만큼 패딩 추가

DES, AES 등이 대표적이다.

 

Stream 방식

보통 1bit의 짧은 단위로 암호화

키에 XOR을 사용하여 암호화

블록 암호보다 빠르지만 안전하진 않음




2. 비대칭키 암호 : 암호화와 복호화에 서로 다른 키를 사용하는 방식

 

보통 하나의 키는 숨기고 다른 하나는 공개하는데,

숨기는 키를 비밀키, 공개하는 키를 공개키라고 부른다.

 

특징:

연산량이 많아 느리다.

 

또한 암호화 과정에서 공개키를 사용하면 공개키 암호,

반대로 암호화 과정에서 비밀키를 사용하면 전자 서명의 방식으로 분류된다.

 

공개키 암호

공개키로 암호화, 비밀키로 복호화

비밀키가 있어야 데이터를 읽을 수 있음

 

전자 서명

비밀키로 암호화, 공개키로 복호화

내가 암호화했다는 것을 증명할 수 있음.

 

대표적인 알고리즘으로 RSA 등이 있는데

RSA는 공개키 암호 알고리즘이면서 전자서명까지 가능한 최초의 알고리즘이라고 한다.