설계단계 보안설계 기준 - 비밀번호 관리
유형 | 보안기능 |
설계항목 | 비밀번호 관리 |
설명 | 생성규칙, 저장방법, 변경 주기 등 비밀번호 관리정책별 안전한 적용방법을 설계한다. |
보안대책 | ① 비밀번호 설정 시 한국인터넷진흥원 "비밀번호 선택 및 이용 안내서"의 비밀번호 보안지침을 적용한다. ② 네트워크로 비밀번호를 전송하는 경우 반드시 비밀번호를 암호화하거나 암호화된 통신채널을 이용해야 한다. ③ 비밀번호 저장 시, 솔트가 적용된 안전한 해시함수를 사용해야 하며 비밀번호에 대한 해시는 서버에서 실행되도록 해야 한다. ④ 비밀번호 재설정/변경 시 안전하게 변경할 수 있는 규칙을 정해서 적용해야 한다. ⑤ 비밀번호 관리 규칙을 정의해서 적용해야 한다. |
연관된 구현단계 기준 | 하드코드된 중요정보 취약한 비밀번호 허용 |
취약점 개요
사례1 : 취약한 비밀번호 사용
회원가입 시 안전한 비밀번호 생성규칙이 적용되지 않아서 취약한 비밀번호로 회원가입이 가능할 경우 무차별 대입 공격으로 비밀번호가 누출될 수 있다.
사례2 : 취약한 비밀번호 복구
비밀번호 복구 메커니즘(아이디/비밀번호 찾기 등)이 취약한 경우 공격자가 불법적으로 다른 사용자의 비밀번호를 획득, 변경, 복구할 수 있다.
사례3 : 하드코드된 중요정보
프로그램 코드 내부에 비밀번호를 하드코딩하여 내부 인증에 사용하거나 외부 컴포넌트와 통신을 하는 경우, 관리자용 계정 정보가 노출될 수 있어 위험하다. 또한, 코드 내부에 하드코드된 비밀번호가 인증실패를 발생시키는 경우, 시스템 관리자가 그 실패의 원인을 파악하기 쉽지 않다.
설계 시 고려사항
① 비밀번호 설정 시 한국인터넷진흥원 "비밀번호 선택 및 이용 안내서"의 비밀번호 보안지침을 적용한다.
② 네트워크로 비밀번호를 전송하는 경우 반드시 비밀번호를 암호화하거나 암호화된 통신채널을 이용해야 한다.
웹브라우저와 같은 클라이언트와 웹서버 간의 통신, 서버와 서버 간의 통신 등 인터넷과 같은 공중망 환경에서는 비밀번호와 같은 중요정보를 송/수신하는 경우 TLS, VPN 등과 같은 다양한 통신 암호기술을 적용할 수 있다.
시스템관리자 및 보안관리자는 TLS를 적용하거나 관련 솔루션을 도입할 때 제품이 표준에 부합하는지, 상호호환성을 보장하는지, 검증된 제품인지, 오픈소스를 이용하는지 등을 확인해야 한다.
③ 비밀번호 저장 시, 솔트가 적용된 안전한 해시함수를 사용해야 하며 비밀번호에 대한 해시는 서버에서 실행되도록 해야 한다.
비밀번호는 복호화되지 않는 일방향 해시함수를 사용해서 암호화하여 저장해야 한다.
④ 비밀번호 재설정/변경 시 안전하게 변경할 수 있는 규칙을 정해서 적용해야 한다.
(ㄱ) 비밀번호 변경
안전한 비밀번호 관리를 위해 주기적으로 비밀번호를 변경하여 비밀번호의 노출위협을 최소화하여야 한다.
사용자는 자신의 비밀번호가 제3자에게 노출되었을 경우 즉시 새로운 비밀번호로 변경해야 한다.
비밀번호 변경 시 이전에 사용하지 않은 새로운 비밀번호로 변경해야 하며, 이전의 비밀번호와 연관성이 없어야 한다.
(ㄴ) 비밀번호 재설정
비밀번호를 잊어버렸거나 분실하는 경우 비밀번호 재설정이 필요하다.
"비밀번호 찾기" 기능 구현 시 I-pin 인증, 휴대전화 인증, 질의답변 검증 등으로 비밀번호 재설정 권한을 확인하고 회원가입 시 등록된 이메일 주소를 이용하여 비밀번호 재설정할 수 있는 링크를 전송하여 사용자가 자신의 비밀번호를 재설정할 수 있도록 설계한다.
⑤ 비밀번호 관리 규칙을 정의해서 적용해야 한다.
(ㄱ) 변경주기
비밀번호는 3개월(또는 6개월)마다 주기적으로 변경하도록 한다.
(ㄴ) 만료시간 설정
일정기간 시스템 사용자에 대해서는 비밀번호 만료기간을 설정한다.
사용자 정보를 저장하는 DB 테이블에 개인정보 변경주기를 추가한 뒤 일단위로 해당 필드가 업데이트되도록 한다.
비밀번호 기간이 만료되면 로그인 시 사용자에게 비밀번호 변경을 요청하고, 비밀번호 변경 시 개인정보 변경주기를 초기화하도록 설계한다.
(ㄷ) 성공한 로그인 시간 관리
마지막으로 성공한 로그인 시간 정보를 관리해야 한다.
사용자 테이블에 마지막으로 로그인한 시간정보를 저장하고 사용자에게 알림으로써 계정도용 여부를 점검할 수 있게 한다.
진단 세부사항
요구사항 ① 비밀번호 설정 시 한국인터넷진흥원 "비밀번호 선택 및 이용 안내서"의 비밀번호 보안지침을 적용한다.
- 비밀번호 설정 규칙이 안전하게 정의되어 있는지 확인
. 길이 : 조합 규칙의 복잡도에 따라 최소 8자리 이상
. 조합 규칙 : 숫자, 영 대/소문자, 특수문자 포함
. 제한 문자열 : 전화번호, 동일 문자열 반복 제한 등
※ 상세 내용은 패스워드 선택 및 이용 안내서(한국인터넷진흥원) 참조
- 비밀번호 설정 규칙을 점검하는 테스트 계획이 수립되어 있는지 확인
요구사항 ② 네트워크로 비밀번호를 전송하는 경우 반드시 비밀번호를 암호화하거나 암호화된 통신채널을 이용해야 한다.
- 네트워크로 전송되는 비밀번호가 안전한 암호 알고리즘으로 암호화되거나, 안전한 암호화된 통신채널을 사용하도록 설계되어 있는지 확인
- 네트워크로 전송되는 비밀번호의 암호화를 점검하는 테스트 계획이 수립되어 있는지 확인
요구사항 ③ 비밀번호 저장 시, 솔트가 적용된 안전한 해시함수를 사용해야 하며 비밀번호에 대한 해시는 서버에서 실행되도록 해야 한다.
- 비밀번호 저장 또는 변경 시 솔트가 적용된 안전한 해시함수를 이용하여 암호화하도록 설계되어 있는지 확인
- 해시함수를 이용한 비밀번호 암호화가 서버에서 실행되도록 설계되어 있는지 확인
- 저장된 비밀번호의 안정성을 점검하는 테스트 계획이 수립되어 있는지 확인
요구사항 ④ 비밀번호 재설정/변경 시 안전하게 변경할 수 있는 규칙을 정해서 적용해야 한다.
- 비밀번호를 안전하게 변경할 수 있도록 설계되어 있는지 확인
- 비밀번호를 안전하게 재설정할 수 있도록 설계되어 있는지 확인
- 비밀번호 변경 또는 재설정이 안전하게 수행되는지를 점검하는 테스트 계획이 수립되어 있는지 확인
요구사항 ⑤ 비밀번호 관리 규칙을 정의해서 적용해야 한다.
- 비밀번호 변경주기, 만료기간 설정, 성공한 로그인 시간 관리를 포함하여 비밀번호 관리 규칙이 설계되어 있는지 확인
- 비밀번호 관리 규칙을 점검하는 테스트 계획이 수립되어 있는지 확인