보안/SW보안약점 진단원

[설계보안] 보안기능-비밀번호 관리

re-bugger 2022. 6. 24. 23:07

분류: 보안기능 / 하드코드된 중요정보, 취약한 비밀번호 이용

가. 항목명

비밀번호 관리

나. 취약점 설명

취약한 비밀번호 사용: 회원가입 시 안전한 비밀번호 생성규칙이 적용되지 않아 무차별 대입 공격으로 비밀번호가 누출되는 취약점

취약한 비밀번호 복구: 비밀번호 복구 메커니즘(아이디/비밀번호 찾기 등)이 취약하여 불법적으로 비밀번호 획득, 변경, 복구하는 취약점

하드코딩된 중요정보: 프로그램 코드 내부에 비밀번호를 하드 코딩하여 내부 인증에 사용하거나 외부 컴포넌트와 통신하는 경우 관리자 계정정보가 노출될 수 있는 취약점

다. 보안대책

① KISA "비밀번호 선택 및 이용 안내서"의 비밀번호 보안 지침 적용

② 네트워크로 비밀번호 전송하는 경우 반드시 비밀번호 암호화하거나 암호화된 통신 채널 이용

③ 비밀번호 저장 시, 솔트 적용한 안전한 해쉬 함수 사용

④ 비밀번호 재설정/변경 시 안전하게 변경할 수 있는 규칙 정의

라. 설계시 고려사항

① KISA "비밀번호 선택 및 이용 안내서"의 비밀번호 보안 지침 적용

  • 두 종류 이상의 문자 구성과 8자리 이상의 길이로 구성된 문자열
  • 10자리 이상의 길이로 구성된 문자열
  • 문자 종류는 알파벳 대/소문자, 특수문자, 숫자

② 네트워크로 비밀번호 전송하는 경우 반드시 비밀번호 암호화하거나 암호화된 통신 채널 이용

  • TLS, VPN 등 과 같은 다양한 통신 암호화 기술을 적용

③ 비밀번호 저장 시, 솔트 적용한 안전한 해쉬 함수 사용

  • 솔트가 적용된 안전한 암화 해시함수 사용하며 해시는 서버에서 실행
★ 일방향 해시 함수
수학적인 연산으로 원본 메시지를 변환하여 암호화된 메시지 '다이제스트' 를 생성한다.
원본 메시지를 알면 암호화된 메시지를 구현하기 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없어야 하며 이를 '일방향성' 이라고 한다.

솔트는 일방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열이다.
솔트와 비밀번호의 다이제스트를 데이터베이스에 저장하고, 사용자가 로그인할 때 입력한 비밀번호를 해시하여 일치 여부를 확인한다. 
솔트 길이는 32바이트 이상이어야 한다.

④ 비밀번호 재설정/변경 시 안전하게 변경할 수 있는 규칙 정의

  • 비밀번호 변경
    • 주기적으로 비밀번호 변경
    • 변경 시 이전에 사용하지 않은 새로운 비밀번호로 변경
  • 비밀번호 재설정
    • '비밀번호 찾기' 기능 구현 시 i-pin 인증, 휴대폰 인증, 질의답변 검증 등 재설정 권한을 확인한 후 등록된 이메일로 재설정 링크 전송
  • 비밀번호 관리(규칙 정의)
    • 변경주기: 3개월(또는 6개월) 주기 변경
    • 만료기간 설정
    • 성공한 로그인시간 관리

마. 진단기준 및 세부사항

① KISA "비밀번호 선택 및 이용 안내서"의 비밀번호 보안 지침 적용

  • 비밀번호 설정 규칙 정의 시 "문자구성 및 길이조건", "특정정보 이용 및 패턴 조건" 등 과 같은 안전한 비밀번호 설정 규칙 설계

② 네트워크로 비밀번호 전송하는 경우 반드시 비밀번호 암호화하거나 암호화된 통신 채널 이용

  • 네트워크로 비밀번호가 전송되는 기능 분류
  • 비밀번호를 암호화된 통신채널로 이용하여 전송하는지 확인

③ 비밀번호 저장 시, 솔트 적용한 안전한 해쉬 함수 사용

  • 비밀번호 암호화하기 위해 SHA-2 계열(SHA-224, SHA-256, SHA-384, SHA-512)의 해시함수 사용
  • 솔트값(랜덤하게 사용) 사용
  • 솔트값은 데이터 암/복호화에 사용되는 암호키를 저장되는 장소에 저장
  • 일방향 암호를 서버에서 수행

④ 비밀번호 재설정/변경 시 안전하게 변경할 수 있는 규칙 정의

  • 비밀번호 변경 시 기존 비밀번호 확인
  • 재설정 시 안전한 본인인증 절차 ( 휴대폰, I-Pin, 공인인증서, 신용카드인증 등)
  • 비밀번호 재설정 페이지 연결 시 이메일 사용

 

바. 안전한 보안설계의 예

No 요구사항명 해결방안 검수기준 비고
1 DB사용자 계정에 최소권한 부여 애플리케이션에서 사용하는 DB 사용자 계정은 애플리케이션에서 사용하는 테이블, 뷰, 프로시저에 대해서만 사용권한을 부여한다 애플리케이션에서 사용하는 DB사용자 계정은 테이블, 뷰, 프로시저에 대한 권한만 적용된다. 지속적인 DB사용자 계정 관리가 필요