Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Ga0's

2022년 3회 정보처리기사 실기 본문

Study IT/정보처리기사

2022년 3회 정보처리기사 실기

Ga0Kwon 2023. 4. 19. 23:07

문제1

다음 C언어로 구현된 프로그램을 분석하여 배열 <mines>의 각 칸에 들어갈 값을 쓰시오.

    #include <stdio.h>
 
    main( ) {
 
        int field[4][4] = { {0,1,0,1}, {0,0,0,1}, {1,1,1,0}, {0,1,1,1} }; // (1)
        int mines[4][4] = { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} }; // (2)
       
        int w = 4, h = 4; // (3)
        for (int y = 0; y < h; y++) { // (4)
 
            for (int x = 0; x < w; x++) { // (5)
 
                if (field[y][x] == 0) continue; // (6)
 
                for (int j = y - 1; j <= y + 1; j++) { // (7)
 
                    for (int i = x - 1; i <= x + 1; i++) { // (8)
 
                        if (chkover(w, h, j, i) == 1) //(9), (12)
 
                            mines[j][i] += 1; // (13)
                    }
                }
            }
        }
    }

    int chkover(int w, int h, int j, int i) { // (10)
 
        if (i >= 0 && i < w && j >= 0 && j < h) return 1; //(11)
 
        return 0; //(11)
 
    }
 

배열<field>

0 1 0 1
0 0 0 1
1 1 1 0
0 1 1 1

 

정답  배열 <mines> 

1 1 3 2
3 4 5 3
3 5 6 4
3 5 5 3

 

코드 흐름

▪ 모든 언어는 main()메소드에서 시작한다.

 일단, 코드가 시작되면,

 1. (1) : 4x4배열field 배열을 선언과 동시에 초기화한다.

 2. (2) : 4x4배열 mines배열을 선언과 동시에 모든 요소를 0으로 초기화한다.

 3. (3) : 정수형 변수 w, h를 4로 초기화한다.

 4. (4) :  y = 0 부터 y < 4까지 (5) ~ (13)을 반복한다.

 5. (5) : x = 0 부터 x < 4까지 (6) ~ (13)을 반복한다.

 6. (6) : 해당 field[y][x]의 요소가 0이면 밑의 코드는 실행하지 않고, 다음 반복문으로 간다. 만약 0이 아니면, 밑의 코드를 실행한다.

 7. (7) : j =y - 1 부터 j <= y+1까지 (8) ~ (13)을 반복한다.

 8. (8) : i = x - 1부터 i <= x+1까지 (9) ~ (13)을 반복한다.

 9. (9) : chkover()메소드에 매개변수 값으로 w(4), h(4), j, i 값을 넣어 호출한다. 

10. (10) :  매개변수(w, h, j, i)를 받은 함수 시작점이다.

11. (11) : 만약 i와 j는 0보다는 크고 i 는 w보다 작고, j는 h보다 작다면 1을 반환하고, 그렇지 않다면 0을 반환한다.

12. (12) : 만약 chkover(w, h, j, i)의 반환 값이 1이면, 반환 값이 1이 아니면 (13)은 수행하지 않는다.

13. (13) : mines[j][i]에 누적더하기 (+1)을 해준다.

 

코드 해석

 ▪ 배열 field의 요소가 만약 0이 아니라면(1인 경우) 배열 mines에서 해당 filed[x][y]를 기준으로 mines[x][y]를 적용했을때, mines[x][y]를 가운데에 두고 3x3의 범위에 1을 더하는 프로그램이다.

2022년 3회 정보처리기사 실기 문제1

이러한 방식으로 알고리즘이 진행된다. (끝까지 적어서 정리하진 못했지만 이러한 방식)

 

▪ 결과적으로 이러한 배열이 나오게 된다.

1 1 3 2
3 4 5 3
3 5 6 4
3 5 5 3

 

문제2

관계 대수에 대한 다음 설명에서 괄호(① ~ ⑤)에 들어갈 알맞은 용어를 쓰시오.

 

관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기 술하는 절차적인 언어이다 관계대수에 사용되는 연산은 다음과 같다 .

ㆍ합집합 은 두 릴레이션에 존재하는 튜플의 합집합을 구하되 결과로 생성된 릴레이션에서 중복 (UNION) 되는 튜플은 제거되는 연산으로 사용하는 기호는 (  ①  )이다.

ㆍ차집합 은 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산으로 사용하는 기호는 (DIFFERENCE) ( ② )이다.

ㆍ교차곱 은 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산으로 사용하는 (CARTESIAN PRODUCT) 기호는 (  ③ )이다.

