SlideShare ist ein Scribd-Unternehmen logo
1 von 45
해시암호와 비밀번호
KUICS 장하진
For 9th KUSISWALL
2015.06.27
Who am I
• 고려대학교 정보대학 컴퓨터학과 2학년 재학생
• KUICS 회장
(http://kuics.korea.ac.kr)
목차
• 1) 개론
• 2) 해시함수
• 3) Windows 비밀번호 크래킹
• 4) Linux 비밀번호 크래킹
개론
현대암호
고대암호 vs 현대암호
고대암호
• 암호문에서 원문 유추 가능
현대암호
• 암호문에서 원문 유추 불가
ABCD
HIJK
e98b5c61c1a16
2abe3e02157d0
2a57d2
현대 암호는 수학적
원리를 바탕으로 한다.
암호화
양방향 암호화
• 암호화시킨 것을 다시 평문으
로 만들 수 있다.
• Encrytion
단방향 암호화
• 암호화시킨 것을 다시 평문으
로 복원할 수 없다.
• 비가역적
• Hashing
양방향 암호화
대칭키 암호
• 암호화 키 == 복호화 키
• 빠른 속도
• DES
• AES
• SEED
• ARIA
공개키 암호 (비대칭키)
• 암호화 키 != 복호화 키
• 느린 속도
• RSA
단방향 암호화
• 암호화를 하면 평문으로 되돌릴 수 없다.
• Hash 함수가 여기 속한다
• 해시함수란?
• 임의의 길이를 갖는 문자열을 입력 받아 고정된 길이의 해시 값을
출력하는 함수
• 역함수가 존재하지 않는다
• 디지털 세계의 지문
해시함수
루비콘 강을 건넌 데이터
해시함수
• 해시함수의 종류
• MD4, MD5, SHA1, SHA256, SHA512 등이 존재
• 해시함수의 특징
• 눈사태 효과
• 해시충돌(Collision) 발생시?
7f7eb2b2
CrackMe
X
9fc8912a
CrackME
X
≠
Hash의 예시 : “HelloHash”를 해싱하면?
• MD5
• b884835e390cca19ca121f9af942e786
• SHA1
• af46d07e711fdd8d4821de03f30b1af8e9680555bfb4c4d2f21b7
b11397648ab
• Hash 값만 가지고 원래의 값을 알 수는 없다.
해시함수의 활용
• 해시함수의 활용
• 비밀번호 DB 암호화
• 파일의 무결성 검사
• 전자서명
• 해시함수의 전제
• 충돌을 최대한 피하자!
해시 충돌
• 한 반에 30명이 있을 때, 이 중 생일이 겹치는 사람이 있을 확률?
창과 방패 1 : 브루트포싱
• 해시에서 비밀번호를 알아내고 싶다면?
• 모든 경우의 수를 일일이 대입한다 (Bruteforce)
• 시간이 오래 걸림
• Ex) 이 노트북의 CPU로 9자리 윈도우 암호를 알아내려면 한 달
이 걸린다! (싱글스레드 기준)
창과 방패 2 : 사전 공격
• 모든 경우의 수를 다 넣어보자니 시간이 너무 오래 걸린다.
• 사람들이 쓸만한 비밀번호를 추려서 넣어보자!
• 추려놓은 목록을 ‘Dictionary’라고 지칭
• 허접한(…) 비밀번호를 쓰는 사람들에게 효과적
흔한_해킹당하는_시나리오_1
• 1. A카드사가 털림
• 2. 비밀번호, 주민등록번호의 Hash 값 유출
• 3. (A카드사 曰 “비밀번호와 주민등록번호는 암호화되었으므로
안전합니다”)
• 4. 해커는 Hash에서 원래의 값을 알아내려 하지만, 너무 오래 걸려
FAIL
• 5. 개인정보는 안전하게 보호
창과 방패 3 : Rainbow Table
• 해시를 매우 빠르게 뚫을 수 있
는 궁극의 병기
• 용량이 매우 크다
• 만들 때 매우 긴 시간과 큰 용
량이 필요
• 완성되기만 하면 그 해시함수
는 무력화된다.
흔한_해킹당하는_시나리오_2
• 1. B카드사가 털림
• 2. 비밀번호, 주민등록번호의 Hash 값 유출
• 3. (B카드사 曰 “비밀번호와 주민등록번호는 암호화되었으므로
안전합니다”)
• 4. 해커는 Rainbow Table을 활용해 비밀번호와 주민등록번호를
알아낸다
• 5. 보안체계 무력화
• 6. 개인정보 == 공공재
창과 방패 4 : Salt
• 한 해시함수에 대한 레인보우 테이블의 완성은 그 해시함수의
무력화를 의미
• 하지만, 비밀번호의 길이를 인위적으로 늘려버린다면?
• 사람들이 짧은 비밀번호를 입력해도, 임의의 문자열을 덧붙인
뒤 해싱을 해 경우의 수를 크게 늘린다
SHA256(password + WjW9s34kdXSLic1)
흔한_해킹당하는_시나리오_3
• 1. C포털이 털림
• 2. 비밀번호의 Hash 값 유출
• 3. 해커는 Rainbow Table을 활용해 비밀번호 해독 시도
• 4. Salt 때문에 경우의 수가 기하적으로 증가한 상태라 이를 커
버하는 Rainbow Table을 구할 수 없다
• 5. 시간을 벌고, 그 사이 전 회원의 비밀번호를 변경해 방어 성공
Windows 비밀번호 크래킹
1998년 기술이 지금도 쓰인다!
Windows 비밀번호 크래킹
• Windows는 비밀번호 저장에 상당히 오래된 해시함수 사용
• XP까지의 Windows NT : LM Hash, NTLMv2 Hash 사용
• Vista 이후 Windows NT : NTLMv2 Hash만 사용
• Salt도 사용하지 않는다.
Windows 비밀번호 크래킹
• 목표 : NTLM Hash 추출
• 저장고 : C:WindowsSystem32ConfigSAM
• SYSKEY : C:WindowsSystem32ConfigSYSTEM
• (SYSTEMCurrentControlSetControlLsa{JD,Skew1,GBG,Data})
Inside of SAM
LM-Hash는 더 이상 사용되지 않는다
NTLM-Hash를 크래킹해야 한다
테스트 계정 비밀번호 설정
SAM / SYSTEM 추출
Windows 비밀번호 크래킹 (CPU)
Windows 비밀번호 크래킹
• BruteForce 속도를 올리는 방법 : 깡 컴퓨팅 파워
• 멀티쓰레딩 (OpenMP)
• GPGPU (CUDA / OpenCL)
• John the Ripper 를 이용한 Windows 비밀번호 크래킹은 멀티쓰레
딩은 지원하지 않지만 OpenCL은 지원한다.
Windows 비밀번호 크래킹 (OpenCL)
Windows 비밀번호 크래킹 : 종합
• 개인적으로 쓰는 컴퓨터라면, ‘빈 비밀번호’에 대한 해시를 만들어
SAM에 있는 해시랑 바꿔치기하면 비밀번호를 제거할 수 있다.
• NT Hash는 사실상 MD4 Hash -> 크래킹하기 수월한 편
• Brute Forcing을 이용한 공격 프로그램 존재 (John the Ripper)
• Rainbow Table을 이용한 공격 프로그램 존재 (Ophcrack)
Linux 비밀번호 크래킹
어서 와 5000번 뺑뺑이는 처음이지?
Linux 비밀번호 크래킹
• 리눅스는 계정정보를 두 파일에 나눠 저장한다.
• /etc/passwd : 계정 기본정보 (홈 디렉토리, 기본 쉘 등)
• /etc/shadow : 계정 보안정보 (비밀번호 해시, Salt 등)
• /etc/shadow는 root 권한이 있어야 접근 가능
Linux 비밀번호 : /etc/shadow
• [계정이름]:$[해시방식]
$[Salt]$[Hash]:[그 외]
• 해시방식
• $1 : MD5
• $5 : SHA256
• $6 : SHA512
↓ SHA512 당첨!
Linux 비밀번호 해시
• /etc/login.defs 에 암호화 방식
이랑 반복횟수가 저장됨
• 비밀번호에 Salt 붙이고,
SHA512를 5000번 돌리는 것이
최근 리눅스의 기본설정
• -> 크랙하려면 연산량이 매우
많이 필요하다
테스트 계정 비밀번호 설정
John the Ripper 크래킹 시도
John the Ripper : 실패
↓결국 중간에 중단
왜 실패했지?
• 리눅스가 비밀번호 해시를 계산하는 방법
• SHA512(SHA512(SHA512( ……. (SHA512(“비번” + Salt)) …. )))
• 아마 SHA512(“비번” + Salt) 이거 하나만 계산하고 있지 않았을까?
HashCat 크래킹 시도
HashCat : 성공
총 5억번의 SHA512 연산!
Linux 비밀번호 크래킹 : 종합
• Windows에 비해 소금기 있고 뱅글뱅글 돌리는 강력한 해시
• 리눅스는 5000번 뺑뺑이 돌린다는 걸 이해하는 프로그램을 쓰자
• 시간과 성능이 매우 많이 요구된다
• Brute Forcing을 이용한 공격 프로그램 존재 (HashCat)
오늘의 교훈
초간단 요약
오늘의 교훈 : 한 줄 요약
To 사용자
• 비밀번호는 반드시 특수문자 집어넣고 길게 설정한다.
• 주기적으로 비밀번호를 바꾼다.
To 개발자
• 비밀번호는 Hash 적용해서, 최신 해시함수를 여러 번 뺑뺑이
To 크래커
• Rainbow Table을 구축, 저장할 수 있는 공간을 확보합시다
• 아니면 GTX980 사서 GPGPU로 BruteForcing ㄱㄱ
Q & A
감사합니다

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourWAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
 
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
효과적인 NoSQL (Elasticahe / DynamoDB) 디자인 및 활용 방안 (최유정 & 최홍식, AWS 솔루션즈 아키텍트) :: ...
 
