티스토리 뷰

반응형

 

 

 

가. 취약점 개요

  - 간단한 인코딩 등을 통해 암호화를 할 경우, 패스워드 등을 안전하게 보호할 수 없는 취약점

   → 취약한 암호알고리즘 사용

 

  - 키 길이를 충분히 사용하지 않을 경우, 검증된 암호화 알고리즘을 사용하더라도 짧은 시간에 크래킹이 가능한 취약점

   → 충분하지 않은 키 길이 사용

 

  - 예측 가능한 난수를 사용 시 다음 숫자를 예상하여 시스템을 공격할 수 있는 취약점

   → 적절하지 않은 난수 사용

 

  - 일방향 해쉬함수 사용 시 솔트없이 해쉬할 경우, 레인보우 테이블 등을 통해 해쉬값을 미리 계산이 가능한 취약점

   → 솔트없이 사용하는 일방향 해쉬함수

 

 

나. 요구사항

1. KISA 암호이용안내서에서 정의하고 있는 암호화 알고리즘과 안정성이 보장되는 암호화 키 길이를 사용

2. 솔트값을 적용한 안전한 해쉬 알고리즘 사용

3. 난수 생성 알고리즘 사용

 

 

다. 요구사항 별 고려사항

1. KISA 암호이용안내서에서 정의하고 있는 암호화 알고리즘과 안정성이 보장되는 암호화 키 길이를 사용

  - 국내외에서 권고하는 암호 알고리즘을 보안강도에 따라 선택하여 사용

  - 알고리즘 보안강도를 참고하여, 목적에 따라 선택하여 사용

 

2. 솔트값을 적용한 안전한 해쉬 알고리즘 사용

  - 메시지인증/키유도/난수생성용/단순해쉬/전자서명 등으로 사용목적을 분류

  - 사용목적 및 보안강도에 따라 선택하여 이용

 

3. 난수 생성 알고리즘 사용

  - FIPS-140-2 인증을 받은 난수 생성기와 256비트 이상의 시드를 사용

  - 이전 난수생성 결과를 다음 난수생성의 시드로 사용

 

 

라. 요구사항 별 진단기준 및 방법

0. 공통내용

  - 요구사항 정의서에 보안요구항목에 대한 대책이 수립

  - 아키텍쳐 설계서에 보안요구항목 적용계획이 수립

  - 요구사항 추적표를 통해 요구사항 추적가능 여부

 

1. KISA 암호이용안내서에서 정의하고 있는 암호화 알고리즘과 안정성이 보장되는 암호화 키 길이를 사용

  - 대칭키 암호화 : SEED, ARIA, AES 등 128비트 이상의 키길이 사용

  - 비대칭 암호화 : RSA, KCDSA, ECC 등 2048비트 이상의 키 길이 사용

 

2. 솔트값을 적용한 안전한 해쉬 알고리즘 사용

  - SHA-2 계열 해시함수 사용

  - 난수발생기를 이용해 생성한 안전한 난수값을 솔트값으로 사용

 

3. 난수 생성 알고리즘 사용

  - Java : Java.security.SecureRandom / Java.util.Random 사용

  - C계열 : randomize(seed) 사용

 

 

마. 진단기준

1. KISA 암호이용안내서에서 정의하고 있는 암호화 알고리즘과 안정성이 보장되는 암호화 키 길이를 사용

  - 안전한 암호화 알고리즘과 안정성이 보장되는 암호키 길이를 사용하도록 설계되었는지 확인

 

2. 솔트값을 적용한 안전한 해쉬 알고리즘 사용

  - 해쉬함수 사용방법이 안전하게 설계되었는지 확인

  - 해쉬함수로 암호화 된 데이터 크랙을 점검하는 테스트 계획 확인

 

3. 난수 생성 알고리즘

  - 안전한 난수생성 알고리즘을 사용하도록 설계되었는지 확인

  - 생성된 난수의 안정성을 점검하는 테스트 계획이 수립되어 있는지 확인

 

 

바. 안전한 보안설계 예

No 요구사항 명 해결방안 검수기준
1 안전한 양방향 암호화 알고리즘 사용 공통모듈에 암호화 기능을 추가하고, 구현 시 대칭키 암호 알고리즘으로는 AES를, 비대칭 암호 알고리즘으로는 RSA를 사용하고 각각의 키는 256, 2048의 길이를 사용한다. 대칭키 암호 알고리즘으로는 AES를, 비대칭 암호 알고리즘으로는 RSA를 사용하고 있으며 각각의 키는 256, 2048의 길이를 이용하고 있다.
2 안전한 일방향 암호화 알고리즘 사용 공통모듈에 해쉬 기능을 추가하고, 안전한 SHA2 알고리즘을 이용하여 구현한다. 이때, 난수를 이용한 솔트가 적용될 수 있도록 한다. 해쉬 추출 시 SHA2 계열 알고리즘을 사용하고, 솔트를 적용하고 있다.
3 안전한 난수생성 알고리즘 사용 공통모듈에 난수 생성 기능을 추가하고 java.util.Random 클래스를 이용하여 난수를 생성한다. seed로는 현재 시간을 사용한다. java.util.Random 클래스를 이용하여 난수를 생성하고 있으며, 시간을 seed로 사용하고 있다.

 

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday