아핀 암호
Affine cipher아핀 암호는 모노알파자 치환 암호의 일종으로, 알파벳의 각 문자가 그 수치 등가에 매핑되어 간단한 수학적 함수를 사용하여 암호화되고 다시 문자로 변환된다.사용된 공식은 각 문자가 다른 한 문자로 암호화된다는 것을 의미하며, 다시 말해서 암호는 기본적으로 어떤 문자로 가는지를 지배하는 규칙을 가진 표준 대체 암호라는 것을 의미한다.이와 같이, 그것은 모든 대체 암호의 약점을 가지고 있다.각 문자는 함수(ax + b) mod 26으로 인코딩되며, 여기서 b는 시프트의 크기다.
설명
암호에서 크기 m의 알파벳 문자는 먼저 0 ... m - 1 범위의 정수에 매핑된다.그런 다음 모듈식 산수를 사용하여 각 일반 텍스트 문자에 해당하는 정수를 암호 텍스트 문자에 해당하는 다른 정수로 변환한다.단일 문자에 대한 암호화 기능은
여기서 modulus m은 알파벳의 크기, a와 b는 암호의 키다.a의 값은 a와 m이 서로 합치되도록 선택해야 한다.암호 해독 기능은
여기서 a는−1 modulo m. 즉, modulo m의 모듈형 곱셈 역이며, 방정식을 만족한다.
a의 승법 역은 a와 m이 동일 시간인 경우에만 존재한다.따라서 a에 대한 제한이 없으면 암호 해독이 불가능할 수 있다.암호 해독 함수는 암호화 함수의 역행이라는 것을 다음과 같이 나타낼 수 있다.
약점
아핀 암호는 여전히 단일 알파벳 대체 암호이기 때문에, 그것은 암호의 그 등급의 약점을 계승한다.카이사르 암호는 암호화 기능이 단순히 선형 이동으로 감소하기 때문에 a = 1을 갖는 아핀 암호다.앳바시 암호는 a = -1을 사용한다.
영어로 메시지를 암호화하는 구체적인 사례(예: m = 26)를 고려하면, 사소한 카이사르 암호 26개를 세지 않고, 비종교적 암호는 총 286개다.이 숫자는 26보다 작은 26과 12개의 조합된 숫자가 있다는 사실에서 유래한다(이들은 a의 가능한 값이다).a의 각 값은 26개의 다른 추가 이동(b 값)을 가질 수 있다. 따라서 12 × 26 또는 312개의 가능한 키가 있다.이러한 다양성의 부족은 케르크호프의 원리에 비추어 볼 때 시스템을 매우 불안정하게 만든다.
암호의 일차적인 약점은 암호 분석기가 두 개의 암호문자의 평문(주파수 분석, brute power, 추측 또는 그 밖의 방법으로)을 발견할 수 있다면 동시 방정식을 풀어서 키를 얻을 수 있다는 사실에서 비롯된다.우리가 a와 m이 비교적 원초적이라는 것을 알기 때문에 이것은 자동화된 시스템에서 많은 "거짓" 키를 빠르게 버리기 위해 사용될 수 있다.
아핀 암호에 사용된 것과 동일한 유형의 변환은 가성수 생성기의 한 유형인 선형 결합 생성기에 사용된다.이 발전기는 암호 암호 해독기가 안전하지 않은 것과 같은 이유로 암호학적으로 안전한 유사 항문 번호 생성기가 아니다.
예
이 두 가지 예에서, 하나의 암호화와 하나의 암호 해독에서 알파벳은 A에서 Z까지의 문자가 될 것이며, 다음 표에서 찾을 수 있는 해당 값을 가질 것이다.
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
암호화
이 암호화 예에서 [1]암호화할 일반 텍스트는 알파벳에 26자가 있으므로, 각 문자의 숫자 값에 대해 위에서 언급한 표를 사용하여 "AFFINE CHIPER"로, a는 5, b는 8, m은 26으로 한다.a의 값만 26으로 조합해야 하므로 제한이 있다.a가 될 수 있는 값은 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25이다.이것이 암호의 이동이기 때문에 b의 값은 a가 1과 같지 않는 한 임의적일 수 있다.따라서 이 예에 대한 암호화 함수는 y = E(x) = (5x + 8) mod 26이 될 것이다.메시지를 암호화하는 첫 번째 단계는 각 문자의 숫자 값을 쓰는 것이다.
일반 텍스트 | A | F | F | I | N | E | C | I | P | H | E | R |
---|---|---|---|---|---|---|---|---|---|---|---|---|
x | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
이제 x의 각 값을 취하여 방정식의 첫 번째 부분인 (5x + 8)을 푼다.각 문자에 대한 (5x + 8)의 값을 찾은 후 (5x + 8)의 결과를 26으로 나눌 때 나머지를 취한다.다음 표는 암호화 프로세스의 처음 네 단계를 보여준다.
일반 텍스트 | A | F | F | I | N | E | C | I | P | H | E | R |
---|---|---|---|---|---|---|---|---|---|---|---|---|
x | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
(5x + 8) | 8 | 33 | 33 | 48 | 73 | 28 | 18 | 48 | 83 | 43 | 28 | 93 |
(5x + 8) 모드 26 | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
메시지를 암호화하는 마지막 단계는 표의 각 숫자 값을 찾아 해당 문자를 검색하는 것이다.이 예에서 암호화된 텍스트는 IHHWVCSWFRCP일 것이다.아래 표는 Affine 암호에 있는 메시지를 암호화하기 위한 완성된 표를 보여준다.
일반 텍스트 | A | F | F | I | N | E | C | I | P | H | E | R |
---|---|---|---|---|---|---|---|---|---|---|---|---|
x | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
(5x + 8) | 8 | 33 | 33 | 48 | 73 | 28 | 18 | 48 | 83 | 43 | 28 | 93 |
(5x + 8) 모드 26 | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
암호문 | I | H | H | W | V | C | S | W | F | R | C | P |
암호 해독 중
이 암호 해독 예제에서 해독될 암호문은 암호화의 예에서 나온 암호문이다.해당 암호 해독 함수는 D(y) = 21(y - 8) mod 26이며 여기서 a는−1 21로 계산되고 b는 8이다.시작하려면 아래 표와 같이 암호문의 각 문자에 숫자 등가물을 쓰십시오.
암호문 | I | H | H | W | V | C | S | W | F | R | C | P |
---|---|---|---|---|---|---|---|---|---|---|---|---|
y | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
이제, 다음 단계는 21(y - 8)을 계산하고, 그 결과가 26으로 나누어질 때 나머지를 취하는 것이다.다음 표는 두 계산의 결과를 보여준다.
암호문 | I | H | H | W | V | C | S | W | F | R | C | P |
---|---|---|---|---|---|---|---|---|---|---|---|---|
y | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
21(y − 8) | 0 | −21 | −21 | 294 | 273 | −126 | 210 | 294 | −63 | 189 | −126 | 147 |
21(y - 8) 모드 26 | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
암호문을 해독하는 마지막 단계는 표를 사용하여 숫자 값을 다시 문자로 변환하는 것이다.이 암호 해독의 일반 텍스트는 AFFINECCHER이다.아래는 최종 단계가 완료된 표입니다.
암호문 | I | H | H | W | V | C | S | W | F | R | C | P |
---|---|---|---|---|---|---|---|---|---|---|---|---|
y | 8 | 7 | 7 | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
21(y − 8) | 0 | −21 | −21 | 294 | 273 | −126 | 210 | 294 | −63 | 189 | −126 | 147 |
21(y - 8) 모드 26 | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | 7 | 4 | 17 |
일반 텍스트 | A | F | F | I | N | E | C | I | P | H | E | R |
전체 알파벳 인코딩
암호화와 암호 해독을 더 빨리 하기 위해 전체 알파벳을 암호화해 클리어텍스트와 암호문 사이에 일대일 지도를 만들 수 있다.이 예에서 일대일 지도는 다음과 같다.
비밀문자. | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
소수점, 소수. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
(5x + 8) 모드 26 | 8 | 13 | 18 | 23 | 2 | 7 | 12 | 17 | 22 | 1 | 6 | 11 | 16 | 21 | 0 | 5 | 10 | 15 | 20 | 25 | 4 | 9 | 14 | 19 | 24 | 3 |
암호문자 | I | N | S | X | C | H | M | R | W | B | G | L | Q | V | A | F | K | P | U | Z | E | J | O | T | Y | D |
프로그래밍 예제
아핀 암호로 텍스트를 암호화하는 데 사용할 수 있는 Python 코드는 다음과 같다.
# 암호 해독을 위한 전이 테이블을 출력한다. # a는 m=26과 일치해야 한다. 반항하다 아첨하다(a: 인트로, b: 인트로) -> 없음: 을 위해 i 에 범위(26): 인쇄하다(CHR(i+서품을 하다('A')) + ": " + CHR(((a*i+b)%26)+서품을 하다('A'))) # 예시통화 아첨하다(5, 8)
참고 항목
참조
- ^ Kozdron, Michael. "Affine Ciphers" (PDF). Retrieved 22 April 2014.