WordPress 비밀번호 보안 및 해싱
게시 됨: 2017-11-10암호는 사용자 또는 프로세스에 연결된 인증 형식입니다. 컴퓨터 시스템 또는 리소스에 대해 사용자 또는 프로세스의 ID를 확인하는 데 사용됩니다. 초연결성, IoT 장치 및 모바일의 현대적인 웹에서 암호 보안은 그 어느 때보다 심각한 주제입니다. LinkedIn, Tumblr 및 Yahoo와 같은 주요 회사에서 영향을 받는 암호 데이터베이스 유출이 항상 발생합니다. MacKeeper Security의 Bob Diachenko는 올해 초 인터넷에서 자유롭게 떠돌아다니는 5억 6천만 개의 이메일/비밀번호 목록에 대해 썼습니다!
따라서 이 기사에서는 비밀번호 및 WordPress와 관련된 세 가지 사항에 대해 설명합니다.
- 강력한 암호 생성 및 관리.
- WordPress가 암호 해싱을 수행하는 방법.
- 자신의 암호 해싱 구현.
약한 비밀번호와 강력한 비밀번호
무차별 암호 대입 복잡성 측면에서 암호 강도는 많은 논쟁의 주제이며 암호가 얼마나 강력한지에 대한 개념은 개인이 보다 강력한 컴퓨팅 리소스를 쉽게 사용할 수 있게 됨에 따라 수십 년 동안 크게 재정의되었습니다. 세계적으로 유명한 보안 전문가인 Bruce Schneier는 암호 보안과 안전한 암호를 선택하는 방법에 대해 훌륭한 게시물을 작성했습니다.
암호 강도에 대해 이야기할 때 컨텍스트와 위협 수준을 포함해야 합니다.
공격자가 귀하의 보안을 손상시키고 전체 해시된 비밀번호 목록에 액세스할 수 있는 경우보다 공격자가 귀하의 WordPress 비밀번호를 추측하려고 할 때와는 다르고 훨씬 더 어렵습니다.
첫 번째 상황에서 공격자는 짧은 시간에 너무 많은 로그인 시도로 인해 인증 서비스에 의해 빠르게 차단됩니다. 일반적으로 공격자는 피싱, 맬웨어 등과 같은 무차별 대입과 다른 수단을 통해 암호를 찾습니다. 그러나 표적이 날짜, 이름/성 등과 같은 비교적 공개된 정보를 사용하여 암호를 선택했다면 공격자가 더 쉽게 추측할 수 있습니다.
두 번째 상황에서 공격자가 암호 파일에 액세스할 수 있는 경우 특히 사용된 해시 함수가 MD5인 경우 시간 문제일 수 있습니다. 오래 전에 고장났고 불안정한 것으로 판명되었습니다. 공격자는 미리 계산된 "무지개" 테이블과 결합된 최신 하드웨어(예: GPU 보드)를 사용하여 매우 짧은 시간에 전체 암호 파일을 해독할 수 있습니다. 또한 극단적인 경우 모든 사용자의 암호가 데이터베이스의 '일반 텍스트'에 저장됩니다. 이 두 경우 모두 암호의 "강도"가 무효화됩니다.
강력한 암호를 생성하고 저장하는 방법
정기적으로 강력한 암호를 생각하려고 하는 것보다 암호 생성 및 관리를 신뢰할 수 있는 컴퓨터에 맡기는 것이 가장 좋습니다. 당신은 인간이고 필연적으로 실수를 하고 컴퓨터가 약한 선택으로 간주하는 것을 고를 것입니다.
암호 관리자를 사용하여 모든 서비스에 대한 암호를 생성 및 저장하는 것이 효율적이고 위협이 최소화됩니다. 모든 비밀번호를 한 곳에 보관한다는 생각은 불안할 수 있지만 실제로는 플러스입니다. 모든 비밀번호가 한 곳에 있다는 사실을 알고 있으면 비밀번호를 더 쉽게 보호할 수 있습니다. 쉽게 기억할 수 있지만 쉽게 추측할 수 있는 임의의 종이 조각이나 약한 암호의 순열을 더 이상 사용하지 마십시오. 또한 암호 관리자를 사용하면 번거로움 없이 강력한 암호를 생성할 수 있습니다.
가장 인기 있고 값비싼 선택은 1Password이지만 운영 체제(예: Apple의 iCloud KeyChain)에서 제공하는 것을 사용하거나 KeePass와 같은 오픈 소스 다중 플랫폼 솔루션을 사용할 수 있습니다.
워드프레스 비밀번호 해싱
암호 해싱은 일반 텍스트 암호가 해시 함수에 전달되고 긴 영숫자 값으로 변환되는 기술입니다. WordPress는 이것을 사용하여 데이터베이스에 저장하여 엿보는 눈이 WordPress 암호를 직접 읽는 것을 방지합니다. WordPress에 로그인하고 비밀번호를 보내면 해시를 계산하여 데이터베이스에 있는 것과 비교합니다. 동일하면 접근이 허용되고, 동일하지 않으면 거부됩니다. 이 방법은 특정 텍스트 문자열(이 경우 WordPress 비밀번호)이 항상 동일한 해시 값을 생성하기 때문에 작동합니다. 해시 값은 원래 텍스트로 다시 변환할 수 없기 때문에 워드프레스는 제공한 암호의 해시 값과 데이터베이스에 저장된 암호의 해시 값이 동일한 경우에만 올바른 암호를 입력했는지 알 수 있습니다.
기본적으로 WordPress wp_hash_password()
함수는 8패스 MD5 알고리즘을 사용하여 해시를 생성합니다. 그러나 MD5 는 최신 하드웨어와 엄청난 양의 미리 계산된 값을 보유하는 레인보우 테이블이라는 기술의 조합을 사용하여 성공적으로 중단되었습니다. 이를 통해 공격자는 하나의 최신 GPU에서 초당 수십억 개의 조합을 시도할 수 있습니다.
나만의 WordPress 비밀번호 해싱 구현
인스턴스화에서 튜플(16, FALSE)을 PasswordHash 개체에 전달하여 Bcrypt와 같은 다른 구현을 선택할 수 있고 선택해야 합니다. wp_hash_password()
및 wp_set_password()
) 함수는 모두 플러그 가능하므로 자체 구현을 제공할 수 있습니다. wp-includes/pluggable.php에서 찾을 수 있습니다.
Roots.io(Trellis, Bedrock 및 Sage 상용구 WordPress 시스템 뒤에 있는 사람들)는 기본 WordPress 해시 기능에 대한 bcrypt 기능을 구현하는 WordPress 플러그인도 출시했습니다.
결론
강력한 암호를 사용하고 자주 변경하려면 암호 관리자를 사용하는 것이 가장 좋습니다. 이렇게 하면 모든 암호를 한 곳에서 정리하고 변경할 때를 알려줄 수 있습니다. 암호 해싱과 관련하여 WordPress의 기본값으로 대체하는 대신 SHA-2 또는 Bcrypt와 같은 암호화 보안 알고리즘을 사용하는 것이 가장 좋습니다. 한 번의 실수로 보안 문제가 발생할 수 있으므로 자체 해시 함수를 롤링하는 것은 피하는 것이 가장 좋습니다.