네트워크/virual_box_freeBSD실습

6월 29일 대칭키, 비대칭키 실습, TCPDUMP

송시혁 2018. 6. 29. 14:29

/etc/defaults/

=> 운영체제가 디폴트 값을 설정한 파일들이 존재.


수정시에서

/etc/rc.conf가

rc.conf가 존재.


less /etc/defaults/rc.conf에 보면 
syslogd는 자동으로 yes로 되어있어서 구동되고 있는 것.






대칭키 암호화 /해시값 구하기

  

  

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비트라는 것이다.)


openssl enc -aes-256-cbc -in file.txt -out file_enc.txt

=> file.txt를 aes256알고리즘으로 cbc방식으로 암호화 하여 file_enc.txt에 저장.

그리고 패스워드를 설정하면 file_enc.txt가 생성. 


cat명령어로 출력하면 뭔가 이상한 문자가 나온다. 

 file.txt의 내용을 file_enc.txt에 암호화하여 저장한 것. 


아래 그림은 복호화. 위와 동일하지만, -d옵션을 추가해야함.



openssl dgst file_enc.txt 

->해쉬값을 파일에 저장

  

openssl dgst -sha256 file_enc.txt

-> 해쉬값을 256비트에 크기만큼 파일에 저장(sha256 이 해쉬 256비트라는 것이다.)


● web2a의 MD5 해쉬값을 web2a.md5에 저장

=> openssl dgst -md5 web2a > web2a.md5


뭔가 잘못치면 아래 그림같이 뜬다. 알고리즘 옵션을 줄때 화면을 참고하면 된다. aes-256-cbc이러식으로 명령했으나,

des3을 사용힛에는 그냥 -des라고 입력.


● web2a를 des3알고리즘을 이용하여 암호화 : web2a_enc

=> openssl enc -des3 -in web2a -out web2a_enc


바이너리 파일인 web2a_enc파일이 이상한값으로 되어 있음을 알 수 있다. 즉, DES3로 암호화 된것이다. 



<실습>


전체 시나리오는 아래와 같다.


● /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.md5 web2a_decript.md5


아래는 web2a.md5 를 비교한것. web2a_decript.md5
해쉬값은 동일한것을 알 수 있다.


비대칭 암호 

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 개인키에서 공개키를 추출 


공개키를 추출한 모습.


< TCP dump >


● 암호화 되지 않은 http get 요청


=> tcpdump 'tcp[32:4]=0x47455420'