소프트웨어 개발 보안 구축

JungWooLee·2022년 5월 16일
0

암호화 / 보안

목록 보기
1/1
post-thumbnail

Secure SDLC

Secure SDLC 란 ?

보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것을 의미합니다

  • 요구사항 분석, 설계, 구현, 테스트, 유지보수 등 SDLC 전체 단계에 수행되어야 할 보안 활동을 제시
  • 대표적인 방법론
    CLASP : SDLC 초기 단계에서 보안을 강화하기 위한 방법론
    SDL : 마이크로소프트 사에서 안전한 소프트웨어 개발을 위한 기존 SDLC를 개선한 방법론
    Seven Touchpoints : 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론

SDLC 란 ?

소프트웨어를 개발하기 위한 모든 과정을 각 단계별로 나눈 것

소프트웨어 개발 보안 요소 (Bold : 보안의 3대요소)

  • 기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
  • 무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수정이 가능
  • 가용성 : 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음
  • 인증 : 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
  • 부인 방지 : 데이터를 송∙수신한 자가 송∙수신 사실을 부인할 수 없도록 송∙수신 증거를 제공함

시큐어 코딩

  • 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안요소들을 고려하며 코딩하는것을 의미한다
  • 보안 취약점을 사전 대응하여 안정성과 신뢰성을 확보한다

세션 통제

세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것을 의미한다
세션 : 서버와 클라이언트의 연결을 의미

보안약점은 크게 두가지로 분류됩니다

  • 불충분한 세션 관리 : 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생하는 보안약점
  • 멀티스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점

→ 즉, 우리가 홈페이지를 구현한다 하였을 경우 로그인 정보를 가령 세션에 저장한다 하면 패스워드와 같은 중요도가 높은 정보를 세션에 저장하게 될때에 타임아웃을 조정하지 않으면 보안상의 문제가 발생이 가능하며 세션에 ID와 같은 멤버변수를 저장한 상태에서 다른 스레드에서 중복된 로그인과 같은 행위를 할때에 충돌을 피하기 위해 로그아웃 UI를 모든 페이지에 설정을 해야 합니다.

세션ID의 관리 방법

  • 안전한 서버에서 최소 128비트의 길이로 생성한다
  • 예측이 불가능하도록 안전한 난수 알고리즘을 적용한다
  • 노출되지 않도록 URL Rewrite 기능을 사용하지 않는 방향으로 설계한다
    - URL Rewrite :쿠키를 사용할 수 없는 환경에서 세션 ID 를 포함시키는 것
  • 로그인 시 로그인 전의 세션 ID를 삭제하고 재할당한다
  • 장기간 접속하고 있는 세션ID는 주기적으로 재할당되도록 설정

입력 데이터 검증 및 표현

입력 데이터 검증 및 표현

  • 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
  • 입력 데이터 검증 및 표현의 보안 약점
    • SQL 삽입 : 웹 응용 프로그램에 SQL을 삽입하여 내부 DB서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
    • 경로 조작 및 자원 삽입 : 데이터 입출력 경로를 조작하여 서버 자원을 수정∙삭제할 수 있는 보안 약점
    • 크로스사이트 스크립팅(XSS) : 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점
    • 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점
    • 위험한 형식 파일 업로드 : 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점
    • 신뢰되지 않는 URL 주소로 자동접속 연결 : 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점
    • 메모리 버퍼 오버플로 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점

보안 기능

보안 기능

  • 보안 기능은 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근 제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들이다
  • 보안 기능의 보안 약점
보안 약점설명
적절한 인증없이 중요기능 허용 보안 검사를 우회하여 인증과정없이 중요한 정보 또는 기능에 접근 및 변경이 가능함
부적절한 인가 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취할 수 있음
중요한 자원에 대한 잘못된 권한 설정 권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용할 수 있음
취약한 암호화 알고리즘 사용 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보를 탈취할 수 있음
중요정보 평문 저장 및 전송 암호화되지 않은 평문 데이터를 탈취하여 중요한 정보를 획득할 수 있음
하드코드된 암호화 키 암호화된 키도 하드코드된 경우 유출 시 역계산 또는 무차별 대입 공격에 의해 탈취될 수 있음

암호 알고리즘

암호 알고리즘

  • 암호 알고리즘은 패스워드, 주민번호, 은행계좌와 같은 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법을 의미

개인키 암호화 기법

  • 개인키 암호화 기법은 동일한 키로 데이터를 암호화하고 복호화하는 암호화기법이다
  • 대칭 암호 기법 또는 단일키 암호화 기법이라고도 한다
  • 암호화 / 복호화 속도가 빠르지만, 관리해야 할 키의 수가 많다
  • 개인키 암호화 기법의 종류
    • 스트림 암호화 방식 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 하는 방식
      • 종류 : LFSR, RC4
    • 블록 암호화 방식 : 한번에 하나의 데이터 블록을 암호화 하는 방식
      • 종류 : DES, SEED, AES, ARIA

공개키 암호화 기법

  • 공개키 암호화 기법은 데이터를 암호화할 때 사용하는 공개키는 사용자에게 공개하고, 복호화할 때의 비밀키는 관리자가 비밀리에 관리하는 암호화 기법이다
  • 비대칭 암호 기법이라고도 한다
  • 관리해야 할 키의 수가 적지만, 암∙복호화 속도가 느리다
  • 대표적인 RSA(Rivest Shamir Adleman)기법이 있다

0개의 댓글