본문 바로가기

IT

정처기 필기 기출문제 독학 자료 데이터베이스 암호화

• 애자일(Agile) 방법은 사용자의 요구사항이 빈번하게 변경되는 문제점을 극복하기 위한 방법이다.

• UML 모델링은 요구분석, 설계, 구현 등의 소프트웨어 개발 과정에서 개발자 간의 의사소통을 원활하게 이루어지게 하기 위하여 표준화한 모델링 언어이다. 따라서 UML 다이어그램 모두가 요구사항 모델링에 활용되는 도구이다. 이 중 단계 다이어그램(Phase Diagram)은 UML 다이어그램에 존재하지 않는 다이어그램이다.​ 

 

럼바우분석기법

① 객체(Object) 모델링 : 객체를 찾아내고 객체의 속성, 연산을 식별

② 동적(Dynamic) 모델링 : 객체 모형들의 행위, 상태, 조건을 파악

③ 기능(Functional) 모델링 : 입출력 결정, 자료 흐름도(DFD) 작성​ 

 

① 객체지향 분석 : 프트웨어를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석

② 구조적 분석 : DFD, DD, Mini-Spec 사용

③ 기능적 분석 : 서비스 기능 위주 분석

 실시간 분석 : 통신의 송수신 데이터 분석​ 

 

구현 단계 작업 절차 : 코딩 계획 → 코딩 → 컴파일 → 코드 테스트 

 

📌 데이터베이스 설계 단계 개요

데이터베이스 설계는 요구 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현의 과정으로 이루어집니다.

단계설명주요 작업

1. 요구 조건 분석 사용자 요구사항을 분석하여 데이터 요구사항을 정의 데이터 수집 및 요구사항 정리
2. 개념적 설계 개념적 데이터 모델링 수행 ER 다이어그램 작성
3. 논리적 설계 데이터 모델을 특정 DBMS에 맞게 변환 정규화 수행, 스키마 정의
4. 물리적 설계 저장 구조, 인덱스, 레코드 형식 등의 최적화 설계 저장 레코드 설계, 인덱스 설계, 접근 경로 설계
5. 구현 및 운영 실제 데이터베이스 구축 및 운영 SQL을 활용한 DB 구현

🔹 물리적 설계(Physical Design)

물리적 설계는 데이터의 실제 저장 구조와 효율성을 고려하는 단계로, 아래 작업과 밀접한 관련이 있습니다.
1️⃣ 저장 레코드 양식 설계: 데이터를 저장하는 방식(고정 길이 vs 가변 길이 등)
2️⃣ 레코드 집중의 분석 및 설계: 데이터를 어떻게 그룹화하여 저장할지 결정
3️⃣ 접근 경로 설계: 인덱스, 해시, B-트리 등의 검색 최적화 기법 적용

 

📌 ACID 원칙 (Atomicity, Consistency, Isolation, Durability)

ACID 원칙은 데이터베이스 트랜잭션의 신뢰성을 보장하는 네 가지 속성입니다.

속성설명예시

1. 원자성 (Atomicity) 트랜잭션의 연산은 모두 수행되거나, 하나도 수행되지 않아야 한다. 송금 과정에서 돈이 보내지는 과정만 이루어지고 받는 과정이 실패하면 전체 트랜잭션이 롤백되어야 한다.
2. 일관성 (Consistency) 시스템이 가지고 있는 고정 요소(제약 조건 등)는 트랜잭션 전후로 항상 유지되어야 한다. 계좌 잔액이 음수가 되는 등의 오류가 발생하지 않도록 데이터 무결성이 유지되어야 한다.
3. 격리성 (Isolation) 트랜잭션 실행 중에는 다른 트랜잭션이 영향을 주거나 받지 않아야 한다. 여러 사용자가 동시에 같은 상품을 구매할 때, 재고가 꼬이지 않도록 트랜잭션 간 영향을 차단해야 한다.
4. 영속성 (Durability) 트랜잭션이 성공적으로 완료되면, 그 변경 사항은 영구적으로 반영되어야 한다. 전원이 꺼져도 데이터베이스에 기록된 정보는 보존되어야 한다.

 

 

① 셀렉션(σ) : 튜플의 수평적 부분 집합을 구한다.

 프로젝션(Π) : 튜플의 수직적 부분 집합을 구한다.

