overhead
=> 로그 하나 보내는데 TCP는 8개가 소요 .
handshake (3)
log 메시지 (데이터)
FIN->
<-FIN
<-ACK
FIN->
UDP
=> log 메시지 (데이터)하나만 보낸다.
(동영상, FAX)
/etc/defaults/
=> 운영체제가 디폴트 값을 설정한 파일들이 존재.
수정시에서
/etc/rc.conf가
rc.conf가 존재.
less /etc/defaults/rc.conf에 보면
syslogd는 자동으로 yes로 되어있어서 구동되고 있는 것.
wtmp 로그인 정보, 생성, 실패, 로그아웃 정보
utmp 현재 로그인한 사용자 정보
btmp 로그인 5번 이상 실패시 나타나는 정보
dmesg 현재 부팅한 정보
<암호학>
주로 사용하는 이름
Alice / Bob : 송신자, 수신자
Eve : 도청자
Mallory : 공격자
Trent : 신뢰할 수 있는 중재자
Victor : 검증자
암호화 /복호화
C = Ek(P) or C = E(K,P)
=> 암호화 알고리즘에다가 P를 적용하여 암호문이 나온다.
=> Key와 평문을 집어넣으면 encrytion시켜서 C(암호화) 나온다.
P = Dk(C) or P = D(K,C)
=> 복호화 알고리즘에다가 암호문을 넣어 적용하여 평문이 나온다.
=> 암호문과 키을 넣어 복호화 알고리즘을 적용시키면 평문이 나온다.
평문 : M 또는 P(Plaintext)
암호문 : C (Cipher)
암호 알고리즘 : E (Encrytion)
복호화 알고리즘 : D (Decrytion)
키 : K (Key)
암호 알고리즘과 보안
● 자체 개발 암호 알고리즘 보다
공개 암호 알고리즘이 보다 더 안전 - 안전성 검증자
● 약한 암호는 암호화 하지 않는 것 보다 더 위험
● 모든 암호는 Brute Force Attack(키를 무작위 대입)에 취약
Attack에 소요되는 시간/리소스 고려
위험도를 수용 가능한 수준에서 관리
<고대 암호>
스키테일(Scytale)
- 위치를 바꿈
시저(Ceasar)
- 왼쪽으로 땡김
전치 암호 : Transposition Cipher
치환암호, 대치암호 : Substitution Cipher
블록 암호 : Block Cipher
스트림 암호 : Stream Cipher
< 전치 암호 >
● 알파벳의 순서를 뒤바꿈
● 스키테일
● 레일펜스
we are discoverd. fllee at once
W... e .... C ...R
e r D S
a
-> WECRL TEERD
알파벳을 다른 것으로 교환
시저암호, ROT13
< 치환암호 >
암호키를 이용하여 변환 가능한
- 키가 'ZEBRAS'DLF RUDDN
- ABCDEFGHIJKLMNOPQRSTU....
ZEBRASCDEFGHIJKLMNOP
- ALAAZQLKBA. VA ZOA RFPBLUAOAR!
<암호기법 - 블록 (block)>
● 평문을 블록으로 나누어 암호화 / 복호화
● 패딩: 평문이 정확히 블록크기로 나누어 떨어지지 않을 경우
● AES, DES. Blowfish, IDEAm RC5
<암호기법 - 스트림 (Stream) >
● 평문의 수신과 동시에 암호화
● 암호키 스트림 생성, 문자단위로 암호화
● 빠른 속도, 패딩 없음
● 암호키 스트림에 보안성 의존
- 반복주기(period)의 사이즈
● FISH, RC4
< 암호 시점 >
● 링크 암호화 : Link Encryption
물리곚층, 데이터링크 계층에서 헤더까지암호화
ISP나 통신없자가 암호화, 사용자에게 투명함
네트워크 중간노드(스위치, 라우터)에서 평문 노출
ALice --> NODE1 --> NODE2 --> NODE3 --> BOb
노드와 노드 사이에 복호화를 수행하면서 보고 다시 암호화 하는 방식
해커가 노드를 장악하면 노출
● 종단간 암호화 : End-To-End Encryption
헤더제외 데이터 부분만 암호화
송신자(사용자) 노드에서 암호화
수신자(사용자) 노드에서 복호화
네트워크전송간 평문 노출되지 않음
*텔레그램
종단간 암호화 (end-end 사이에서 암호화)
=> 패킷에서 데이터만 암호화
<암호 장비 구현 - 하드웨어 >
● 암/복호화 전용 CPU , 메모리 사용자
● 빠른 속도, 높은 가격, 범용성/호환성 문제
● TPM(Trusted Platform Module)
=> https://en.wikipedia.org/wiki/Trusted_Platform_Module
● inte AES instruction set
=> https://en.wikipedia.org/wiki/AES_instruction_set
<암호장비구현 - 소프트웨어>
● 암호화 소프트웨어 라이브러리
● OpenSSL
현재 가장 범용으로 사용되는 암호화 소프트웨어 라이브러리
풍부한 기능
라이브러리 사이즈가 큼
오픈 소스 개발로 명령어 체게 등의 정비가 안되어 있음
LibreSSL
OpenSSL 기반 오픈소스 프로젝트
OpenSSL의 단점 보완 목표
* www.openbsd.org => openssl 사이트
< 암호 알고리즘 >
● 대칭키(암호화 , 복호화 키가 같다.) openssl list-cipher-commands
DES openssl list-standard-commands
AES
SEED, ARIA
● 비대칭키
RSA
EIGamal
Rabin
aes 256 cbc
알로리즘, 키의 길이, 블록 암고리즘 방식
bf - 디폴트 방식
● 대칭키
DES (Data Encryption Standard) : 70's 채택
AES (Advanced Encryption Standard) : '01 채택
SEED, ARIA : 국산 암호화 알고리즘
● 비대칭키
RSA : 가장 널리 사용되는 비대칭키 암호화 알고리즘
EIGamal
Rabin
NIST 미국 정보보안협회
암호공격
Kerckhoff의 원리 : 암/복호 알고리즘은 항상 공개되 있음
암호문 단독 공격 : Ciphertext only attack
기지 평문 공격 : Known Plaintext attack
선택 평문 공격 : Chosen Plaintext Attack
선택 암호문 공격 : Chosen Ciphertext Attack
<암호문 단독 공격>
● Ciphertext only attack
● 공격자는 암호문만을 가지고 있음
● 공겨의 목표은 암호문에 해당하는 평문 또는 암호키
● 대칭키가 짧을 경우 Bruteforce Attack에 쉽게 노출
<기지 평문 공격자>
● Known Plaintext attack
● 공격자는 평문과 평문의 암호문을 가지고 있음
● 공격의 목표는 암호키 도는 암호화에 사용되는 코드북
● 이니그마(Enigma)의 해독
< 선택 평문 공격 >
● Chosen Plaintext Attack
● 공격자는 자신이 선택한 평문에 대응하는 암호문을 가질수 있음
● 공격의 목표는 암호키
< 선택 암호문 공격 >
● Chosen Ciphertext Attack
● 공격자는 자신이 선택한 암호문에 대응하는 평문을 가질수 잇음
● 공격의 목표는 암호키
<혼돈과 확산>
● 혼돈 :confusion
-> 암호문과 키의 상관관계를 숨김
-> 암호문의 각 비트는 키의 다수 비트에 의해 결정되어야함
● 확산: diffusion
->평문의 통계적 성질을 암호문 전반에 퍼뜨려 숨김
->평문의 비트 한 개의 변경이
암호문 절반에 해당하는 비트가 변하도록 함
(평문 1개 변경이 암호화했을때 완전이 달라지는 성질)
S-Box, p-Box
● S-Box: substitutiojn
-> 비트 세트를 다른 것으로 바꿔 끼움
-> 혼돈에 관여
● P-Box : Permutaion /Transposition
-> 비트의 순서를 바꿔 썩음
-> 확산에 관여
● 라운드
S-Box와 P-Box를 거치는 단위
<Feistel 암호화>
● Feistel
-> 독일태생 암호학자, 물리학작
-> Lucifer, DES 고안
● 3라운드 이상, 짝수 라운드로 구성
● 암/복호화 과정(알고리즘)이 동일
-> 하드웨어 구현 용이
● DES, TwoFish, Blowfish
대칭키 알고리즘 비교
------------------------------------------------------------------------
|구분 | DES | Triple DES | AES |
------------------------------------------------------------------------
|평문블록크기(bits) | 64 | 64 | 128 |
------------------------------------------------------------------------
|암호문 블록크기(bit ) | 64 | 64 | 128 |
------------------------------------------------------------------------
|키크기 | 56 | 112,168 | 128,192,256 |
------------------------------------------------------------------------
< 암호화 방식 >
ECB 모드: Electric Code Block mode
CBC 모드: Cipher Block Chaining mode
CFB 모드: Cipher-Feedback mode
OFB 모드: Output-Feedback mode
CTR 모드: Counter mode
<해시 함수 >
● SHA1, SHA256, MD5, RIPEMD-160
● 일방향 함수
● 무결성 입증
● 전자성명, 메시지 인증코드(MAC, Message Authentication Code)
Root kit
-> 커널에 기생하는 말웨어 . 찾아내기 힘들다.
백신이나 process에 붙어서 잘못된 정보를 주기때문에 찾기 힘들다.
<대칭키 암호 >
$ openssl list-standard-commands
● enc : 대칭키 암 /복호화
● dgst : 해쉬값 구하기
● ca : PKI에서 CA의 생성
● x509 : 인증서 관련 작업
대칭키 암호화 /해시값 구하기
file.txt 대상
openssl enc -base64 -in file.txt
openssl enc -base64 -in file.txt out file_base64.txt
openssl enc -aes-256-cbc -in file.txt -out file_enc.txt
=> file.txt를 aes256알고리즘으로 cbc방식으로 암호화 하여 file_enc.txt에 저장.
openssl enc -aes-256-cbc -d -in file_enc.txt(복호화)
=> file_enc.txt를 복호화
openssl dgst file_enc.txt
->해쉬값을 파일에 저장
openssl dgst -sha256 file_enc.txt
-> 해쉬값을 256비트에 크기만큼 파일에 저장(sha256 이 해쉬 256비트라는 것이다.)
● /usr/share/dict/web2a ~/openssl_work/아래복사
● web2a의 MD5 해쉬값을 web2a.md5에 저장
=> openssl dgst -md5 web2a > web2a.md5
● web2a를 des3알고리즘을 이용하여 암호화 : web2a_enc
=> openssl enc -des3 -in web2a -out web2a_enc
● 암호환된파일의 MD5 해쉬값을 web2a_enc.md5에 저장
=> openssl dgst -md5 -in web2a_enc > web2a_enc.md5
● diff를 이용하여 web2a.md5, web2a_enc.md5 비교
=> diff web2a.md5 web2a_enc.md5
● 암호화된 파일을 web2a_decript 파일로 복호화를
=> openssl enc -des3 -d -in web2a_enc -out web2a_decript
● 복호환딘 파일의 MD5 해수l값을 web2a_decript.md5에 저장
=> openssl dgst -md5 web2a_decript > web2a_decript.md5
● 복호화된 파일과 원본 MD5를 diff를 이용하여 비교
=> diff web2a_decript web2a_decript.md5
비대칭 암호
Public Key(공개키)
공개키로 암호화 : 개인키로 복호화
개인키로 암호화 : 공개키로 복호화
PKI 공인인증서 시스템에 이용
비대칭 암호
openssl genrsa -out priv_key.pem 1024
=> 키의 비트 갯수는 1024
openssl rsa -in priv_key.pem -text -noout
=> 암호화돠 키의 내용을 텍스트 내용으로 본다.
RSA는 소인수분해을 이용한다.
openssl rsa -in priv_key.pem -outform DER -out priv_key.der
=> priv_key.der 이진파일로 저장.
PEM : 인터넷으로 전송하기 좋은 아스키 코드 형태
DER : 이진형태 파일
.cert
.cer
.crt
두 가지 형태 사이 변환 가능
openssl rsa -in priv_key.pem -des3 -out encrypted-priv_key.pem
-> RSA 개인키는 대칭키 시스템으로 암호화 하여 보관
openssl rsa -in encrypted-priv_key.pem -pubout -out dec_priv_key.pem
-> RSA 개인키에서 공개키를 추출
openssl resutl -encrypt -in file.txt -inkey pub_key.pem -pubin -out file_enc.txt
openssl resutl -dencrypt -in file_enc.txt -inkey pub_key.pem
비대칭 키를 이용한 암/복호화
비대칭 암호화는 시스템 리소를 많이 요구하고 느림
-> 사이즈가 큰 파일은 비대칭 암호화 하지 않음
송신자는 수신자의 공개키로 암호호하여 전송.
수신자는 자신의 개인키로 복호화한다.
파일으 무결성 입증: 전자서명
openssl rsautl -sing -in <해쉬값> -out <서명> -inkey <키>
openssl rsautl -decript - in file_enc.txt -inkey pbukey.pem -pubin
openssl dgst file_dec.txt
사이즈가 큰 파일은 전자서명
문서 -> 해쉬 -> public key로 암호화 -> 암호화된 해쉬와 문서를 전송(이때 송신자는 문서의 해쉬를 다시 구함)
->수신자 priv_key 복호화-> 문서에 대한 해쉬와 암호화된 해쉬를 복호하여 비교 -> 똑같으면 수신, 아니며 거부
이부분은 인터넷 참고.
PKI(Pulbic Key Infrastructure)
● 인증기관 : CA의 CA, Certificate Authority
● 등록기관 : RA, Registar Authority
● 디렉토리 : Directory(ex.LDAP)
● 사용자 : Entity
● CRL(Certification Revokcation List)
=> 공인인증서를 받아들이기전에 조회를 하여, 이 키가 사용이 되는 건지 필터링. 즉 이전에
사용하던 키는 절대 사용할 수 없다. 이러한 리스트.
● OCSP(Online Certificate Status Protocol)
개인키, 공개키는 누구나 만들 수 있다는 치명적인 단점.
공개키 사칭하면 누가 진짜 공개키인지, 누구거인지 모른다.
그래서 인증기관이 관리한다.(PKI)
< 공인인증서 >
● 두개의 파일 : 공개키, 개인키
● 공개키 : 공개적 배포
● 개인키 : 비밀번홀호암호화 되어 저장
● 본인확인의 수단
///////////////////////////////////////////////////////////////////////////////
정보보안기사 일부 용어 정리
<GDPR>
● General Data Protection Regulation
● 일반 데이터 보호법 / 범용 데이터 보호법
● 유럽에서 2018년 5월 25일부터 시행
● 개인정보 보호 등의 조치를 하지 않은 기업은 상당한 벌금
<정보보호인증>
ISMS(Information Security Management System)
PIMS(Personal Information Management System)
ISO 27001, ISO 27000 시리즈
<정보보호 제품>
● IDS(Intrusion Detection System)
● IPS(Intrusion Prevention System)
● DLP(Data Loss Prevention)
● UTM(Unified Threat Management)
<CIO/CISO>
Chief Information Officeer
Chief Information Security Officeer
기업에서 임원급 정보보호 책임자
기업의 정보보호 정책 / 조직구성
<Blockchain>
● 가상화페의 기반 (암호학) 기술
● 블럭이 체인으로 연결되어 있는 구조
● 가상화폐에서는 각 블럭이 한 건의 금전 거래
● 각 블럭은 이전 블록의 해시값을 포함하여 생성되므로
중간 블럭을 누군가가 임의로 조작할 수가 없음
● 회계장부의 조작이 불가능
● 의료기록의 보존에도 블럭체인 기술 사용가능함
<Caas>
● Crime as a Service
● 다크웹을 통해 범죄(Dos공격, 랜섬웨어 유포)를 서비스
● SaaS: Software as a Service
● PasS: Platform as as Service
<전자지갑(가상화폐)>
● 가상화폐에서의 전자지갑:
가상화폐를 사용할 수 있는 공개키와 개인키를 저장하는 파일
● 최근 가상화폐 행킹/ 유출은 전자지갑의 탈취 사건
● Hot wallet
원활한 가상화폐 거래를 위해 인터넷에 직접 연결된 전자지갑
● Cold wallet
안전을 위해 인터넷에 직접 연결되지 않은 네트워크에 저장된 전자지갑
<망분리>
● 개별적인 네트워크(Broadcast domain)를 구성하여 사용가능함
● 최근 가상화폐 히킹 /유출은
=>Hot wallet은 망분리 되지 않은 상태이므ㅡ로
인터넷을 통해 바로 접근 가능한
나야나 인터넷 호스팅 업체 랜섬웨어 피해사건
백업 서버가 망분리 되지 않아 같이 랜섬웨어에 감염
접근통제
MAC : Mandatory Access Control
=> 관리자가 접근자 /대상자에 보안레이블을 부여
=> 관리자가 직접 접근통제
DAC : Discretionary Access Control
=> 유닉스, 리누긋에서으이 일반넉인 접근 통제
파일 소유자(생성자)가 적븐통제 규칙 지정
RBAC: Role-Bases Access Control
=> 직급 등 역할에 따라 관리자가 접근 통제 규칙을 지정
<BYOD>
● Bring Your Own Device
-> 기업에서 직원에게 컴퓨터 등의 사무기기를 제공하지 않고
-> 직원이 자신의 노트북, 태블릿 PC등을 반입하여 업무에 활용하는 정책
<NAC>
● Network Access Control
'네트워크 개론 > 간략개론' 카테고리의 다른 글
6월 28일 UTP, 동축, 광 케이블 간단한 이론 (0) | 2018.06.28 |
---|---|
5월 17일 약간의 스위치 명령어 (0) | 2018.05.17 |
5월 14일 데이터베이스&네트워크 이론 (0) | 2018.05.14 |
2018.05.10 간단한 네트워크 개론 (0) | 2018.05.10 |