본문 바로가기
공부/KISA

암호연산 - KISA 소프트웨어 개발 보안 가이드

by Skogkatt의 개인 블로그 2020. 7. 16.
반응형

https://www.kisa.or.kr/public/laws/laws3.jsp

 

기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원

기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥

www.kisa.or.kr


분석∙설계단계 SW 보안강화 - 설계보안항목 정의 및 설계 시 고려 사항 - 암호연산

설명

  • 국제표준 또는 검증필 프로토콜로 등재된 안전한 암호 알고리즘을 선정하여 충분한 암호키 길이, 솔트, 충분한 난수 값을 기반으로 암호연산 수행방법을 설계해야 한다.

설계항목내용

  • 대칭키 또는 비대칭키를 이용해서 암호화를 수행해야 하는 경우 한국인터넷진흥원의 『암호이용 안내서』에서 정의하고 있는 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용해야 한다. 
  • 복호화되지 않는 암호화를 수행하기 위해 해쉬 함수를 사용하는 경우 안전한 해쉬 알고리즘과 솔트 값을 적용하여 암호화해야 한다.
  • 난수 생성 시 안전한 난수 생성 알고리즘을 사용해야 한다.

가. 취약점 개요

사례 1: 취약한 암호 알고리즘 사용
  • SW 개발자들은 환경설정 파일에 저장된 패스워드를 보호하기 위하여 간단한 인코딩 함수를 이용하여 패스워드를 감추는 방법을 사용하기도 한다. 그렇지만 base64와 같은 지나치게 간단한 인코딩 함수를 사용하면 패스워드를 안전하게 보호할 수 없다.
사례 2: 충분하지 않은 키 길이 사용
  • 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 패스워드를 복호화할 수 있게 된다.
사례 3: 적절하지 않은 난수 사용
  • 예측 가능한 난수를 사용하는 것은 시스템의 보안약점을 유발한다. 예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하다.

 

사례 4: 솔트 없이 사용하는 일방향 해쉬 함수
  • 패스워드 저장 시 일방향 해쉬 함수의 성질을 이용하여 패스워드의 해쉬값을 저장한다. 만약 패스워드를 솔트(Salt) 없이 해쉬 하여 저장한다면, 공격자는 레인보우 테이블과 같이 가능한 모든 패스워드에 대해 해쉬값을 미리 계산하고, 이를 이용한 전수조사를 통해 패스워드를 찾을 수 있게 된다.

나. 설계 시 고려사항

1. 대칭키 또는 비대칭키를 이용해서 암/복호화를 수행해야 하는 경우 한국인터넷진흥원의 『암호이용안내서』 에서 정의하고 있는 암호화 알고리즘과 안전성이 보장되는 암호키 길이를 사용해야 한다.

  • 안전성이 보장되는 암호키 길이와 암호 알고리즘을 확인하고 사용하여야 한다.

2. 복호화되지 않는 암호화를 수행하기 위해 해쉬 함수를 사용하는 경우 안전한 해쉬 알고리즘과 솔트 값을 적용하여 암호화해야 한다.

  • 해쉬 함수는 사용목적에 따라 메시지 인증/키 유도/난수 생성용과 단순 해쉬(메시지 압축) /전자 서명용으로 나눠지며, 사용목적과 보안강도에 따라 선택하여 이용한다.

3. 난수 생성 시 안전한 난수 생성 알고리즘을 사용해야 한다.

  • FIPS 140‐2 인증을 받은 암호모듈의 난수 생성기와 256비트 이상의 시드를 사용하여 난수를 생성한다. 난수의 무작위성을 보장하기 위해 이전 난수생성 단계의 결과를 다음 난수생성 단계의 시드로 사용하는 의사 난수 생성기를 이용한다.

참고자료

반응형

댓글