ㆍ프로젝트 는 주어진 릴레이션에서 속성 리스트 에 제시된 속성 값만을 추출하여 (PROJECT) (Attribute List) 새로운 릴레이션을 만드는 연산으로 사용하는 기호는 (  ④ )이다.

ㆍ조인 은 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산 (JOIN) 으로 사용하는 기호는 (  ⑤ )이다.

 

X

π

 

관계대수

 ▪ 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적 언어이다.

 

순수 관계 연산자

   ▪ 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자 

종류 특징 기호
Select ▪ 릴레이션에  존재 하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
릴레이션의 행에 해당하는 튜플(Tuple)을 구하는 것이므로 수평 연산이라고도 함
 시그마(σ)
Project 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
연산 결과에 중복이 발생하면 중복이 제거됨
  릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직연산자라고도 함

파이(π)
Join 공통 속성을 중심으로 두 개의 리레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
Join의 결과는 Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같음
 ⋈ 
Division X ⊃ Y인 두개의 릴레이션 R(X)와 S(Y)가 있을때, R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산 ÷

일반 집합 연산자

    ▪ 수학적 집합 이론에서 사용하는 연산자 

연산자/기호 기능 및 수학적 표현 카디널리티
합집합
UNION
두 릴레이션에 존재하는 튜플의 합집합을 구하는 연산
결과로 생성된 릴레이션에서 중복되는 튜플은 제거
R∪S={t|t∈R  t∈S}
t는 릴레이션 R 또는 S에 존재하는 튜플

|R∪S|  |R| + |S|
합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않음
교집합
INTERSECTION
두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
R∩S={t|t∈R  t∈S}
t는 릴레이션 R과 S에 동시에 존재하는 튜플
|RS|  Min{|R|, |S|}
교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않음
차집합
DIFFERENCE
두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
R-S={t|t∈R  tS}
t는 릴레이션 R에만 존재하고 S에는 존재하지 않는 튜플
|R-S|  |R|
차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않음
교차곱
CARTENSIAN
PRODUCT
X
두 릴레이션에 존재하는 튜플들의 결합된 정보를 구하는 연산
R×S={r · s|r∈R ∧ s∈S}
r · s는 R에 존재하는 튜플 r과 S에 존재하는 튜플 s를 결합한 튜플
|R×S| = |R|×|S|
카티시언 프로덕트의 카디널리티는 두 릴레이션 카디널리티를 곱한 것과 같음

 

관계 해석(Relational Calculus)

  ▪ 관계 데이터의 연산을 표현하는 방법

  ▪ 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술허 해석)에 기반을 두고 관계 데이터베이스를 위해 제안

  ▪ 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특징을 지닌다.     

 

문제3

디자인 패턴에 대한 다음 설명에서 괄호 에 들어갈 알맞은 용어를 <보기> 에서 찾아 쓰시오.

 

ㆍ(  ①  )  패턴은 구현부에서 추상층을 분리하여 서로가 독립적으로 확장할 수 있도록 구성한 패턴으로 기능과 구현을 두 개의 별도 클래스로 구현한다는 특징이 있다.

ㆍ(   )패턴은 한 객체의 상태가 변화하면 객체에 상속된 다른 객체들에게 변화된 상태를 전달하는 패턴으로, 일대다의 의존성을 정의한다 주로 분산된 시스템 간에 이벤트를 생성 ▪ 발행(Publish) 하고 이를 수신(Subscribe) 해야 할 때 이용한다.

 

<보기>

ㄱ. Builder   ㄴ. Factory Method   ㄷ. Adapter   ㄹ. Bridge   ㅁ. Facade   ㅂ. Proxy   ㅅ. Observer   ㅇ. Mediator

 

Bridge

Observe

 

디자인 패턴(Design Pattern)

  ▪  소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환할 수 있는 것은 아니지만 특정한 상황에서 구조적인 문제를 해결하는 방식을 의미한다.

  ▪  즉, 효율적이 코드를 만들기 위한 방법론이다.

 

생성 패턴(Creational Pattern)

  ▪  클래스나 객체의 생성과 참조 과정을 정의하는 패턴

추상 팩토리
(Abstract Factory)
  ▪ 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관ㆍ의존하는 객체들의 그룹으로 생성하여 추상적으로 표현함
  ▪ 연관된 서브 클래스를 묶어 한 번에 교체하는 것이 가능함
빌더(Builder)   ▪ 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성함
  ▪  객체의 생성 과정과 표현 방법을 분리하고 있어, 동일한 객체 생성에서도 서로 다른 결과를 만들어 낼 수 있음.
