Key Derivation Functions (PBKDF2)
2년 전 부터 정보 보안에 대한 관심이 많아 지면서,
최근에 또 회사 업무로 인해 아래 암호화 알고리즘에 대해 알아보았다.
PBKDF2 라는 해쉬 컨테이너 알고리즘 이다. (Password-Based Key Derivation Function)
PBKDF2의 기본 파라미터는 다음과 같은 5개 파라미터다.
DIGEST = PBKDF2(PRF, Password, Salt, c, DLen)
- PRF: 난수(예: HMAC)
- Password: 패스워드
- Salt: 암호학 솔트 (32bit 이상 추천.. 어떤 기준??)
- c: 원하는 iteration 반복 수 (1000번 이상 추천 어떤 기준??)
- DLen: 원하는 다이제스트 길이
PBKDF2는 NIST(National Institute of Standards and Technology, 미국표준기술연구소)에 의해서
승인된 알고리즘이고, 미국 정부 시스템에서도 사용자 패스워드의 암호화된 다이제스트를 생성할 때 사용한다.
위에서 PRF라는 것이 약간 헷갈리는데, 해쉬 함수를 의미하는 것으로 보인다.
기존 많은 웹서비스들은 패스워드 저장 시, SHA-1 이나 MD5와 같은 hash 알고리즘을 이용해 DB에 저장하여, 개인 정보를 보호하였으나, 이 방법도 HW의 눈부신 발전에 의해 무차별 공격 (brute-force-attack) 에 취약해지므로, 이를 대체 하기 위한 대표적인 알고리즘이다.
오픈소스이며, 최근에 여러 웹서비스나 프로그램에서 인기있는 알고리즘으로 보임.
내가 생각한 기본적인 사용법의 이해는 아래와 같다.
디바이스 내에는 DIGEST와 Salt 가 저장될 것이며,
Password는 저장되어서는 안된다.
유저가 Password를 입력할 때마다,
저장된 salt를 이용해서 PBKDF2를 통해, Digest가 출력될 것이고,
그 놈이 저장되어 있는 Digeest와 일치하는지의 여부를 볼 것이다.
마지막으로 참고할 만한 사이트 2개를 소개합니다.
1. 위키 : http://en.wikipedia.org/wiki/PBKDF2
2. NHN개발자 사이트 : http://helloworld.naver.com/helloworld/318732
'컴퓨터공학 > Security' 카테고리의 다른 글
네트워크 보안 관련 (0) | 2017.03.23 |
---|---|
Linux 명령어와 시스템보안 (0) | 2017.03.03 |
암호화의 진화 (0) | 2017.02.17 |
인터넷 쿠키 (0) | 2017.02.17 |
정보보안관련 좋은 레퍼런스 사이트 (0) | 2016.03.03 |
악성코드를 이용한 해킹의 종류 및 대처법 (0) | 2016.02.15 |
Time Stamp와 MD5 (0) | 2013.02.04 |
자바 AES 128비트 암호화 (0) | 2013.02.04 |
문자열을 SHA-512 방식으로 암호화(단방향 암호화 방식 : 예 로그인) (0) | 2013.02.04 |
자바 데이터 암호화: DES, 3DES, AES, RSA, MD5, SHA1 (0) | 2013.02.04 |