③ Join(▹◃) : 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만든다.

④ Division(÷) : 모든 조건이 만족하는 튜플의 집합을 구한다​ 

 

① 릴레이션의 각 행을 튜플(Tuple)라 하며, 예로 도서 릴레이션을 구성하는 튜플에는 도서번호, 도서명, 저자, 가격 등이 있다.

② 릴레이션의 각 열을 속성(Attribute)이라 하며, 하나의 튜플은 각 속성에서 정의된 값을 이용하여 구성된다.

도메인(Domain)은 하나의 속성이 가질 수 있는 같은 타입의 모든 값의 집합으로 각 속성의 도메인은 원자 값을 갖는다.

④ 릴레이션 스키마(Schema)는 릴레이션의 논리적인 구조를 정의한 것으로 릴레이션의 이름과 릴레이션에 포함된 속성들의 집합을 의미한다.​ 

 

교착상태가 발생할 필요 충분 조건 4가지 : 상호배제(Mutual Exclusion), 비선점(Non Preemption), 환형 대기(Circular Wait, 순환 대기), 점유와 대기(Hold and Wait) 

 

📌 IPv6의 주요 특징

IPv6(Internet Protocol version 6)는 IPv4의 한계를 극복하고 인터넷 환경을 개선하기 위해 개발된 차세대 인터넷 프로토콜입니다.

🔹 주요 특징

1. 128비트 주소 체계 IPv4(32비트)보다 확장된 128비트 주소 공간 사용
2. 브로드캐스트(Broadcast) 제거 IPv6에서는 브로드캐스트를 지원하지 않음, 대신 멀티캐스트(Multicast)와 애니캐스트(Anycast)를 사용
3. 보안 및 인증 강화 IPSec(보안 확장 헤더) 지원으로 데이터 인증 및 암호화 기능 제공
4. 주소 자동 설정 DHCP 없이도 자동으로 주소 할당 가능 (Stateless Address Auto-Configuration, SLAAC)
5. 헤더 구조 간소화 IPv4보다 간결한 헤더 구조로 라우팅 성능 향상

 

 

📌 TCP/IP 프로토콜에서 TCP가 속하는 계층

TCP(Transmission Control Protocol)는 트랜스포트 계층(Transport Layer)에 속합니다.

🔹 트랜스포트 계층의 역할

  • 프로세스 간 통신을 담당 (즉, 응용 프로그램 간 데이터 전송을 책임짐)
  • 데이터의 신뢰성 있는 전송 보장 (패킷 손실, 순서 오류 방지)
  • 흐름 제어(Flow Control)오류 제어(Error Control) 수행
  • 다중화(Multiplexing) 기능 제공 (여러 프로세스가 네트워크를 공유)

🔹 트랜스포트 계층의 주요 프로토콜

TCP (Transmission Control Protocol) 연결 지향적(3-way Handshake), 신뢰성 보장, 패킷 순서 유지
UDP (User Datagram Protocol) 비연결형, 신뢰성 없음, 빠른 전송, 실시간 서비스 (예: 영상 스트리밍, VoIP)

🔹 각 계층별 역할 및 비교

1. 데이터 링크 계층 물리적 장치 간 데이터 전송 (MAC 주소 사용) Ethernet, Wi-Fi, PPP
2. 네트워크 계층 패킷 라우팅 및 IP 주소 관리 IP, ICMP, ARP
3. 트랜스포트 계층 프로세스 간 데이터 전송 및 신뢰성 보장 TCP, UDP
4. 세션 계층 세션 관리 (연결 생성 및 유지) SSL/TLS (일부 포함)

 

② atof() : 정수 문자열을 실수(float)로 변환한다.

 itoa() : 정수(int) 문자열을 2진, 8진, 10진, 16진 문자열로 변환한다.

 ceil() : x보다 작지 않은 가장 작은 정수를 구한다.​ 

 

 Locality : 프로그램이 실행할 때 기억 장치 내의 모든 정보를 균일하게 참조하는 것이 아니라 어느 한순간에 특정 부문을 집중적으로 참조하는 프로그램의 순차적인 성질로 한번 호출된 자료나 명령이 곧바로 다시 사용될 가능성을 말한다.

