어떤 비밀번호를 얼마나 오랫동안 시도해야 하는지 알고 싶으신가요? 아래에서 “파워 크리핑, 사전 공격, 마스크 공격”이라는 세 가지 방법의 원리를 설명해 드리겠습니다. 또한, 왜 서로 다른 파일 형식들이 그렇게 다양한 복잡성을 가지고 있는지, 그리고 그래픽 카드와 CPU의 처리 능력 차이에 대해서도 설명하겠습니다.
| 대비 항목 | 크랙 소프트웨어 직접 다운로드 | 우리에게 맡기세요 |
|---|---|---|
| 컴퓨팅 파워 | 대부분의 경우 내장형 그래픽만 있는 가정용 컴퓨터 | 동시에 동일한 작업을 수행하는 여러 대의 GPU 복호화 기계 |
| 비밀번호 사전 | 인터넷에서 무작위로 찾은 글이 수십만 개, 중복되고 잘못된 글이 많이 있습니다 | 수년 동안 축적되어 정리된 사전, 사용 습관에 따라 분류 |
| 해킹 전략 | 처음부터 끝까지 하나씩 열심히 노력할 뿐입니다 | 먼저 사전, 그 다음 마스크, 그 다음 전량, 다단계 전략을 층별로 추진한다 |
| 계속 달릴 수 있나요 | 컴퓨터는 계속 켜져 있어야 합니다. 종료하거나 재부팅하면 모든 노력이 낭비 | 7×24 서버에서 실행되며 컴퓨터를 끄더라도 영향을 받지 않습니다 |
| 풀리는 가능성 | 모두 운에 달려 있습니다. 비밀번호가 조금 더 길면 기본적으로 | 가장 가능성이 높은 조합을 먼저 덮어씁니다. 짧은 비밀번호는 종종 수십 분 이내에 |
| 시작 비용 | 드라이버 설치, 명령줄 구성, 오류 보고에 아무도 | 파일을 업로드하시면 결과를 알려드리겠습니다 |
비밀번호 찾기는, 가능한 모든 조합을 계속 시도하여 마지막으로 올바른 조합을 찾는 과정입니다. 시도하는 속도가 빠르고 조합의 수가 적을수록 성공할 확률이 높아집니다. 반대로, 조합의 수가 많고 각 시도에 드는 비용이 클수록 비밀번호를 찾는 것은 더욱 어려워집니다. 이 계산기 덕분에 “얼마나 많은 시도를 해야 하는지”와 “각 시도에 걸리는 시간”을 정량화할 수 있으며, 자신의 파일의 보안 상태를 직관적으로 판단할 수 있습니다. 또한, 왜 어떤 파일은 몇 분만에 열릴 수 있는 반면, 어떤 파일은 컴퓨터를 고장내도 열리지 않는지도 이해할 수 있습니다.
브루트 포스는 어떠한 선험적 지식도 필요로 하지 않으며, 단순히 문자 집합과 길이에 따라 모든 가능성을 하나씩 시도하는 방식입니다. 8비트의 순수 숫자는 1억 가지의 조합만 존재하지만, 대소문자, 숫자, 기호를 포함한 8비트 암호의 경우는 6×10¹⁴ 이상의 조합이 존재합니다. 이 방법은 ‘가장 어리석으면서도 가장 안정적인’ 방법입니다. 시간이 충분하다면, 이론상으로는 반드시 모든 조합을 시도할 수 있습니다. 하지만 문제는 조합의 수가 길이와 문자 집합의 크기에 따라 기하급수적으로 증가한다는 점입니다. 조금이라도 긴 암호의 경우, 단일 컴퓨터로는 평생 동안도 시도해도 끝나지 않을 것입니다.
대부분의 사람들은 무작위로 생성된 문자들을 비밀번호로 사용하지 않습니다. 대신, 생일, 이름, 키보드 순서 또는 흔한 단어들을 사용합니다. 사전 공격은 이러한 고빈도 비밀번호들을 사전에 정리하여, 하나씩 시도하는 방식으로 작동합니다. 보통 몇 분 안에 약한 비밀번호를 찾을 수 있습니다. 이 방법의 효율성은 순수한 폭력적인 방법보다 훨씬 높습니다. 하지만, 비밀번호가 실제로 사전에 존재해야 합니다. 강력한 무작위 비밀번호는 해결하기 어렵습니다. 우리가 수년간 축적하고 정리해온 비밀번호 사전은 바로 이러한 경우의 성공률을 높이기 위한 것입니다.
마스크 공격은 파괴적인 해킹 방식의 “슬기로운 변형”입니다. 만약 “비밀번호는 8자리이며, 첫 글자는 대문자이고, 끝은 2024”라는 조건을 기억하고 있다면, 이러한 조건들을 해킹 프로그램에 전달하여, 해당 조건을 만족하는 조합만을 생성하도록 할 수 있습니다. 원래 6×10¹⁴ 가지의 모든 가능한 조합이 몇 억 가지로 줄어들며, 시간도 “우주의 수명”에서 “몇 시간”으로 단축됩니다. 이 때문에, 작업을 제출할 때 더 많은 정보를 제공하면 성공 확률이 현저히 높아집니다.
파일은 직접 암호와 비교하는 것이 아니라, 암호로부터 계산된 “해시값”과 비교합니다. 각 암호를 시도할 때마다 프로그램은 먼저 해시 연산을 수행해야 하며, 반복 횟수가 많을수록 처리 속도가 느려집니다. 기존 형식의 보안 기능은 거의 없습니다: Office 97에서는 MD5/RC4를 사용하며, 그래픽 카드는 초당 수천 번까지 암호를 시도할 수 있습니다. 반면 Office 2013부터는 약 10만 번의 PBKDF2 반복 연산이 이루어지며, 초당 약 천 번 정도만 암호를 시도할 수 있습니다. 이는 원래 속도의 1만 배나 느립니다. PDF의 RC4는 성능이 낮고, AES는 조금 더 강력합니다. RAR5는 약 3만 번의 반복 연산이 이루어지며, RAR3보다 수십 배 느립니다. 7z는 무려 50만 번 이상의 반복 연산이 이루어지며, 일반적인 파일 형식 중에서 가장 복잡한 형태입니다. 같은 암호라도 다른 사람의 컴퓨터에서는 몇십 분이 지나야 풀릴 수 있지만, 자신이 사용하는 컴퓨터에서는 며칠이 지나도 아무런 반응이 없을 수 있습니다. 이러한 차이는 바로 여기서 발생합니다.
해시 연산은 전형적인 “대량의 반복적이고 서로 독립적인” 계산 방식으로, 그래픽 카드의 병렬 구조에 매우 적합합니다. 주류 게임용 그래픽 카드는 수천 개의 코어를 가지고 있으며, 동시에 수백만 개의 해시 값을 계산할 수 있습니다. 이는 CPU보다 수십에서 수백 배나 빠른 속도입니다. 일반 컴퓨터는 통합 그래픽 카드를 사용하거나, CPU가 모든 작업을 처리해야 하므로 속도가 매우 느립니다. 우리의 해시 연산 방법은 여러 GPU 서버가 동시에 같은 작업을 수행하는 방식이며, 추가적으로 디스크립션과 마스크 전략을 활용하여 검색 범위를 점차 줄여나갑니다. 이것이 바로 “자가로 몇 달 동안 작업을 진행하는 것”과 “몇 분 만에 결과를 얻는 것”의 차이점입니다.
따라서, 비밀번호의 길이가 한 자리씩 증가하거나 문자 집합이 한 단계씩 확장될 때마다 복구하는 데 필요한 시간은 몇 배나 증가합니다. 반면에, 더 빠른 파일 형식을 사용하거나 더 많은 비밀번호 조각을 기억한다면, 복구 시간을 상당히 줄일 수 있습니다. 위의 계산기에서는 이러한 요소들을 정량화하여 보여줍니다. 자신의 파일 유형과 비밀번호 범위를 입력하면, 각각의 컴퓨터와 우리 클러스터가 얼마나 오래 걸릴지 알 수 있습니다. 만약 결과가 실망스럽다면, 그냥 파일을 우리에게 맡겨서 시도해보세요.
비밀번호의 길이, 사용되는 문자 집합, 그리고 파일 암호화 방식에 따라 달라집니다. 8자리 숫자로는 약 1억 가지의 조합이 가능하며, 일반 컴퓨터로는 몇 시간에서 며칠이 걸려서 모든 조합을 시도할 수 있습니다. 대문자, 소문자, 숫자, 기호를 포함하는 12자리 비밀번호의 경우, 조합의 수가 10의 24제곱을 초과하므로, 아마도 수천 년이 필요할 것입니다. 이 페이지의 계산기를 사용하여 매개변수를 입력하면 즉시 추정 결과를 얻을 수 있습니다.
무작위 패스워드 해킹은 선험적인 지식에 의존하지 않으며, 모든 가능한 조합을 모두 시도합니다. 사전에 알려진 약한 패스워드 목록을 우선적으로 시도하는 사전 공격 방식은 더 효율적입니다. 마스크 공격은 무작위 패스워드 해킹 방식을 기반으로 하여, 이미 알려진 정보(예: 8자리 숫자, 대문자로 시작하는 단어 등)를 활용하여 적합한 조합만을 생성함으로써 검색 범위를 크게 줄일 수 있습니다.
왜냐하면 각각의 파일 형식에 따라 해시 연산의 횟수가 크게 차이가 나기 때문입니다. Office 97에서는 약한 MD5/RC4 알고리즘을 사용하여, 그래픽 카드는 초당 수십만 번까지 연산을 수행할 수 있습니다. 반면, Office 2013부터는 약 10만 번 정도의 연산만 이루어지며, 초당 약 1천 번 정도의 연산만 가능합니다. 이는 전반적으로 훨씬 느린 속도입니다. 7Z 형식의 경우에는 50만 번 이상의 연산이 필요하며, 이는 일반적인 파일 형식 중에서 가장 복잡한 형태입니다.
서류를 우리에게 맡기고, 가능성이 가장 높은 조합을 먼저 달리는 것이 집에서 며칠 동안 달리는 것보다 더 의미가 있다.