팩토리 메소드
(Factory Method)
  ▪ 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
  ▪ 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스가 담당함
  ▪ 가상 생성자(Virtual Constructor)패턴이라고도 함

프로토타입
(Prototype)
  ▪ 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
  ▪  일반적인 방법으로 객체를 생성하여, 비용이 큰 경우 주로 이용함
싱글톤(Singleton)   ▪  하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없음
  ▪ 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화할 수 있음.

 

구조 패턴(Structural Pattern)

  ▪ 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴

어댑터(Adapter)   ▪ 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
  ▪ 기존의 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때 이용함
브리지(Bridge)   ▪ 구현부에서 추상층을 분리하여, 서로 독립적으로 확장할 수 있도록 구성한 패턴
  ▪ 기능과 구현을 두개의 별도 클래스로 구현함
컴포지트
(Composite)
  ▪ 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴
  ▪ 객체들을 트리 구조로 구성하여 디렉터리 안에 디렉터리가 있듯이 복합 객체안에 복잡한 객체가 포함되는 구조를 구현할 수 있음
데코레이터
(Decorator)
  ▪ 객체 간의 결합을 통해 능동적인 기능들을 확장할 수 있는 패턴
  ▪ 임의의 객체에 부가적인 기능을 추가하기 위해 다른 객체들을 덧붙이는 방식으로 구현함
퍼싸드(Facade)   ▪ 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
  ▪  서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요함
플라이웨이트
(Flyweigth)
  ▪ 인스턴스가 필요할 때마다 매변 생성하는 것이 아니고 가능한한 공유해서 사용함으로써 메모리를 절약하는 패턴
  ▪  다수의 유사 객체를 생성하거나 조작할 때 유용하게 사용할 수 있음
프록시(Proxy)   ▪ 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴
  ▪ 네트워크 연결, 메모리의 대용량 객체로의 접근 등에 주로 이용함.

 

행위 패턴(Behavioral Pattern)

  ▪ 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴

책임 연쇄
(Chain of
Responsibility)
  ▪ 요청을 처리할 수 있는 객체가 둘 이상  존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
  ▪ 요청을 처리할 수 있는 각 객체들이 고리(Chain)로 묶여 있어 요청이 해결될 때까지 고리를 따라 책임이 넘어감
커맨드
(Command)
  ▪ 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
  ▪ 요청에 사용되는 각종 명령어들을 추상 클래스와 구체 클래스로 분리하여 단순화함
인터프리터
(Interpreter)
  ▪ 언어에 문법 표현을 정의하는 패턴
  ▪ SQL이나 통신 프로토콜과 같은 것을 개발할 대 사용함
반복자(Iterator)   ▪ 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
  ▪ 내부 표현 방법의 노출 없이 순차적 접근이 가능함
중재자(Mediator)   ▪ 수많은 객체들 간의 복잡한 상호작용(Interface)을 캡슐화하여 객체로 정의하는 패턴
  ▪ 객체 사이의 의존성을 줄여 결합도를 감소시킬 수 있음
메맨토(Memento)   ▪ 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
  ▪ Ctrl + Z와 같은 되돌리기 기능을 개발할 때 주로 이용함
옵서버(Observer)   ▪ 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
  ▪ 일대다의 의존성을 정의함
  ▪ 주로 분산된 시스템 간에 이벤트를 생성 ▪ 발행(Publish)하고, 이를 수신(Subscribe)해야할 때 이용함
상태(State)   ▪ 객체의 상태에 따라 동일한 동작을 다르게 처리해야할 때 사용하는 패턴
  ▪ 객체 상태를 캡슐화하고 이를 참조하는 방식으로 처리함
전략(Stategy)   ▪ 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
  ▪ 클라이언트는 독립적으로 원하는 알고리즘을 선택하여 사용할 수 있으며, 클라이언트에 영향 없이 알고리즘의 변경이 가능함
템플릿 메소드
(Template
Method)
  ▪ 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
  ▪ 유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에서 정의함으로써 코드의 양을 줄이고 유지보수를 용이하게 해줌
방문자(Visitor)   ▪ 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
  ▪ 분리된 처리 기능은 각 클래스를 방문(Visit)하여 수행함

 

문제7

