워드프레스 | MD5 암호화 비크립트(bcrypt) 변경

|

개요

세계적으로 가장 많이 사용 되고 있는 워드프레스는 MD5(Message Digest 5) 라는 알고리즘을 사용하고 있습니다. 이는 1996년 설계상 결함이 발견되었고, 2004년에는 치명적인 결함이 추가로 발견되었습니다. 2006년 노트북 한대로 1분만에 해시의 결함을 찾을 수 있는 것을 발표한 자료도 있습니다.

앞으로도 MD5로 유지될 가능성이 있습니다. 워드프레스의 공식적인 이유는 모든 서버와의 호환성을 갖추려면 어쩔 수 없이 PHP 전체 버전에 포함된 암호화 체계를 선택해야 했기 때문이라고 합니다. 이는 앞으로도 유지될 가능성이 있습니다.

우리는 안정성이 입증된 암호화 방안인 비크립트(bcrypt) 를 알아보게 됩니다. PHP 5.5 이상 버전에 내장되었기에 최신 버전을 사용하는 경우 다른 작업 추가로 할 필요는 없습니다.

이 방법을 적용하기 위해 플러그인을 적용하는 방법으로 간단하게 보안적 결함을 해결할 수 있습니다. 코드로 작업을 원하시는 분은 password_hash() 함수와 password_verify() 함수를 찾아보시면 도움이 될겁니다.

해결법 1. 플러그인

image 80
워드프레스 | MD5 암호화 비크립트(bcrypt) 변경 3

무료 플러그인 중에서 이 암호화 방식을 간단하게 변경하는 오픈소스가 있습니다. 코드는 총 300줄이 넘어가지 않을 정도로 매우 간결하게 만들어져 있기에 믿을 수 있는 플러그인이라는 것을 확인했습니다.

해결법 2. wp-password-bcrypt

image 81
워드프레스 | MD5 암호화 비크립트(bcrypt) 변경 4

깃허브에는 Roots 라는 팀에서 만든 wp-password-bcrypt 플러그인을 공유하고 있습니다. 충분히 잘 만든 플러그인이며, 코드를 다운받아 적용하기만 하면 되는 간단한 인터페이스이기에 금방 활용할 수 있습니다.

작동 원리

워드프레스는 플러그형 함수(Pluggable Functions) 를 정의했습니다. 이는 핵심 기능을 재정의 할 수 있는데, 다행히 비밀번호도 다시 정의할 수 있어 작업이 수월해졌습니다. 해시 변경을 위해 아래 3가지 함수를 변경합니다.

  • wp_check_password
  • wp_hash_password
  • wp_set_password

wp_hash_password 는 PHP 상의 password_hash 기능을 연결합니다.

wp_check_password 는 기본값인 MD5 대신 새로 값을 정의하여 호출합니다. 여기서는 사용자의 암호가 기존의 MD5 로 해시되어있는지 체크하고, bcrypt로 다시 해시합니다.

wp_set_password 는 해시를 반환하는 기능을 추가합니다.

해시는 플러그인을 활성화 한 다음 유저가 로그인 할 때 변경됩니다.

PHP 5.5 이상을 사용하는 경우 bcrypt로 해시되고 나서 이 플러그인을 제거한다고 해도 사이트는 정상 작동 됩니다. 그 이유는 워드프레스 내부 코드에 이미 crypt를 사용한 해시를 체크할 수 있도록 설계되어 있기 때문입니다

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다