독서심리지도사010-2788-3025

무식한 그리고 난폭한 공격, 브루트 포스(Brute-Force) 본문

기타정보

무식한 그리고 난폭한 공격, 브루트 포스(Brute-Force)

독서심리지도사010-2788-3025 2018. 2. 7. 21:36
SMALL

위에서 많은 비율을 차지하는 방법들에 대해서 조금씩 설명을 해 나가고 있는데요. 오늘은 '알 수 없음'을 제외한 순위에서 4위를 차지하는 브루트 포스(Brute-Force)에 대해 알아보려 합니다.

 

무식한 그리고 난폭한 공격

아무래도 보안 연구가 국내보다는 국외에서 연구가 먼저 시작되고, 오래되었다 보니 용어가 영어라는 점에서 영어로 분석할 수 있다는 것은 이해를 돕는 좋은 방법인데요. 오늘 알아볼 Brute-Force를 한 번 영어로 풀어봅시다.

 

우선 brute는 '짐승같은, 난폭한'이라는 뜻을 가지고 있습니다. force는 아시다 시피 '힘, 폭력'으로 해석되죠. 즉 Brute-force라는 단어는 '난폭한 힘, 폭력'이라 볼 수 있는데요. 암호학/보안에서는 이를 한국어로 '무차별 대입 공격'이라 부릅니다. 대충 짐작이 가시나요?

4자리의 숫자 암호를 푼다고 하면, 0000부터 9999까지의 모든 경우를 대입해보는 것이죠. 어떻게 보면 무식한, 어떻게 보면 가장 정확한 공격이라 할 수 있습니다.

 

무식해보이는 방법이지만, 실제로는 여러 알고리즘을 결합해 일일이 숫자를 대입해 보는 소위 '노가다'를 논리적이고 과학적으로 하는 방식입니다.

또한 앞에서도 말씀드린 것처럼 조합 가능한 모든 문자열을 하나씩 대입해 보는 방법으로 가장 간단하게 정확도 100%를 보장하는 방법이죠. 즉 시간적, 경제적 등의 여러 자원만 충분하다면 가장 난폭하고 위협적인 방법이라는 것입니다.

 

또한 요즘들어 컴퓨터의 성능이 매우 고속화 되고 있는 상황에서는 브루트 포스가 더 효율적인 방법으로 사용될 수 있어졌고, 병렬 작업(동시에 여러 작업이 가능한 것)이 가능한 장치들에서 완벽하게 작동한다는 점에서 무시하지 못하는 기법으로 여겨지고 있죠.

 

미션 임파서블이나 터미네이터 2처럼 어딘가에 잠입하기 위해 입력해야 되는 비밀번호를 손만한 기계로 통과하는 데 몇 초가 걸리던가요?

 

 

브루트 포스의 약점, 자원

브루트 포스는 매우 간단해 보이지만 매우 확실하고 난폭한 결과를 낳을 수 있는 방법인데요. 이를 사용하기 위해서는 충분한 자원이 주어져야 한다는 것입니다. 6자리의 숫자로 구성된 암호라고 한다면, 컴퓨터라고 하더라도 적지 않은 시간이 걸리겠죠. 또한 숫자와 영문이 섞인 '4h49fk'과 같은 암호라면 더더욱 시간이 많이 걸릴 것입니다. 때문에 시간적인 자원이 필요하게 되죠. 물론 시간적 자원이 주어지더라도 이는 유의미한 시간이어야 합니다. 1억년이 걸린다면 의미가 없을테니 말입니다.

 

또한 무식하게 모든 경우를 대입해본다는 점 때문에 매우 비효율적인 알고리즘이 될 수 있다는 점을 보완하기 위해서 경우를 예측하는 알고리즘이 필요합니다. 대표적인 간단한 예시로 사람들이 설정하기 귀찮아서 초기 상태로 사용하는 '0000', '1234', 'qwerty1234' 등과 같은 암호들을 사전에 데이터화 시켜놓고 비밀번호를 찾는 브루트 포스의 초기 자원으로 사용하는 것이죠. 이를 먼저 대입해 본 후 나머지의 경우를 생각해 보는 것입니다.

 

위 두 가지 약점은 컴퓨터의 성능이 기하급수적으로 증가한다는 무어의 법칙 덕에 어느정도 개선되고 있지만 실제로 현장에서 가장 흔하게 사용되는 AES 기반 암호화들의 경우 키를 모르는 경우 유의미한 시간 내에 암호를 풀어낼 수 없으며, AES-256의 경우 초당 100경(10^18)개의 대입을 할 수 있는 슈퍼컴퓨터도 3000극(3*10^51)년이 소비된다고 합니다.

 

즉 아주 쉬운 암호가 아니라면 브루트 포스를 사용해서 뚤리는 경우가 적어야 된다는 것인데, 글의 초반에 있는 그래프에서는 그렇지 않았죠. 이는 서버를 관리하는 사람이 무차별적인 대입을 허용해 놓은 서버를 만들어 놓았다는 실수와 여러분이 ID를 만들 때 아주 쉬운 0000과 같은 암호를 사용했다는 상황이 있기 때문입니다.

 

 

실제로 여러분은 인터넷에서 로그인을 하실 때, 5회 이상 틀리면 로그인 제한이 걸리거나, 추가로 보안 문자를 입력하라는 상황을 보신 적이 있으실 것입니다. 이런 것들이 브루트 포스의 약점인 자원을 제한하는 방어 방법입니다.

 

방어방법

 

브루트 포스는 강력한 방법이지만 여러 제약을 많이 받는다는 단점이 있습니다.

즉 다음의 사항들을 지킨다면 여러분의 실수로 브루트 포스에 당하는 일들은 거의 없을 것입니다.

 

  • 10자리 이상의 암 : 숫자만으로 암호를 구성하더라도 암호 한 자리 당 경우의 수가 10배씩 늘어나게 됩니다. 따라서 12자리인 경우 암호의 경우의 수는 10^12개이며, 영어 대소문자를 섞은 경우에는 대문자 26자, 소문자 26자, 숫자 10개, 총 62자의 문자가 사용되기 때문에 62^12개가 나오게 됩니다. 이는 슈퍼 컴퓨터를 사용하더라도 브루트 포스로는 돌파가 불가능한 암호가 됩니다.
  • 기본 암호, 단수의 단어 사용 금지 : 브루트 포스를 할 때는 잘 알려진 단어들로 패스워드로 설정하는 경우들을 먼저 찾아보는 '사전 공격(Dictionary Attack)'을 수행하는데요. 0000, 1234, password, a1b2c3, qwerty와 같은 단어를 조합해서 쓰는 것은 해커에게 브루트 포스를 당하고 싶은 사람이라고 해도 과언이 아닙니다.
LIST
Comments