배타적 논리합(XOR)이 암호화에서 중요한 이유는 무엇입니까?



암호학에 입문했거나 기본 사항을 이해하려는 경우 배타적 논리합 연산이 특히 암호에서 자주 사용된다는 것을 알아차렸을 것입니다.

XOR( ⊕ )이란?



XOR 또는 "배타적 or"는 이진 데이터에서 작동합니다. 두 입력이 모두 반대이면(하나는 거짓이고 하나는 참) 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.



go 코드의 예는 다음과 같습니다.

func exclusiveOr(a bool, b bool) bool {
    return a != b
}


XOR 암호 – 완벽한 암호



XOR 연산은 단일 키로 메시지를 암호화하고 해독하기 위한 간단한 암호로 사용할 수 있습니다. 이를 대칭 암호화라고 합니다.

흥미로운 점은 다음과 같습니다.
  • 키가 메시지와 같은 크기임
  • 키가 비밀로 유지되고 무작위로 생성됩니다
  • .

    그러면 암호를 해독할 수 없습니다. 이것은 one time pad로 알려져 있습니다. 그러나 단순 XOR은 키 길이가 너무 길어 실용적이지 않기 때문에 프로덕션 환경에서 사용하면 안 됩니다.

    암호 예제



    간단한 예로 "hi"라는 단어를 암호화해 보겠습니다.
  • "hi"를 이진법으로 변환합니다. 다음은 무료 도구입니다. https://www.rapidtables.com/convert/number/ascii-to-binary.html )

  • 01101000 01101001
    


  • 길이가 같은 임의의 비밀 키를 만듭니다.

  • 01010010 01000101
    


  • 메시지와 키를 XOR하여 암호화된 메시지를 생성합니다.

  • 01101000 01101001 ("hi") XOR 01010010 01000101 (secret key) = 00111010 00101100 (encrypted message)
    


  • 암호화된 메시지와 키를 다시 XOR하여 메시지를 해독합니다.

  • 00111010 00101100 (encrypted message) XOR 01010010 01000101 (secret key) = 01101000 01101001 ("hi")
    


    왜 작동합니까?



    XOR은 그 자체가 역이기 때문에 암호로 작동합니다.

    𝑎 = (𝑎 𝑏) 𝑏



    그리고 예제에서 보여주듯이:

    encrypted = message key

    and

    message = encrypted key



    프로덕션 암호에 XOR이 사용됩니까?



    단순 XOR 암호는 메시지 본문과 길이가 같은 키를 사용하는 것이 비실용적이기 때문에 프로덕션에서는 사용되지 않습니다. 그러나 XOR은 여전히 ​​매우 유용합니다. 실제로 거의 모든 대칭 암호화 알고리즘에 사용됩니다. XOR은 “add round key” step of AES-256 에서 기본 연산입니다. DES cipher.에서도 사용됩니다.

    읽어 주셔서 감사합니다



    레인 트위터:

    Dev.to의 레인:

    Qvault 다운로드: https://qvault.io

    게시물 Why is Exclusive Or (XOR) Important in Cryptography?Qvault에 처음 나타났습니다.

    좋은 웹페이지 즐겨찾기