1. 암호화
- 평문 메시지/데이터를 송수신할 때 송신자만 이해할 수 있도록 암호문으로 만드는 작업
- 파일 단위 / 파일 시스템 단위 암호화 사용
- Linux
> 파일 암호화시 GPG를 사용하고 PGP암호화 기업과 호환
[+] 해시의 특징
- 문자의 길이가 달라도 해시의 길이는 같다.
> md5로 I, i, I love you for....를 만들면 길이는 같다.
역상(Preimage)저항성 | 해시 함수와 메시지 다이제스트 y가 주어졌을 때, h(x) = y를 만족하는 x를 찾는 문제이며, 해시 함수에 대해 이러한 역상을 효과적으로 찾을 수 없음 (= 단방향성, One-Wayness) |
제2역상(Sec. Preim.)저항성 | 입력 값에 대해 해당 입력의 해시 값을 바꾸지 않으면서 입력을 변경하는 것이 계산상 어려움 |
충돌 (Collision) 저항성 | 해시 충돌에 대해 안전해야 하고 같은 해시 값을 생성하는 두 입력 값을 찾는 것이 계산상 어려움. 즉, 입력 값과 해시 값에 대해 해시 값을 망가뜨리지 않으면서 입력 값을 수정하는 공격에 대해 안전해야 함 |
- 암호화는 데이터 은닉 / 해시는 데이터 무결성(변/위조/삭제 등)
[+] 실습_대칭키
- 대칭키는 송수신자의 키가 같은 경우( 키 배송문제가 있음) 윈드토커 영화 참고
- 대칭키 gpg -c생성
- cat으로 열었을 때, 깨지는 것을 확인할 수 있다.
- 백트랙에서 gpg로 풀 수 있다 (대칭키)
[+] 비대칭키
- 공개키 / 개인키 : 비대칭키 암호화
- 비대칭키인 개인키 공개키 함호화는 공적인 비밀 파일을 주고받을 때 사용하면 좋다.
- 송수신자의 개인키는 서로 다르지만 공개키는 같아야 한다.
- 송수신자가 파일을 보낼 때
- 송신자는 상대방 수신자의 공개키와 자신의 개인키로 암호화해서 수신자에게 보낸다.
- 수신자는 송신자가 보내온 암호문을 수신자의 개인키와 수신자에게 보냈던 공개키 복호화한다.
==> 수신자는 개인키/공개키 만들어 놓은 상태에서 송신자에게 공개키를 보내서 송신자의 데이터를 암호화한다.
==> 수신자는 신뢰할 수 있는 인증기관(CA) 공개키를 저장해 놓고 송신자들에게 공개키를 다운로드하게 하여 사용할 수 있다.
[+] 생각
A가 B에게 비대칭키 기법으로 암호문을 보낸다면
- B가 개인키와 공개키를 생성하고
- B가 A에게 자신의 B 공개키를 보내고
- A가 B에게서 온 B의 공개키와 평문장을 gpg -c ~ 로 암호화해서 B에게 암호문을 보내고
- B는 A에게서 온 암호문과 자신의 개인키로 gpg ~ 로 복호화해서 평문장을 만든다.
[+] 실습
- 유형 / 키 길이/ 용량 d-키 용량/유효기간을 설정
- 키 용량/유효기간을 설정
- 패스워드 설정
- 생성된 키 확인
- fedora.pub 공개키를 생성한다.
> gpg -o fedora.pub -a --export fedora@kahn.edu
> 내용 확인 : cat fedora.pub
- kali에서 확인하기
> cp -arp centos1.pub /Desktop
- 전송할 데이터를 수신자의 공개키(PUB)을 통해 암호화
> gpg -a -e -r tori@1234.edu --import Desktop/tori.pub --encrypt asym_key.txt
> gpg -a -e -r tori@1234.edu --encrypt asym_key.txt
- import (서명 넣기)
-encrypt (암호화)
- 확인
> *.asc 파일 존재
- 일반 cat으로 열게 되면 파일의 내용을 확인할 수없다.
- 수신자(B)의 개인키로 복호화 및 내용 확인
> gpg asym_key.txt.asc
> cat asym_key.txt
- 암호화된 데이터를 수신자(B)의 개인키로 입력하면 복호화가 된다.
[+]gpgdir 명령어
- 디렉터리를 암호화
암호화(Encryption)는 데이터를 다른 사용자가 읽지 못하는 포맷으로 변경하는 것이고, 복호화 (Decryption)은 암호화된 데이터를 다시 읽을 수 있는 포맷으로 변경하는 것이다. 파일, 디렉터리, 하드디스크 등을 암호화해 두면 데이터를 해킹당해도 해커는 복호키(decryptor)가 없으면 해독할 수 없어서 데이터가 안전하다는 이점이 있다. HDDL USB를 암호화해 두면 들어있는 모든 디렉터리와 파일들이 한꺼번에 암호화된다.
Windows Server에서는 TPM (Trusted Platform Module) 칩 세트를 이용한 BitLocker로 저장장치를 암호화시키는데 파일/폴더 암 호화인 EFS보다 더 강력한 기법이다.
Linux에서는 일부 소프트웨어적인 방법을 사용하는데 gPgdir 도구가 대표적이다. 이 도구로 재귀적으로 디렉터리 암호화와 복호화를 수행해 보자. gpgdir encrypt ~로 암호화 하고, gpgdir -decrypt ~로 복호화한다.
[+] 서명 다운 및 파일의 정합성 검사
- 웹 상에서 다운로드한 파일 검사
> wget http://cipherdyne.org/gpgdir/download/gpgdir-1.9.5.tar.bz2
> wget http://cipherdyne.org/gpgdir/download/gpgdir-1.9.5.tar.bz2.asc
- 해당 사이트에 대한 공개키를 확인하여 인증받을 수 있다.
- 공개키로 전자서명된 키!! 등록
-파일의 전자서명을 확인한다.
압축 풀고 tar xvfj gpgdir-1.9.5.tar.bz2
파일 수정 : nano -c /root/.gpgdirrc
키생성 gpg --gen-key
- 개인키와 공개키 설정
tori1
tori1@kahn.edu
디렉터리 암호화 및 복구화하기
* ubuntu에서는 make를 다운로드하여야 한다.
2. 파일 시스템(디스크) 암호화하기
앞에서 디렉터리를 암호화해주는 gpgdir이라는 도구를 사용해 보았지만 데이터를 저장하는 하드디스크를 암호화해두면 해커의 침투를 받거나 디스크를 분실했을 때, 혹은 외부에서 중요한 데이터가 저장된 드라이브를 감출 때 저장된 데이터의 유출을 막을 수 있다. 여기서 소개하는 기 법들은 Windows 서버에서 하드 드라이브 전체를 암호화하는 BitLockers나 파일/폴더를 암호 화해두는 EFS(Encrypting File System)와 유사한 기법이다. Linux에서는 이런 작업을 HDD나 USB 같은 블록장치들의 마운트를 통해서 조절한다.
- Luks로 HDD/USB 등의 마운트 제한하기
- trueCrypt로 HDD의 특정 디렉터리 감춰두기
[+] Luks(Linux Unified Key Setup-on-disk-format)
- 리눅스
- 새로운 하드
> yum -y install cryptsetup-luks
> ls /dev/sd*
> cryptsetup luksFormat -v /dev/sdb -y
- cryptsetup luksOpen /dev/sdb SDB
dd if=/dev/zero of=/dev/mapper/SDB bs=128m
mkfs -t ext4 /dev/mapper/SDB
mkdir /sdb
mount /dev/mapper/SDB /sdb
df -hT : 디스크 용량 확인
cd /root/* /sdb/
ls /sdb/
ls /dev/sd*
- 데이터를 가지고 있는 상태인데 파티션이 되어있지 않은 것처럼 보인다
> 열결 해제 : umount /sdb
> cryptsetup luksClese SDB
> 재연결cryptsetup luksOpen /dev/sdb SDB
[+] truecrypt 실습
-ubuntu에 설치
> sudo add-apt-repository ppa:stefansundin/truecrypt
> sudo apt-get update
> sudo apt-get install truecrypt
- truecrypt 실행
- 암호화될 볼륨의 이름과 볼륨(크기)을 정한다.
- 원하는 슬롯에 저장된 파일(test)을 지정 및 마운트
'소소한 IT이야기 > 클라우드' 카테고리의 다른 글
[error] ssh접속시 Permission denied (publickey) (2) | 2023.02.01 |
---|---|
error_2023.01.31 (1) | 2023.01.31 |
[Linux_21] SSL 구성하기, 디지털 인증서 (0) | 2023.01.31 |