다음과 같이 테이블을 정의하고 튜플을 삽입하였을 때 각 번호 의 문을 실행한 결과를 ( ①, ② )쓰시오.

   
   CREATE TABLE 부서(
        부서코드 INT PRIMARY KEY,
        부서명 VARCHAR(20)  
   );
       
    CREATE TABLE 직원(
        직원코드 INT PRIMARY KEY,
        부서코드 INT,
        직원명 VARCHAR(20),
        FOREIGN KEY(부서코드) REFERENCES 부서(부서코드)    
        ON DELETE CASCADE
    );
       
       
    INSERT INTO 부서 VALUES(10, '영업부');
    INSERT INTO 부서 VALUES(20, '기획부');
    INSERT INTO 부서 VALUES(30, '개발부');

    INSERT INTO 직원 VALUES(1001, 10, '이진수');  
    INSERT INTO 직원 VALUES(1002, 10, '곽연경');  
    INSERT INTO 직원 VALUES(1003, 20, '김선길');  
    INSERT INTO 직원 VALUES(1004, 20, '최민수');  
    INSERT INTO 직원 VALUES(1005, 20, '이용갑');  
    INSERT INTO 직원 VALUES(1006, 30, '박종일');
    INSERT INTO 직원 VALUES(1007, 30, '박미경');
 

① SELECT DISTINCT COUNT(부서코드) FROM 직원 WHERE 부서코드 = 20;

 

 ▪ DISTINCT가 부서코드에 적용되는 것이 아니라 부서 코드가 20인 행 중에 겹치는게 있으면 그것을 하나로 치고 COUNT를 하라는 것이다.

 ▪ 직원 테이블에서 부서코드가 20인 행은 (1003, 20, 김선길), (1004, 20, 최민수), (1005, 20, 이용갑) 딱 3행이 있는 값들이 완전히 똑같은 행은 없으니까 답은 3이 된다.

 

∴ 3

 

② DELETE FROM 부서  WHERE = 20;

SELECT DISTINCT COUNT(부서코드 ) FROM  직원;

 

 ▪ 부서코드는 부서 테이블에서 참조한다. 

 ▪ ON DELETE CASCADE로 만약 부서 테이블에서 해당 부서 코드를 삭제하면 직원 테이블이 참조하는 행도 삭제되어야한다. 

 ▪ 부서 코드가 20인 행을 모두 삭제했으니, 현재 직원 테이블은 (1001, 10, 이진수), (1002, 10, 곽연경), (1006, 30, 박종일), (1007, 30, 박미경)이 있다.

 ▪ 남은 행들 중 값이 겹치는 행은 없으므로 답은 4가 된다.

 

∴ 4

 

문제8

다음 설명에서 괄호(①, ②) 에 들어갈 알맞은 용어를 쓰시오.

 

ㆍ(  ①  ) 은 컴퓨터 보안에 있어서 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적 시스템 침입 수단을 의미한다.

ㆍ(   ) 는 특정 목적을 가지고 데이터를 수집하였으나, 이후 활용되지 않고 저장만 되어있는 대량의 , 데이터를 의미한다 미래에 사용될 가능성을 고려하여 저장 공간에서 삭제되지 않고 보관되어 있으나,이는 저장 공간의 낭비뿐만 아니라 보안 위험을 초래할 수도 있다.

 

사회 공학(Social Engineering)  

다크 데이터(Dark Data)

 

 

  • 서비스 거부 공격의 유형
Ping of Death (죽음의 핑) ▪ Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 혀용 범위 (65,536 바이트) 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격방법.
Smurfing (스머핑)  IP나 ICMP 의 특성을 이용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크 또는 시스템의 상태를 불능으로 만드는 공격방법.
SYN Flooding  TCP (Transmission Control Protocol) 는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후에 데이터를 전송하게 되는데, SYN Floding은 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정삭적인 서비스를 수행하지 못하게 하는 공격방법.
TearDrop  데이터의 송,수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때 분할 순서를 알 수 있도록 Fragment Offset 값을 함께 전송하는데, TearDrop은 이 Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격방법.
Land  패킷을 전송할 때 송신 IP주소와 수신 IP주소를 모두 공격 대상의 IP주소로 하여 공격 대상에게 전송하는 것으로, 이 패킷을 받은 공격 대상은 송신 IP 주소가 자신이므로 자신에게 응답을 수행하게 되는데, 이러한 패킷이 계속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격.
DDoS
(Distributed Denial of Service,
분산 서비스 거부 공격)
 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것으로, 네트워크에서 취약점이 있는 호스트들을 탐색한 후 이들 호스트들에 분산서비스 공격용 툴을 설치하여 에이전트(Agent)로 만든 후 DDos 공격에 이용함.

  • 네트워크 침해 공격 관련 용어
