소프트웨어 개발 보안 요소
소프트웨어 개발 보안 요소는 소프트웨어 개발에 있어 충족시켜야 할 요소 및 요건을 의미하며, 기밀성, 무결성, 가용성을 보안의 3대 요소라 한다.
기밀성(Confidentiality)
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용된다.
- 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없다.
무결성(Intergrity)
시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있다.
가용성(Availability)
인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있다.
인증(Authentication)
- 시스템 내의 정보와 자원을 사용하려는 사용자가 합벚거인 사용자인지를 확인하는 모든 행위이다.
- 대표적 방법: 패스워드, 인증용 카드, 지문 검사 등
부인 방지(NonRequdiation)
데이터를 송/수신한 자가 송/수신 사실을 부인할 수 없도록 송/수신 증거를 제공한다.
SQL 삽입
- SQL 삽입(Injection)은 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점이다.
- 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지할 수 있다.
스택 가드
- 스택 가드(Stack Guard)는 널포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나이다.
- 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우 오버플로우 상태로 판단하여 프로그램 실행을 중단함으로써 잘못된 복귀 주소의 호출을 막는다.
접근 제어자
- 접근 제어자는 프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사옹되는 예약어이다.
- **접근 제어자의 종류(접근 가능: ○, 접근 불가능: Ⅹ)
| 접근 제어자 | 클래스 내부 | 패키지 내부 | 하위 클래스 | 패키지 외부 |
|---|
| Public | ○ | ○ | ○ | ○ |
| Protected | ○ | ○ | ○ | Ⅹ |
| Default | ○ | ○ | Ⅹ | Ⅹ |
| Private | ○ | Ⅹ | Ⅹ | Ⅹ |
개인키 암호화 기법
- 개인키 암호화(Private Key Encryption) 기법은 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법이다.
- 대칭 암호 기법 또는 단일키 암호화 기법이라고도 한다.
- 암호화와 복호화 속도가 빠르다.
- 관리해야 할 키의 수가 많다.
- 개인키 암호화 기법의 종류에는 스트림 암호화 방식과 블록 암호화 방식이 있다.
스트림 암호화 방식
- 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화 하는 방식.
- 종류: LFSR, RC4, TKIP
블록 암호화 방식
- 한 번에 하나의 데이터 블록을 암호화 하는 방식
- 종류: DES, SEED, AES, ARIA, IDEA, Skipjack
IDEA
- IDEA(International Data Encryption Algorithm)는 스위스의 라이(Lai)와 메시(Messey)가 1990년에 개발한 PES를 개선한 알고리즘이다.
- 블록 크기는 64비트이고, 키 길이는 128비트이다.
Skipjack
- Skipjack은 국가 안전 보장국(NSA)에서 개발한 암호화 알고리즘이다.
- 클리퍼 칩(Clipper Chip)이라는 IC칩에 내장되어 있다.
- 블록 크기는 64비트이고, 키 길이는 80비트이다.
- 주로 음성 통신 장비에 삽입되어 음성 데이터를 암호화한다.
DES
- DES(Data Encryption Standard)는 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘이다.
- 블록 크기는 64비트, 키 길이는 56비트이며 16회의 라운드를 수행한다.
- DES를 3번 적용하여 보안을 더욱 강화한 3DES(Triple DES)가 있다.
AES
- AES(Advanced Encryption Standard)는 2001년 미국 표준 기술 연구소(NIST)에서 바라표한 개인키 암호화 알고리즘이다.
- DES의 한계를 느낀 NIST에서 공모한 후 발표하였다.
- 블록 크기는 128비트이며, 키 길이에 따라 AES-128, AES-192, AES-256으로 분류된다.
RSA
- RSA(Rivest Shamir Adleman)는 1978년 MIT의 라이베스트(Rivest), 샤미르(Shamir), 애들먼(Adelman)에 의해 제안된 공개키 암호화 알고리즘이다.
- 큰 숫자를 소인수분해 하기 어렵다는 것에 기반하여 만들어졌다.
TKIP
- TKIP(Temporal Key Intergrity Protocol)는 기존의 무선 랜 보안 프로토콜이 WEP의 취약성을 보완한 데이터 보안 프로토콜이다.
- 암호 알고리즘의 입력 키 길이를 128비트로 늘리고 패킷당 키 할당, 키값 재설정 등의 키 관리 방식을 개선하였다.
해시
- 해시(Hash)는 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미한다.
- 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부른다.
- 종류: SHA 시리즈, HAVAL, MD4, MD5, N-NASH, SNEFRU 등
MD5
- MD5(Mseesage Digest algorithm 5)는 1991년 R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수이다.
- 블록 크기가 512비트이며, 키 길이는 128비트이다.
인증
- 인증(Authentication)은 다중 사용자 컴퓨터 시스템이나 네티워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하고 접근 권하을 검증하는 보안 절차이다.
- 인증의 종류
| 종류 | 유형 |
|---|
| 지식기반인증(Something You Know) | 고정된 패스워드, 패스 프레이즈, 아이핀 등 |
| 소유 기반 인증(Something You Have) | 신분증, 메모리 카드, 스카트 카드, OTP 등 |
| 생체 기반 인증(Something You Are) | 지문, 홍채/망막, 얼굴, 음성, 정맥 등 |
| 위치 기반 인증(Something You Are) | GPS, IP, 콜백 등 |
| 행위 기반 인중(Somethin You Do) | 서명, 동작 등 |
침임 탐지 시스템
- 침임 탐지 시스템(IDS; Intrusion Detection System)은 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템이다.
- 오용 탐지(Misuse Detection): 미리 입력해 둔 공격 패턴이 감지되면 이를 알려줌
- 이상 탐지(Anomaly Detection): 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려줌.
VPN
- VPN(Virtual Private Network, 가상 사설 통신망)은 인터넷 등 통신 사업자의 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션이다.
- SSL VPN: PC에 VPN Client 프로그램을 설치하여 VPN 서버에 접속하는 방식으로, 암호화를 위해 SSL 프로토콜을 사용함.
- IPSec VPN: VPN 서버가 설치된 각각의 네트워크를 서로 연결하는 방식으로, 암호화를 위해 IPSec 프로토콜을 사용함.
SIEM
- SIEM(Security Information and Event Management)은 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 빅 데이터 기반의 보안 솔루션이다.
- 방화벽, IDS, IPS, 웹 방화벽, VPN 등에서 발생한 로그 및 보안 이벤트를 통합하여 관리함으로써 비용 및 자원을 절약할 수 있다.
- 장기간의 로그 및 보안 이벤트를 수집 및 검색할 수 있는 빅데이터 기반의 통합 로그 수집 시스템이다.
SSH
- SSH(Secure SHell, 시큐어 셸)는 다른 컴퓨터에 원격으로 접속하여 작업을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜 또는 이를 이용한 응용 프로그램이다.
- 데이터 암호화와 강력한 인증 방법으로 보안성이 낮은 네트워크에서도 안전하게 통신할 수 있다.
- 키를 통한 인증 방법을 사용하려면 사전에 클라이언트의 공개키를 서버에 등록해야 한다.
- 기본적으로는 22번 포트를 사용한다.
AAA(=3A)
- AAA는 다음 3가지 기능을 기반으로 사용자의 컴퓨터 자원 접근에 대한 처리와 서비스를 제동하는 기반 구조 또는 규격을 의미한다.
- 인증(Authentication): 접근하는 사용자의 시원을 검증하는 기능
- 인간(Authorization): 신원이 검증된 사용자에게 특정된 권한과 서비스를 허용하는 기능
- 과금(Accounting): 사용자가 어떤 종류의 서비스를 이용했고, 얼마만큼의 지원을 사용했는지 기록 및 보관하는 기능
정보보호 관리 체계
- 정보보호 관리 체계(ISMS; Information Security Management System)는 정보 자산을 안전하게 보호하기 위한 보호 절차와 대책을 의미한다.
- 조직에 맞는 정보보호 정책을 수립하고, 위험에 상시 대응하는 여러 보안 대책을 통합 관리/ 운용한다.
- 우리나라에서는 정보보호 관리 체계를 평가하고 인증하는 사업을 한국인터넷진흥원(KISA)에서 운영하고 있다.
Ping of Death
- Ping if Death(죽음의 핑)는 Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거보 공격 방법이다.
- 공격에 사용되는 큰 패킷은 수백 개의 패킷으로 분할되어 전송되는데, 공격 대상은 분할된 대량의 패킷을 수신함으로써 분할되어 전송된 패킷을 재조립해야 하는 부담과 분할되어 전송된 각각의 패킷들의 ICMP Ping 메시지에 대한 응답을 처리하는라 시스템이 다운되게 된다.
SMURFING
- SMURFING(스머핑)은 IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법이다.
- SMURFING 공격을 무력화하는 방법 중 하나는 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 미리 설정해 놓는 것이다.
LAND Attack
LAND Attack(Local Area Network Denial Attack)은 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송하는 것으로, 이 패킷을 받은 공격 대상은 송신 IP 주소가 자신이므로 자신에게 응답을 수행하게 되는데, 이러한 패킷이 계속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격 방법이다.
분산 서비스 공격용 툴
에이전트의 역할을 수행하도록 설계된 프로그램으로 데몬이라고 부르며, 다음과 같은 종류가 있다.
- Trin00
가장 초기 형태의 데몬으로, 주로 UDP Flooding 공격을 수행함
- TFN(Tribe Flood Network)
UDP Flooding 뿐만 아니라 TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등을 수행함.
- TFN2K
TFN의 확장판임
- Stacheldraht
- 이전 툴들의 기능을 유지하면서, 공격자, 마스터, 에이전트가 쉽게 노출되지 않도록 암호화된 통신을 수행함
- 툴이 자동으로 업데이트됨
세션 하이재킹
-
세션 하이재킹은 상호 인증 과정을 거친 후 접속해 있는 서버와 서로 접속되어 클라이언트 사이의 세션 정보를 가로채는 공격 기법으로, 접속을 위한 인증 정보 없이도 가로챈 세션을 이용해 공격자가 원래의 클라이언트인 것처럼 위장하여 서버의 자원이나 데이터를 무단으로 사용한다.
-
TCP 3-Way-Handshake 과정에 끼어듦으로써 클라이언트와 서버 간의 동기화된 시퀀스 번호를 가로채 서버에 무단으로 접근하는 TCP 세션 하이재킹이 대표적인 예이다.
ARP 스푸핑
ARP 스푸핑은 ARP의 취약점을 이용한 공격 기법으로, 자신의 물리적 주소(MAC)를 공격 대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로패거나 방해하는 기법이다.
- **ARP(Address Resolution Protocol): 호ㅛㅡ트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC Address)로 변환해주는 프로토콜
사회 공학
사회 공학은 컴퓨터 보안에 있어서, 인산 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적 시스템 침입 수단이다.
다크 데이터
다크 데이터는 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어 있는 대량의 데이터를 의미한다.
타이포스쿼팅
- 타이포스쿼팅은 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유서한 유명 도메인을 미리 등록하는 것이다.
- URL 하이재킹이라고도 한다.
스니핑
스니핑은 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나로, 수동적 공격에 해당한다.
워터링 홀
- 워터링 홀은 목표 대상이 자주 방문하는 웹 사이트를 사전에 감염시켜 대상이 해당 사이트에 방문했을 떄 악성 코드에 감염되게 하는 웹 기반 공격이다.
- 감염된 PC를 기반으로 대상이 속한 조직의 중요 시스템에 접근하거나 불능으로 만드는 등의 영향력을 행사할 수 있다.
키로거 공격
키로거 공격은 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 꼐좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격이다.
랜섬웨어
랜섬웨어는 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램으로, 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 한다.
백도어
- 백도어는 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로로, 컴퓨터 범죄에 악용되기도 한다.
- 백도어 탐지 방법: 무결서 ㅇ검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사 등