기본 콘텐츠로 건너뛰기

인코딩, 암호화, 해싱 차이

인코딩

인코딩은 주어진 입력을 변환하는 것을 의미한다. 예를 들어 문자열을 반대로 하는 x라는 함수가 있다면 함수 x -> y는 ABCD를 DCBA로 변환한다.

암호화

암호화는 출력을 얻기 위해 입력 값과 키를 모두 제공하는 인코딩의 특별한 유형이다. 키를 통해 누가 출력에서 입력을 얻을 수 있는지 선택할 수 있다. 암호화를 함수로 표현하는 가장 간단한 형식은 다음과 같다. 

(x, k) -> y

여기에서 x는 입력이고 k는 키를 y는 암호화된 결과를 의미한다. 이러한 방식으로 키가 알려진 함수를 통해 출력에서 (y, k) ->x에서 입력을 얻을 수 있다. 이렇게 역으로 메시지를 얻는 것을 복호화라고 한다. 암호화에서 사용된 키가 복호화에 사용된 키와 동일하다면 일반적으로 대칭키라고 한다. 

암호화 ((x, k1) -> y)와 복호화((y, k2) -> x)와 같이 두 개의 다른 키가 사용되는 경우 비대칭 암호화가 수행되었다고 한다. (k1, k2)를 키쌍이라고 한다. 암호화에 사용되는 k1을 공개키라고 하며 k2를 개인키라고 한다. 개인 키 소유자만 데이터를 복호화 할 수 있다. 

해싱

해싱은 함수가 단방향인 점을 제외하면 인코딩의 특별한 유형이라고 할 수 있다. 즉 해시 함수의 출력 y에서 입력 x를 반환할 수 없다. 하지만 출력 y가 입력 x에 해당하지는 확인하는 방법이 있기 때문에 해싱을 인코딩 및 매칭을 위한 함수 쌍으로 볼 수 있다. 해싱이 x->y이면 일치하는 함수 (x,y) -> boolean이다. 

때로 해싱 함수 (x, k) -> y 입력에 임의의 값을 사용할 수 있다. 이 값을 솔트(Salt)라고 한다. 솔트는 해싱 함수를 보다 강력하게 만들어 출력을 통해 입력을 얻기 힘들게 만든다.


댓글

이 블로그의 인기 게시물

가상 자원에 대한 접근을 위한 libguestfs

libguestfs는 가상머신 디스크 이미지에 대한 접근 및 수정하기 위한 다양한 도구를 제공하는 라이브러리이다. 이 라이브러를 통해 여러분들은 게스트 OS 내부의 파일을 수정하거나 VM에 대한 스크립트 작성, 가상 머신의 디스크 / 메모리 사용량 통계 모니터링, 게스트 생성, 백업, VM 복제, 디스크 포멧, 디스크 조정 등 다양한 작업을 할 수 있다. libguestfs는 C 라이브러리로 되어 있어  C/C++ 관리 프로그램들과 연결 가능하다. 현재 최신 버전의 libguestfs는 1.31.16 (2015.10.09 기준)이다. 설치 방법은 다음과 같다. 페도라 또는 레드햇 엔터프라이즈 버전 sudo yum install libguestfs-tools 우분트 sudo apt-get install libguestfs-tools libguestfs-tools이 정상적으로 설치되었다면 다음과 같은 툴들이 설치 될 것이다. guestfish — 대화식 쉘 guestmount — 호스트에서 게스트 파일 시스템 마운트 guestunmount — 게스트 파일 시스템 마운트 해제 virt-alignment-scan — 가상 머신 파티션 alignment 검사 virt-builder — 속성 이미지 빌더 virt-cat — 파일 내용 출력 virt-copy-in — VM으로 파일 또는 디렉토리 복사 virt-copy-out — VM에서 파일 또는 디렉토리 복사 virt-customize — 가상 머신 수정 virt-df — 디스크 사용량 virt-dib —  safe diskimage-builder virt-diff — differences virt-edit — 파일 편집 virt-filesystems — 파일 시스템, 디바이스, LVM에 대한 정보 출력 virt-format — 디스크 삭제 및 빈 디스크 생성 virt-get-kernel — 디스크로 부터 커널 획득 virt-inspector — VM 이...

virsh 설치 및 VM 상태 조회

VM을 모니터링하기 위해서는 다양한 방법을 사용할 수 있지만 간편한 방법중 하나는 virsh를 통해 VM을 모니터링하는 것이다. vrish를 사용하기 위해서 관련 패키지를 설치해야하며 설치 방법은 다음과 같다. Redhat 계열 yum install qemu libvirt-client virt-manager \ virt-viewer guestfish libguestfs-tools virt-top Ubuntu sudo apt-get install ubuntu-virt virt-top virt-what virsh가 정상적으로 설치되었다면 virsh를 통해 가상 머신의 상태를 확인해 볼 수 있다. virsh를 사용하기 위해서는 root 권한을 가지거나 관련 권한을 설정해주어야 한다. 권한 설정에 대해서는 다음 posting에서 다룰 것이다. virsh의 기본적인 사용방법은 다음과 같다. virsh [option] ... <command> <domain> [arg] ... 지정 가능한 옵션은 다음과 같다. h, --help 도움말 출력 -v, --version[=short] 버전 정보 출력 -V, --version=long 컴파일된 드라이버와 옵션들을 포함한 버전 정보 출력 -c, --connect URI 지정된 URI에 연결 -d, --debug LEVEL 디버그 (레벨은 0~4까지 지정 가능) -l, --log FILE FILE로 로그 저장 . -q, --quiet 종료(?) -r, --readonly 읽기 전용으로 실행 -t, --timing 각 명령어에 대한 실행 시간 출력 -e, --escape string 콘솔 명령어에 대한 탈출 문자 지정. 기본으로 텔넷과 동일한 ^]로 지정됨 virsh 명령어들에서 대해서는 다음 posting에서 살펴보기로 하고 간단한 사용 예들은 다음과 같다. 로...

Mac에서 Wireshark 설치

맥 (OS X El Capitan)에서 Wireshark를 사용하고 싶다면 CLI를 통한 간단한 방법은 brew를 통해 설치하는 것이다. 단순히 다음과 같은 명령을 실행해 주면 된다. brew install wireshark  --with-qt --with-qt는  GUI 모드를 포함하여 설치하는 것으로 GUI 모드를 원치않는다면 해당 옵션을 삭제하면 된다. 정상적으로 설치가 완료되면 CLI를 통해 tshark 명령을 실행할 수 있다. --with-qt 옵션을 주지 않았다면 thsark만을 실행할 수 있을 것이다. tshark -i eth0 [thsark 실행화면] GUI로 실행하고 싶다면 프롬프트에서 다음과 같이 실행하면 된다. wireshark-qt [wireshark-qt 실행화면] GUI를 통해 패킷을 수집하고자 한다면 Capture 버튼 옆에 인터페이스를 선택한 후 Capture 버튼을 선택하고 상단의 왼쪽에 있는 Start capturing packets라고 툴팁이 나오는 버튼을 클릭하면 패킷 수집이 시작된다. 수집 옵션을 설정하고자 한다면 Capture Filter에 옵션을 설정하면 된다. [wireshark-qt 패킷 수집화면]