Just do IT
article thumbnail

SW개발보안의 개요

   - 해킹 등 사이버 공격의 원인인 보안 취약점을 SW개발 단계에서 미리 제거

   - SW개발에 따른 생명주기별 단계적 수행, 보안 업무 수행

   - 안전한 보안요소를 만족하는 소프트웨어 개발 및 운영

   1) SW개발 보안의 3요소

      - 기밀성(confidentiality): 승인된 주체들에게만 접근 허용

      - 무결성(integrity): 승인된 방법에 의해서만 변경 허용

      - 가용성(availability): 승인된 사용자들이 적시에 사용 가능하도록 함

 

입력데이터 검증 및 표현

   - 부적절한 검증(검증 누락), 부적절한 형식값(parameter)지정으로 인해 발생할 수 있는 보안약점

   - SQL 삽입 공격, 크로스사이트 스크립트(XSS)등의 공격이 발생 가능

 

   1) SQL 삽입 공격

      - 웹에서 사용자의 입력 값을 받아 데이터베이스에 SQL문으로 데이터를 요청하는 모든 곳에 가능

      - 인증뿐만 아니라 다양한 형태의 SQL문을 실행할 수 있음

      - 게시판, 우편번호 검색과 같이 대량의 정보를 검색하는 부분에서 웹 서버와 데이터베이서 연동이 일어나므로 SQL 공격을  받을 수 있음

      - 설계 시 고려 사항

         ① DB연결을 통해 데이터를 처리하는 경우 최소 권한이 설정된 계정 사용

         ② 외부입력값을 이용해 동적으로 SQL을 생성해야 하는 경우, 입력 값에 대한 검증을 수행한 뒤에 사용

 

   2) 크로스 사이트 스크립트(XSS) 공격

     - 웹 애플리케이션에서 일어나는 취약점

      - 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법

      - 해커는 웹 애플리케이션에서 XSS 취약점이 있는 곳을 파악하고 악성 스크립트를 삽입

         삽입된 스크립트가 DB에 저장이 되고 해당 스크립트가 있는 게시글 등을 열람 시 해당 스크립트가 작동하면서 쿠키 탈취, 다른 사이트로 리다이렉션 등이 발생

      - 설계 시 고려 사항

         ① 사용자로부터 입력 받은 값을 동적으로 생성되는 응답페이지에 사용하는 경우

              - 크로스사이트스크립트(XSS) 필터링을 수행한 뒤 사용

         ② DB조회 결과를 동적으로 생성되는 응답 페이지에 사용하는 경우

              - HTML 인코딩 또는 크로스사이트스크립트(XSS) 필터링을 수행한 뒤 사용

 

비밀 키 (대칭 키) 암호

   - 동일한 키로 데이터를 암호화하고 복호화 함.

   - 복호화 키의 비밀성 유지가 중요

   - 비밀키 (대칭 키) 암호 종류 : 치환 암호, 전치 암호, DES, AES, SEED

 

   1) 치환 암호

      - 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체

      - 평문의 문자를 다른 문자로 교환하는 규칙

      - 일 대 일 대응 X

 

   2) 전치 암호

      - 문자 집합 내부에서 자리를 바꾸는 규칙

      - 평문에 사용된 문자와 암호문에 사용된 문자가 일 대 일 대응 규칙

      - 원문을 다른 문서로 대체하지는 않지만 원문을 여기저기 움직이게 함

 

   3) DES (Data Encryption Standard)

      - 데이터 암호화 표준은 블록 암호의 일종으로 미국 NBS (현재 NIST)에서 국가 표준으로 정한 암호

      - DES는 대칭키 암호이며, 64비트 키 중 56비트의 키는 암호화 복호화에 사용, 나머지 8비트는 키 블록의 parity check 용으로 사용

      - 비트의 전치(Transposition)와 비트의 치환 (Exclusive-OR)등의 연산을 거쳐 암복호화 됨 

 

   4) AES (Advanced Encryption Standard)

      - DES의 문제점을 보완하고자 미국의 표준기술연구소(NIST)에서 차세대 암호표준으로 선정한 대칭형 알고리즘

      - 128비트, 192비트, 256비트 등의 형태로 제공

      - 블록 암호 방식

 

   5) SEED

      - 1999년 2월 한국정보보호진흥원의 기술진이 개발한 128비트, 256비트 대칭 키 블록 암호 알고리즘

      - 대한민국의 인터넷 뱅킹 및 쇼핑 환경에서 자주 사용됨

      - 블럭 암호 방식

 

공개키 (비대칭 키) 암호

   - 데이터를 암호화할 때 사용되는 키는 공개하고, 복호화 할 때의 키는 비밀로 함

   - 공개키 (비대칭 키) 암호 종류: RSA, Diffie-Hellman, 엘가말, ECC

 

   1) RSA 암호

      - 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘, 광범위한 활용 가능

      - 소인수 분해 기반으로 만들어짐 (주요연산이 곱셈)

 

   2) Diffie-Hellman (디피-헬만)

      - Diffie와 Hellman이라는 사람에 의해 1976년에 개발된 최초의 공개키 알고리즘

      - 이산대수 문제가 매우 어렵다는 이론에 기초를 둠

      - 암복호화를 위해 사용되는 키의 분배 및 교환에 주로 사용되는 알고리즘

 

   3) 엘가말(ElGamal)

      - 이산대수 문제가 매우 어렵다는 가정하에 재안된 공개키 암호 시스템

      - 키 길이의 강도는 RSA와 비슷

      - 난수 발생을 필요로 하기 때문에 다른 공개키 암호화 시스템에 비해 느린 편

      - 이산대수 문제를 기초로 만들어진 알고리즘의 대부분이 엘가말을 기초로 발전

 

   4) ECC (타원곡선알고리즘)

      - 유한체상에서의 정의된 타원곡선 한 점 Q와 P의 관계가 Q=dP라고 할 때 d를 알아내기 어렵다는 이론에서 출발

      - 이산대수의 문제에 기반을 둠

      - 기존 공개키 암호 시스템  보다 작은 키 길이, 비슷한 성능

      - 주요 연산이 덧셈이기 때문에 계산이 훨씬 빠름

 

정리하기


1. SW개발보안의 개요
   - 안전한 보안요소를 만족하는 소프트웨어 개발 및 운영
   - SW개발 보안의 3요소: 기밀성(confidentiality), 무결성(integrity), 가용성(availability)

2. 입력데이터 검증 및 표현
   - 부적절한 검증(검증 누락), 부적절한 형식값(parameter)지정
   - 공격 종류: SQL 삽입 공격, 크로스사이트 스크립트(XSS)

3. 비밀 키 (대칭 키) 암호
   - 동일한 키로 데이터를 암호화하고 복호화 함.
   - 복호화 키의 비밀성 유지가 중요
   - 종류: 치환 암호, 전치 암호, DES, AES, SEED

4. 공개키 (비대칭 키) 암호
   - 데이터를 암호화할 때 사용되는 키는 공개하고, 복호화 할 때의 키는 비밀로 함
   - 종류: RSA, Diffie-Hellman, 엘가말, ECC

 

4. 시스템 보안 구축

profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!