스미싱 (Smishing) ▪ 각종 행사 안내, 경품 안내 등의 문자 메시지(SMS)를 이용해 사용자의 개인 신용정보를 빼내는 수법.
사회 공학
(Social Engineering)
컴퓨터 보안에 있어 인간 상호작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적인 시스템 침입 수단을 말함.
스피어 피싱 (Speer Phishing)   사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취 함.
세션 하이재킹(Session Hijacking)  상호 인증 과정을 거친 후 접속해 있는 서브와 서로 접속되어 클라이언트 사이의 세션 정보를 가로채는 공격 기법으로, 접속을 위한 인증 정보 없이도 가로챈 세션을 이요해 공격자가 원래의 클라이언트인 것처럼 위장하여 서버의 자원이나 데이터를 무단으로 사용함
  TCP 3-Way-Handshake 과정에 끼어듦으로써 클라이언트와 서버 간의 동기화된 시퀀스 번호를 가로채 서버에 무단으로 접근하는 TCP 세션 하이재킹이 대표적
APT
(Advabced Persistent Threats, 지능형 지속 위협)
 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격.
무작위 대입 공격
(Brute Force Attack)
 암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식.
큐싱(Qshing)  QR코드(Quick Response code)를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법의 하나로, QR코드와 개인정보 및 금융정보를 낚는다(Fising)는 의미의 합성 신조어.
SQL 삽입(Injection) 공격  전문 스캐너 프로그램 혹은 붓넷 등을 이용해 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 데이터베이스 등의 데이터를 조작하는 일련의 공격방식.
크로스사이트 스크립팅 (XSS)  웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 등 스크립트의 취약점을 악용한 해킹 기법.
  • 정보 보안 침해 공격 관련 용어
좀비 (Zombie) PC ▪ 악성코드에 감염되어다른 프로그램이나 컴퓨터로인해 조종되도록 만들어진 컴퓨터로, C&C 서버의 제어를 받아 주로 DDoS 공격 등에 이용됨.
C&C
(Command & Control) 서버
 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버를 말함.
봇넷(Botnet)  악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태를 말함.
웜(Worm)  네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스의 일종으로 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등이 웜 공격의 한 형태임.
제로 데이 공격
(Zero Day Attack)
 보안 취약점이 발견되었을 때 발견되 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격으로 공격의 신속성을 의미함.
키로거 공격
(Key Logger Attack)
 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격.
랜섬웨어
(Ransomware)
 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램으로, 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 함.
백도어
(Back Door, Trap Door)
 시스템 설계자가 서비스 기술자나 요지 보수 프로그램 작성자(Programmer)의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로로, 컴퓨터 범죄에 악용되기도 함.
백도어 탐지 방법 : 무결성 검사, 로그분석, SelUID 파일 검사
트로이 목마
(Trojan Horse)
정삭적인 기능을 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것으로, 자기 복제 능력은 없음.
다크 데이터
(Dark Date)
기업이 정보를 수집한 후 저장만 하고 분석에 활용하고 있지 않은 다량의 데이터(사용하지 않고 저장공간만 차지하는 불필요한 정보를 의미)

 

문제9

다음 Python 으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단 출력문의 출력 서식을 준수하시오.)

   
    a = [1, 2, 3, 4, 5]
    a = list(map(lambda num : num + 100, a))
    print(a)
 

lambda num : num + 100 :  인수로 전달받은 값에 100을 더한다.

더한 값을 리스트 a의 각  해당 요소에 적용한다.

적용하여 반환된 값을 배열 a에 저장한다.

  출력하면 a는 list이므로 a의 요소가 아닌 a를 출력할 경우 [101, 102, 103, 104, 105]와 같은 형태로 출력된다.

 

[101, 102, 103, 104, 105]

 

문제10

다음 설명에 해당하는 알맞은 용어를 쓰시오.

다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션으로 방화벽 ,  IDS, IPS, 웹 방화벽, VPN  등에서 발생한 로그 및 보안 이벤트를 통합하여 관리함으로써 비용 및 자원을 절약할 수 있는 특징이 있다. 또한 보안 솔루션 간의 상호 연동을 통해 종합적인 보안 관리 체계를 수립할 수 있다.

 

ESM(Enterprise Security Management), SIEM(Security Information & Event Management) 중 아무거나

 

로그 관리 솔루션

 

ESM(Enterprise Security Management)

Firewal, IPS(IDS), UTM 등의 보안 솔루션 들의 로그, 이벤트를 하나로 모으는 통합보안 관리 시스템(전사적 통합보안관리)

통합된 솔루션들의 보안 로그를 통합관리, 솔루션간의 상호연동 등의  기능이 가능하며, 하나로 통합이 되니까 전체 시스템의 보안정책을 수립하는데도 용이하다 (여러가지 장비의 로그/이벤트를 한방에 관리)

