Etc ( 기타 )/보안

password cracking이란?

노루아부지 2021. 3. 21. 01:56

회사에서 GS 인증을 받던 중, 비밀번호에 SALT를 적용해야 GS 인증을 받을 수 있다고 연락을 받아서 관련 내용을 정리해 보았습니다.

암호 SALT는 패스워드 크래킹을 방지하기 위한 가장 널리 알려진 방법입니다. 그렇다면 패스워드 크래킹이 무엇일까요?

 

password cracking

패스워드 크래킹의 목적은 컴퓨터 시스템에 무단 접근을 통해 권한을 얻거나 잊어버린 암호를 복구하기 위해 사용합니다. 해커가 시스템을 통해 해킹할 수 있도록 테스트 암호 강도를 위한 기술은 크래킹 암호를 사용하는 또 다른 이유가 될 수 있습니다. 일반적으로 반복적 작업이나 일정한 패턴, 등을 통해 알아내기도 합니다. 패스워드 크래킹은 해킹 기법 중 난이도는 낮지만 가장 강력한 공격입니다.

패스워드 크래킹의 종류는 다음과 같습니다.

 

  • password cracking: 사전 공격/사전 대입 공격(Dictionary Attack)
    • 비밀번호로 자주 사용되는 사전에 있는 단어, 키보드 자판의 배열 순서, 주민등록번호, 이름 등을 미리 사전(Dictionary) 파일로 만든 후 이를 하나씩 대입하여 비밀번호 일치 여부를 확인
    • 공격 대상의 개인정보를 안다면 효율적
  • password cracking: 무차별 공격/무작위 대입 공격(Brute Force Attack)
    • 비밀번호에 사용될 수 있는 문자열의 범위를 정하고, 그 범위 내에서 생성 가능한 모든 비밀번호를 생성하여 이를 하나씩 대입, 비밀번호 일치 여부를 확인
  • password cracking: 혼합 공격(Hybrid Attack)
    • 사전 대입 공격과 무작위 대입 공격을 혼합한 방식
    • 사전(Dictionary) 파일에 있는 문자열에 문자, 숫자 등을 추가로 무작위 대입하여 비밀번호 일치 여부를 확인
  • password cracking: 레인보우 테이블 공격(Rainbow Table Attack)
    • 레인보우 테이블 : 일반 텍스트 암호의 모든 해당 해시 값을 포함하는 테이블
    • 해시함수는 다양하며 해당 데이터를 모두 저장한다는 것은 메모리 적으로 많은 부담
    • 레인보우 테이블을 만드는 데에도 많은 시간이 소요되며 해시에 대한 알고리즘 수행 시간이 길수록 해당 테이블을 얻어내는 것 역시 아주 어려움
    • 이러한 단점을 보완하기 위해 나온 것이 R(Reduction) 함수. R 함수는 레인보우 테이블을 작은 크기로 줄이는 데 사용
    • 레인보우 테이블은 일반 텍스트 암호의 모든 해시 값을 포함하는 테이블
    • 레인보우 테이블은 입력 한 비밀번호의 해시 값을 레인보우 테이블에 저장된 값과 비교하여 사용자를 인증하는 데 사용
  • password cracking: 충돌 공격(Collision Attack)
    • 충돌이 발생하는 경우를 공격
    • 해시 함수 특성상 같은 문자의 경우 같은 해시값을 가져 충돌이 발생
    • 해시함수를 통해 무작위로 비밀번호를 입력하여 같은 해시값이 나올 때까지 반복하는 작업을 한다.
  • password cracking: 사회공학적 공격(Guessing Attack)
    • 사회공학적 공격이란 해당 사용자가 인적사항이나 행동, 실수 등을 통해 비밀번호를 알아내는 것
    • 직업이나 환경, 공통체 내의 공통적인 암호 등을 유추해내어 비밀번호를 알아내는 것

 

 

패스워드 크래킹 예방 방법

전문가들은 패스워드 크래킹에 대처하는 가장 효과적인 방법은 암호 솔팅이라고 생각합니다. 직역하면 암호에 소금을 치는 것인데 이 방법은 비밀번호를 암호화할 때 매번 다른 key를 사용하여 암호화를 진행합니다. 이렇게 하면 각 해시는 각 사용자에 대해 고유하게 됩니다.

 

암호 솔팅에는 여러가지 지침이 있는데, 그중 일부는 다음과 같습니다.

  • SALT가 너무 짧으면 해독이 쉽게 때문에 너무 짧으면 안 됩니다.
  • 사용자 이름은 쉽게 획득할 수 있으므로 SALT로 사용하면 안 됩니다.
  • 고정된 SALT. 즉, 모든 암호에 대해 동일한 SALT를 사용하면 안 됩니다.

 

 

 

 

[참고]

www.techslang.com/definition/what-is-a-rainbow-table-attack/

wiki.hash.kr/index.php/%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C_%ED%81%AC%EB%9E%98%ED%82%B9

728x90
loading