각진 세상에 둥근 춤을 추자

암호 키 생성 방식 본문

보안

암호 키 생성 방식

circle.j 2024. 9. 5. 11:04
암호키 생성 과정

 

1. 사용자 입력: 사용자가 저장하고자 하는 정보, 예를 들어 '12345'를 입력한다.

2. 데이터 전송: 사용자는 입력한 정보를 서버로 전송한다. 이때 전송되는 정보는 원본 '12345'이다.

3. 서버 암호화 처리: 서버는 수신한 원본 데이터 암호화 작업을 진행한다. 암호화 알고리즘을 통해 '12345'를 보안성이 높은 형태(예시: '$%^#@!@#!')로 변환한다.

4. 암호화된 데이터 저장: 서버는 암호화된 값을 생성한 후, 해당 암호화된 값과 사용자를 식별할 수 있는 식별자를 함께 데이터베이스로 전송한다.

5. 데이터베이스 저장: 데이터베이스는 암호화된 값과 사용자 식별자를 저장한다. 

 


암호키 생성 방식

 

1. 난수발생기(Random Big Generator, RGB)를 사용하여 키를 생성 

2. 비대칭키 알고리즘의 키 생성

3. 대칭키 알고리즘의 키 생성

 


암호키 생성 방식 - 1. 난수발생기(Random Big Generator, RGB)를 사용하여 키를 생성 

 

- RGB는 일정한 규칙 없이 난수를 생성하며 주로 대칭키, 비대칭키 모두에 사용된다.
- 장점: 키가 완전히 무작위로 생성되므로, 예측이나 분석이 어렵다.
- 단점: 난수 생성이 불안정하거나, 강력하지 않을 시 보안에 취약하다. 


암호키 생성 방식 -  2. 비대칭키 알고리즘의 키 생성

 

- 공개키(Public Key)와 개인키(Private Key)라는 두 개의 키를 사용하는 방식이다.
- 공개키: 누구나 접근 가능한 키로 데이터를 암호화하는 데 사용한다.
- 개인키: 비밀로 유지되며, 암호화된 데이터를 복호화하는 데 사용한다. 
- 장점: 공개키를 사용하여 안전하게 데이터를 공유할 수 있으며, 개인키로만 복호화할 수 있어 안전하다.
- 단점: 키 길이가 길고, 암/복호화 속도가 느린 편이다. 

비대칭키 알고리즘의 키 생성 방법으로는 디지털 서명을 위한 키 쌍 생성, 키 설정을 위한 키 쌍 생성 등이 있다. 

 

(1) 디지털 서명을 위한 키 쌍 생성 

디지털 서명 방식에서는 비대칭키 알고리즘을 이용하여 개인키로 데이터를 서명하고, 공개키로 서명을 검증하는 구조이다.

RSA (Rivest-Shamir-Adleman) RSA는 가장 널리 사용되는 비대칭키 알고리즘이다. 
주로 암호화와 디지털 서명에 사용된다.
DSA (Digital Sigature Algorithm) 미 정부 디지털 서명을 위한 표준 알고리즘으로 채택되었다. 
DSA는 공개키 암호화 방식의 일종으로 서명에 특화되어 있다. 
(키 쌍이 서명에만 사용되며, 데이터 암호화에는 사용되지 않는다.)
ECDSA (Elliptic Curve Digital Signature Algorithm) 타원 곡선 암호 알고리즘을 기반으로 한 디지털 서명 알고리즘이다.
RSA와 DSA에 비해 짧은 키 길이로 동일한 수준의 보안성을 제공한다. 

 

(2) 키 설정을 위한 키 쌍 생성

키 설정(Key Establishment)은 대칭키를 안전하게 설정하는 과정을 의미한다. 
키 설정에는 두 가지 주요 방식이 있다. 

키 교환: A가 대칭키를 생성하고 B의 공개키로 암호화한 후 대칭키를 전송. B는 자신의 개인키로 이를 복호화하여 대칭키를 얻는다. 

키 합의: A와 B가 서로의 공개키를 교환한 후, 각자의 개인키와 상대방의 공개키를 이용해 같은 대칭키를 계산한다.


암호키 생성 방식 -  3. 대칭키 알고리즘의 키 생성

 

- 암호화와 복호화에 동일한 키를 사용하는 방식이다.
- 장점: 비대칭키 방식에 비해 처리 속도가 빠르고 구현이 간단하다.
- 단점: 동일한 키를 양쪽에서 공유해야 하므로 키가 노출될 경우 보안에 취약하다. 

 

(1) 난수발생기의 출력을 암호키로 사용
- 난수발생기를 사용하여 예측 불가능한 암호키를 생성하는 방식이다. 

(2) 미리 공유된 키를 이용한 키 유도 
- 이미 양쪽에서 공유된 키가 있을 때, 그 키를 기반으로 추가적인 암호키를 유도하는 방식이다. 
- 키 유도 함수(Key Derivation Function, KDF)를 사용하여 기존 키로부터 새로운 키를 생성한다. 

(3) 패스워드를 이용한 키 유도
- 사용자가 입력한 패스워드를 기반으로 암호키를 유도하는 방식이다. 
- 패스워드 자체는 키로 사용되기에 불안정하므로, 이를 보완하기 위해 해시 함수나 키 유도 함수 (PBKDF2, bcrypt, scrypt 등)을 사용하여 안전한 키를 생성한다. 

(4) 다수의 암호키를 이용한 키 생성
- 여러 개의 암호키를 조합하거나 섞어서 새로운 암호키를 생성한다. 




출처 및 참고: https://www.kisa.or.kr/2060305/form?postSeq=10&page=1

 

KISA 한국인터넷진흥원

 

www.kisa.or.kr