주로 이벤트 위주의 단시간 위협을 분석하는 것이며 DBMS 기반

 

SIEM(Security Information & Event Management)

2015년 가트너에 의해 처음으로 도입된 개념으로. ESM과 유사하다.

다른 점이라고 하면 ESM은 단기 이벤트 성 위주였다면, SIEM은 빅데이터 수준의 장시간 심층 분석 인덱싱 기반이다.

  ESM보다는 SIEM이 좀 더 구체적인 조건으로 시나리오를 생성한다는 차이점이 있다.

 

문제14

보안 및 보안 위협에 대한 다음 설명에서 괄호(① ,②) 에 들어갈 알맞은 용어를 보기 에서 찾아  쓰시오

 

ㆍ(  ①  )  은 칩 설계회사인  ARM(Advanced RISC Machine)에서 개발한 기술로 하나의 프로세서(processor)  내에 일반 애플리케이션을 처리하는 일반 구역(normal world) 과 보안이 필요한 애플리케이 션을 처리하는 보안 구역(secure world) 으로 분할하여 관리하는 하드웨어 기반의 보안 기술이다.

ㆍ(   ②  )  은 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하 기 위해 이와 유사한 유명 도메인을 미리 등록하는 것으로  URL 하이재킹(Hijacking) 이라고도 한다 유명 사이트들의 도메인을 입력할 때 발생할 수 있는 온갖 도메인 이름을 미리 선점해 놓고 이용자가 모 르는 사이에 광고 사이트로 이동하게 만든다.

<보기>

㉠ Tvishing ㉡ Pharming Trustzone APT  ㉤ Hacktivism   

Typosquatting  Watering Hole Smurfing  ㉨ Ransomware ㉩CSRF

 

TrsutZone

Typosquatting

티비싱 (Tvishing)

스마트 TV에 악성 소프트웨어를 설치해 스마트 TV에 대한 최고 접근 권한을 획득하는 해킹 기술이다

 

Pharming (파밍)

합법적으로 소유하고 있던 도메인을 탈취하거나 DNS 이름을 속여 사용자들이 진짜 사이트로 오인하도록 유도하여 개인 정보를 훔치는 신종 인터넷 사기 수법임 => 공식적으로 운영하고 있는 도메인 자체를 탈취함

 

Trustzone 

프로세서(Processor) 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술.

암(ARM: Advanced RSIC Machine)사에서 개발하였다(ARM® TrustZone®). 트러스트존(TrustZone) 기술은 하드웨어에서 직접 실행되며 하나의 CPUv 를 2개의 가상 공간, 즉 일반 구역(normal world)과 보안 구역(secure world)으로 분할하여 관리.

 

APT (Advanced Persistent Threats, 지능형 지속 위협)

다양한 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격임

 

핵티비즘[Hacktivism]

해커와 행동주의의 합성어로 자신들의 정치적 목적을 달성하기 위한 수단으로 자신과 노선을 달리하는 정부를 해킹하는 활동

 

Typosquatting (타이포스쿼팅)

네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 절차를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 것으로 URL 하이재킹이라고도 한다.

 

Watering Hole 

Web Exploit( 웹 취약점 ) 을 이용한 공격.
이 공격은 APT 공격에서 주로 쓰이는 공격이며, 타겟이 자주 들어가는 홈페이지를 파악했다가, 그 홈페이지의 취약점을 통해 악성코드를 심어 사용자가 모르게 해당 악성코드를 다운로드 받게 하고, 다운로드 된 악성코드를 통해 공격을 하는 방식을 취합니다.

 

Smurfing(스머핑)

IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크 일부를 불능 상태로 만드는 공격 방법이다 스머핑 공격을 무력화하는 방법 중 하나는 각 네트워크 라우터에서 IP 브로드캐스트 주소를 사용할 수 없게 미리 설정해 놓는 것임

 

Ransomware 

사용자의 컴퓨터를 장악하거나 데이터를 암호화한 다음[4] 정상적인 작동을 위한 대가로 금품을 요구하는 유형의 컴퓨터 바이러스

 

CSRF (Cross Site Request Forgery)

웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격(사이트 간 요청 위조)

 

문제15

다음 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오.

 

(           )는 한 번의 로그인으로 개인이 가입한 모든 사이트를 이용할 수 있게 해주는 시스템을 말한다 개인의 경우 사이트에 접속하기 위하여 아이디와 패스워드는 물론 이름 전화번호 등 개인정보를 각 사이 트마다 일일이 기록해야 하던 것이 한 번의 작업으로 끝나므로 불편함이 해소되며 기업에서는 회원에 대한 통합관리가 가능해 마케팅을 극대화시킬 수 있다는 장점이 있다.

 

