XOR 암호

XOR cipher

암호학에서 단순 XOR 암호는 다음과 같은 [1]원리에 따라 작동하는 암호화 알고리즘인 가법 암호의 한 종류입니다.

A { 0 = A,
A { } A = 0,
A B = B A,
(A { B A { C )
(B { \ A B 0 = B,

여기서 배타적 분리(XOR)[2] 동작을 나타냅니다.이 연산을 모듈러스 2 더하기(또는 빼기)[3]라고 부르기도 합니다.이 로직에서는 특정 키를 사용하여 모든 문자에 비트 단위 XOR 연산자를 적용하여 텍스트 문자열을 암호화할 수 있습니다.출력을 복호화하려면 키를 사용하여 XOR 함수를 다시 적용하기만 하면 암호는 삭제됩니다.

예를 들어 문자열 Wiki(01010111 01101001 01101011 01101001(8비트 ASCII)은 다음과 같이 반복 키 11110011을 사용하여 암호화할 수 있습니다.

01010111 01101001 01101011 01101001
11110011 11110011 11110011 11110011
= 10100100 10011010 10011000 10011010

반대로 복호화의 경우:

10100100 10011010 10011000 10011010
11110011 11110011 11110011 11110011
= 01010111 01101001 01101011 01101001

사용 및 보안

XOR 연산자는 보다 복잡한 암호의 구성 요소로서 매우 일반적입니다.그 자체로는 상시 반복키를 이용하여 주파수 해석을 이용하여 간단한 XOR 암호를 3차적으로 해독할 수 있다.메시지의 내용을 추측할 수 있거나 알 수 있는 경우 키가 노출될 수 있습니다.가장 큰 장점은 구현이 간단하고 XOR 연산이 저렴하다는 것입니다.따라서 단순한 반복 XOR(즉, 데이터 전체의 xor 조작에 같은 키를 사용) 암호는 특정 보안이 필요하지 않은 경우 정보를 숨기기 위해 때때로 사용된다.XOR 암호는 종종 리버스 엔지니어링을 더 어렵게 하기 위해 컴퓨터 멀웨어에서 사용됩니다.

키가 랜덤으로 적어도 메시지와 같은 길이의 경우 XOR 암호는 메시지 내에 [4]키 반복이 있을 때보다 훨씬 안전합니다.키 스트림이 의사 난수 생성기에 의해 생성되면 스트림 암호화가 됩니다.정말로 랜덤한 키를 사용하면 이론상으로는 깨지지 않는 일회용 패드가 됩니다.

이러한 암호 중 하나의 XOR 연산자는 평문 \ 암호문 = 키이므로 알려진 텍스트 공격에 취약합니다.암호문을 조작하여 복호화된 일반 텍스트에서 임의의 비트를 플립하는 것도 간단합니다.이를 가단성이라고 합니다.

암호화에 있어서의 유용성

XOR가 암호화에 유용한 주된 이유는 XOR이 "완벽하게 균형 잡힌" 상태이기 때문입니다.특정 평문 입력 0 또는 1에 대해 암호문 결과는 0 [5]또는 1이 될 가능성이 높습니다.

다음 표는 4개의 플레인텍스트와 키비트의 모든 페어를 나타내고 있습니다.키 또는 일반 텍스트에 대해 아무것도 모르는 경우 암호 [5]텍스트만으로는 아무것도 판별할 수 없습니다.

XOR 암호 트레이스 테이블
평문 열쇠 암호문
0 0 0
0 1 1
1 0 1
1 1 0

AND 또는 OR 등의 다른 논리연산에는 이러한 매핑이 없습니다(예를 들어 AND는 3개의 0과1개의 1을 생성하기 때문에 특정 암호문 비트가 0이라는 것은 XOR의 [a]경우 이상적인 1/2 확률과 달리 원래 평문 비트가 0일 확률이 2/3임을 의미합니다).

구현 예시

Python 프로그래밍 [b]언어를 사용하는 예.

부터 os 수입품 urandom  방어하다 (길이: 인트) -> 바이트 수:     「키 생성."""     돌아가다 urandom(길이)  방어하다 xor_displays(xor_internals.(s, t) -> 바이트 수:     "x 또는 두 개의 현이 함께 있습니다."""     한다면 인스턴스(s, 스트레이트):         # 텍스트 문자열에 단일 문자가 포함되어 있습니다.         돌아가다 b"".합류하다(크르(주문하다(a) ^ 주문하다(b)) 위해서 a, b  지퍼(s, t))     또 다른:         바이트 수 개체에는 0 ~255 범위의 정수 값이 포함되어 있습니다.         돌아가다 바이트 수([a ^ b 위해서 a, b  지퍼(s, t)])  메세지 = '이건 비밀 메시지입니다' 인쇄물('메시지:', 메세지)  열쇠 = ((메세지)) 인쇄물('키:', 열쇠)  암호문 = xor_displays(xor_internals.(메세지.부호화('utf8'), 열쇠) 인쇄물('cipherText:', 암호문) 인쇄물('삭제됨:', xor_displays(xor_internals.(암호문, 열쇠).해독하다('utf8'))  # 확인 한다면 xor_displays(xor_internals.(암호문, 열쇠).해독하다('utf8') == 메세지:     인쇄물('유닛 테스트 통과') 또 다른:     인쇄물('유닛 테스트 실패') 

「 」를 참조해 주세요.

레퍼런스

메모들

  1. ^ AND 동작에서 (암호문) 출력 비트를 0으로 얻는 방법에는 다음 3가지가 있습니다.
    평문=0, 키=0;
    평문=0, 키=1;
    평문=1, 키=0.
    따라서 암호문 비트가 0임을 알 수 있는 경우, 평문 비트도 정말로 랜덤한 키에 대해0 이었을 가능성이 2/3 입니다.XOR의 경우 정확히 두 가지 방법이 있으므로 확률은 1/2입니다(즉, 이 정보에서 아무것도 배울 수 없습니다).
  2. ^ 이것은 Richter 2012에서 영감을 얻었다.

인용문

  1. ^ 투테 1998, 3페이지
  2. ^ 르윈 2012, 페이지 14-19
  3. ^ 처치하우스 2002, 11페이지
  4. ^ 처치하우스 2002, 페이지 68
  5. ^ a b Paar & Pelzl 2009, 32-34페이지.

원천

  • Budiman, MA; Tarigan, JT; Winata, AS (2020). "Arduino UNO and Android Based Digital Lock Using Combination of Vigenere Cipher and XOR Cipher". Journal of Physics: Conference Series. IOP Publishing. 1566 (1): 012074. Bibcode:2020JPhCS1566a2074B. doi:10.1088/1742-6596/1566/1/012074. ISSN 1742-6588.
  • Churchhouse, Robert (2002), Codes and Ciphers: Julius Caesar, the Enigma and the Internet, Cambridge: Cambridge University Press, ISBN 978-0-521-00890-7
  • Garg, Satish Kumar (2017). "Cryptography Using Xor Cipher". Research Journal of Science and Technology. A and V Publications. 9 (1): 25. doi:10.5958/2349-2988.2017.00004.3. ISSN 0975-4393.
  • Gödel, Kurt (December 1931). "Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I". Monatshefte für Mathematik und Physik (in German). 38–38 (1): 173–198. doi:10.1007/BF01700692. ISSN 0026-9255. S2CID 197663120.
  • Lewin, Michael (June 2012). "All About XOR". Overload. 2 ((109): 14–19. Retrieved 29 August 2021.
  • Paar, Christof; Pelzl, Jan (2009). Understanding cryptography : a textbook for students and practitioners. Springer. ISBN 978-3-642-04101-3. OCLC 567365751.
  • Richter, Wolfgang (August 3, 2012), "Unbreakable Cryptography in 5 Minutes", Crossroads: The ACM Magazine for Students, Association for Computing Machinery
  • Tutte, W. T. (19 June 1998), Fish and I (PDF), retrieved 11 January 2020 교수님의 강의 녹취록.워털루 대학교 투테