SW/정보보호

무차별 대입 공격(Brute Force Attack)에 대한 방어 설계

얇은생각 2018. 12. 30. 12:30
반응형

해결 방안에 대한 설계


방어 방법

1) 암호는 최소 10자리 이상을 사용.

2) 암호에 특수문자를 사용하면 더욱 좋지만 길이가 짧다면 큰 의미가 없다.

3) 무차별 공격의 경우 사전 공격을 가하기 때문에 사전 공격에 포함되는 단어들을 사용한 비밀 번호는 더욱 더 취약.

4) 사전 공격과 무차별 공격을 동시에 실행하면 단어를 몇 개 조합하는 것도 쉽게 돌파 가능

5) 영어의 경우 대문자, 한글의 경우 된소리의 자음을 섞는 방법도 효과적

6) 일정 횟수 이상 암호를 잘못 입력할 경우 계정 일시동결

7) 브루트 포스의 경우 무조건적으로 마구 대입하는 것이 아니라 비트 순서대로 대입하는 것. 따라서 아스키 코드 상에서 65인 대문자 A로 시작하는 비밀번호와 122인 소문자 z로 시작하는 비밀번호는 돌파당하는 속도가 두 배정도의 차이가 난다.

8) 이미 사용하던 비밀번호가 효과적이라면 자주 바꾸는 것은 오히려 역효과.

 


비밀번호의 효과적인 설정

위에서 알 수 있다시피 무차별 공격의 가장 효과적인 예방 방법은 사용자가 비밀번호를 복잡하고 길게 설정하는 방법이다. 미국표준기술연구소(이하 NIST)에서는 이와 관련된 연구 자료를 발표했는데, 


위 그래프는 비밀번호를 구성하고 있는 문자의 종류에 따른 엔트로피를 나타내고 있다. 그리고 이 그래프에 대한 간단한 설명을 했는데, 이는 다음과 같다.


1) The entropy of the first character is four bits.

2) The entropy of the next seven characters are two bits per character.

3) The ninth through the twentieth character has 1.5 bits of entropy per character.

4) Characters 21 and above have one bit of entropy per character.

5) A "bonus" of six bits is added if both upper case letters and non-alphabetic characters are used.

6) A "bonus" of six bits is added for passwords of length 1 through 19 characters following an extensive dictionary check to ensure the password is not contained within a large dictionary. Passwords of 20 characters or more do not receive this bonus because it is assumed they are pass-phrases consisting of multiple dictionary words.


해석을 하자면,

1) 첫 번째 문자의 엔트로피는 4비트이다.

2) 그 다음 7개까지의 엔트로피는 각 2비트이다.

3) 다음 20번째의 문자까지의 엔트로피는 각 1.5비트이다.

4) 21번째부터는 문자마다 각 1비트의 엔트로피를 가진다.

5) 만약 대문자나 알파벳 문자가 아닌 문자를 사용하는 경우 “보너스”로 6비트가 추가된다.

6) 1부터 19자리까지의 문자열 중에 대형 사전에 있는 단어가 포함되어 있지 않은 경우 “보너스”로 6비트가 추가된다.

 

요약하자면, 비밀번호를 설정할 경우 첫 번째 글자의 역할이 생각보다 중요하다는 점, 비밀번호가 길어질수록 각 문자 1개가 가지는 엔트로피의 크기는 줄어들겠지만 문자열이 늘어날수록 엔트로피가 커진다는 사실은 변함이 없으므로 비밀번호가 길수록 엔트로피가 크다는 점, 대문자나 특수문자를 사용하면 효과적이라는 점, 존재하는 단어가 아닐 경우 더 효과적이라는 점이다.

 


무차별 공격으로 예상되는 움직임을 포착했을 경우 대처 방법

무차별 공격으로 예상되는 움직임, 즉 여러 번의 비밀번호 입력 오류가 발생할 경우, 대처 방법은 다음과 같다.


1) 계정 일시 동결 방법

계정을 일시적으로 동결시켜 이메일이나 휴대전화를 통한 추가적인 본인인증 진행을 통해서만 계정의 동결상태를 해제할 수 있도록 하는 방법


2) 마우스 클릭 이벤트


3) 무작위 문자열 생성 및 입력 방법


위와 같이 간략하게 3가지 정도의 방법이 있는데, 예정의 일시 동결 같은 경우는 보안에 있어서는 매우 효과적인 방법이지만, 오히려 이를 역으로 이용하는 공격에 당할 수 있다. 예를 들면, 예전에는 경희대학교 홈페이지에 로그인을 시도할 때 5번 이상의 비밀번호 입력 오류가 발생할 경우 계정이 일시 동결되어, 이를 학교에 직접 방문하여 본인 인증을 해야만 해제할 수 있었다. 이러한 원리를 한시가 급한 수강신청 기간 동안 악용한다면 많은 학생들이 피해를 볼 수 있는 상황이 생길 수 있다. 


그러므로 간단하면서도 효과적인 방법을 통해 보안을 강화할 수 있는 방법인 3번, 무작위 문자열 생성 및 입력 방법을 이번 프로젝트에서 직접 구현하고, 무작위 공격 툴(John the Ripper)를 이용하여 직접 제작한 홈페이지의 보안성을 확인하는 과정을 진행하도록 한다.



시스템 구성 및 구현 방법


시스템 구성


1) Flowchart diagram


2) Use case diagram


3) Class diagram


4) Sequence diagram


구현 방법


1) 홈페이지 제작

홈페이지는 HTML과 CSS, 자바스크립트 등의 툴을 이용해서 제작하도록 한다.


2) 비밀번호 저장

로그인 정보인 비밀번호를 저장할 수 있는 망고DB를 사용한다. 암호화된 비밀번호를 DB에서 가져와서 해독하는 것이 아니라, 무차별적으로 대입해서 비밀번호를 알아내는 것이므로 홈페이지에서 비밀번호를 암호화시키는 과정은 생략한다.


3) 검증

John the Ripper라는 무차별 공격 툴을 사용하여 홈페이지의 보안성을 검증한다.

반응형