복호화
복호화 또는 디코딩(decoding)은 부호화(encoding)된 정보를 부호(code)화되기 전으로 되돌리는 처리 혹은 그 처리 방식을 말한다. 보통은 부호화의 절차를 역으로 수행하면 복호화가 된다.
암호화(encryption)의 반대말로서의 복호화는 decryption이라고 부른다.
영어로는 decoding과 decryption이 구분되지만 한국어로는 구분이 되지 않는다.
한편 복호기 또는 디코더(decoder)는 복호화를 수행하는 장치나 회로, 컴퓨터 소프트웨어, 알고리즘 또는 사람을 말한다.
개요
복호화(decryption)는 암호화된 데이터를 암호화되기 전의 형태로 바꾸는 처리를 말한다. 복호화는 암호화(encryption, 인크립션)의 반대말로서 영어로 decryption(디크립션)이라고 부른다. 복호화는 디코딩(decoding)과 유사하다.
암호화에 사용된 키와 쌍을 이루는 또 다른 유일한 키를 사용하여야만 복호화가 가능하다. 복호화에 암호화와 동일한 키를 사용하는 것을 대칭키 암호(symmetric-key algorithm)라고 하며, 복호화와 암호화에 다른 키를 사용하는 것을 공개키 암호(public-key cryptography) 혹은 비대칭키 암호라고 한다.
대칭키 암호는 신속한 복호화와 암호화를 할 수 있지만, 다른 사람에게 암복호화에 쓰이는 키를 안전하게 전달할 구체적인 방법이 없다. 반면에 공개키 암호는 다른 사람에게 암호화에 필요한 키를 안전하게 전달하는 것이 가능하지만 암복화를 하는데 오랜 시간이 필요하다. 대표적인 대칭키 암호는 AES이고, 공개키 암호는 RSA이다.
종류
부호화의 역과정 (Decoding, 복호화) 디지털 변조 및 복조 방식에서
-복조(Demodulation) : 원래 파형의 복구(복제)한다. -복호(Deoding/Detection/Decision) : 유효 부호어 또는 디지털 심볼의 결정한다. .. 디지털 변조 파형의 복조 후에 심볼의 결정(판단) 과정이다.
전송 채널 오류에 대처하는 기법에 대해서는,효율적 복호(디코딩)의 어렵다.
. 부호화(코딩)은 비교적 자연스럽게/일원적으로 제시되지만, . 오류 섞인 수신 신호로부터 효율적으로 디코딩하는 것은 매우 어려운 과제이다. .. 특정 채널부호화 방식에서도 여러 디코딩 방식들이 제안되어왔었다.
* A/D 변환의 역과정 (D/A Conversion, D/A 변환) - 상대 전송장치에서 전송되어온 디지털 신호를 아날로그 신호로 변환하는 것이다.
* 암호화의 역과정 (Decryption, 암호해독) - 역 암호화이다.
활용
암호화 데이터를 암호화하려면 적절한 키 정보를 제공하고, 암호화할 일반 텍스트 파일 이름을 지정하고, 암호화된 콘텐츠가 포함될 파일 이름을 지정한다.
gcloud kms encrypt \
--location=[LOCATION] \ --keyring=[KEY_RING] \ --key=[KEY] \ --plaintext-file=[FILEPATH_AND_FILENAME_TO_ENCRYPT] \ --ciphertext-file=[FILEPATH_AND_FILENAME].enc
예를 들어 text.txt가 암호화할 일반 텍스트 파일 이름인 경우 다음 명령어를 실행한다
gcloud kms encrypt \
--location global \
--keyring my_keyring \ --key my_key \ --plaintext-file text.txt \ --ciphertext-file text.enc
일반 텍스트 파일은 64KiB보다 작아야 한다.
encrypt 명령어는 추가 인증 데이터가 있는 파일을 지정하는 선택적 --additional-authenticated-data- file 플래그를 지원합니다. 추가 인증 데이터 파일은 64KiB보다 커서는 안 된다. 경고: 파일을 암호화할 때 추가 인증 데이터를 사용하는 경우, 암호문 복호화 시 같은 추가 인증 데이터를 지정해야 한다. --plaintext-file 또는 --additional-authenticated-data-file이 -로 설정된 경우에는 해당 파일을 stdin에서 읽습니다. 마찬가지로 --ciphertext-file이 -로 설정된 경우에는 암호문이 stdout에 작성된다.
encrypt 명령어는 암호화에 사용할 키의 버전을 나타내는 선택적 --version 플래그를 지원합니다. 기본적으로 기본 버전이 사용된다.
다음 encrypt 예는 버전 키 및 추가 인증 데이터를 지정하는 방법을 보여준다.
gcloud kms encrypt \
--location=[LOCATION] \ --keyring=[KEY_RING] \ --key=[KEY] \ --version=[KEY_VERSION] \ --additional-authenticated-data-file=[ADDITIONAL_AUTHENTICATED_DATA_FILEPATH_AND_FILENAME] \ --plaintext-file=[FILEPATH_AND_FILENAME_TO_ENCRYPT] \ --ciphertext-file=[FILEPATH_AND_FILENAME].enc
복호화
데이터를 복호화하려면 적절한 키 정보를 제공하고, 복호화할 암호화된 파일(암호문 파일) 이름을 지정하고, 복호화된 콘텐츠가 포함될 파일 이름을 지정한다.
gcloud kms decrypt \
--location=[LOCATION] \ --keyring=[KEY_RING] \ --key=[KEY] \ --ciphertext-file=[FILEPATH_AND_FILENAME_TO_DECRYPT] \ --plaintext-file=[FILEPATH_AND_FILENAME_TO_DECRYPT].dec
예를 들어 text.enc가 복호화할 암호화된 파일 이름인 경우 다음 명령어를 실행한다.
gcloud kms decrypt \
--location=global \ --keyring=my_keyring \ --key=my_key \ --ciphertext-file=text.enc \ --plaintext-file=text.dec
decrypt 명령어는 추가 인증 데이터가 있는 파일을 지정하는 선택적 --additional-authenticated-data- file 플래그를 지원합니다. 추가 인증 데이터 파일은 64KiB보다 커서는 안 된다.
경고: 파일을 암호화할 때 추가 인증 데이터를 사용한 경우, 암호문 복호화 시 같은 추가 인증 데이터를 지정해야 한다. --ciphertext-file 또는 --additional-authenticated-data-file이 -로 설정된 경우에는 해당 파일을 stdin에서 읽고 마찬가지로 --plaintext-file이 -로 설정된 경우에는 복호화된 일반 텍스트가 stdout에 기록이 된다.
다음 decrypt 예에서는 추가 인증 데이터를 지정하는 방법을 보여준다.
gcloud kms decrypt \
--location=[LOCATION] \ --keyring=[KEY_RING] \ --key=[KEY] \ --additional-authenticated-data-file=[ADDITIONAL_AUTHENTICATED_DATA_FILEPATH_AND_FILENAME] \ --ciphertext-file=[FILEPATH_AND_FILENAME_TO_DECRYPT] \ --plaintext-file=[FILEPATH_AND_FILENAME_TO_DECRYPT].dec
대안
https://cloud.google.com/kms/docs/encrypt-decrypt?hl=ko#kms-howto-encrypt-cli
사례
참고자료
- 〈복호화〉, 《위키백과》
- 〈복호화〉, 《나무위키》
- 〈복호화〉, 《네이버 국어사전》
- 〈Decoding 복호화, 디코딩, 복호〉, 《정보통신기술용어해설》, 2016-12-10
같이보기