728x90
반응형
SMALL

이번 장에서는 SW개발보안가이드중 분석/설계단계에서 검증해야할 항목중 <보안기능>
에 관한 8가지 점검항목에 대해서 설명하고자 한다.
이 장도 SW보안약점진단원 시험에 제일 많이 나오는 범위이기도 하다.


SR2-1. 인증 대상 및 방식

항목 설명
1) 인증후 사용 중요기능이나 리소스에 대해서는 인증 후 사용 정책이 적용되어야 한다.
- 중요기능 식별하고 식별된 중요기능에 대해서 일괄적으로 인증을 처리하는
  시스템을 설계   ① 컴포넌트 ② 라이브러리 ③ Servlet Filter
2) 안전한 인증방식
   (일회용패스워드)
 안전한 인증방식을 사용하여 인증우회나 권한상승이 발생하지 않도록한다.
     <일회용 패스워드>
   - 일회용 패스워드는 시각정보, 이벤트정보, 질의응답방식으로 취득한 정보를 이용
     하여 생성할 수 있다
   - 일회용 패스워드는 시간적 제한을 설정해야 한다. (금융권 30~60초)
   - 일회용 패스워드는 중복및 유추가 불가능하도록 6자리 이상이 숫자 및 문자로
     구성한다.
   - OTP발생기와 인증서버에서 동일한 정보를 생성해야 한다.
3) 2 Factor 인증 중요기능에 대해서는 2단계 인증을 고려한다.
   - Type1 : 지식기반  Type2 : 소유기반  Type3:생체기반
   - 로깅기능 마련
구현단계 적절한 인증기능이 없는 중요기능 허용
DNS Lookup에 의존한 보안결정


SR2-2. 인증 수행 제한

항목 설명
1)인증시도 횟수 제한 인증시도횟수 제한하고, 초과된 시도에 대해서는 인증제한 정책 적용
  - 5회 이내로 제한
  - 자동입력방지 문자 
2)실패한 인증시도 로깅 실패한 인증시도에 대해서는 로그를 남겨서 추적할수 있게 한다.
구현단계 반복된 인증시도 제한 기능 부재



SR2-3. 비밀번호 관리

항목 설명
1)패스워드 설정규칙 <안전하지 않은 패스워드>
 - 한글,영어 등을 포함한 사전적인 단어로 구성된 패스워드
 - 스펠링을 거꾸로 한 패스워드
 - 널리 알려진 단어로 구성된 패스워드 (컴퓨터용어 사이트,기업 등의
                                            특정명칭으로 구성된 패스워드)
 - 사용자ID를 이용한 패스워드
 - 제3자가 쉽게 알수 있는 개인정보를 바탕으로 구성된 패스워드
   (가족생일, 주소,휴대폰번호 등)
 - 패턴이 존재하는 패스워드
    (동일한 문자의 반복, 키보드상에 연속한 위치에 존재하는
    문자들의 집합)
 - 숫자가 제일 앞이나 제일 뒤에 오는 구성의 패스워드 (security1, may12)
 - 숫자와 영문자를 비슷한 문자로 치환한 형태를 포함한 구성의 패스워드
    (영문자 O 을 숫사 0 으로 , 영문자 I 를 숫자 1 로 치환)
 - 특정 인물의 이름을 포함한 패스워드
    (사용자, 유명인 연예인등)
 - 한글발음을 영문으로, 영문단어의 발음을 한글로 변형한 형태의 패스워드
 - 시스템에서 예시로 제시되는 패스워드
 - 시스템에서 초기로 설정된 패스워드
 - 이전에 사용했던 패스워
2) 패스워드 암호화,통신채널  - 암호화하거나 암호화된 전송채널 이용 (TLS , VPN)
   TLS_RSA_WITH_AES_256_CBC_SHA …
3) salt가 적용된 해쉬함수  - SHA-2 이상   (SHA-1, MD5 등은 안전하지 않음)
 - 솔트값은 랜덤하게 생성
 - 솔트값은 암호키가 저장되는 장소에 저장
4) 패스워드 재설정, 변경 규칙  - 기존 패스워드 확인
5) 패스워드 관리규칙  - 변경주기
 - 만료기간 설정, 최소사용기간 설정
 - 성공한 로그인 시간 관리 (사용자에게 알림으로써 도용여부 확인)
구현단계 하드코드된 비밀번호
취약한 비밀번호 허용



SR2-4. 중요자원 접근통제

항목 설명
1) 중요자원에 대한 접근통제  - 중요자원에 대한 접근권한을 최소한으로 설정한다.
 - ACL이나 RBAC를 적용
2) 중요기능에 대한 접근통제  - 접근권한은 최소한으로
 - RBAC를 적용
 - 개별적용을 하는 경우 코딩규칙이 개발가이드에 반영되었는지..
