티스토리 뷰
가. 취약점 개요
- 간단한 인코딩 등을 통해 암호화를 할 경우, 패스워드 등을 안전하게 보호할 수 없는 취약점
→ 취약한 암호알고리즘 사용
- 키 길이를 충분히 사용하지 않을 경우, 검증된 암호화 알고리즘을 사용하더라도 짧은 시간에 크래킹이 가능한 취약점
→ 충분하지 않은 키 길이 사용
- 예측 가능한 난수를 사용 시 다음 숫자를 예상하여 시스템을 공격할 수 있는 취약점
→ 적절하지 않은 난수 사용
- 일방향 해쉬함수 사용 시 솔트없이 해쉬할 경우, 레인보우 테이블 등을 통해 해쉬값을 미리 계산이 가능한 취약점
→ 솔트없이 사용하는 일방향 해쉬함수
나. 요구사항
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로 사용하고 있다. |
'Web Analytics > SW 보안약점 진단원' 카테고리의 다른 글
[설계보안] 보안기능 08 - 중요정보 전송 (0) | 2019.09.29 |
---|---|
[설계보안] 보안기능 07 - 중요정보 저장 (0) | 2019.09.29 |
[설계보안] 보안기능 05 - 암호키 관리 (0) | 2019.09.29 |
[설계보안] 보안기능 04 - 중요자원 접근통제 (0) | 2019.09.23 |
[설계보안] 보안기능 03 - 비밀번호 관리 (0) | 2019.09.23 |
- Total
- Today
- Yesterday