6월 29일 대칭키, 비대칭키 실습, TCPDUMP
/etc/defaults/
=> 운영체제가 디폴트 값을 설정한 파일들이 존재.
수정시에서
/etc/rc.conf가
rc.conf가 존재.
대칭키 암호화 /해시값 구하기
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
비대칭 암호
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'