Category Archives: Concept

concept, knowledgeBase, architecture
프로젝트 진행에 필요한 개념을 설명합니다.

[Concept | Encription] 암호화 유형

암호화의 종류와 장단점을 정리하고 시스템 개발에 어떤 유형이 적용되는지 알아보자.


작성일 : 2017-03-04
수정일 : 2021-04-15

1> 암호화의 종류

유 형 특 징 종 류
단방향 해쉬함수 암호화키 없음 SHA, HAS-160, MD5
양방향 대칭키 블록암호 암호화키 == 복호화키 DES, AES, SEED, HIGHT
스트림암호 A5/1, A5/2, A5/3
비대칭키 암호화키 != 복호화키 RSA, EIGamal, 전자서명

2> 단방향 암호화 – 해쉬함수

① Encryption : 송신자는 해쉬함수를 이용해 평문을 암호화 한다.
② Transmit : 암호문을 수신자에게 전송한다.
③ Compare : 전송된 암호문과 저장된 암호문을 비교한다.
※ 암호문을 복호화 하는것은 불가능하다.

장점
* 암호화키를 사용하지 않으므로 공유절차 없이 보안을 유지할 수 있음
단점
* 복호화가 필요한 경우에는 사용이 불가능함
사용예
  사용자 개인정보를 암호화 하여 디비에 저장하고 인증시 암호화된 값으로만 비교

3> 양방향 암호화

3-1> 대칭키 암호화 (비밀키 암호화)

암호화 키를 생성하여 송신자(A)와 수신자(B)가 공유하는 방식.
① Create Private Key And Share : 암호화키를 생성하여 서로 공유한다.
② Encryption : 공유된 암호화키를 이용해 평문을 암호화 한다.
③ Transmit : 암호문을 수신자에게 전송한다.
④ Decryption : 공유된 암호화키를 이용해 암호문을 복호화 한다.

장점
* 암호화 연산 속도가 빨라 효율적으로 시스템 구축가능
단점
* 암호화 / 복호화를 위해 키가 공유되어야 하므로 노출되기 쉬움
* 키가 노출될 우려 때문에 개발 버전업 또는 일정 주기로 변경관리 해주어야 함
  (노출될 우려가 전혀 없다면 최초 생성된 키를 계속 사용하기도 함)

3-1-1> 블록 암호

고정된 크기의 블롣단위로 암·복호화 연산을 수행하며 각 블록의 연산에는 동일한 키가 이용된다. 전치와 환자를 반복시켜 암호화하면 평문의 통계적 성질이나 암호 키와의 관계가 나타나지 않아 안전한 암호를 구성할 수 있다.

3-1-2> 스트림 암호

이진화된 평문 스트림과 이진 키스트림 수열의 XOR 연산으로 암호문을 생성하는 방식으로 주기, 선형 복잡도 등 안전성과 관련된 수학적 분석이 가능하고 알고리즘 구현이 쉬운 특징이 있다.


3-2> 비대칭키 암호화 (공개키 암호화)

송신자(A)는 수신자(B)의 공개키(Public Key)로 암호화하여 전송하고 수신자(B)는 비밀키(Secret Key)로 복호화함.
① Create Key Pair And Share Public Key : 키쌍을 생성하고 공개키를 공유한다.
② Encryption : 공유된 공개키로 평문을 암호화 한다.
③ Transmit : 암호문을 수신자에게 전송한다.
④ Decryption : 자신만 알고있는 비밀키를 이용해 암호문을 복호화 한다.

장점
* 다른 유저와 키를 공유하지 않더라도 암호화가 가능함.
* 공개키로 누구나 암호화를 할 수는 있지만 송신자만 보유한 비밀키가 없으면 복원이 불가함.
* 연산이 많고 복잡하나 공개키와 비밀키를 활용한 광범위한 인증이 제공됨.
단점
* 수학적인 난제를 기반으로 설계되어 연산비용이 높아 효율성이 떨어짐.

4> 자세한 설명은 [KISA 홈페이지] 참조