Keycloak入門-OpenID ConnectによるAPIセキュリティ
Keycloak入門-OpenID ConnectによるAPIセキュリティKeycloak入門-OpenID ConnectによるAPIセキュリティ
Keycloak入門-OpenID ConnectによるAPIセキュリティ
 
Getting Started in Pentesting the Cloud: Azure
Getting Started in Pentesting the Cloud: AzureGetting Started in Pentesting the Cloud: Azure
Getting Started in Pentesting the Cloud: Azure
 
Keeping a Secret with HashiCorp Vault
Keeping a Secret with HashiCorp VaultKeeping a Secret with HashiCorp Vault
Keeping a Secret with HashiCorp Vault
 
OpenId Connect Protocol
OpenId Connect ProtocolOpenId Connect Protocol
OpenId Connect Protocol
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
 
A Forgotten HTTP Invisibility Cloak
A Forgotten HTTP Invisibility CloakA Forgotten HTTP Invisibility Cloak
A Forgotten HTTP Invisibility Cloak
 
OpenID Connect: An Overview
OpenID Connect: An OverviewOpenID Connect: An Overview
OpenID Connect: An Overview
 
OWASP AppSecCali 2015 - Marshalling Pickles
OWASP AppSecCali 2015 - Marshalling PicklesOWASP AppSecCali 2015 - Marshalling Pickles
OWASP AppSecCali 2015 - Marshalling Pickles
 
