암호화의 종류와 장단점을 정리하고 시스템 개발에 어떤 유형이 적용되는지 알아보자.
작성일 : 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 홈페이지] 참조