기본 콘텐츠로 건너뛰기

추천 가젯

OpenSSL 명령어로 비대칭 암호화하기 (공개키로 암호화하고 비밀키로 복호화하기)

비대칭 암호화 암호화 키와 복호화 키가 서로 다른 비대칭 암호의 특징을 이용하여 공개키로 암호화하고 비밀키로 복호화할 수 있다. 우선 이전에 생성한 private.pem 과 public.pem 이 필요하다. 비밀키는 계속 가지고 있고, 통신을 하고자 하는 사람에게 공개키를 전달한다. 그 다음 공개키를 가진 사람이 공개키로 암호화하고, 암호화한 결과를 전달한다. 이 과정은 도청되어도 비밀키를 알아낼 수 없기에 원문을 도청자가 알아낼 수 없다. 원문 준비하기 원본은 다음과 같이 준비한다. 주로 대칭 암호화를 사용할 키를 전달할 때 공개키 암호를 보조하여 사용하므로, 여기서는 키파일을 생성하겠다. echo -n "key=" > key.txt openssl rand -hex 32 >> key.txt echo -n "iv=" >> key.txt openssl rand -hex 16 >> key.txt 그러면 key와 iv가 포함된 파일이 완성된다. 이 파일을 안전하게 전달하기 위해 암호화한다. 공개키로 암호화하기 openssl pkeyutl -encrypt -pubin -inkey [public.pem] -in [key.txt] -out encrypted.bin openssl pkeyutl : openssl에서 제공하는 low-level 공개키/개인키 연산 유틸리티인 pkeyutl 을 이용한다. -encyprt : 암호화를 한다. -pubin : 입력받을 키의 종류를 공개키로 지정한다. -inkey [입력키] : 입력받을 키를 지정한다. 암호화를 할 때는 공개키를 지정한다. 필자는 'public.pem'으로 지정하였다. -in [입력파일] : 입력파일을 지정한다. 암호화를 할 때는 원문을 지정한다. 필자는 위에서 생성한 'key.txt'로 지정하였다. -out [출력파일] : 출력파일을 지정한다. 출력된 결과는 암호문이므로 저장될 이름을 지정한다. 필자는 'e...

무차별 암호 대입 공격(Brute Force)란?

 

무차별 암호 대입 공격이란

무차별 암호 대입 공격은 여러 시도를 통해서 비밀번호나 암호화 키를 알아내는 공격이다. API 키와 SSH 로그인 정보를 해킹하는 데 무차별 암호 대입 공격이 사용된다. 무차별 암호 대입 공격은 웹사이트의  로그인 정보를 노리는 봇이지뭐.

마치 비밀번호를 돌려서 사용하는 자물쇠처럼, 0000부터 9999까지 모든 경우의 수를 대입하는 것과 같다. 지능적이 아닌 무식하게 올바른 비밀번호 조합을 찾을 때까지 다양한 문자 조합을 시도한다. 


무차별 암호 대입 공격의 장점과 단점

무차별 암호 대입 공격의 가장 큰 장점은 시간이 충분하다면 무조건 효과가 있다는 것이다. 전 세계에 존재하는 모든 비밀번호 기반 시스템과 암호화 키는 무차별 암호 대입 공격으로 해킹할 수 있다.

반면에 무차별 암호 대입 공격은 목표를 달성하기 위해 가능한 문자 조합을 모두 시도해야 하는 경우도 있기 때문에 속도가 매우 느리다 이러한 단점은 문자 개수가 증가할수록(비밀번호가 길어질수록) 커진다. 예를 들어, 4자리 자물쇠의 경우의 수는 0000부터 9999까지 총 1000개인 반면, 3자리 자물쇠는 1000개, 2자리 자물쇠는 100개이다. 만약 초당 1500만 개의 키를 무차별 대입할 때, 아래 이미지와 같이 해킹하는 데 시간을 알 수 있다. 영어 대소문자(a-Z), 숫자(0-9), 특수문자(~!@#$%^&*()_+|`-=\;':",./<>?[]{})를 모두 사용한다면 각 문자당 존재할 수 있는 경우의 수는 52+10+32 = 94이다. 비밀번호가 8글자라면 94개 (6.1 X 1010개 정도), 13글자라면 9413 (4.7 X 1025개 정도)로 커진다.

무차별 암호 대입 횟수

문자열의 길이가 충분히 길다면 무차별 대입 공격자가 비밀번호를 알아내는 데 오랜 시간이 걸린다.

무차별 암호 대입 공격을 막는 방법

인증 시스템을 개발할 때, 한 IP에서 너무 많은 로그인 실패가 발생하는 경우, fail2ban과 같은 비밀번호를 확인하는 프로그램에 지연 기능을 사용하는 등의 조치를 취할 수 있다. 우리가 웹 사이트에 로그인을 여러 번 실패할 때 10분 정도 로그인을 제한당하는 것처럼 말이다. 굳이 10분까지가 아니라 몇 초 정도만 지연시켜도 공격의 효과를 크게 떨어뜨릴 수 있다.

서비스 사용자는 더 길고 더 복잡한 비밀번호를 선택함으로써 무차별 암호 대입 공격에 대한 취약성을 줄일 수 있다. 또한 2단계 인증을 사용하고 웹 사이트마다 고유한 비밀번호를 사용할 것도 권장된다.(다른 서비스의 암호가 유출되었을 때 연쇄적인 비밀번호 유출이 발생할 수 있기 때문이다.)


댓글

가장 많이 본 글