InnoDB Locking Explained with Stick Figures
InnoDB Locking Explained with Stick FiguresInnoDB Locking Explained with Stick Figures
InnoDB Locking Explained with Stick Figures
 
Same Origin Method Execution (BlackHat EU2014)
Same Origin Method Execution (BlackHat EU2014)Same Origin Method Execution (BlackHat EU2014)
Same Origin Method Execution (BlackHat EU2014)
 
JSON Web Tokens
JSON Web TokensJSON Web Tokens
JSON Web Tokens
 
Credential store using HashiCorp Vault
Credential store using HashiCorp VaultCredential store using HashiCorp Vault
Credential store using HashiCorp Vault
 
REST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTsREST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTs
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
 
Building secure applications with keycloak
Building secure applications with keycloak Building secure applications with keycloak
Building secure applications with keycloak
 
Ch 1: Web Application (In)security & Ch 2: Core Defense Mechanisms
Ch 1: Web Application (In)security & Ch 2: Core Defense Mechanisms Ch 1: Web Application (In)security & Ch 2: Core Defense Mechanisms
Ch 1: Web Application (In)security & Ch 2: Core Defense Mechanisms
 
FIDO 생체인증 기술 개발 사례
FIDO 생체인증 기술 개발 사례FIDO 생체인증 기술 개발 사례
FIDO 생체인증 기술 개발 사례
 
Hacking Adobe Experience Manager sites
Hacking Adobe Experience Manager sitesHacking Adobe Experience Manager sites
Hacking Adobe Experience Manager sites
 

Andere mochten auch

해 싱(Hashing)
해     싱(Hashing)해     싱(Hashing)
해 싱(Hashing)
KimKyungKun
 
비밀번호 486 공인인증서와 액티브X
비밀번호 486 공인인증서와 액티브X비밀번호 486 공인인증서와 액티브X
비밀번호 486 공인인증서와 액티브X
kmhyekyung
 

Andere mochten auch (10)

PE File Format and Packer - Inc0gnito 2016
PE File Format and Packer - Inc0gnito 2016PE File Format and Packer - Inc0gnito 2016
PE File Format and Packer - Inc0gnito 2016
 
Windows Hacking 2
Windows Hacking 2Windows Hacking 2
Windows Hacking 2
 
해 싱(Hashing)
해     싱(Hashing)해     싱(Hashing)
해 싱(Hashing)
 
비밀번호 486 공인인증서와 액티브X
비밀번호 486 공인인증서와 액티브X비밀번호 486 공인인증서와 액티브X
비밀번호 486 공인인증서와 액티브X
 
모의해킹 전문가 되기
모의해킹 전문가 되기모의해킹 전문가 되기
모의해킹 전문가 되기
 
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
 
แนวข้อสอบวิชาภาษาไทย ป.2
แนวข้อสอบวิชาภาษาไทย ป.2แนวข้อสอบวิชาภาษาไทย ป.2
แนวข้อสอบวิชาภาษาไทย ป.2
 
비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명
 
초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인초보자를 위한 시스템 해킹 공부 가이드라인
초보자를 위한 시스템 해킹 공부 가이드라인
 
How Blockchain Works - 블록체인의 원리
How Blockchain Works - 블록체인의 원리How Blockchain Works - 블록체인의 원리
How Blockchain Works - 블록체인의 원리
 

Ähnlich wie 해시암호와 비밀번호 - 9th KUSISWALL

암호화 기법.Ver2
암호화 기법.Ver2암호화 기법.Ver2
암호화 기법.Ver2
Sein Jang
 
Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안
Lee Chanwoo
 

Ähnlich wie 해시암호와 비밀번호 - 9th KUSISWALL (20)

암호화 기법.Ver2
암호화 기법.Ver2암호화 기법.Ver2
암호화 기법.Ver2
 
암호의 이해
암호의 이해암호의 이해
암호의 이해
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
 
Kgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fKgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-f
 
컴퓨터개론13
컴퓨터개론13컴퓨터개론13
컴퓨터개론13
 
Network researching
Network researchingNetwork researching
Network researching
 
(130622) #fitalk the stealing windows password
(130622) #fitalk   the stealing windows password(130622) #fitalk   the stealing windows password
(130622) #fitalk the stealing windows password
 
암호화 기초
암호화 기초암호화 기초
암호화 기초
 
이더리움 기초 스터디 (암호, 스토리지)
이더리움 기초 스터디 (암호, 스토리지)이더리움 기초 스터디 (암호, 스토리지)
이더리움 기초 스터디 (암호, 스토리지)
 
Encryption
EncryptionEncryption
Encryption
 
comparing Shell dectector and NeoPI
comparing Shell dectector and NeoPIcomparing Shell dectector and NeoPI
comparing Shell dectector and NeoPI
 
Week8 code
Week8 codeWeek8 code
Week8 code
 
Blockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreBlockchain 1st bitcoin_core
Blockchain 1st bitcoin_core
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
20020418.ppt.pdf
20020418.ppt.pdf20020418.ppt.pdf
20020418.ppt.pdf
 
Passwordless society
Passwordless societyPasswordless society
Passwordless society
 
