가. 취약점 개요
사례1 : 취약한 비밀번호 사용
회원가입 시 안전한 비밀번호 생성규칙이 적용되지 않아서 취약한 비밀번호로 회원가입이 가능할 경우 무차별 대입 공격으로 비밀번호가 누출될 수 있다.
사례2 : 취약한 비밀번호 복구
비밀번호 복구 메커니즘(아이디/비밀번호 찾기 등)이 취약한 경우 공격자가 불법적으로 다른 사용자의 비밀번호를 획득, 변경, 복구할 수 있다.
사례3: 하드코드된 중요정보
프로그램 코드 내부에 비밀번호를 하드 코딩하여 내부 인증에 사용하거나 외부 컴포넌트와 통신을 하는 경우, 관리자용 계정 정보가 노출될 수 있어 위험하다. 또한, 코드 내부에 하드코드된 비밀번호가 인증실패를 발생시키는 경우, 시스템 관리자가 그 실패의 원인을 파악하기 쉽지 않다.
나. 설계시 고려사항
① 비밀번호 설정 시 한국인터넷진흥원의 『패스워드 선택 및 이용 안내서』의 안전한 비밀번호 생성규칙을 적용한다.
• 두 종류 이상의 문자 구성과 8자리 이상의 길이로 구성된 문자열
※ 문자 종류는 알파벳 대·소문자, 특수문자, 숫자 등 4가지
• 10자리 이상의 길이로 구성된 문자열
※ 숫자로만 구성할 경우 취약할 수 있음
② 네트워크로 비밀번호를 전송하는 경우 반드시 비밀번호를 암호화하거나 암호화된 통신 채널을 이용해야 한다.
웹브라우저와 같은 클라이언트와 웹서버 간의 통신, 서버와 서버 간의 통신 등 인터넷과 같은 공중망 환경에서는 비밀번호와 같은 중요정보를 송·수신하는 경우 보호대책이 필요하다. 이러한 보호대책으로 TLS, VPN 등과 같은 다양한 통신 암호기술을 적용할 수 있다. 시스템관리자 및 보안관리자는 TLS를 적용하거나 관련 솔루션을 도입할 때 제품이 표준에 부합하는지, 상호호환성을 보장하는지, 검증된 제품인지, 오픈소스를 이용하는지 등을 확인해야 한다.
③ 비밀번호 저장 시, 솔트가 적용된 안전한 해시함수를 사용해야 하며, 해시는 서버에서 실행되도록 해야 한다.
비밀번호는 복호화 되지 않는 일방향 해시함수를 사용해서 암호화하여 저장해야 한다.
[테스트 문제]
문제: 안전한 비밀번호 생성규칙
• 두 종류 이상의 문자 구성과 10자리 이상의 길이로 구성된 문자열
정답: X
해설: 두 종류 이상의 문자 구성과 8자리 이상의 길이로 구성된 문자열
문제: 사용자 패스워드 저장 시, SHA256 이상의 안전한 해시함수를 사용하고 해시함수의 실행을 서버에서 한다면 안전하게 암호화를 적용한 것이다.
정답: X
해설: 솔트에 대한 내용이 없다.
사 용자 패스워드 저장 시, 솔트를 적용해야하며 SHA256 이상의 안전한 해시함수를 사용하고 해시함수의 실행을 서버에서 한다면 안전하게 암호화를 적용한 것이다.
문제: 보안대책을 서술하시오.
정답:
① 패스워드 복잡도 검증
- 두 종류 이상의 문자 구성과 8자리 이상의 길이로 구성된 문자열(숫자, 영 대,소문자, 특수문자 포함)
② 비밀번호 전송 시 암호화 또는 암호화된 통신 채널
③ 비밀번호 저장 시 솔트 적용한 해시함수 사용
④ 비밀번호 재설정/변경 시 안전하게 적용
⑤ 비밀번호 관리 규칙
- 만료/변경 기간(3개월 ~ 6개월)
문제: 빈칸을 채우시오.
나. 설계시 고려사항
① 비밀번호 설정 시 한국인터넷진흥원의 『패스워드 선택 및 이용 안내서』의 안전한 비밀번호 생성규칙을 적용한다.
• (ㄱ) 종류 이상의 문자 구성과 (ㄴ)자리 이상의 길이로 구성된 문자열
※ 문자 종류는 알파벳 대·소문자, 특수문자, 숫자 등 4가지
• (ㄷ)자리 이상의 길이로 구성된 문자열
※ 숫자로만 구성할 경우 취약할 수 있음
② 네트워크로 비밀번호를 전송하는 경우 반드시 비밀번호를 (ㄹ)하거나 (ㄹ)된 통신 채널을 이용해야 한다.
웹브라우저와 같은 클라이언트와 웹서버 간의 통신, 서버와 서버 간의 통신 등 인터넷과 같은 공중망 환경에서는 비밀번호와 같은 중요정보를 송·수신하는 경우 보호대책이 필요하다. 이러한 보호대책으로 (ㅁ), (ㅂ) 등과 같은 다양한 통신 암호기술을 적용할 수 있다. 시스템관리자 및 보안관리자는 (ㅁ)를 적용하거나 관련 솔루션을 도입할 때 제품이 표준에 부합하는지, 상호호환성을 보장하는지, 검증된 제품인지, 오픈소스를 이용하는지 등을 확인해야 한다.
③ 비밀번호 저장 시, (ㅂ)가 적용된 안전한 해시함수를 사용해야 하며, 해시는 (ㅅ)에서 실행되도록 해야 한다.
비밀번호는 복호화 되지 않는 일방향 해시함수를 사용해서 암호화하여 저장해야 한다.
정답
ㄱ: 2
ㄴ: 8
ㄷ: 10
ㄹ: 암호화
ㅁ: TLS, VPN
ㅂ: 솔트
ㅅ: 서버
비밀번호 관리 | |
보안기능 | 하드코드된 중요정보 |
보안기능 | 취약한 비밀번호 허용 |