시큐어코딩
- home
- 보안소식
- 시큐어코딩
19. [보안 기능] 취약한 암호화 알고리즘 사용
2019.04.30 10:04
개인정보의 중요성과 그 보호 필요성이 점점 강조되고 있는 요즘, SW 개발자들은 환경설정 및 시스템에 사용되는 개인정보를 보호하기 위하여 간단한 인코딩 함수 혹은 암호 알고리즘을 사용하는 경우가 많습니다. 허나 base64와 같은 지나치게 간단한 인코딩 함수를 마치 암호 알고리즘처럼 사용하는 경우, 해당 알고리즘의 복호화가 쉽게 가능하여 암호화된 개인정보가 쉽게 누출 될 수 있는 위험 가능성이 있습니다.
개인정보를 포함한 주요 정보의 경우, 저장 뿐만 아니라 데이터 통신을 주고 받는 전달 과정에서도 그 중요성에 따라 암호화되어 통신에 사용되어야 합니다. 위 그림처럼 주요 정보를 담은 데이터는 통신과정에서 반드시 암호화를 거치게 되어 있는데, 표준화되어 있지 않은 암호화 알고리즘(예를 들면 DES, MD5 등), 또는 충분하지 않은 길이의 키 값을 사용할 경우, 공격자가 중간에서 데이터 패킷을 탈취 및 해독하는 방식으로 암호화 알고리즘을 무력화시킬 위험이 있습니다.
위 두 가지의 코드 사례는 얼핏 똑같은 코드로 보여질 수 있지만, 어떤 암호 알고리즘을 적용할 것인지에 대한 부분(12Line)에서 차이가 있습니다. DES 암호화 알고리즘의 경우, 64비트의 평문을 46비트의 암호문으로 만드는 대표적인 블록 암호 기술로서, 1975년에 당시 NBS(현재의 NIST)를 통해 발표되어 그 이후로 수많은 시스템에 사용되어져 왔지만, 현재는 IT 전반적인 HW 성능의 발전으로 빠른 시간 안에 해독이 가능하며, 더이상 안전하지 않은 암호화 알고리즘으로 알려져 있습니다.
시대 요구에 따라 더 안전한 암호화 알고리즘 개발을 위해 2001년 NIST는 공모전을 통해 새로운 암호 기술 표준은 AES(Rijndael)를 개발하였고, 이후 국내에서도 SEED 및 ARIA 등의 국내 기술을 사용한 암호화 알고리즘을 발표하여 현재까지 사용되고 있습니다. 이 외에도 많은 암호화 알고리즘을 개발 및 권장하고 있는데, 대표적인 리스트와 그 내용은 아래 그림과 같습니다.
사용하는 암호화 알고리즘과 Framework와 같은 그 시스템의 특성에 따라 적용 방법은 달라질 수 있고, 추가적으로 암호화 알고리즘의 변경 시 암복호화의 문제가 생길 수 있으므로, "취약한 암호화 알고리즘 사용" 항목에 대한 조치는 충분한 테스트 과정을 통해 시큐어코딩이 적용되어야 하며, 가급적 분석 및 설계 단계에서부터 선행되어 적용해야 하는 항목이라고 할 수 있으니, 이 점 유의 하시길 바랍니다.
지금까지 "취약한 암호화 알고리즘 사용"에 관한 항목을 살펴보았습니다. 다음 포스팅에서는 또 다른 항목과 알찬 내용으로 찾아뵙도록 하겠습니다.