본문 바로가기
IT 이론/정보보호

취약한 암호화 알고리즘

by 지식id 2018. 3. 18.
반응형

컴플라이언스를 하다 보면 암호화를 하되, 더불어 암호화엔 안전한 암호화 알고리즘을 사용해서 암호화 해야 한다는 말이 따라 온다. 여기서 "안전한 암호화 알고리즘"이란 무엇인가?


안전한 암호화 알고리즘이 무엇인지 명확히 말 해 줄 수 있는 사람은 없다. 난공불락이라 여겨졌던 이니그마가 튜링에 의해 정복 당하고, 일방향이라 이론적으로 매우 안전하다 여겨 널리 사용되면 해시 알고리즘도 일부 뚫렸다. 따라서 어떤 암호화 알고리즘이 안전하다고 말하기가 쉽지 않은 것이다.


그래서 일반적으론 널리 알려진 알고리즘 중 '안전하지 않다.' 내지는 '안전하지 않을 수 있다.'라고 알려진 암호화 알고리즘을 걸러내는 것을 1차적인 목표로 한다. 따라서 이 포스팅에선 안전하지 않거나, 안전하지 않을 수 있는 대표적인 알고리즘을 간단히 언급한다.



1. 자체 개발 알고리즘


자신들이 자체 개발 했다며 다른 곳에 알려지지 않은 알고리즘이라고, 그게 제일 안전하다고 착각 하는 사람들이 있다. 암호학에서 가장 위험하게 보는 케이스이다. 암호의 안전성은 암호키의 안전성에 기인한다. 암호화 알고리즘은 언제 어떻게든 노출·간파될수 있다고 봐야 한다. 나름 공들여서 개발 했을 수도 있지만, 그런 도전적인 발상보단 알려진 알고리즘을 사용하는 것이 좋다.



2. MD5


리눅스에서 패스워드를 암호화 할때 사용되는 대표적이고 널리 사용되던(그러면 안되지만 아직 널리 사용되고 있는) 알고리즘이다. 일방향 해시 알고리즘이라도 설계상 결함이 있으면 말이 일방향이지, 역방향에 대한 어느정도의 추론이 가능할 수 있다. MD5의 결함은 여러번 발견되었으며 6자리 숫자는 몇분, 16자리 문자열도 1시간 이내에 해독할 수 있는 것이 실험을 통해 확인되었다.

비밀번호와 같이 기밀성이 보장되어야 하는 곳에는 MD5를 쓰면 안된다. 노출되어도 큰 문제가 없는 무결성 검증 등에만 사용하는 것이 바람직하다.



3. SHA-1


MD5의 결함이 발견되었을 때만 해도 'MD5는 이제 그만 쓰고 안전한 SHA-1을 사용하라!'라는 말이 있었다. SHA-1은 SSL인증서에서 98%에 달하는 점유율로 사용되었던 알고리즘이고 한국인터넷진흥원에서 발간한 가이드에서 안전한 알고리즘으로 분류되었던 알고리즘이다. 

하지만 최근엔 SHA-1도 충돌 공격에 안전하지 않음이 확인되었고, 각종 인증서나 공공기관에서 사용이 금지되었다. 취약성이 경고된지는 꽤나 오래 되었지만 MD5처럼 몇분~몇시간만에 뚫을 수준은 아니었으므로 해킹에 대한 가성비가 떨어져 미뤄졌다. 그러다 점점더 효율적인 공략법이 나오기 시작하며 2017년 1월 1일을 기점으로 많은 곳에서 정책적으로 퇴출되었다.



4. DES


IBM이 개발하고, 미국에서 표준으로 지정한 대단한 알고리즘이다. 이름부터 Data Encryption Standard의 약자로, 오랜 기간동안 아주 안전한 알고리즘으로 취급 받았다. 하지만 워낙 오래된 알고리즘이고 여러 공략법들이 나와 요즘 사용하기엔 매우 취약한 알고리즘이다. DES를 보완한 3-DES(TDES)가 나왔는데, DES에 비하면 비교적 안전하지만 다른 알고리즘들에 비하면 속도는 느리고 안전성은 더 떨어지는 형국이라, DES와의 호환성이 필요한 경우에만 사용한다. 가급적 AES256이상의 알고리즘을 사용하는 것이 권고된다.



5. 보안강도 112비트 이하의 알고리즘


같은 알고리즘이더라도 키의 길이에 따라서 보안강도를 조절할 수 있는 경우가 있다. SHA-2또한 SHA-112, SHA-128, SHA-256, SHA-512등으로 골라서 쓸 수 있다. 보안강도가 112비트 이하인 것은 현재 컴퓨팅 파워의 발전 속도로 봤을 때 오래 쓸순 없을 것이라는 전망이 있다. 장기적으로 안전성이 보장 되어야 하는 경우엔 128이나 256이상의 강도가 권장된다.



결론


우선은 위 4가지 경우를 외워두고 이에 해당하는 경우가 발견되면 '안전하지 않다!'라고 해도 무방하다. 그렇지 않은 경우 AES나 ARIA, SHA-2와 같이 일반적으로 잘 알고 있는 알고리즘이면 안전하다고 판단하되, 좀 헷갈린다면 KISA나 행안부 등에서 나온 가이드를 참조해야 한다. 아래는 KISA에서 2017년에 발간한 해설서의 일부를 발췌한 것이다. 주의 할 것은 가이드가 몇년에 한번씩 개정되는 경우가 많으므로 항상 최신 가이드를 참조해야 한다는 점이다.



반응형

댓글