64 비트 값을 대칭 적으로 암호화하는 방법은 무엇입니까?

다음 시나리오에 적합한 알고리즘이 궁금합니다.

  1. 32 비트 “일반 텍스트” 입력, 카운터에서 가져옴
  2. 32 또는 64 비트 “암호문”출력
  3. 키로 출력을 해독 할 수 있어야합니다. 오프셋 및 현재 카운터), 원래의 32 비트 카운터 값을 반환합니다.
  4. 사용자는 입력을 전혀 관찰하지 않지만 순차적 인 출력을받을 수 있습니다. 어떤 인덱스가 있는지 알 수 있습니다.
  5. 유효한 카운터 값에 해당하는 다른 출력을 추측하기는 어렵습니다.

내가 학습하지 못한 직감은 키와 출력이 입력 공간보다 크면 적어도 처음 몇 개의 출력에 대해 “좋은”결과를 얻는 것이 상당히 쉬워야합니다. 그러나 충분한 샘플을 사용하면 키와 인덱스를 쉽게 계산할 수 있다는 것도 논리적으로 보이지만 대부분의 경우를 예상합니다. l을 사용하려면 값이 100 개 미만입니다.

제 질문은 다음과 같습니다.

  1. 이 시나리오에서 작동하는 기존 알고리즘이 있습니까?
  2. 얼마나 어려울까요? 갈라진 금? 즉, 유효한 인덱스로 복호화하는 값을 계산합니다.
  3. 더 많은 샘플을 보유하면 크래킹 효율성에 얼마나 영향을 미칩니 까?
  4. 순진한 접근 방식의 문제점은 무엇입니까? 예 :

    u64 output = input repeat 64x output = ((output ^ key) + key) rotate-left 37 

    덧셈이 64 비트 정수 경계를 둘러싼다고 가정합니다. 임의의 키를 단일 입력과 완전히 혼합하는 것처럼 보이지만 둘 이상의 출력은 공격자가 보유한 정보를 빠르게 증가시킬 수 있지만 방법은 알 수 없습니다. 분명히 깨질 것입니다. 저는 단지 배우려고합니다.

  5. (((key & 0xFFFE)+1) * 37) 더 나아질까요? 얼마나 도움이되며 그 이유는 무엇입니까?
  6. 알고리즘을 분석하고 더 나은 알고리즘을 설계하기 위해 어떤 접근 방식, 리소스 등을 사용 하시겠습니까?

댓글

  • 이것은 설명하는 방식으로 매우 XY 문제입니다. CSPRNG (S 참고)는 ' 이에 대한 좋은 솔루션이 아닌 것 같습니다. 키 크기 요청이 약간 이상합니다. 더 큰 키 크기를 사용할 수없는 이유는 무엇입니까?
  • 키 크기가 필수가 아닌 것 같습니다. 64 비트 키가 32 비트 값을 암호화하기에 충분하기를 바랐습니다.

Answer

  1. 이 시나리오에서 작동하는 기존 알고리즘이 있습니까?

예, 실제로 , 64 비트 블록 암호가 있습니다. 표준적인 통념은 표준 블록 암호 모드가 생일 경계 (이 경우 약 30GB)에 가까워지면 정보 유출을 시작하는 경향이 있기 때문에 일반적인 사용에는 권장되지 않는다는 것입니다. 그러나 사용 사례에서는 그렇지 않습니다. 다음은 몇 가지 옵션입니다.

  • 3DES (일명 TDES), 이것은 세 가지 다른 키를 사용하여 세 번 적용되는 DES이며 이점이 있습니다. 매우 잘 연구되고 있습니다.

  • Speck 에는 64 비트 블록 암호가있는 매개 변수 세트가 있습니다. 가장 빠른 대안이라는 장점이 있으며, 자신이하고 있다는 것을 알고 놀라운 양의 암호화 분석을 수행 한 사람들이 설계했습니다.

  • FPE 암호 (예 : 임의의 블록 크기 (64 비트 포함)를 처리 할 수있는 FF1. 이것은 조정 옵션 ( “기타 숨겨진 매개 변수”를 배치 할 수있는 편리한 장소)을 허용한다는 점에서 이점이 있습니다. ). 이것의 대안보다 느립니다. FF1을 사용하면 보안은 AES의 기본 보안과 Feistel 구조의 입증 가능한 보안에서 비롯됩니다.

이제 이들은 64 비트보다 긴 키를 사용합니다. 일반적인 상식은 64 비트 키는 길이가 충분하지 않다는 것입니다.

  1. 크래킹이 얼마나 어렵습니까? 즉, 유효한 인덱스로 복호화하는 값을 계산합니다.

위의 경우 공격자가 가질 수있는 유일한 실용적인 옵션은 다음과 같습니다. 무작위로 암호문을 추측하고 유효한 색인으로 해독되는 암호문을 우연히 발견하기를 바랍니다.

  1. 더 많은 샘플이 크래킹의 효율성에 영향을 미칩니 까?

위의 항목에 대해 방대한 양의 샘플을 보유하면 여전히 공격을 실행할 수 없습니다.

  1. 다음과 같은 순진한 접근 방식의 문제점

ARX 암호 (실제로는 모든 암호, 특히 ARX)는 올바르게 사용하기가 까다 롭습니다. 특히 ARX 암호는 차등 및 선형 특성을 방해하지 않는 경향이 있습니다. 디자인이 제대로 작동하는지 확인하려면 정말 잘 연구해야합니다.)

  1. 알고리즘을 분석하고 더 나은 알고리즘을 설계하기 위해 어떤 접근 방식, 리소스 등을 사용 하시겠습니까?

이미 분석 된 디자인을 사용하는 것이 좋습니다. 위에 세 가지를 나열했습니다.

댓글

  • I ' 예를 들어 비교적 작은 키 입력의 변경이있는 경우 3DES보다 Blowfish를 선호합니다. 3DES의 보안은 키가 128 비트 (또는 오히려 112 비트)로 확장 되었더라도 의심 할 수 있습니다.
  • @MaartenBodewes : 3DES를 알 수없는 키가 임의의 짝수 순열과 구별 되나요?
  • 아니요, 물론 아닙니다.하지만 내 암호화에 ~가있는 경우 추론 할 필요도 없습니다. ' 128 비트 또는 192 비트 키를 입력 할 때 80 비트 또는 ~ 112 비트 강도 ('이 작업을 수행 할 수 있다는 것은 의심의 여지가 없지만, 우리는 모든 판초가 아닙니다). 키 크기가 문제인 것 같습니다. 이 경우 패리티 비트를 버리는 것은 낭비입니다.
  • " 문에 대해 자세히 설명해 주시겠습니까? 이제 64 비트보다 긴 키를 사용합니다. 일반적으로 64 비트 키는 길이가 충분하지 않습니다. "? 어떤 알고리즘이 어떤 길이의 키를 필요로하고 64 비트 키는 정확히 무엇을 위해 충분히 길지 않습니까?
  • @shader : 64 비트의 키는 대규모 (재원이 풍부한) 적의 무차별 대입 검색에 취약합니다. 누구에게도 취약하지 않은 ' 다소 큰 키 (예 : 128 비트)를 사용하는 것이 일반적으로 쉽기 때문에 일반적으로 더 안전한 옵션을 선택합니다 (' NSA가 우리를 공격하는 데 관심이 있거나 Amazon이 전체 클라우드를 우리에게 바칠 지 여부를 즉시 염려하지 않습니다 …

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다