Security Flashcards
암호화
▣ 암호화의 정의 : 평문을 암호화된 문장으로 변환하는 기술 ▣ 암호화의 특성 (기무가부인) - 기밀성(암/복호화), 무결성(해쉬함수), 가용성(암호/인증), 부인봉쇄(전자서명), 인증(인증서) ▣ 암호화 알고리즘의 원리 (대블치확압) - 대체, 블록화, 치환, 확장, 압축 ▣ 암호화의 구성요소 - 평문, 암호문, 암호화, 복호화, 키, 암호 알고리즘, 암호 시스템 ▣ 암호화의 분류 1. 양방향 (기밀성) 가. 대칭키 (비밀키암호화, 암호화키=복호화키, 데이터암호목적) 1) Stream방식 (1bit씩 연산, XOR연산, H/W 구현용이, Confusion(Substitution)) - True Random# : OTPad - Psuedo Random# : RC4(PPTP, WEP, TKIP) 2) Block방식 (2bit 이상 묶음 연산, Confusion-Diffusion(S-Box+P-Box), S/W 구현용이 - Festel구조 : DES, 3DES - SPN구조 : AES - 기타 : IDEA(유럽) 나. 비대칭키 (공개키암호화, 암호화키≠복호화키, 대칭키교환용도) 1) 인수분해 : RSA(디지털서명, PGP), Robin 2) 이산대수 : DH(키교환), ElGmal, DSA(디지털서명) 3) 타원곡선방정식 : ECC 2. 단방양 (무결성) 가. HASH 1) MDC - Modification Detection - Key 없음 - SHA-1, MD5, HAVAL 2) MAC - Message Authentication - Key 있음 - HMAC, NMAC, CBC-MAC
암호화 기술
- SPN (Substitution-Permutation Network) : AES, ARIA
- Feistel : DES, SEED
- 인수분해 : RSA
- 타원곡선 : ECC
- 이산대수 : Diffie-Hellman, DSA
- 해시 알고리즘 : MD-5, SHA-1, SHA-2
SPN (Substitution-Permutation Network)
- 대체순열구조
- 전치와 치환을 이용한 관용암호 방식 (암/복호화에 동일한 키를 사용하는 방식)
- 128비트를 4x4 행렬로 나타내어 암호화
- AES, ARIA
Feistel
- N 비트의 블록을 N/2 씩 둘로 나누고, R번의 라운드 만큼 반복된 연산
- 라운드 함수를 반복적으로 적용, 이전 블록 암호문과 평문을 XOR한 형태
- DES, SEED
인수분해
- 두 큰 소수 p와 q의 곱셈은 쉬우나 n으로 부터 p와 q를 추출하기 어려운 점 이용
- RSA
타원곡선
- 타원 기반의 안정성과 효율성 기반의 알고리즘
- PKI 기반의 RSA의 문제점인 속도와 안정성을 해결
- ECC
이산대수
- 이산대수의 계산은 어렵지만, 그 역함수/지수함수의 계산은 빠르게 수행하는 특징을 이용
- Diffie-Hellman, DSA
해시 알고리즘
- 단방향 : 원래의 입력값을 찾아내기 불가능
- 임의의 길이를 가지고 있는 메시지를 받아들여 고정된 길이의 출력 값으로 바꾸어주는 알고리즘
- MD-5, SHA-1, SHA-2
블록 암호화
▣ 개념 : 고정된 크기의 블록단위 암호문 생성
▣ 단위 : 블록단위
▣ 사례 : DES, AES, SEED, ARIA
스트림 암호화
▣ 개념 - 평문과 같은 길이의 키 스트림을 생성하여 평문과 키 이진 수열을 비트단위로 배타적 논리합 이진연산으로 결합하여 암호문 생성 - 키스트림 -> 비트단위 배타적 논리합 -> 이진연산 결합 ▣ 단위 : 비트단위 ▣ 사례 : LFRS, SEAL, RC4
비밀키 암호화 (대칭키)
▣ 개념도 : 원문 -> 비밀키 -> 암호문 -> 비밀키 -> 복호화 ▣ 개념 : 동일한 키로 암/복호화 ▣ 사례 : DES, SEED, AES ▣ 키의 관계 : 암호키 = 복호키 ▣ 키의 수 : 두 사람이 하나의 비밀키 공유 ▣ 키의 종류 : 암/복호화키 (Secret Key) ▣ 구현방식 : 블록, 스트림 암호화 ▣ 키의 관리 : 복잡 (모든 당사자 간 키 공유 필요) ▣ 부인방지 여부 : 불가 ▣ 속도 : 상대적 빠름 ▣ 용도 : 개인 파일 암호화 ▣ 장점 : 구현용이, 속도빠름 ▣ 단점 : 쉬운 해독, 키관리 어려움, 키 분배 문제
공개키 암호화 (비대칭키)
▣ 개념도 : 원문 -> 공개키-> 암호문 -> 비밀키 -> 복호화 ▣ 개념 : 송/수신자 다른 키 사용 ▣ 사례 : RSA, ECC ▣ 키의 관계 : 암호키 ≠ 복호키 ▣ 키의 수 : 키 쌍(Private Key, Public Key) 공유 ▣ 키의 종류 : 암호화(Public Key), 복호화(Private Key) ▣ 구현방식 : 소인수문해, 이산대수, 근저백터 ▣ 키의 관리 : 상대적 단순, 인증기관 통한 Private Key발급 ▣ 부인방지 여부 : 키의 이원화로 부인방지 ▣ 속도 : 연산속도 느림 (큰 소수 찾기, 방정식 연산) ▣ 용도 : 다수의 사용자 사용 ▣ 장점 : 암호해독 어려움, 전자서명, 키 분배 용이 ▣ 단점 : 해독시간 상대적 느림
DES (Data Encryption Standard)
▣ 정의 : 56bit의 키를 이용, 64bit의 평문 블록을 64bit의 암호문 블록으로 만드는 블록 암호 방식의 미국표준 ▣ 알고리즘 - 대칭키 방식 - key 생성 부분과 데이터 암호화 부분으로 나뉨 - 치환과 XOR에 의한 전치과정을 거침 - f함수에서 48bit의 문자열을 32bit로 바꾸는 8개의 논리회로인 S-box 사용 ▣ 문제점 - S-BOX 논리식 약점 (Shift, XOR) - 키 길이가 짧아 Brute Force Attack 가능 ▣ 보완대책 - 2-DES, 3-DES 사용 - Blowfish, RC5, IDEA등 보완 알고리즘
RSA (Rivest, Shamir, Adleman)
▣ 정의 : 큰 소인수 곱 n=p*q의 소인수 p, q를 찾는 것이 어렵다는 것을 근간으로 만들어진 알고리즘 ▣ 안전성 문제 - 소수 p, q에 의해 좌우됨 - p, q는 거의 같은 크기의 소수여야 안전함 - p-1, q-1은 큰 소수를 인수로 가져야 안전함 - p-1, q-1의 최대 공약수는 작아야 안전함
ECC (Elliptic Curve Crypto System)
▣ 정의 : 타원 기반의 구조체의 안정성과 효율성을 기반으로 생성된 알고리즘 ▣ 원리 - 이산 대수를 사용하여 하나의 키에 대하여 해를 구할 수 없게 만듦 - 타원 곡선의 굴곡률 값으 방정식에서 값을 구할 수 없는 좌표 값에 의해 비대칭키 생성 ▣ 필요성 - 공개키 알고리즘인 RSA의 속도와 기밀성 문제의 해결 - IC카드, PDA등 휴대 단말기에서 HW적인 암호 알고리즘의 구현 필요성 - 무선 인터넷의 발달로 적은 메모리에 빠른 암/복호화 알고리즘의 필요성 ▣ 특징 (설안소유) - 설계성 : 타원곡선 변경성 - 안전성 : 일방향성 암호화 - 소규모 : 적은 비트 키 - 유연성 : HW, SW 구현 용이
AES (Advanced Encryption Standard)
▣ 정의 : 미국의 연방 표준 알고리즘(1998년)으로서 20년이 넘게 사용되어 온 DES를 대신할 차세대 표준 알고리즘 ▣ 특징 - 가변 길이 블록과 키 사용 가능 (128, 192, 256) - 단순한 설계, 다양한 플랫폼 적용 ▣ 단계 (1회의 순열과 3회의 치환) - 바이트 치환 : 하나의 S-BOX 치환 - 행이동 : 단순 순열 - 열 혼합 : GF 산술 치환 - 라운드 키 추가 : 비트 단위 XOR 연산
SEED
▣ 정의: 순수 국내기술로 개발하여 ISO/IEC 및 IETF의 표준으로 제정된 128비트 블록 암호 알고리즘 ▣ 특징 - 검증된 Feistel구조 활용 - IPSec, 인터넷뱅킹 등 상용분야 표준 ▣ 개념도 - 128bit 평문 -> 16bit 블럭화 -> 16회 라운드 -> 블럭조합 -> 암호문 생성 ▣ 설계기준 - 데이터 처리 단위 : 8, 16, 32bit 모두 가능 - 암/복호화 방식 : 블록 암호 방식 - 입/출력문의 크기 : 128bit - 입력 key의 크기 : 128bit - 안전성 : DC/LC에 대하여 안전 - 효율성 : 3중 DES 보다 암/복호화 속도 빠름 - 내부함수 : SPN 구조 - 라운드 수 : 16라운드 - 키생성 알고리즘 : 라운드 동작과 동시에 암/복호화 라운드 키가 생성
ARIA (Academy, Research Institute, Agency)
▣ 정의 : 경량 환경 및 하드웨어 구현을 위해 최적화된, Involutional SPN 구조를 갖는 범용 블록 암호 알고리즘
▣ 특징
- 블록 크기 : 128비트
- 키 크기 : 128/192/256 비트
- 전체 구조 : Involutional Substitution-Permutation Network
- 라운드수 : 12/14/16 (키 크기에 따라 결정됨)
▣ 암/복호화 과정
- 대치, 확산, 키 적용 단계를 반복하는 SPN 구조로써, 대치 단계에서는S-Box를 이용하여 바이트 단위로 치환을 하고, 확산 단계에서는 16x16 Involution 이진 행렬을 사용한 바이트 간의 확산을 함
- 대치단계(S-BOX 치환) -> 확산단계(16x16 Involution)
해시함수(Hash)
▣ 정의 : 하나의 문자열을 보다 빨리 찾을 수 있도록 해시함수를 이용하여 해시테이블 내 주소에 직접 접근할 수 있는 짧은 길이의 값이나 키로 변환하는 과정 ▣ 목적 - 단방향 암호화, 전자서명 ▣ 구성요소 - 해싱함수 : 키값 - 레코그 물리주소 사상함수 - 해시키 : 레코드의 키값 - 버킷 : 한 개의 주소를 갖는 파일 내의 한 구역(여러개의 슬록으로 구성) - 슬롯 : 한 개의 레코드를 저장할 수 있는 공간 - 해시테이블 : 해싱 함수에 의해서 계산된 주소 - Synonym : 같은 버킷 주소를 갖는 레코드 들의 집합 - 충돌 : 서로 다른 레코드들이 같은 주소로 반환되는 경우 ▣ 종류 - 제산함수(%) : 나머지 연산 (12 = 512 % 100) - 제곱함수 : 키값의 제곱 (512 제곱 = 262144, 21이 최종주소) - 폴딩함수 : 탐색키 전체 사용 (이동폴딩, 경계폴딩) Ex) 123456789012 가정 : 3개로 나눔 이동폴딩 : 123+456+789+012 경계폴딩 : 123+654+789+210 - 중간 제곱 함수 : 탐색키 제곱 (4x4 = 16. 16를 2로 나눈 8을 해시키로 선택) - 숫자 분석 : 탐색키의 특징 (대학교 학번) - 난수법 : 난수 발생 - 기수법 : 개수의 숫자를 사용 ▣ 해시 함수 적용 암호화 기술 - MD5(Message Digest) : 128비트 해시 함수 - SHA-1(Secure Hash Algorithm) : 160비트 해시 함수 - HAVAL : MD5 변형 - Tiger : 64비트 프로세서에서의 해시 ▣ 해시함수의 유형 - 패쇄해싱 : 정적 해싱 (컴파일러, 어셈블러) - 개발해싱 : 동적 해싱 (데이터베이스 시스템)
정적 해싱(Static Hashing) 기법
▣ 개념 : 버킷 주소 집합의 크기를 고정시켜 처리하는 기법
▣ 특징
- 현재 파일의 크기에 근거하여 해싱 함수 선택
- 미래의 특정 시점의 파일 크기를 예상하여 해싱 함수 선택
- 파일 크기가 커짐에 따라 주기적으로 해싱 구조를 재구성
▣ 문제점
- Collision : 복수개의 키 값이 동일 Hash 주소 사용
- Overflow : 빈 버킷이 없는 상태에서 Hash 주소가 다시 지정된 상태
▣ 해결방안
- Direct Chaining : 동일 Hash Table에서 Linked List 구성
- Indirect Chaining : 별도의 Overflow 공간 확보, Synonym을 Linked list 로 구성
- Overflow 영역 처리 : Link를 두지 않고 Overflow영역에 저장
동적 해싱 (Dynamic Hashing) 기법
▣ 개념 : 데이터베이스가 확장 또는 축소되는데 이에 맞추어 해싱 함수를 동적으로 변경 시키는 해싱 기법(Overflow 발생시 2배수 확장) ▣ 확장 해싱(Extensible Hashing)의 개념 - 동적 해싱의 한 형태이며 트리의 깊이가 2인 특별한 경우 ▣ 확장 해싱의 장점 - 파일 크기가 증가해도 성능이 나빠지지 않음 - 버킷 주소 테이블의 크기가 작으므로 저장 공간 절약 ▣ 확장 해싱의 단점 - 버킷 주소 테이블 생성 부담 - 데이터의 숫자가 적으면 오히려 디스크 낭비 ▣ Collision 해결 방법 - Linear Method : 주소 + 1로 빈 곳을 찾아 계속 검색 - Re-Hashing : Overflow 발생하지 않을 때까지 여러개의 Hash 함수 적용 - Random Method : 난수로 후속 주소 선택 방법
LEA (Light Weight Encryption Algorithm)
▣ 정의 : 사물인터넷의 발달에 따라 고속, 경량화를 위해 최적화하여 개발된 128비트 블록 암호 알고리즘
▣ 개발배경
- IoT, 인터넷 기기, 네트워크 발달, 저전력 특성을 고려한 암호화 기술 필요
- 128비트 데이터 블록 알고리즘, 안전성 및 경량 구현 가능
▣ 암복호화 함수
- 입출력 128비트, 라운트 키 PK 192 비트
- 라운드 함수를 구성하는 내부연산은 32비트 덧셈 배열 형태 사용
- 내부연산은 32비트 덧셈, XOR, OR, ROLn(RORn)은 n비트 좌측(우측)회전 연산
▣ 키스케쥴 함수
- 비밀키 길이에 따라 라운드 키 생성 방법을 별도로 정의
- 키 스케쥴 함수의 입력값은 32비트
바이러스 압축
▣ 개념
- 악성코드의 분석을 어렵게 하기 위해 실행코드 암호화나 패킹등의 은닉기술
▣ 목적
- 전파확산 : 작은 사이즈
- 탐지우회 : 분석도구 탐지 회피
- 리버싱방지 : 분석 난해화
▣ 악성코드 보호 기법
- 압축 기법 : 정상 파일을 압축 악성코드와 패킹하여 백신 프로그램을 우회하고 파일사이즈를 줄여 전파
- 암호화 기법 : 암호화된 악성코드를 작성하고 실행시에 복호화 하여 실행하는 기법
▣ 압축 기법 동작과 탐지
1. 악성코드 생성
- 압축패킹 도구 : UPX, PEcompact, ASPack, UPack, PESpin, NSAnti, ACProtect
2. 악성코드 실행
- 압축해제도구: ASProtect, Themida, SVKP, UltraProtect, Morphine
3. 악성코드 탐지
- 탐지도구 : PEIDSignature, MRC(Mandiant Red Curtain), Exeinfo PE, FastScanner
▣ 악성코드 분석방법
- 정적분석 : 디버거와 디어셈블러 통한 코드/바이너리 비교
- 동적분석 : 파일이나 레지스트리 생성 및 수정 등의 행위를 관찰하여 분석
데이터 마스킹
▣ 정의 : 기밀데이터의 속성(길이,유형,형식)을 유지한채, 새롭고 읽기 쉬운 데이터를 익명으로 생성하는 기술 ▣ 특징 : 데이터의 자동 변조, 실 데이터 보호, 데이터 무결성 유지 역할 ▣ 유형 - 정적인 데이터 마스킹 : ETL 단계 - 동적인 데이터 마스킹 : 조회 시 ▣ 기술 - 치환 : BLARK -> BL*** - 셔플 : BLARK -> LABRK - 숫자와 날짜 변경 : 02-15 -> 03-05 - 암호화 : 02020-12312 -> 암호화 - 널처리나 삭제 : 카드번호 -> NULL