전사적 관점의 보안 통합 관리 솔루션
빅데이터 기반의 로그 분석을 통하여 보안의 위협 징후를 빠르게 판단·대응할 수 있도록 해주는 보안 관제 솔루션이다.
str1 == str2
"hello"의 첫 글자: 'h'
“입결정” → 입력과 결과를 정해라
→ 테스트의 시작은 입력 데이터,
→ 테스트의 끝은 예상 결과 확인
→ 유출된 ID/PW 목록을 수집한 뒤,
→ 자동화된 도구로 다른 사이트에 무차별 시도
→ 동일한 비밀번호를 여러 곳에서 재사용할 때 취약
→ 인증 우회, 개인정보 탈취 목적
→ 취약점을 이용한 공격 스크립트/코드/프로그램 자체
→ 버그나 설계 결함을 악용해 시스템 장악
→ 시스템 권한 상승, 악성코드 실행, 정보 유출 등 유도 가능
→ 함수가 호출될 때마다 초기화되지 않음
→ 한 번만 초기화, 이후 값 유지됨
개체 무결성 - 기본 키는 중복 없이, NULL 아니여야 한다
참조 무결성 - 외래 키는 참조 대상 기본 키와 일치하거나 NULL이어야 함
def test(lst):
for i in range(len(lst) // 2): // 반만 계산 0,1,2
lst[i], lst[-i-1] = lst[-i-1], lst[i] // lst[0], lst[-1] = lst[-1], lst[0] 교환
ls = [1,2,3,4,5,6]
test(ls)
print(sum(ls[::2]) - sum(ls[1::2])) // 0 포함 2번째씩 더하기 , 1포함 두번째씩 더하기
답: 3
"가장 사용되지 않는것을 제거, 상위로 밀어내면서 계산 숫자는 맨 끝으로 넣고 나머지 숫자는 위로 올림"
1 1 1 1 1 1 1 1
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 0 0 0 0 0 0 4 2 2 2 2 2 2 2 1 1 1
. 0 0 1 1 2 2 3 4 2 3 3 3 3 3 1 1 0 0 0
. . . 1 2 2 3 3 4 2 3 0 0 0 1 1 0 0 7 7
FIFO: "먼저 온 놈부터 나간다"
OPT: "미래 예지자가 된 듯, 가장 늦게 쓸 페이지 제거"
LFU : 가장 적게 사용한 거 제거
1 다른 테이블의 기본 키를 참조함 ㉡ 외래키
2 유일성 + 최소성 → 기본 키 후보가 될 수 있음 ㉣ 후보키
3 후보키 중 선택되지 않은 키 ㉢ 대체키
4 유일하지만 최소성은 만족하지 않음 (속성 더 많음) ㉠ 슈퍼키
즉, (arr + i) = arr[i]
void func1(int** arr, int size) {
for(int i=0; i < size; i++) {
*(*arr + i) = (*(*arr + i) + i) % size; // arr[i] = (arr[i] + i ) % size
}
}
public class Main {
public static void main(String[] args) {
int sum = 0;
try {
func(); // 첫 실행
} catch(NullPointerException e) {
sum = sum + 1;
} catch(Exception e) {
sum = sum + 10;
} finally { // 무조건 실행됨
sum = sum + 100;
}
System.out.print(sum);
}
static void func() throws Exception {
throw new NullPointerException(); // catch 문 실행
}
}
답 : 101
프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
결정 포인트 내의 전체 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행하는 커버리지
결정 포인트 내의 각 개별 조건식이 적어도 한번은 참과 거짓의 결과가 되도록 수행하는 커버리지
전체 조건식 & 개별 조건식 모두 참 한번, 거짓 한 번 결과가 되도록 수행하는 커버리지
개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 하는 커버리지
결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
수행 가능한 모든 경로를 테스트 하는 기법
프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법
제어 흐름 그래프에 사용현황 추가한 테스트 기법
계층 : OSI 3계층 (네트워크 계층)
기능 : IP 패킷 암호화, 인증, 재생 공격 방지
구성 : AH (Authentication Header), ESP (Encapsulating Security Payload)
용도 : VPN 구현, 기업 간 보안 통신, IP 기반 보안 터널
AH (Authentication Header)
무결성, 출처 인증 제공
암호화는 ❌
ESP (Encapsulating Security Payload)
암호화, 무결성, 인증 모두 가능
실질적인 VPN 구현 핵심
우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 통신적 응집도 < 순차적 응집도 < 기능적 응집도
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
모듈 내의 한 활동으로부터 나온 출력값을 모듈 내의 다른 활동이 사용할 경우
서로 다른 기능을 수행하지만 동일한 입력과 출력을 사용하는 활동들이 모여있을 경우
모듈 안의 구성요소들이 서로 다른 기능을 하지만 그 기능을 순차적으로 수행할 경우
연관된 기능이라기 보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
실제와 달리 논리적으로만 같은 그룹으로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
모듈 내부의 각 구성요소들이 연관이 없을 경우
패턴 키워드 요약 기억 포인트
Singleton 단 하나만 /전역 인스턴스 1개
Builder 분리 생성 /복잡한 객체 조립
Prototype 복제 /클론으로 찍어냄
Factory Method 서브클래스가 생성/ 생성 책임 위임
Abstract Factory 제품군 묶음 생성/ 관련 객체 집합 생성
패턴 키워드 요약 기억 포인트
Bridge 추상/구현 분리 독립 확장 가능
Decorator 기능 추가 덧붙임 런타임 기능 확장
Facade 단순한 인터페이스 복잡함을 감싼다
Flyweight 공유 메모리 절약
Proxy 대리 객체 접근 제어
Composite 트리 구조 전체-부분 동일 처리
Adapter 인터페이스 호환 중간 연결 변환기
패턴 키워드 요약 기억 포인트
Mediator 중재자 /객체 간 통신을 중앙에서 조정
Interpreter 언어 해석 /문법 트리 해석
Iterator 순차 접근 /내부 구조 노출 없이 탐색
Template Method 알고리즘 틀 제공 /뼈대는 상위, 세부는 하위
Observer 상태 변화 전파 /일대다 자동 알림
State 상태에 따른 행동 /조건문 대신 클래스
Visitor 연산 분리 메시지가 돌아다니면서 방문/ 구조는 그대로, 기능만 추가
Command 요청 캡슐화 /요청을 객체로 저장/취소
Strategy 알고리즘 교체 가능 /행위 캡슐화 후 교환 가능
Memento 상태 저장 복원 /Undo 기능에 유용
Chain of Responsibility 처리 책임 연쇄 /처리될 때까지 패스
t기준으로 문자열을 나눠서 배열로 저장 result = {"I", "IS", "ES", "S", "RING"}
public class Main {
public static void main(String[] args) {
String str = "ITISTESTSTRING";
String[] result = str.split("T");
System.out.print(result[3]);
}
}
//result = {"I", "IS", "ES", "S", "RING"}
// 답 : result[3] = S
홉수가 제일 적은 라인으로 AB
A->D->C->F
: 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식, 공개키는 누구나 알수 있으나 개인키는 키의 소유자만 알고 있어야 한다. (RSA, 디피-헬만)
: 임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호 방식
MAC(Message Authentication Code): 키를 사용하는 메시지 인증 코드로 메시지의 무결성과 송신자의 인증 보장
MDC(Modification Detection Code): 키를 사용하지 않는 변경 감지 코드로 메시지의 무결성 보장
DES: 1972년에 미국 국립기술 표준원(NIST)필요성느낌 1975년 IBM 개발, 대칭 키 기반
SEED: 1999년 한국인터넷진흥원(KISA) 개발
AES: 2001년 미국 표준기술 연구소(NIST) 개발 des대체
ARIA: 2004년 국가정보원과 산학연구협회가 개발
IDEA: DES 대체, 스위스 연방기술기관 개발
LFSR: 선형함수로 계산되는 구조로 되어있는 스트림 암호화 알고리즘
디피-헬만: 최초의 공개키 알고리즘
RSA: 1977년 MIT 라이베스트 샤미르 애들먼 교수 3명 개발, 큰 수는 소인수분해 하는것이 어렵다는 것에 기반 하여 개발
ElGamal: 1984년 ElGamal 개발, 이산대수
ECC: 1985년 RSA 대안으로 개발, 타원곡선방정식
MD5: MD4 개선한 암호화 알고리즘, 파일의 무결성 검사에 사용
SHA-1: 1993년 NSA에 미국 정부 표준 지정
SHA-256/384/512: 256비트의 해시값을 생성하는 해시함수
HAS-160: 국내 표준 서명 알고리즘
HAVAL: 메시지를 1024bits 블록으로 나눔
: 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜
: 클라이언트와 서버간의 웹데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
: 웹상에서 네트워크 트래픽을 암호화 하는 방법
분류 프로토콜
정적 라우팅 : 수동 설정 (관리자가 직접)
동적 라우팅 : RIP, OSPF, BGP 등
거리 벡터 : RIP
링크 상태 : OSPF
경로 벡터 : BGP
class Printer {
void print(String s) { System.out.println(s); } // 오버로딩 대상
void print(int i) { System.out.println(i); } // 오버로딩
void message() { System.out.println("Parent"); }
}
class ColorPrinter extends Printer {
@Override
void message() { System.out.println("Child"); } // 오버라이딩
}
일반 조건 조인 (=, !=, <, >, 등)
= 조건만 사용하는 세타 조인의 특수한 형태
동등 조인 + 중복 속성 제거
표현 의미
x << n x를 왼쪽으로 n비트 이동 → x × 2ⁿ
x >> n x를 오른쪽으로 n비트 이동 → x ÷ 2ⁿ (정수 나눗셈)
&num
;)#include <stdio.h>
#include <stdlib.h>
typedef struct Data {
char c;
int *numPtr;
} Data;
int main() {
int num = 10;
Data d1; //변수
Data *d2 = malloc(sizeof(Data)); //포인터
d1.numPtr = &num // 구조체 변수에 멤버 접근
d2 -> numPtr = # // 구조체 포인터에서 멤버접근
printf("%d\n", *d1.numPtr);
printf("%d\n", *(d2->numPtr));
free(d2);
return 0;
}
완전수 : 6, 28, 496, 8128
#include <stdio.h>
int test(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++) {
if (n % i == 0)
sum += i;
}
if (n == sum)
return 1;
return 0;
}
int main() {
int i, sum = 0;
for (i = 2; i <= 100; i++) {
if (test(i))
sum += i;
}
printf("%d ", sum);
return 0;
}
// 6 + 28 = 34
내부 사설 IP ↔ 외부 공인 IP 간 주소를 변환하여
인터넷 통신이 가능하도록 중계하는 기술
IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?
프로그램을 실행하지 않음. (ex. 코드 리뷰, 워크스루, 인스펙션)
프로그램을 실행함. (ex. 화이트박스 테스트, 블랙박스 테스트)
문장(Statement) : 모든 구문 실행해보기
분기(Branch) : 전체 조건 T/F 다 가보기
조건(Condition) : 개별 조건 T/F 다 가보기
기초 경로 검사(Base Path) : McCabe 제안
제어 구조 검사(Control Structure) : 조건 검사, 루프 검사, 데이터 흐름 검사(변수 정의 및 사용 위치 기준)
동치 분할 검사(Equivalence Partitioning) : 각 조건마다 대표 TC 개수를 동일하게 정함
경계값 분석(Boundary Value Analysis) : 경계값 TC를 많이 만듦
원인-효과 그래프 검사(Cause-Effect Graphing) : 출력에 미치는 영향 분석 후 효용이 높은 TC 선정
오류 예측 검사(Error Guessing) : 테스트 수행자의 경험과 감각
비교 검사(Comparison) : 여러 버전에 같은 TC를 돌려 같은 결과가 나오는지 확인
23 번
릴레이션 : 테이블, 컬렉션(NoSQL)
튜플 : 행 (튜플의 개수 : Cardinality; )
속성 : 열 (개수 : Degree; 차수)
입력 자료 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석 후 효용성이 높은 테스트 케이스를 선정해서 테스트하는 기법
#include <stdio.h>
int main() {
int number = 1234;
int div = 10;
int result = 0;
while (number (1) 0) {
result = result * div;
result = result + number ( 2 ) div;
number = number ( 3 ) div;
}
printf("%d", result);
return 0;
}
//결과값 : 1234
//답 : >, %, /
객체 다이어그램(E-R 다이어그램) 으로 표시
가장 중요하며 선행되어야 할 모델링
상태 다이어그램(상태도)를 이용해 시간의 흐름에 따른 객체들 간
제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는
모델링
자료 흐름도(DFD)를 이용해 다수의 프로세스들 간의 자료 흐름을
중심으로 처리
어떤 데이터를 입력해 어떤 결과를 구할것인가 표현
TestList = [1,2,3,4,5]
TestList = list(map(lambda num : num + 100, TestList))
print(TestList)
리스트의 각 요소를 차례로 꺼내
그 익명 함수에 넘긴다.
결과는 맵 객체(iterator).
객체를 리스트로 바꾼다
중앙 집중식 인프라 없이, 즉 사전 설정된 네트워크 기반 시설이 없이 구성된 자율형 네트워크를 의미합니다. 이러한 네트워크는 노드(주로 무선 장치)가 서로 직접 연결하여 통신하며, 군사 작전 중에 실시간으로 정보를 공유하기 위한 네트워크로 사용된다.
정부에서 정한 인증기관 및 심사기관에서 기업이 주요 정보자산을 보호하기 위해 수립·관리·운영하는 정보보호 관리체계가 인증 기준에 적합한지를 심사하여 인증을 부여하는 제도
구문
의미
타이밍
-프로세서안에 독립적인 보안구역을 따로 두어 중요 정보를 보호
철자 잘못써서 유사 도메인으로 들어가게 하는것
UML은 통합 모델링 언어로써, 시스템을 모델로 표현해주는 대표적인 모델링 언어이다.
구성 요소로는 사물, ( 관계 ), 다이어그램으로 이루어져 있으며, 구조 다이어그램 중, ( 클래스 ) 다이어그램은 시스템에서 사용되는 객체 타입을 정의하고, 그들 간의 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램이다. 또한 UML 모델링에서 ( 인터페이스 )은/는 클래스와 같은 기타 모델 요소 또는 컴포넌트가 구현해야 하는 오퍼레이션 세트를 정의하는 모델 요소이다.
( )은/는 머신러닝 기술을 이용하여 IT 시스템에서 발생하는 대량의 로그를 통합관리 및 분석하여 사전에 위협에 대응하는 보안 솔루션이다. 서로 다른 기종의 보안솔루션 로그 및 이벤트를 중앙에서 통합 수집하여 분석할 수 있으며, 네트워크 상태의 monitoring 및 이상징후를 미리 감지할 수 있
SIEM은 SIM(보안 정보 관리)과 SEM(보안 이벤트 관리)의 기능을 하나의 보안 관리 시스템으로 통합한 솔루션이라고 합니다.
정의: 한 자율 시스템(AS) 내부에서 라우팅 정보를 교환하는 프로토콜 계열
예시: RIP, OSPF, IS‑IS
역할: AS 내부 라우터 간에 최단 경로를 계산·분배
정의: 자율 시스템(AS) 간에 경로 정보를 교환하는 프로토콜 계열의 총칭
특징:
도메인 간 관리 정책이 통일되어 있지 않음
신뢰도보다는 보안·제어가 주목적
원래 “EGP”라는 표준 프로토콜이 있었으나, 현재는 BGP가 주류
역할: AS 경계 라우터 간 초기 외부 게이트웨이 기능
정의: IGP 계열의 링크 상태 라우팅 프로토콜
특징:
대규모·복잡한 네트워크에 적합
영역(area) 개념 도입으로 트래픽 최소화
빠른 수렴(convergence)과 상세 제어 기능 제공
역할: RIP의 단점을 보완해 대규모 AS 내부에서 사용
정의: 현재 인터넷의 표준 EGP(외부 게이트웨이 프로토콜)
특징:
경로 벡터(path‑vector) 방식
전체 AS 경로 정보를 포함
정책 기반 라우팅 및 루프 방지 기능
역할: 서로 다른 AS 간 라우팅 정보 교환 및 정책 적용
소프트웨어 개발 과정에서 사용되는 과정 전체 또는 일부의 컴퓨터와 전용 서프트웨어 도구를 사용하여 자동화 하는것
DAS - 직접연결
NAS - 서버 저장장치 통해 연결
SAN - 광캐이블 장거리 저장장치 단일화시스템
최대간선(최대간선-1) /2
오류를 제거하거나 수정한 시스템이나 시스템 컴포넌트 또는 프로그램이 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지를 확인하는 일종의 반복 시험이다.
• 인공지능 기능을 클라우드에서 API나 플랫폼 형태로 제공하여, 누구나
쉽게 AI를 활용할 수 있도록 하는 서비스 모델
• 자연어 처리(NLP), 컴퓨터 비전, 머신러닝 모델 학습, 음성 인식 분야에 활용됨
• 블록체인 개발 환경을 클라우드로 서비스하는 개념
• 블록체인의 기본 인프라를 추상화하여 블록체인 응용 프로그램을 만들
수 있는 클라우드 컴퓨팅 플랫폼
공개용 서버들을 내부 네트워크와 분리하여 배치하는 안전 구역
내부의 IP 주소를 외부와 효율적으로 교환하고 보안을 유지하기 위해
원격 근무자들이 안전하게 내부 네트워크에 접속하여 필요한 업무를 수행할 수 있도록
암호화된 통신 채널
문제 복원:
192.168.16.0/24 네트워크를 FLSM 방식으로 6개의 Subnet으로 나누고, IP Subnet‑zero를 적용하였다.
이때 Subnetting된 네트워크 중 4번째 네트워크의 5번째 사용할 수 있는 IP 주소를 쓰시오.
풀이 :
6개 -> 2의3승 -> 8개
256/8 = 32
0 192.168.16.0/27 192.168.16.31
1 192.168.16.32/27 192.168.16.63
2 192.168.16.64/27 192.168.16.95
3 192.168.16.96/27 192.168.16.127
4 192.168.16.128/27 192.168.16.159
5 192.168.16.160/27 192.168.16.191
4번째의 5번째 사용 네트워크 96이니까 (97,98,99,100,101)
192.168.16.101
class A {
static { System.out.println("A static"); } //1
{ System.out.println("A instance"); } //3 //6
public A() { System.out.println("A constructor"); } //4 //7
}
class B extends A {
static { System.out.println("B static"); } // 2
{ Systeance"); }m.out.println("B inst //4 //8
public B() { System.out.println("B constructor"); } //5 //9
}
public class Soojebi {
public static void main(String[] args) {
B b1 = new B();
A b2 = new B();
}
}
요청 헤더의 Content - Length를 비정상적으로 크게 설정하여 메시지 바디
부분을 매우 소량으로 보내 계속 연결 상태를 유지하여 서비스를 마비시키는 공격이다.
len(scores) // 2 // 2인덱스
print(scores.pop(0)) // 출력후 삭제
int n = sizeof(arr)/sizeof(arr[0]) //byte 계산 int= 4 20/4 = 5
서브클래스는 언제나 수퍼클래스를 대체할수 있어야 한다
가짜 ap를 설치하여 사용자가 이를 실제 ap로 착각하고 접속을 유도하는 공격 방식
오랫동안 사용하지 않은 페이지 교체
최근에 사용하지 않은 페이지 교체 기법 LRU에서 나타나는 시간적 오버헤드를 줄일수 있는 기법
fifo기법의 단점을 보완 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법
<< : 곱하기
>> : 나누기
→ Authentication, Authorization, Accounting
(인증, 인가, 계정관리)
a = "soojebi"
b = a[1: :1] + a[-3 : -6 : -2] // oobjebi + eo
c = " AND %s" % b.upper()
print(b + c)
a[-3 : -6 : -2] // -3 부터 -5까지 본인 포함 -2씩 뒤로