보안/SW보안약점 진단원

[설계보안] 보안기능-암호연산

re-bugger 2022. 6. 25. 20:38

분류: 보안기능 / 취약한 암호화 알고리즘 사용, 충분하지 않은 키 길이 사용, 적절하지 않은 난수 값 사용, 부적절한 인증서 유효성 검증, 솔트 없이 일방향 해쉬함수 사용

가. 항목명

암호연산

나. 취약점 설명

취약한 암호화 알고리즘 사용: 지나치게 간단한 인코딩 함수를 사용하면 비밀번호 안전하게 보호 못함

충분하지 않은 키 길이 사용: 검증된 암호화 알고리즘 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있음

적절하지 않은 난수 값 사용: 예측 가능한 난수를 사용하는 것은 시스템 취약점을 유발한다.

솔트 없이 사용하는 일방향 해시함수: 솔트 없이 해시하여 저장하면 공격자는 레인보우 테이블에서 해시값을 미리 계산하고 이를 이용한 전수조사로 비밀번호를 찾을 수 있다.

다. 보안대책

① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행하는 경우 KISA 암호이용안내서 정의하고 알고리즘, 암호키 사용

② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는경우 안전한 알고리즘와 솔트값 적용

③ 난수 생성 시 안전한 생성 알고리즘 사용

 

라. 설계시 고려사항

① 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행하는 경우 KISA 암호이용안내서 정의하고 알고리즘, 암호키 사용

② 복호화되지 않는 암호화를 수행하기 위해 해시함수를 사용하는경우 안전한 알고리즘와 솔트값 적용

③ 난수 생성 시 안전한 생성 알고리즘 사용

  •  FIPS 140-2 인증 받은 암호모듈의 난수 생성기와 256비트 이상의 시드를 사용하여  난수 생성

 

마. 진단기준 및 세부사항

① 안전한 암호 알고리즘 사용하여 설계

  • 대칭키 암호화 알고리즘: SEED, ARIA, AES
  • 비대칭키 암호화 알고리즘: RSA, KCDSA, ECC

② 안전한 암호화 길이

  • 대칭키 암호화 알고리즘 키길이 128 비트이상
  • 비대칭키 암호화 알고리즘 키길이 2048 비트 이상

③    암호화 기능 설계 시 안전한 암호화 알고리 사용              

  •  SHA-2 계열(SHA-224, 256, 384, 512) 

③    안전한 난수 생성 알고리즘 사용

  • JAVA - java.security.SecureRandom, java.util.Random와 같은 안전한 API 사용
  • C - randomize(seed) 함수

바. 안전한 보안설계의 예

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