3) 관리자 페이지  접근통제  - URL은 쉽게 추측할 수 없도록 설정한다. 
       -> 도메인 대신 IP를 통해서 접속하도록)
 - 원격연결시 암호화 통신채널 사용
 - 외부망에 있는 경우 
           ① IP통제, ② 80이 아닌 별도포트 사용, ③ SSL적용, ④ 추가인증
 - 내부망에 있는 경우 
           ① 80이 아닌 별도포트 사용, ② SSL적용 권고
구현단계 부적절한 인가
중요한 자원에 대한 잘못된 권한 설정



SR2-5. 암호키 관리

항목 설명
1) 암호키 관리규칙  - DB데이터 암호화에 사용되는 암호키는 DB와는 물리적으로 분리된 
   장소에 별도보관
 - 패스워드나 암호키는 메모리에 저장하지 않으며 설사 저장했더라도 
   사용종료 후 즉시 메모리를 0 으로 초기화한다
 - 암호키 생성 및 변경시 암호키에 대한 백업기능을 구현한다.

< FIPS 140-2 레벨분류 >
  ① Level1 - 암호모듈에 대한 기본적인 보안요구사항만을 충족하여
                 최소한의 보안
  ② Level2 - 침입자의 불법적인 접근을 방지하고 침입이후에 변조를
                 나타내는 증거를 제공함으로써 물리적인 보안매커니즘을
                 제공
  ③ Level3 - 강력한 변조 탐지 및 대응의 일환으로 침입을 감지하면
                 저장된 키 삭제
  ④ Level4 - 암호모듈의 외부의 전압이나 온도등을 감지하여 슈퍼쿨링
                 등 환경의 이상변화 시, 암호키를 삭제한다.
2) 설정파일內 중요정보 암호화  - 설정파일내 중요정보 (DB계정정보, 시스템중요정보) 가 암호화해서
   저장
구현단계 하드코드된 비밀번호
주석문안에 포함된 시스템 주요 정보

*** 암호키 종류별 유효기간 ***

키종류 사용유효기간
송신자 사용기간 수신자 사용기간
대칭키 비밀키 최대 2년 최대 5년
공개키 암호화 공개키 최대 2년
  복호화 개인키 최대 2년
  검증용 공객키 최소 3년
  서명용 개인키 최대 3년

 

SR2-6.  암호연산 (알고리즘 / 키길이 / 해쉬알고리즘+salt /난수)

항목 설명
1) 안전한 암호 알고리즘 <대칭키>
 - 안전 : AES, SEED, ARIA,  3DES, Blowfish, KASUMI
 - 취약 : DES, RC5, MD5…
<공개키>
 - 안전 : RSA, ECC, ECDSA, KCDSA
2) 안전한 암호키 길이  - 대칭키 : 128 bit 이상
 - 공개키 : 2048 bit 이상
 - 타원곡선 : 256 bit 이상
3) 안전한 해쉬알고리즘+Salt  - SHA-2 이상 (SHA-224, 256, 384, 512)
4) 안전한 난수생성 알고리즘  - FIPS 140-2 인증을 받은 암호모듈의 난수생성기와 256 비트 이상의 
   Seed를 사용하여 난수를 생성한다.
 - 난수의 무작위성을 보장하기 위해 이전 난수생성 단계의 결과를 다음 
   난수생성 단계의 Seed로 사용하는 의사난수생성기를 이용한다.
 java.math.Random() - 취약
   java.util.Random() , java.security.SecureRandom() - 안전
구현단계 취약한 암호화 알고리즘 사용
충분하지 않은 키 길이 사용
솔트없이 일방향 해쉬함수 사용
적절하지 않은 난수값 사용



SR2-7. 중요정보 저장

항목 설명
1) 중요정보 암호화 저장  - 중요정보 또는 개인정보는 암호화 해서 저장한다.
   (사용자 하드디스크에 저장된 쿠키를 통한 정보노출)
 - 특히, 쿠키, HTML5로컬저장소와 같은 클라이언트 즉 하드드라이브에 중요
   정보가 저장되지 않도록 한다., 부득히 저장 시 암호화해서 저장
2) 메모리에 중요정보 제거  - 중요정보가 메모리에 남지않도록..

<입력폼 자동완성 비활성화>
<input type=text name=id  autocomplete=off>
  -> 이 기능이 활성화되면 캐싱되기 때문..
구현단계 중요정보 평문 저장
사용자 하드디스크에 저장되는 쿠키를 통한 정보노출



SR2-8. 중요정보 전송

항목 설명
1) 중요정보 암호화 전송  - 인증정보와 같이 민감한 정보는
     ①암호화해서 전송하거나
     ②암호화된 통신채널로 전송
2) 쿠키의 중요정보 암호화 전송 - 쿠키에는 중요정보가 포함되지 않도록 설계하며, 부득이 쿠키에 중요정보가
   포함된 경우에는 반드시 세션쿠키로 설정히야 하며, 전달되는 중요정보는
   암호화해서 전송해야 한다.
   

 

728x90
반응형
LIST

+ Recent posts