블로그 이미지
송시혁

calendar

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

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

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

  




posted by 송시혁