일반 텍스트를 알면 사용 된 암호화 체계를 찾는 방법은 무엇입니까? [닫은

StackOverflow https://stackoverflow.com/questions/231592

  •  04-07-2019
  •  | 
  •  

문제

DBF 테이블에 char () 필드가 프로젝트의 과거 개발자가 암호화 한 상태로 남아 있습니다.

그러나 여러 레코드의 암호 해독의 일반 텍스트 결과를 알고 있습니다. 원래 데이터를 해독하기 위해 함수/알고리즘/체계를 결정하려면 어떻게해야합니까? 이것들은 일부 샘플 필드입니다.

cryptext :

b5 01 02 c1 e3 0d 0a

일반 텍스트는 다음과 같습니다.

3543921 or 3.543.921

그리고 cryptext :

41 c3 c5 07 17 0d 0a

일반 텍스트가되어야합니다

1851154 or 1.851.154

나는 믿는다 0d 0a 그냥 패딩입니다. Win-1252 인코딩에서 수집 한 데이터에서 나왔습니다 (Dunno If Matters)

편집하다: 호기심과 학습을위한 것입니다. 나는 평범한 텍스트를 모르는 튜플의 필드 값을 복구하기 위해 사용 된 암호화 (이진 데이터이지만 간단한 것 같음)를 표명 할 수 있기를 원합니다.

편집 2 : 몇 가지 샘플을 추가했습니다.

도움이 되었습니까?

해결책

일반적으로 쉬운 방법은 없습니다. 이 질문은 너무 일반적입니다. 이 일반 + 암호화 된 문자열을 게시 해보십시오.

편집하다:

  • 학습을 위해이 기사를 읽을 수 있습니다. Wikipedia의 암호화
  • 실제로 믿는 경우 암호화가 간단합니다. 바이트 (또는 단어) 레벨 XOR인지 확인하십시오. 다음 의사 코드 참조

    for (i in originalString) {
    newString[i] = originalString[i] ^ CRYPT_BYTE;
    }
    

다른 팁

대체 암호 (주파수 분석 시도) 또는 제대로 적용되지 않은 XOR (예 : 키 재사용, 알려진 일반 텍스트로 두 개의 암호 텍스트를 시도한 다음 결과가 일반 텍스트의 XOR인지 확인하거나 Xoring을 시도해보십시오. 그 자체가 일부 바이트로 바뀌는 암호 텍스트의 경우, 알 수없는 키 (대부분 ASCII 문자로 구성됨)를 가진 잘 알려진 스트림/블록 암호라고 가정해야합니다. Ciphertext-PlainText 쌍의 충분한 샘플이 충분하다면 처음 몇 문자/바이트가 동일한 첫 번째 문자/바이트가있는 Ciphertexts를 가진 PlainTexts를 확인하는 것으로 시작할 수 있습니다. 또한 블록 또는 스트림 암호인지 여부와 피드백 메커니즘이 있는지 여부도 볼 수 있습니다. 존재하는 경우 패딩은 또한 스트림 암호가 아닌 블록 암호라고 제안 할 수 있습니다.

얼마나 많은 노력을 기울이고 싶은지에 따라 어딘가에 갈 수 있어야합니다. 읽기 시작하여 시작하십시오 암호화, 특히 암호화 방법.

이 작업이 얼마나 쉬운 지 결정할 것들은 다음과 같습니다.

  • 사용 된 암호화 방법이 얼마나 좋은지; RSA 또는 AES와 같은 최근에 유명한 방법이라면 아마도 운이 좋지 않을 것입니다.
  • 얼마나 많은 암호 텍스트와 일반 텍스트가 있는지 - 더 좋을수록
  • 어떤 종류의 데이터인지 - 간단한 텍스트는 가장 쉬운 반면 임의의 데이터는 가장 어려울 것입니다.
  • 데이터가 모두 동일한 키로 암호화되어 있는지 또는 여러 키가 사용되었는지 여부.

성공의 열쇠는 낙담하지 않는다는 것입니다. cryptanalysis의 역사는 깨지지 않는 코드가 깨지는 이야기로 가득 차 있습니다. 아마도 가장 유명한 것은 제 2 차 세계 대전의 수수께끼 기계이며, 그 크래킹은 현대 컴퓨터의 개발에 기여했습니다.

우리는 당신이 제공 한 내용에서 몇 가지를 말할 수 있습니다.

  • 각각의 경우 암호 텍스트 길이가 7 바이트 인 경우 블록 암호가 될 가능성은 거의 없습니다 (블록 암호는 한 번에 블록을 암호화하기 때문에 길이는 블록 크기의 배수이며 56 비트의 블록 크기는 거의 없습니다. .
  • 암호 텍스트의 길이와 일반 텍스트의 문자 수는 각 경우에 동일하므로 스트림 암호가 적용된 ASCII와 같은 숫자를 간단하게 인코딩 할 수 있습니다.
  • 평범한 텍스트 (ASCII)와 암호 텍스트를 함께 사용하면 단일 반복 옥트 나 각각에 대해 동일한 크립토 스트림을 제공하지 않으므로 사소한 암호가 아닙니다. 암호 텍스트 바이트 중 일부가 IV가 아닌 한 두 가지 키를 사용하는 간단한 스트림 암호가 아닙니다.
  • 마지막 두 바이트는 암호 텍스트에서는 동일하지만 일반 텍스트는 아닙니다. 이것은 우연의 일치 일 수 있지만 당신이 제안한대로 패딩을 나타낼 수도 있습니다. 패딩하는 경우 다른 인코딩 메커니즘을 사용해야합니다.

암호화 된 모든 값이 정수인지 아니면 다른 값도 가능합니까?

해당 키없이 사용 된 알고리즘을 결정하는 것이 전적으로 유용하지 않을 수 있습니다.

텍스트가 충분히 작고 일반 텍스트가 있다면 왜 개미를 알아 내야합니까? 물론 호기심을 위해?

결정 론적 인 방법은 없지만 종종 암호 텍스트에 힌트가 있습니다. 실제로 암호화되어 있습니까 (일종의 키로)? 아니면 그냥 해시되고 (아마도) 소금에 절인 것입니다.

해시 인 경우 이미 온라인으로 사전 호쉬 사전이 있기 때문에 운이 좋고 Google 만 일치하는 쌍 (사전 단어가 있다고 가정)을 얻을 수 있습니다.

암호 텍스트의 예가 있다면, 누군가가 암호 형식을 인식 할 수 있습니다 ...

XOR이 쉽게 암호 해독 가능한 체계라는 오해라고 생각합니다. 이론적으로 가장 강한 형태의 암호화는 일회성 패드입니다.

반면에 유한 Xors ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top