Single Sign-On(SSO)

Single Sign-On(SSO)

  1회 사용자 인증으로 다수의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 인증 솔루션이다.

  요즘 사용자들은 브라우저에서 직접 애플리케이션에 자주 액세스하기 때문에 조직은 보안 및 사용자 경험 모두를 개선하는 액세스 관리 전략에 우선 순위를 둔다.

  한 번 자격 증명이 검증된 사용자에게는 반복되는 로그인 없이 모든 암호 보호 리소스에 액세스하도록 하여 보안과 사용자 경험을 모두 충족할 수 있다.

문제16

스케줄링에 대한 다음 설명에서 괄호(①~③) 에 들어갈 알맞은 용어를 쓰시오.

 

ㆍ(  ①  ) 는 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법이다. 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘이지만 실행 시간이 긴 프로세스는 실행 시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태가 발생될 수 있다.

 

ㆍ(  ②  )  은 시분할 시스템을 위해 고안된 방식으로 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 시간 할당량 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치된다 할당되는 시간이 작을 경우 문맥 교환 및 오버헤드가 자주 발생되어 요청된 작업을 신속히 처리할 수 없다.

 

ㆍ(  ③  )  는 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간 을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU 를 할당하는 기법으로 시분할 시스템에 유용하다. 준비상태 큐에 있는 각 프로세스의 실행 시간을 추적하여 보유하고 있어야 하므로 오버헤드가 증가한다.

 

① SJF 스케줄링

② RR 스케줄링

③ SRT 스케줄링

 

비선점(Non-Preemptive) 스케줄링

  이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수없는 스케줄링 기법

  프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 대 가지 COU를 사용한다.

  프로세스 응답 시간의 예측이 용이하다.

  일괄 처리 방식에 적합하다.

  종류 : FCFS, SJF, 우선순위, HRN, 기한부 등

 

선점(Preemptive) 스케줄링

  하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할수 있는 스케줄링 기법

  우선 순위가 높은 프로세스를 빠르게 처리할 수 있다.

  주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용된다.

  많은 오버헤드(Overhead)를 초래한다.

  종류 : Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등

 

  비선점 스케줄링종류(Non-Preemptive, Non-Preemption) 

FCFS
(First-Come First-Service)
=
FIFO
(First In First Out)
  준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당
  먼저 도착한 것이 먼저 처리되어 공평성 유지, 짧은 작은이 긴 작업을 기다리는 경우 발생
SJF(Shortest Job First)   실행시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법
  가장 적은 평균 대기 시간을 제공하는 최적 알고리즘
HRN
(Hightest Responseratio Next)
  실행시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로, 대기 시간과 서비스 시간을 이용하는 기법
  우선순위 계산 공식 = 대기시간 + 서비스시간 / 서비스시간
  우선 순위 계산 결과값이 높은 것부터 우선 순위가 부여, 대기 시간이 긴 프로세스일 경우 계산 결과값이 높게 나옴
기한부(Deadline)   프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법
  시스템은 프로세스에게 할당할 정확한 시간을 추정해야함
  사용자는 시스템이 요구한 프로세스에 대한 정확한 정보를 제공해야함
우선순위(Priority)   준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법

  선점 스케줄링(Preemptive)

선점 우선순위   준비 상태 큐의 프로세스들 중에서 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법
SRT
(Shortest Remaining Time)
  비선점 기법 SJF 알고리즘을 선점 형태로 변경한 기법
  현재 실행중 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행시간을 비교해 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법
  준비상태 큐에 있는 각 프로세스의 실행 시간을 추적하여 보유하고 있어야 하므로 오버헤드가 증가한다.
RR(Round Robin)   시분할 시스템(Time Sharing System)을 위해 고안된 방식, FCFS 알고리즘을 선점 형태로 변형한 기법
  FCFS(FIFO) 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 할당된 시간(Time Slice Quantum)동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치
  할당되는 시간이 클 경우 FCFS기법과 같아지고, 할당되는 시간이 작을 경우 문맥 교환 및 오버헤드가 자주 발생
다단계 큐(Multi level Queue)   프로세스를 특정 그룹으로 분류할 수 있는 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법
다단계 피드백 큐(Multi level Feedback Queue)   특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법

 

문제17

UML 에 대한 다음 설명에서 괄호(① ~ ③) 에 공통으로 들어갈 알맞은 용어를 쓰시오

 

