실행 키 암호

Running key cipher

고전 암호학에서 실행키 암호는 폴리 알파벳 대체 암호의 일종으로, 일반적으로 책에서 온 텍스트가 매우 긴 키스트림을 제공하기 위해 사용된다.보통 사용할 책은 미리 합의하고, 사용할 구절은 메시지마다 무작위로 골라 메시지 어딘가에 은밀히 표시한다.

사용된 텍스트는 The C Programming Language(1978년판)이며, tabula corta는 tableau이다.일반 텍스트는 "한 번에 Flee"이다.

63페이지, 1행은 실행 키로 선택됨:

오류는 여러 곳에서 발생할 수 있다.라벨에는...

실행 키는 일반 텍스트 아래에 기록된다.

일반 텍스트 f l e e a t o n c e
실행키 E R R O R S C A N O
암호문 J C V S R L Q N P S

그 다음 메시지는 "JCVSR LQNPS"로 전송된다.그러나 비게네르 암호와 달리 메시지가 확장되면 키가 반복되지 않고 키 텍스트 자체가 키로 사용된다.메시지가 확장된 경우(예: "한 번에 Flee.우리는 발견된다." 그러면 실행 키는 이전과 같이 계속된다.

일반 텍스트 f l e e a t o n c e w e a r e d i s c o v e r e d
실행키 E R R O R S C A N O C C U R I N S E V E R A L P L
암호문 J C V S R L Q N P S Y G U I M Q A W X S M E C T O

실행 키를 찾을 위치를 결정하기 위해 5개의 암호문자로 된 가짜 블록을 추가하는데, 3개는 페이지 번호를 나타내고, 2개는 A=0, B=1 등을 사용하여 숫자를 인코딩한다.이런 블록을 지시 블록이라고 한다.각 메시지의 두 번째 마지막 메시지로 표시기 블록을 삽입한다. (표시기 블록을 숨기는 다른 많은 방법이 가능하다.)따라서 63페이지, 1행은 "AGDAB" (06301)로 인코딩된다.

이는 "JCVSR LQNPS YGUIM QAWXS AGDAB MECTO"의 최종 메시지를 산출한다.

변형

실행형 키 암호의 현대적인 변형은 종종 기존의 타불라 직장을 비트 배타적으로 대체하거나 알파벳 문자가 아닌 전체 바이트로 작동하며, 큰 파일에서 실행형 키를 추출한다.파일의 엔트로피 밀도가 더 높고 자동화의 용이성을 제외하면, 그러한 변형과 전통적인 방법 사이에는 실질적인 차이가 거의 없다.

순열이 실행 키를 생성함

하나의 조합이 여러 개의 시작 포인터(또는 조합 규칙)를 사용하여 텍스트를 생성하는 경우 보다 컴팩트한 실행 키를 사용할 수 있다.예를 들어, 한 장소(단일 포인터)에서 시작하는 대신, 여러 개의 시작 포인터를 사용하고 스트림을 함께 xor로 새 실행 키를 만들 수 있으며, 마찬가지로 건너뛰기 규칙을 사용할 수 있다.그때 교환되는 것은 실행 중인 키 북에 대한 일련의 포인터 및/또는 초기 키 텍스트에서 새로운 순열 실행 키를 생성하기 위한 일련의 규칙이다.(이러한 것들은 공개키 암호화를 통해서나 직접 교환할 수 있다.또한 실행 중인 키북을 변경하지 않고 자주 변경될 수 있다.)

일반 텍스트로 나타나는 암호 텍스트

전통적인 암호문은 일반 텍스트와는 상당히 다른 것으로 보인다.이 문제를 해결하기 위해 한 변종은 암호문 출력으로 "플레인텍스트" 문자 대신 "플레인텍스트" 단어를 출력한다.이것은 단어의 "알파벳"을 생성함으로써 이루어진다(실제로 여러 단어의 단어가 각 암호문 출력 문자와 일치할 수 있다).결과는 긴 순서의 일반 텍스트 단어(프로세스가 중첩될 수 있음)처럼 보이는 암호 텍스트 출력이다.이론적으로 이것은 표준 암호문자를 출력으로 사용하는 것과 다르지 않다.그러나 일반 텍스트처럼 보이는 암호문은 그것을 해독된 일반 텍스트로 잘못 해석하려고 시도하는 "루프 속의 인간"을 초래할 수 있다.

예를 들어 BDA(Berkhoff deflater 알고리즘),[citation needed] 각 암호문 출력 문자는 적어도 하나의 명사, 동사, 형용사 및 부사를 가지고 있다. (예: (적어도) 모든 ASCII 문자에 대해 각각 하나씩).문법적으로 그럴듯한 문장은 암호문 출력물로 생성된다.암호 해독은 단어를 ASCII에 다시 매핑한 다음 실행 키를 사용하여 문자를 실제 일반 텍스트에 암호 해독해야 한다.중첩-BDA는 여러 번 재암호화 과정을 통해 출력을 실행하여 "플레인텍스트처럼 보이는" 암호문을 여러 층 생성하며, 각 계층은 존재하지 않는 의미적 의미를 해석하기 위해 "인간-인-더-루프"가 필요할 수 있다.

그로마크 암호

"Gromark 암호"("혼합 알파벳과 실행 키를 가진 Gronsfeld 암호")는 연속적인 숫자 쌍을 추가하여 형성된 실행형 숫자 키를 사용한다.[1]VIC 암호는 유사한 지연 피보나치 발생기를 사용한다.

보안

실행 키가 정말로 무작위적이고, 결코 재사용되지 않으며, 비밀로 유지된다면, 그 결과는 완벽한 비밀을 제공하는 방법인 일회용 패드가 된다(일반 텍스트에 대한 정보는 없음).그러나 (평소처럼) 실행 키가 자연 언어로 된 텍스트 블록이라면, 그 텍스트는 암호 분석을 돕는 데 사용될 수 있는 비랜덤 특성을 가지기 때문에 실제로 보안은 상당히 취약해진다.그 결과, 일반 텍스트와 실행 키의 문자당 엔트로피가 낮고, 결합 연산이 쉽게 반전된다.

암호를 공격하기 위해 암호 분석가는 가능한 일반 텍스트를 암호문을 따라 각각 가능한 위치에서 빼내어 실행한다.결과가 이해할 수 있는 어떤 것의 덩어리가 될 때, 추측된 일반 텍스트가 그 위치에 정확할 가능성이 높다(실제 일반 텍스트 또는 실행 키의 일부로서).그러면 '알 수 있는 어떤 것의 청크'는 종종 양쪽 끝에서 확장될 수 있고, 따라서 훨씬 더 개연성 있는 일반 텍스트를 제공할 수 있다.결국 러닝 키의 출처가 파악될 가능성이 높고, 지그는 위쪽에 있다.

보안을 개선할 수 있는 몇 가지 방법이 있다.첫 번째 가장 분명한 것은 타불라 직장이 아닌 비밀 혼합 알파벳 탁자를 사용하는 것이다.이것은 정말로 문제를 크게 복잡하게 만들지만 완전한 해결책은 아니다.일반 텍스트와 실행 중인 키 문자의 쌍은 'QQQ'라고 말하기 보다는 'EE'와 같은 고주파 쌍일 가능성이 훨씬 높다.이것이 출력 주파수 분포에 초래하는 스큐는 'EE'와 'QQQ'가 동일한 암호문자에 매핑될 가능성이 상당히 높지만 그럼에도 불구하고 분포가 평평하지 않다는 사실에 의해 얼룩진다.이를 통해 암호 분석가가 Tableau의 일부를 추론한 후 이전과 같이 진행할 수 있다(단, 재구성된 Tableau에서 단면이 누락된 경우).

또 다른 가능성은 일반 영어보다 글자당 엔트로피가 더 많은 키 텍스트를 사용하는 것이다.이를 위해 KGB는 임의로 보이는 숫자의 긴 목록이 들어 있는 연감이나 무역 보고서 같은 문서를 대리인에게 사용하도록 권고했다.

또 다른 문제는 키 스페이스가 의외로 작다는 것이다.그럴듯하게 사용될 수 있는 주요 텍스트가 1억 개에 달하며, 각 텍스트가 평균적으로 11,000개의 출발 위치를 가지고 있다고 가정해 보자.가능한 주요 텍스트를 대량으로 수집하는 상대에게, 이것은 컴퓨터 암호 표준에 의해 상대적으로 쉬운 인 2 디스플레이 스타일 2의 순서를 맹렬히 검색할 수 있게 한다(이 문제에 대한 접근 방법은 위의 순열 생성 실행 키를 참조하십시오.)

혼란

두 암호 모두 소설을 그들의 핵심 자료의 일부로 분류하여 사용했기 때문에, 많은 출처들은 책 암호와 실행 중인 열쇠 암호를 혼동한다.그들은 정말 먼 친척일 뿐이다.실행키 암호는 다형자 치환이고, 책 암호는 동음이의어 치환이다.아마도 그 구별은 실행 중인 암호는 임의의 숫자의 책과 함께 가장 잘 작동할 것이라는 사실에서 가장 명확하게 만들어지는 것일 것이다. 반면에 그러한 책(텍스트가 없는 내용)은 책 암호에는 쓸모가 없을 것이다.

참고 항목

참조

  1. ^ 미국 암호문 협회"ACA와 너" 2016년