본문 바로가기

AI/보안(Security)

보안논문 - PassGAN: A Deep Learning Approach for Password Guessing 리뷰

PassGAN: A Deep Learning Approach for Password Guessing

- Review

논문URL : https://arxiv.org/pdf/1709.00440.pdf

GITHUB : https://github.com/brannondorsey/PassGAN

 

1. Intro

  • 이 논문은 17년 9월 아카이브에 올라왔고, 19년 2월 업데이트 하여 다시 아카이브에 올라왔다.
  • Password Guessing : 이 기술은 대량의 후보 PW 사전을 만들고, 이를 반복적, manually 하게 대입해보며 PW를 뚫는 기술이다.
  • 기존 기술들은 전문가가 manually하게 PW를 분석하고, 구조와 지식을 습득한 후 만든다.본 논문에서는 Password Guessing을 위해 PassGAN으로 PW 사전을 생성한다.
  • PassGan은 어떤 PW의 구조, 지식 없이 비밀번호의 분포를 잘 학습하여 기존 rule-based, SOTA 방식을 압도한다고 주장한다.

2. GAN(Generative Adversarial Network)

    GAN은 Generator와 Discriminator의 경쟁적인 학습을 통해 Data의 Distribution을 추정하는 알고리즘이다. 여기서 Data의 Distribution은 쉽게 말하면 ‘어떻게 생겨먹었는가’를 의미한다. 예를 들면, 사람 얼굴 이미지를 생성해 내는 알고리즘은 사람의 얼굴을 그럴듯하게 만들어 내기 위하여 ‘사람의 얼굴이 대충 어떻게 생겼는가’, ‘어떤 식으로 생겨야 사람 얼굴이라고 하는가’를 먼저 학습해야 할 필요가 있다. 이것을 바로 ‘사람 얼굴 이미지의 Distribution’이라고 할 수 있고, GAN은 그 것을 학습한다.

GAN의 예시

    Discriminator의 목적은 ‘진짜 Data와 Generator가 만들어낸 Data를 완벽하게 구별해 내는 것’이고, Generator의 목적은 ‘그럴듯한 가짜 Data를 만들어내서 Discriminator가 진짜와 가짜를 구별하지 못하게 하는 것’ 이다

3. PassGAN

  • Generator

PassGAN의 Generator는 아래와 같이 구성된다. Noise Input을 주었을 때, Generator가 PW를 생성하여 출력한다.

PassGAN Generator

  • Discriminator

이때, Generator가 생성한 PW를 Discriminator가 실제 PW 데이터셋과 비교하여 진짜 PW인지, 가짜 PW 인지 분류한다.

PassGAN Discriminator

이렇게 Generator와 Discriminator가 가짜 PW를 생성하고, 생성된 PW를 실제 PW들과 비교하여 구분하는 작업을 반복하여 실제 PW와 가까운 PW 분포를 학습한다.

각 Residual Block은 1d Convolution layer와 ReLU, 그리고 residual connection으로 이루어져 있다.

Residual Block

 

4. Leaked Dataset

  • RockYou dataset
    • 32,503,388개, 10자 이내로 필터링하여 29,599,680개 이용(90%)
    • 2010년 유출된 데이터로 아래 링크에서 받을 수 있다.
    • 비밀번호가 아래 그림과 같이 쪼개지지 않아서 어떤 처리를 해야하는데 나와있지 않다.
    • http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2.

RockYou dataset 예제

  • LinkedIn Dataset

60,065,486개, 10자 이내로 필터링 하여 43,354,871개 이용

    - 2010년 유출

    - https://hashes.org/leaks.php   

        - 수많은 leaked dataset을 무료로 받을 수 있다. 원하는 dataset을 검색하면 아래 그림과 같이 hash 알고리즘, 복원율, 해쉬 갯수등을 알 수 있고 다운받을 수 있다.

 

hashes.org/leaks.php 예시

5. Experiment

PassGAN과 성능비교를 위해 가장 유명한 Password Guessing tool인 JTR(John the Ripper) 와 HashCat를 사용했다. 이 툴들은 exhaustive bruteforce attacks, dictionary-based attacks, rule-based attacks, Markov-model-based attacks 등의 공격이 가능한 툴이다.

사용한 데이타셋은 LinkedIn dataset와 RockYou dataset 이다.

Experiment 1.

    PassGAN을 이용하여 5백억개의 PW를 생성했을 때, 겹치지 않는 PW는 70억개 이고, 이를 이용하여 34% 확률로 PW를 뚫을 수 있다. 근데 겹치지 않는 70억 개의 PW를 생성하여 모두 대입했을 때 34%의 확률이라면...개인적으로 5번 비번을 대입하여 틀리면 잠기는 현 상황에 의미없는 연구라고 생각된다.

Experiment 2.

    타 Password Guessing 툴들과의 비교 실험이다. 같은 성능을 내기 위하여 PassGAN은 타 알고리즘보다 1/5~1/10 만큼의 대입만 있으면 된다고 설명한다. 즉, PassGAN이 실제 PW의 분포를 잘 학습했다는 것이다.

6. 결론

  • PassGAN을 이용하여 PasswordGuessing 딕셔너리를 기존 알고리즘들보다 잘 만들었다.
  • 보안에 GAN을 적용한것은 훌륭하나 이 알고리즘의 의미가 있는가 의심스럽다.
  • 70억번의 시도를 해보는것은 현실과 맞지 않다는 생각이 든다.

7. reference

https://hyeongminlee.github.io/post/gan001_gan/

https://arxiv.org/pdf/1709.00440.pdf

https://github.com/brannondorsey/PassGAN