브루트 포스
브루트 포스 (Brute-force attack) 또는 전수 조사 공격은 가능한 모든 경우의 수를 전부 시도하여 해답을 찾는 알고리즘 또는 공격 기법이다. '무차별 대입 공격'이라고도 한다.
암호학에서는 암호 해독을 위해 가능한 모든 키를 대입해보는 방법을 예로 들 수 있으며, 알고리즘 분야에서는 특정 문제를 해결하기 위해 가능한 모든 해법을 시도해보는 것을 의미한다.
브루트 포스 공격은 일반적으로 효율적인 알고리즘이 존재하지 않거나, 알고리즘을 설계하기 어려운 경우에 사용된다. 모든 경우의 수를 검사하기 때문에 반드시 정답을 찾을 수 있다는 장점이 있지만, 경우의 수가 많아질수록 시간 복잡도가 급격히 증가한다는 단점이 있다. 따라서 현실적인 시간 내에 해답을 찾을 수 없는 경우가 많아, 다른 효율적인 알고리즘이나 휴리스틱 기법과 함께 사용되기도 한다.
브루트 포스 알고리즘의 효율성을 개선하기 위해서는 탐색 공간을 줄이거나, 병렬 처리를 활용하는 방법 등이 있다. 또한, 문제의 특성을 이용하여 불필요한 탐색을 제거하는 가지치기 (pruning) 기법을 적용할 수도 있다.