(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기
 
Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안
 
블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
 

Kürzlich hochgeladen

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Kürzlich hochgeladen (7)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 

해시암호와 비밀번호 - 9th KUSISWALL

  • 2. Who am I • 고려대학교 정보대학 컴퓨터학과 2학년 재학생 • KUICS 회장 (http://kuics.korea.ac.kr)
  • 3. 목차 • 1) 개론 • 2) 해시함수 • 3) Windows 비밀번호 크래킹 • 4) Linux 비밀번호 크래킹
  • 5. 고대암호 vs 현대암호 고대암호 • 암호문에서 원문 유추 가능 현대암호 • 암호문에서 원문 유추 불가 ABCD HIJK e98b5c61c1a16 2abe3e02157d0 2a57d2 현대 암호는 수학적 원리를 바탕으로 한다.
  • 6. 암호화 양방향 암호화 • 암호화시킨 것을 다시 평문으 로 만들 수 있다. • Encrytion 단방향 암호화 • 암호화시킨 것을 다시 평문으 로 복원할 수 없다. • 비가역적 • Hashing
  • 7. 양방향 암호화 대칭키 암호 • 암호화 키 == 복호화 키 • 빠른 속도 • DES • AES • SEED • ARIA 공개키 암호 (비대칭키) • 암호화 키 != 복호화 키 • 느린 속도 • RSA
  • 8. 단방향 암호화 • 암호화를 하면 평문으로 되돌릴 수 없다. • Hash 함수가 여기 속한다 • 해시함수란? • 임의의 길이를 갖는 문자열을 입력 받아 고정된 길이의 해시 값을 출력하는 함수 • 역함수가 존재하지 않는다 • 디지털 세계의 지문
  • 10. 해시함수 • 해시함수의 종류 • MD4, MD5, SHA1, SHA256, SHA512 등이 존재 • 해시함수의 특징 • 눈사태 효과 • 해시충돌(Collision) 발생시? 7f7eb2b2 CrackMe X 9fc8912a CrackME X ≠
  • 11. Hash의 예시 : “HelloHash”를 해싱하면? • MD5 • b884835e390cca19ca121f9af942e786 • SHA1 • af46d07e711fdd8d4821de03f30b1af8e9680555bfb4c4d2f21b7 b11397648ab • Hash 값만 가지고 원래의 값을 알 수는 없다.
  • 12. 해시함수의 활용 • 해시함수의 활용 • 비밀번호 DB 암호화 • 파일의 무결성 검사 • 전자서명 • 해시함수의 전제 • 충돌을 최대한 피하자!
  • 13. 해시 충돌 • 한 반에 30명이 있을 때, 이 중 생일이 겹치는 사람이 있을 확률?
  • 14. 창과 방패 1 : 브루트포싱 • 해시에서 비밀번호를 알아내고 싶다면? • 모든 경우의 수를 일일이 대입한다 (Bruteforce) • 시간이 오래 걸림 • Ex) 이 노트북의 CPU로 9자리 윈도우 암호를 알아내려면 한 달 이 걸린다! (싱글스레드 기준)
  • 15. 창과 방패 2 : 사전 공격 • 모든 경우의 수를 다 넣어보자니 시간이 너무 오래 걸린다. • 사람들이 쓸만한 비밀번호를 추려서 넣어보자! • 추려놓은 목록을 ‘Dictionary’라고 지칭 • 허접한(…) 비밀번호를 쓰는 사람들에게 효과적
  • 16. 흔한_해킹당하는_시나리오_1 • 1. A카드사가 털림 • 2. 비밀번호, 주민등록번호의 Hash 값 유출 • 3. (A카드사 曰 “비밀번호와 주민등록번호는 암호화되었으므로 안전합니다”) • 4. 해커는 Hash에서 원래의 값을 알아내려 하지만, 너무 오래 걸려 FAIL • 5. 개인정보는 안전하게 보호
  • 17. 창과 방패 3 : Rainbow Table • 해시를 매우 빠르게 뚫을 수 있 는 궁극의 병기 • 용량이 매우 크다 • 만들 때 매우 긴 시간과 큰 용 량이 필요 • 완성되기만 하면 그 해시함수 는 무력화된다.
  • 18. 흔한_해킹당하는_시나리오_2 • 1. B카드사가 털림 • 2. 비밀번호, 주민등록번호의 Hash 값 유출 • 3. (B카드사 曰 “비밀번호와 주민등록번호는 암호화되었으므로 안전합니다”) • 4. 해커는 Rainbow Table을 활용해 비밀번호와 주민등록번호를 알아낸다 • 5. 보안체계 무력화 • 6. 개인정보 == 공공재
  • 19. 창과 방패 4 : Salt • 한 해시함수에 대한 레인보우 테이블의 완성은 그 해시함수의 무력화를 의미 • 하지만, 비밀번호의 길이를 인위적으로 늘려버린다면? • 사람들이 짧은 비밀번호를 입력해도, 임의의 문자열을 덧붙인 뒤 해싱을 해 경우의 수를 크게 늘린다 SHA256(password + WjW9s34kdXSLic1)
  • 20. 흔한_해킹당하는_시나리오_3 • 1. C포털이 털림 • 2. 비밀번호의 Hash 값 유출 • 3. 해커는 Rainbow Table을 활용해 비밀번호 해독 시도 • 4. Salt 때문에 경우의 수가 기하적으로 증가한 상태라 이를 커 버하는 Rainbow Table을 구할 수 없다 • 5. 시간을 벌고, 그 사이 전 회원의 비밀번호를 변경해 방어 성공
  • 21. Windows 비밀번호 크래킹 1998년 기술이 지금도 쓰인다!
  • 22. Windows 비밀번호 크래킹 • Windows는 비밀번호 저장에 상당히 오래된 해시함수 사용 • XP까지의 Windows NT : LM Hash, NTLMv2 Hash 사용 • Vista 이후 Windows NT : NTLMv2 Hash만 사용 • Salt도 사용하지 않는다.
  • 23. Windows 비밀번호 크래킹 • 목표 : NTLM Hash 추출 • 저장고 : C:WindowsSystem32ConfigSAM • SYSKEY : C:WindowsSystem32ConfigSYSTEM • (SYSTEMCurrentControlSetControlLsa{JD,Skew1,GBG,Data})
  • 24. Inside of SAM LM-Hash는 더 이상 사용되지 않는다 NTLM-Hash를 크래킹해야 한다
  • 26. SAM / SYSTEM 추출
  • 28. Windows 비밀번호 크래킹 • BruteForce 속도를 올리는 방법 : 깡 컴퓨팅 파워 • 멀티쓰레딩 (OpenMP) • GPGPU (CUDA / OpenCL) • John the Ripper 를 이용한 Windows 비밀번호 크래킹은 멀티쓰레 딩은 지원하지 않지만 OpenCL은 지원한다.
  • 30. Windows 비밀번호 크래킹 : 종합 • 개인적으로 쓰는 컴퓨터라면, ‘빈 비밀번호’에 대한 해시를 만들어 SAM에 있는 해시랑 바꿔치기하면 비밀번호를 제거할 수 있다. • NT Hash는 사실상 MD4 Hash -> 크래킹하기 수월한 편 • Brute Forcing을 이용한 공격 프로그램 존재 (John the Ripper) • Rainbow Table을 이용한 공격 프로그램 존재 (Ophcrack)
  • 31. Linux 비밀번호 크래킹 어서 와 5000번 뺑뺑이는 처음이지?
  • 32. Linux 비밀번호 크래킹 • 리눅스는 계정정보를 두 파일에 나눠 저장한다. • /etc/passwd : 계정 기본정보 (홈 디렉토리, 기본 쉘 등) • /etc/shadow : 계정 보안정보 (비밀번호 해시, Salt 등) • /etc/shadow는 root 권한이 있어야 접근 가능
  • 33. Linux 비밀번호 : /etc/shadow • [계정이름]:$[해시방식] $[Salt]$[Hash]:[그 외] • 해시방식 • $1 : MD5 • $5 : SHA256 • $6 : SHA512 ↓ SHA512 당첨!
  • 34. Linux 비밀번호 해시 • /etc/login.defs 에 암호화 방식 이랑 반복횟수가 저장됨 • 비밀번호에 Salt 붙이고, SHA512를 5000번 돌리는 것이 최근 리눅스의 기본설정 • -> 크랙하려면 연산량이 매우 많이 필요하다
  • 36. John the Ripper 크래킹 시도
  • 37. John the Ripper : 실패 ↓결국 중간에 중단
  • 38. 왜 실패했지? • 리눅스가 비밀번호 해시를 계산하는 방법 • SHA512(SHA512(SHA512( ……. (SHA512(“비번” + Salt)) …. ))) • 아마 SHA512(“비번” + Salt) 이거 하나만 계산하고 있지 않았을까?
  • 40. HashCat : 성공 총 5억번의 SHA512 연산!
  • 41. Linux 비밀번호 크래킹 : 종합 • Windows에 비해 소금기 있고 뱅글뱅글 돌리는 강력한 해시 • 리눅스는 5000번 뺑뺑이 돌린다는 걸 이해하는 프로그램을 쓰자 • 시간과 성능이 매우 많이 요구된다 • Brute Forcing을 이용한 공격 프로그램 존재 (HashCat)
  • 43. 오늘의 교훈 : 한 줄 요약 To 사용자 • 비밀번호는 반드시 특수문자 집어넣고 길게 설정한다. • 주기적으로 비밀번호를 바꾼다. To 개발자 • 비밀번호는 Hash 적용해서, 최신 해시함수를 여러 번 뺑뺑이 To 크래커 • Rainbow Table을 구축, 저장할 수 있는 공간을 확보합시다 • 아니면 GTX980 사서 GPGPU로 BruteForcing ㄱㄱ
  • 44. Q & A

