[정보처리기사] 5과목 - 정보시스템 구축 관리 (소프트웨어 개발 보안 구축)
정보시스템 구축 관리 이론 - 소프트웨어 개발 보안 구축 정리
Secure SDLC
1. 보안 기술의 개발 방법론
- 보안상 안전한 소프트웨어를 개발하기 위해 SDLC (Software Development Life Cycle)에 보안 강화를 위한 프로세스 포함
- CLASP
- Secure Software 개발, SDLC의 초기 단계에서 보안 강화
- 활동 중심, 역할 기반의 프로세스로 구성
- 현재 운용 중인 시스템에 적용
- SDL
- MS에서 개발, 기존의 SDLC 개선
- 전통적인 나선형 모델
- Seven Touchpoints
- 소프트웨어 보안의 모범 사례를 SDLC에 통합한 방법론
- 설계 및 각 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트
- SDLC의 각 단계에 관련된 7개의 보안 강화 활동 수행
2. 보안 요소
- 기밀성 (Confidentiality)
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
- 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
- 무결성 (Integrity)
- 시스템 내의 정보는 오직 인가된 사용자만 수정
- 가용성 (Availability)
- 인가받은 사용자는 언제라도 사용할 수 있음
- 인증 (Authentication)
- 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 모든 행위
- PW, 지문 검사 등
- 부인 방지 (NonRepudiation)
- 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 증거를 제공
입력 데이터 검증 및 표현
1. 보안 약점 종류
- SQL 삽입 (SQL Injection)
- 웹 응용 프로그램에 SQL을 삽입하여 내부 DB 서버의 데이터를 유출 및 변조, 관리자 인증 우회
- 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링하여 방지
- 경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제
- 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지
- 크로스사이트 스크립팅 (XSS: Cross Site Scripting)
- 웹페이지에 악의적인 스크립트를 삽입하여 방문자 정보를 탈취하거나 비정상적인 기능을 수행하도록 함
- HTML 태그의 사용을 제안하거나 스크립트에 삽입되지 않도록
<
,>
,&
등의 문자를 다른 문자로 치환하여 방지
- 운영체제 명령어 삽입
- 외부 입력값을 통해 시스템 명령어의 실행을 유도하여 권한을 탈취하거나 시스템 장애를 유발
- 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로 방지
- 위험한 형식 파일 업로드
- 악의적인 명령어가 포함된 스트립트 파일 업로드
- 업로드 되는 파일의 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버 분리 등으로 방지
- 신뢰되지 않는 URL 주소로 자동 접속
- 방문자를 피싱 사이트로 유도
- 연결되는 외부 사이트 주소를 화이트 리스트로 관리하여 방지
- 메모리 버퍼 오버플로
- 메모리 주소 경계를 다룰 때 발생하는 버그의 일종 또는 이를 이용한 공격 방법
암호 알고리즘
1. 개인키 암호화(Private Key Encryption) 기법
- 동일한 키로 데이터를 암호화하고 복호화함
- 블록 암호화 방식
- DES, SEED, AES, ARIA, IDEA
- 스트림 암호화 방식
- LFSR, RC4
- 장점
- 암/복호화의 속도가 빠름
- 알고리즘이 단순함
- 공개키 암호 기법보다 파일 크기가 작음
- 단점
- 사용자의 증가에 따라 관리해야 할 키의 수가 많아짐
2. 공개키 암호화(Public Key Encryption) 기법
- 암호화할 때 사용하는 공개키는 데이터베이스 사용자에게 공개, 복호화할 때 비밀키는 관리자가 비밀리에 관리
- 암호화 대상이 $n$개일 때, 키의 개수는 $2n$개
- 비대칭 암호 기법이라고 하며, RSA 기법이 있음
- 장점
- 키의 분배가 용이
- 관리해야 할 키의 수가 적음
- 단점
- 암호화/복호화의 속도가 느림
- 알고리즘이 복잡함
- 개인키 암호화 기법보다 파일의 크기가 큼
3. 양방향 알고리즘 종류
- SEED
- 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
- 블록 크기 128비트, 키 길이에 따라 128, 256 버전으로 분류
- ARIA (Academy, Research Institute, Agency)
- 국정원과 산학연협회에서 개발한 블록 암호화 알고리즘
- 블록 크기 128비트, 키 길이에 따라 128, 192, 256 버전으로 분료
- DES (Data ncryption Standard)
- 미국 NBS에서 발표한 개인키 암호화 알고리즘
- DES를 3번 적용한 3DES가 있음
- 블록 크기 64비트, 키 길이 56비트
- AES (Advanced Encryption Standard)
- 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘
- DES의 한계 때문에 개발
- 블록 크기 128비트, 키 길이 56비트
- RSA (Rivest Shamir Adleman)
- MIT에서 개발한 공개키 암호화 알고리즘
- 큰 숫자를 소인수분해하기 어렵다는 것에 기반
- 공개키와 비밀키를 사용, 키는 상수
- ECC (Elliptic Curve Cryptography)
- RSA 암호 방식의 대안
- 이산대수 문제를 타원 곡선으로 옮겨 기밀성과 효율성을 높임
- Rabin
- 미하엘 라빈이 개발
- 소인수분해의 어려움에 안전성의 근거를 둔 암호화 알고리즘
4. 해시 (Hash)
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
- 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값, 해시키로 부름
- 무결성 검증을 위해 사용되며 정보 보호의 다양한 분야에 활용
- 복호화가 불가능한 일방향 함수
- SHA 시리즈, MD5, N-NASH, SNEFRU
5. 솔트 (Salt)
- 암호화를 수행하기에 앞서 원문에 무작위의 값을 덧붙이는 과정 (
암호화에 소금쳐서 망치기) - 솔트를 사용하면 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과가 나타나기 때문에 더 안전하게 암호화된 데이터 관리가 가능
참고 사이트
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.