UML은 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어로 사물,(   ①  ) , 다이어 그램으로 이루어져 있다.

 

ㆍ(  ①  ) 는 사물과 사물 사이의 연관성을 표현하는 것으로 연관 집합 포함 일반화 등 다양한 형태의 (  ①  )  가 존재한다.

ㆍ(  ②   ) 는  UML에 표현되는 사물의 하나로 객체가 갖는 속성과 동작을 표현한다. 일반적으로 직사각형으로 표현하며 직사각형 안에 이름, 속성, 동작을 표기한다.

ㆍ(   ③   ) 는 (  ②   )  와 같은 UML에 표현되는 사물의 하나로, (   ②  ) 나 컴포넌트의 동작을 모아 놓은 것이며, 외부적으로 가시화되는 행동을 표현한다. 단독으로 사용되는 경우는 없으며, (     ) 구현을 위한 ( ② )  또는 컴포넌트와 함께 사용된다.

 

관계(Relationships)

클래스(Class)

인터페이스(Interface)

 

UML(Unified Modeling Language)

  시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 모델링 언어이다.

  Rumbaugh(OMT), Booch, Jacobson 등의 객체지향 방법론의 장점을 통합

  OMG(Object Management Group)에서 표준으로 지정

  UML의 구성 요소 : 사물(Thing), 관계(Relationships), 다이어그램(Diagram)

 

구조적(Structural) 다이어그램(=> 정적 모델링을 위한 다이어그램)

클래스 다이어그램
(Class Diagram)
  클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현함
  객체지향 모델링에서 가장 많이 사용하는 개념입니다. 클래스는 객체지향 프로그램에서 속성과 행위를 갖는 하나의 객체 단위입니다. 클래스의 구성 요소로는 이름, 속성, 메서드 입니다.
객체 다이어그램
(Object Diagram)
  클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현
  럼바우(Rumbaugh) 객체 지향 분석 기법에서 객체 모델링에 활용됨
컴포넌트 다이어그램
(Component Diagram)
  실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현함
  구현 단계에서 사용됨
배치 다이어그램
(Deployment Diagram)
  결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현함
  구현 단계에서 사용됨
복합체 구조 다이어그램
(Composite Structure Diagram)
  클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현함
패키지 다이어그램
(Package Diagram)
  유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현함

행위(Behavioral) 다이어그램(=> 동적 모델링을 위한 다이어그램)

유스케이스 다이어그램
(Use Case Diagram)
  사용자의 요구를 분석하는 것으로, 기능 모델링 작업에 사용함
  사용자(Actor)와 사용 사례(Use Case)로 구성됨
시퀀스 다이어그램
(Sequence Diagram)
  상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현함
커뮤니케이션 다이어그램
(Communication Diagram)
  동작에 참여하는 객체들이 주고받는 메시지와 객체들 간 연관 관계를 표현함
상태 다이어그램
(State Diagram)
  하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현함
  럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용됨
활동 다이어그램
(Activity Diagram)
  시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현함
상호 작용 개요 다이어그램
(Interaction Overview Diagram)
  상호작용 다이어그램 간의 제어 흐름을 표현함
타이밍 다이어그램
(Timing Diagram)
  객체 상태 변화와 시간 제약을 명시적으로 표현함

인터페이스 (Interface)

  클래스의 책일을 지정하는 작업 집합.

  클래스의 외부적으로 가시화되는 요소의 행동을 표현. 특정 클래스나 컴포넌트의 전체 또는 일부분만의 행동을 나타낼수 있다

  인터페이스는 클래스와 달리 연산만으로 구성된다. 인터페이스 내부의 연산은 추상(abstract) 연산이다(추상메서드). 기능을 명세하기위한 수단.

 

 

문제18

다음 다이어그램을 참고하여 괄호(①~⑤) 의 설명에 적합한 요소를 찾아 기호로 쓰시오

2022년 3회 정보처리기사 실기 문제18

ㆍ(  ①  )  : 관계 집합을 의미한다

ㆍ(  ②  )  : 관계 집합과 속성을 연결한다.

ㆍ(  ③  )  : 개체 집합을 의미하며 키로 사용되는 항목에는 밑줄을 표시한다.

ㆍ(  ④  )  : 관계 집합의 속성을 의미한다.

ㆍ(  ⑤  )  : 개체 집합과 관계 집합을 연결한다.

 

 

① 

② 

③ 

④ 

⑤ 

 

 

 마름모 : 관계 집합

 실선 : 개체 집합과 관계 집합을 연결

 점선 : 관계 집합과 그 속성을 연결

 

3