Hinweis der Redaktion

  1. 안녕하세요, 해시암호와 비밀번호에 대해 발표할 KUICS의 장하진입니다.
  2. 저는 고려대학교 컴퓨터학과에 2학년으로 재학 중이고, 3일 전에 KUICS의 회장이 되었습니다.
  3. 현대암호 이전의 암호는 암호문에서 원문을 유추하는 것이 가능했습니다. 하지만 현대암호는 불가능합니다. (클릭 – 오른쪽을 가리키며) 현대암호에서는 원문의 특징이 아예 사라져 버립니다. (클릭) 왜냐하면 현대암호는 수학적 원리에 기반하기 때문입니다.
  4. 양방향 암호화는, 암호문을 다시 평문으로 복호화 가능한 암호입니다. 단방향 암호화는, 암호문을 평문으로 되돌릴 수 없는 비가역적 암호화입니다. Encryption이란 용어는 양방향을 의미하고, Hashing이란 용어가 단방향을 의미한다고 생각하시면 되겠습니다.
  5. 양방향 암호는 크게 두 가지로 분류됩니다. 대칭키와 공개키입니다. 대칭키는 대칭암호, 공개키는 비대칭암호에 해당합니다. (화면 가리킴) 대칭키는 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 같습니다. 속도가 빠르지만, 키를 안전하게 주고받을 방법이 없습니다. 공개키는 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 다릅니다. 키를 주고받을 필요가 없기에 안전하지만, 속도가 비교적 느리고 암호문이 길어집니다. 따라서 SSL 같은 암호화 통신에서는 대칭키 암호에 사용할 키를 공개키 암호를 이용해 안전하게 주고받은 후, 대칭키 암호로 통신합니다. 대표적인 알고리즘으로는, 대칭키에 AES, 공개키에 RSA가 있습니다.
  6. 단방향 암호화란, 한번 암호화하면 평문으로 되돌릴 수 없는 암호기법을 말합니다. Hash 함수가 여기 해당합니다. (클릭) 해시함수는 ‘임의의 길이’를 가진 문자열을 입력 받아 ‘고정된 길이’의 해시값을 출력하는 함수입니다. 또한, 역함수가 존재하지 않아 해시에서 원래의 문자열을 복구할 수 없습니다. 이러한 특징 덕분에 해시값은 특정 문자열의 ‘지문’처럼 쓰입니다.
  7. 역사적으로 많은 Hash 함수가 개발되었으며, 왼쪽부터 먼저 개발되었고 오른쪽으로 갈수록 강력합니다. 시간이 지날수록 옛날 해시에 대한 공격이 쉬워지기 때문에, 최대한 최신의 Hash를 이용하는 것은 필수입니다. (클릭 - 그림을 가리키며) Hash 함수에 집어넣는 값이 일부만 바뀌어도 매우 다른 결과가 나오는 것을 볼 수 있습니다. 이를 눈사태 효과라고 합니다. 그런데 서로 다른 문자열을 입력했는데 같은 해시가 나오는 게 가능할까요? 비둘기집의 원리에 따라 반드시 존재합니다. 해싱가능한 문자열의 길이는 제한이 없지만 나올 수 있는 해시의 경우의 수는 제한되어 있기 때문입니다. 암호학에서는 계산적으로 충돌을 찾아내는 것이 사실상 불가능한 함수를 강한 충돌 저항성을 가진다고 표현합니다. 지금 널리 쓰이는 해시함수들도 개발될 당시, 강한 충돌 저항성을 가졌다고 인정되었기에 널리 사용되고 있습니다.
  8. HelloHash라는 문자열을 암호화해 보겠습니다. (클릭 x 2) 이 두 문자열에서 원본을 유추하기는 불가능에 가깝습니다.
  9. 해시함수는 다양한 곳에 쓰이고 있습니다. 웹서비스에서 회원을 관리할 때, 데이터베이스에 비밀번호를 그대로 저장하는 것은 해커의 칩입에 매우 위험합니다. 비밀번호를 저장할 때 양방향 암호화를 이용할 수 있지만, 암호화에 사용했던 키를 탈취당할 수 있다는 문제가 있습니다. 반면, 회원이 로그인할 때 서버가 필요한 정보는 ‘너가 가입할 때 넣었던 비밀번호랑 일치하다’ 뿐입니다. 이 일치의 대상을 ‘비밀번호의 지문’으로 바꿔도 식은 그대로 성립하죠. 따라서, 비밀번호의 지문인 해시만을 DB에 저장하고 서버에서는 해시끼리만 비교한다면 안전하게 비밀번호를 DB에 저장할 수 있습니다. 해커가 DB를 탈취해도 해시에서 원래 비밀번호를 복구할 수는 없기에 비밀번호는 이론상 안전합니다. 또한, 흑심을 품은 서버관리자가 비밀번호를 알아낼 수도 없습니다. (클릭) 이 사진은 예전 퀵스 홈페이지의 DB입니다. 제가 여러분에게 DB 덤프를 그대로 보여줘도 비밀번호 자체는 안전하죠. 해시가 활용되는 다른 분야는 파일의 무결성 검사가 있습니다. 인터넷망의 품질이 좋은 우리나라에서는 흔치 않지만, 인터넷망이 불안정한 해외의 경우 파일을 다운받다가 깨지는 경우가 종종 발생합니다. 파일의 무결성은 어떻게 감지할까요? (클릭) 홈페이지에서 제공하는 해시값을 본 뒤, 동일 알고리즘으로 다운로드받은 파일의 해시값이 이와 일치하는지 보면 됩니다. 이는 해시를 입력의 ‘지문’처럼 쓸 수 있는 것에서 착안되었습니다. 입력의 1bit만 바뀌어도 눈사태 효과로 인해 해시는 크게 바뀌기 때문에, 사람의 지문처럼 파일이 가질 수 있는 고유한 값이 되는 것입니다. 또한, 전자서명의 효율성을 위해서도 해시가 쓰입니다. 우리가 자주 접하는 공인인증서가 전자서명입니다. 전자서명은 공개키 암호화를 쓰기 때문에, 연산량이 많습니다. 그래서 한 문서에 대해 전자서명을 해야 할 때, 문서 전체에 대한 서명, 즉 공개키 연산을 하는 것은 오래 걸립니다. 그렇다면, 그 특정 문서의 고유값인 해시에 대해서만 공개키 연산을 한다면 같은 효과를 내면서 더 빠르게 처리할 수 있겠죠. 해시값에 대한 서명이 원 메시지에 대한 서명으로 인증되기 위해선 같은 해시값을 가지는 다른 메시지가 존재할 확률이 매우 낮아야 합니다. 그래야 고유한 문서에 대한 서명으로 인정될 수 있기 때문입니다. 따라서, 해시함수는 충돌이 일어날 수밖에 없는 구조이지만 충돌이 일어날 확률을 최대한 낮춰야 합니다.
  10. 해시 충돌이 자주 발생하면 해시를 더 이상 무결성 검사와 전자서명에 사용할 수 없게 됩니다. 역으로 생각하면 해시 충돌을 발견하면 이를 해킹에 충분히 활용할 수 있다는 뜻입니다. 이 문제의 답을 아시는 분? (침묵) 무려 70%입니다. 이 원리를 이용하면 만들어질 수 있는 모든 해시를 계산해보지 않아도 계산적으로 충돌을 찾을 수 있습니다. (클릭) 이 표를 보면, 128bit 해시는 10의 38승의 경우의 수를 가지지만, 이 경우의 수에 제곱근을 씌운 수인 10의 19승번 동안만 해시를 계산해보면 충돌 확률을 75%에 가까이 올릴 수 있습니다. 한 해시 함수에 대해 이 표에 적힌 경우의 수보다 빠른 충돌 공격이 발견되면 그 함수는 ‘broken’이라고 표현합니다. MD5는 상당히 전에 깨졌으며, SHA1도 몇 년 전에 깨졌습니다.
  11. (클릭) 해시에서 비밀번호를 알아내는 것은 이론상 불가능하지만, 방법이 아예 없는 건 아닙니다. (클릭) 사물함 자물쇠를 딸 때, 000부터 999까지 넣어보는 방법이 가장 간단합니다. 이는 현대암호에도 마찬가지입니다. (클릭) 하지만 이는 시간이 오래 걸립니다. (클릭) 아무리 컴퓨터가 노가다에 특화되어 있다고는 하지만, 컴퓨터를 동원해도 오래 걸리긴 마찬가지입니다.
  12. 컴퓨터로도 처리하는데 시간이 꽤 걸리는 노가다 작업이 해시 브루트포싱입니다. (클릭) 그래서 많은 사람들이 쓸 만한 비밀번호를 추려서 그것만 넣어보는 시도가 생겼습니다. 어차피 오래 걸려서 다 못 넣어보니 확률 높은 거라도 넣어보자는 의미입니다. (클릭) 그 추려놓은 목록을 DIctionary라고 부릅니다. (클릭) 1q2w3e4r, password과 같은 허접한 비밀번호를 쓰는 사람들과, 간단한 단어를 조합해 쓰는 사람들에게 효과적입니다.
  13. (클릭) 한 카드사가 해킹당한 상황을 가정해 보겠습니다. (클릭) 다행히 암호화되어 있습니다. (클릭) 뉴스에서 질리도록 들은 멘트가 나오고, (클릭) 해커는 암호를 풀지 못합니다. (클릭)
  14. 해커들도 가만히 있지는 않았습니다. (클릭) 레인보우 테이블은 해킹에 있어 궁극의 병기입니다. 다만 용량이 꽤(?) 큽니다. (클릭) 100개의 문제가 있는 시험지를 채점한다고 합시다. 조교A는 일일이 문제를 풀어보면서 채점합니다. 당연히 시간이 오래 걸립니다. 하지만 조교B는 다른 사람이 만들어 둔 해답지를 가져와 비교합니다. 순식간에 채점이 끝났습니다. 이 때, 레인보우 테이블은 해답지와 같은 존재입니다. (클릭) 어차피 해답지를 만들려면 최소 한 번은 문제를 풀어봐야 합니다. 하지만 일단 레인보우 테이블이 완성되면, 그 해시 함수는 무력화됩니다. (클릭 – 2TB를 가리키며) 이 정도의 용량을 자랑합니다. 다행으로, 모든 경우의 수를 커버하는 레인보우 테이블을 제작하는 것은 매우 긴 시간이 걸리고, 그것을 담을 수 있는 하드디스크도 존재하지 않을 정도로 용량이 매우 커집니다. 따라서 간단한 패턴에 대해서만 레인보우 테이블이 생성되어 있습니다. 그래서 비밀번호에 특수문자를 넣고, 길게 만들면 레인보우 테이블의 사정권에서 어느 정도 벗어날 수 있습니다.
  15. (클릭) 아까 열 받은 해커가 다른 카드사를 털었습니다. (클릭) 이번에도 암호화되어 있습니다. (클릭) 뉴스에서 질리도록 들은 멘트가 또 나오지만 (클릭) 해커는 레인보우 테이블을 활용해 암호를 풀어버립니다. (클릭)(클릭) 그리고 우리 개인정보는 공공재가 됩니다.
  16. 이제는 보안담당자가 열 받았습니다. 어떻게 외양간을 고쳐야 할까요? (클릭) 레인보우 테이블은 용량과 제작시간 때문에 20자리를 넘는 경우가 거의 없습니다. (클릭) 따라서, 비밀번호에 임의의 문자열을 덧붙여 길이를 인위적으로 늘린 뒤 해싱하면 레인보우 테이블의 사정권에서 확실하게 벗어날 수 있습니다. (클릭) 또한, 사용자가 거지같은 비밀번호를 사용해도 사전 공격으로부터 보호할 수 있습니다. (클릭) 이렇게요. (클릭) 새로운 회원이 가입할 때마다 임의의 SALT를 생성해 DB에 집어넣는 방식입니다. 비밀번호의 길이가 늘어나는 효과를 주기 때문에 레인보우 테이블 방어에 효과적이죠.
  17. (클릭) (클릭) 이번에는 전과 달리 마냥 당하지 않습니다. (클릭) Rainbow Table을 동원해도 salt 기법을 통해 쉽게 뚫지 못하게 막았으니까요. (클릭) 해커는 이를 뚫는데 상당한 시간을 투자해야 할 거고 (클릭) 그 사이에 비밀번호를 변경해버리면 기껏 해킹한 것이 무용지물이 됩니다. 이론을 살펴봤으니, 써먹어 봐야겠죠?
  18. Windows는 상당히 오래된 해시함수를 지금까지도 사용합니다. XP까지 쓰였던 LM 해시는 90년도 이전에 개발된 해시로, 대소문자 구분을 하지 못하고 최대 14자리의 비밀번호밖에 해싱하지 못하고, 제한된 종류의 문자만 해싱이 가능합니다. 게다가 설계상 취약점으로 인해 공격을 쉽고 빠르게 진행할 수 있습니다. 자연스레 2000년대가 되자 뚫릴 대로 뚫려버린 해시가 되었습니다. MS도 이 문제점을 알았기에 MD4에 기반한 NTLM 해시를 도입합니다. 지금의 Windows가 쓰는 NTLMv2 해시는 1998년에 발표되었으며, 만들어진 지 15년이 넘은 지금까지도 브루트포싱에 ‘어느 정도’ 버티고 있습니다. 그래서 Vista 이후 Windows의 비밀번호 크래킹은 XP 시절보다 더 어려워졌습니다. 하지만 SHA1도 공격받는 마당에, MD4 기반 해시를 뚫는 것은 쉬운 편에 속합니다.
  19. 윈도우의 비밀번호 해시는 이 경로의 SAM 파일에 저장되어 있습니다. 하지만, SAM 파일은 각 Windows 설치본의 고유 값인 SYSKEY로 암호화되어 있습니다. 그 값은 레지스트리에 저장되어 있고, 그 레지스트리는 SAM과 같은 폴더에 저장되어 있습니다. 즉, 우리가 비밀번호를 알아내기 위해 추출해야 할 파일은 이 두 개입니다. 다른 OS로 부팅해서 이 두 파일을 복사하거나, Windows의 메모리 영역에 올라와있는 데이터를 덤프뜨는 방식으로 획득할 수 있습니다.
  20. 이 NT Hash를 크래킹하는 것이 목표입니다.
  21. KUSISWALL이라는 계정을 만들어서 비밀번호를 6자리로 세팅하였습니다.
  22. 이 두 파일은 Windows가 켜진 상태에서는 정상적인 방법으로 접근이 불가능합니다. 그래서 리눅스에서 윈도우 파티션에 접근해 파일을 추출하였습니다. (동영상)
  23. John the Ripper란 프로그램을 이용해서 크래킹을 시도해보겠습니다. 직접 브루트포싱을 하는 프로그램을 만들 수는 있지만, 성능상 최적화의 차이가 크기에 전문프로그램을 쓰는 것을 권장합니다. 한 시간에 걸친 삽질 끝에 John the Ripper를 컴파일 한 직후 찍은 동영상입니다. (동영상)
  24. 브루트포싱은 가장 확실하지만 느린 공격법인데, 어떻게 속도를 올릴까요? 한번에 CPU의 여러 코어를 사용하는 멀티쓰레딩을 사용하거나, 그래픽카드를 3D 가속용으로 쓰는 대신 연산용으로 쓰는 GPGPU를 이용하면 됩니다. 알고리즘만 잘 최적화되어 있다면, GPGPU가 대부분 빠릅니다. 이 프로그램은 Windows 비번을 뚫을 때 있어 OpenCL을 지원하네요. 돌려 보겠습니다.
  25. (동영상) 오히려 늦네요. 아직 개발단계라 그런 모양입니다.
  26. 리눅스는 계정정보를 두 파일에 나눠 저장합니다. /etc/passwd에 일반적인 계정의 정보를 담고, 보안에 민감한 부분은 /etc/shadow에 담습니다. 우리가 공략할 부분은 /etc/shadow로, salt값과 해시값, 해시의 종류 등이며 이에 접근하기 위해서는 root 권한이 필요합니다. 권한이 없는 경우, 다른 OS에서 접근해서 긁는 방법을 쓰면 됩니다.
  27. shadow 파일은 다음과 같은 형태를 띠고 있는데, 이 중 해시방식을 눈여겨보시기 바랍니다. 리눅스에서 계정 비밀번호에 쓸 수 있는 최고의 해시함수, SHA512가 적용되어 있네요. 시간 좀 걸리겠습니다.
  28. login.defs 파일에 비밀번호를 저장하는 방식이 정의되어 있습니다. 여기 있는 ENCRTYPT_METHOD가 SHA512로 설정되어 있기에 shadow에 $6이 적혀 있는 거겠죠. 그리고 밑의 주석을 보면... 기본값으로 해시를 5000번 돌린다고 적혀 있습니다. 이 설정으로는 크랙하기 위해 매우 높은 성능과 매우 긴 시간이 필요합니다. 그 만큼 안전하다는 소리입니다.
  29. 윈도우처럼 kusiswall 계정을 만들어서 진행하겠습니다.
  30. 으아아아아아아아아 왜 안 되는 걸까요
  31. 리눅스는 SHA512를 5000번 뱅뱅이를 돌리는데, John the Ripper가 SHA512를 한번만 돌리는 모양 이 구조를 이해하는 다른 툴을 써보자
  32. HashCat이라는 다른 프로그램으로 시도중입니다. (중간) /etc/shadow의 마지막 줄을 긁어서 HashCat이 이해할 수 있는 형태로 바꿔줍니다. (OpenCL이 지원되는 oclHashCat을 쓰고 싶었으나 그건 Intel 내장그래픽을 지원하지 않습니다)
  33. Linux의 비밀번호는 Windows에 비해 소금기 있고 뱅뱅이를 돌려대는 매우 강력한 해시입니다. 또한, shadow의 형태를 문제 없이 이해할 수 있는 프로그램을 써야 헤매지 않겠죠. 강력한 만큼, 해킹할 때 자원이 많이 소모되고 그만큼 안전합니다. 그럼에도 불구하고, GPGPU가 달라붙으면 소요시간을 크게 줄일 수 있다는 점에 유의해야 합니다.
  34. (클릭) (To 사용자) 특수문자/길게 : 그래야 레인보우 테이블에 공격당할 확률이 낮아집니다 주기적 변경 : 뚫을 때 많은 시간이 걸리는 해시함수 특성상, 뚫는데 두 달 걸리는데 비밀번호를 한 달마다 바꾸면 해커가 포기하겠죠. (클릭) (To 개발자) 최신을 뱅뱅이 : 로그인 한번 할 때 약간의 딜레이는 문제가 없지만, 브루트포싱할 때 그 딜레이들은 티끌 모아 태산이 되고 해커에게 근심과 걱정을 안겨주게 됩니다. (클릭) (To 크래커) 레인보우 테이블 하나 만들어서 계속 써먹던가, 끝내주는 그래픽카드로 GPGPU 돌려서 뚫어야겠죠.