② Dead Lock : 복수의 프로세스가 가능하지 못한 상태를 무한정 기다리고 있는 상태를 말한다.

 Thrashing : 동시에 여러 개의 작업이 수행되는 다중 프로그래밍 시스템 또는 가상 기억 장치를 사용하는 시스템에서 하나의 프로세스가 작업 수행 과정 중 지나치게 페이지 부재가 발생함으로 인하여 전체 시스템의 성능이 저하되는 현상이다.​ 

 

📌 Java에서 변수와 자료형 관련 설명

🔹 (1) 변수(Variable)란?

  • 값을 저장하는 메모리 공간
  • 변수에는 특정 자료형(Data Type)이 지정되며, 해당 자료형에 따라 저장할 수 있는 데이터가 달라짐
  • 변수를 선언할 때 자료형을 반드시 지정해야 함

🔹 (2) Java의 기본 자료형 (Primitive Types)

Java는 8가지 기본 자료형을 제공함.

byte 1byte -128 ~ 127
short 2bytes -32,768 ~ 32,767
int 4bytes -2,147,483,648 ~ 2,147,483,647
long 8bytes -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float 4bytes 소수점 포함 실수 (정확도 낮음)
double 8bytes 소수점 포함 실수 (정확도 높음)
char 2bytes 한 개의 문자 (Unicode 사용)
boolean 1byte true 또는 false

 

해시 함수(해시 암호 방식) : MD4, MD5, SHA-1

블록 암호 방식 : DES, SEED, AES​ 

 

나선형 모형의 개발 순서 : 계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가 

 

접근 통제 보안 정책

•DAC(임의 접근 통제) 정책

•MAC(강제적 접근 통제) 정책

•RBAC(역할 기반 접근 통제) 정책​ 

 

🔹 스트림 암호화 vs 블록 암호화 비교

암호화 방식설명대표 알고리즘

스트림 암호(Stream Cipher) 데이터를 한 비트 또는 한 바이트 단위로 암호화 RC4, ChaCha20
블록 암호(Block Cipher) 데이터를 고정 크기 블록 단위로 암호화 (예: 128비트) AES, DES, Blowfish

 

📌 대칭키 암호화 vs 비대칭키 암호화 비교

암호화 방식은 크게 대칭키(Symmetric) 암호화비대칭키(Asymmetric) 암호화로 나뉩니다.

대칭키 암호화 (Symmetric Encryption) 암호화와 복호화에 같은 키(Key) 사용 빠르고 효율적 AES, DES, 3DES, RC4
비대칭키 암호화 (Asymmetric Encryption) 공개키(Public Key)개인키(Private Key) 사용 보안성이 높지만 속도가 느림 RSA, ECC, DSA

 

세션 하이재킹 탐지 방법

• 비동기화 상태 탐지 : 서버와 패킷의 순서 번호를 주기적으로 체크

ACK STORM 탐지 : 급격한 ACK 비율 증가 시 탐지

 패킷의 유실과 재전송 증가 탐지 : 공격자는 중간자 공격을 하므로 패킷의 유실이 되고 응답시간이 길어짐을 탐지

 예상치 못한 접속의 리셋 탐지 : 세션이 중단되거나 리셋 되는가를 탐지​ 

 

🔹 공개키 암호화(Public Key Encryption) 개념

공개키 암호화는 공개키(Public Key)와 개인키(Private Key) 두 개의 키를 사용하는 암호화 방식입니다.

✔️ 송신자는 수신자의 "공개키"로 데이터를 암호화
✔️ 수신자는 자신의 "개인키"로 데이터를 복호화
✔️ 공개키는 여러 사람이 공유 가능, 개인키는 오직 본인만 보유

➡️ 대표적인 공개키 암호화 알고리즘:

  • RSA
  • ECC (Elliptic Curve Cryptography)
  • DSA (Digital Signature Algorithm)

✅ 최종 정리

구분대칭키 암호화비대칭키 암호화

키 개수 1개 2개 (공개키 + 개인키)
속도 빠름 🚀 느림 🐢
보안성 키 유출 위험 있음 🔑 보안성 높음 🔒
사용 예시 VPN, 파일 암호화 SSL, 전자 서명, 이메일 암호화