중국시가넷 - 개인 서명 - DES 알고리즘과 RSA 알고리즘의 기본 아이디어를 간략하게 설명합니다.

DES 알고리즘과 RSA 알고리즘의 기본 아이디어를 간략하게 설명합니다.

DES 알고리즘의 전체 이름은 데이터 암호화 표준, 즉 데이터 암호화 알고리즘으로 IBM 이 1975 년 연구에 성공하여 발표했습니다. DES 알고리즘에는 키, 데이터 및 스키마의 세 가지 입력 매개변수가 있습니다. 키는 8 바이트 ***64 비트이며 DES 알고리즘의 작업 키입니다. 데이터는 8 바이트 64 비트이며 암호화 또는 암호 해독할 데이터입니다. 모드는 DES 의 작동 모드이며 암호화 또는 암호 해독의 두 가지 방법이 있습니다.

DES 알고리즘은 64 비트 일반 텍스트 입력 블록을 64 비트 암호문 출력 블록으로 변경하며 64 비트를 사용합니다. 알고리즘은 주로 두 단계로 나뉩니다.

1? 초기 교체

이 기능은 가져온 64 비트 데이터 블록을 비트 단위로 재구성하여 출력을 L0 과 R0 의 두 부분으로 나누고 각 부분의 길이는 3 2 비트입니다. 대체 규칙은 입력된 58 위를 1 비트로, 50 위를 2 위로, 마지막을 7 위로 변경하는 것이다. L0 과 R0 은 회전 출력의 두 부분입니다. 여기서 L0 은 출력의 왼쪽 32 비트이고 R0 은 오른쪽 32 비트입니다. 예를 들어, 조정 전 입력 값이 D 1D2D3...D64 로 설정된 경우 초기 정렬 결과는 L0 = D58D50...D8;; R0 = d57d49 ... D7.

2? 역교체

16 번의 반복을 거쳐 L 16 과 r 16 을 역변위의 입력으로 얻습니다. 역변위는 정확히 초기 변위의 역연산이므로 암호문 출력을 얻을 수 있습니다.

RSA 알고리즘 소개

이 알고리즘은 1978 에 나타나며 데이터 암호화와 디지털 서명을 모두 사용할 수 있는 첫 번째 알고리즘입니다. 이해하기 쉽고 조작하기 쉬우며 인기가 많다. 이 알고리즘의 이름은 로널드 리브스트 (Ron Rivest), 아디사미르 (AdiShamir), 레너드 아드만 (Leonard Adleman) 등의 발명가의 이름을 따서 붙여졌다. 그러나, RSA 의 보안은 아직 이론적으로 증명되지 않았다.

RSA 의 보안은 많은 수의 분해에 달려 있습니다. 공개 키와 개인 키는 모두 두 개의 큰 소수 (100 개 이상의 십진수) 의 함수입니다. 하나의 키와 암호문에서 일반 텍스트를 추론하는 것은 두 개의 큰 소수의 곱을 분해하는 것과 같다고 추측합니다.

키 쌍 생성. P 와 q 라는 두 개의 큰 소수를 선택합니다. 계산:

N = p * q

그런 다음 e 와 (p- 1) * (q- 1) 가 서로 소수가 되도록 암호화 키 e 를 임의로 선택합니다. 마지막으로 유클리드 알고리즘을 통해 암호 해독 키 D 를 계산하면 다음과 같은 요구 사항을 충족할 수 있습니다

E * d =1(mod (p-1) * (q-1))

여기서 n 과 d 도 서로 질적이다. 디지털 e 와 n 은 공개 키이고 d 는 개인 키입니다. P 와 Q 두 개의 소수는 더 이상 필요하지 않습니다. 버려야 합니다. 그래서 아무도 모릅니다.

정보 M (바이너리 표현) 을 암호화할 때 먼저 M 을 길이가 같은 블록 m 1, m2, ..., mi, 블록 길이 S 로 나눕니다. 여기서 2 s

Ci = mi^e (현대) (a)

암호 해독시 다음 계산이 수행됩니다.

Mi = ci^d (현대) (b)

RSA 는 (a) 서명 및 (b) 인증을 사용하여 디지털 서명에 사용할 수 있습니다. 보안 및 M 정보의 양과 같은 요소를 고려하여 일반적으로 해시 연산이 먼저 수행됩니다.

RSA 보안.

RSA 의 보안은 큰 수의 분해에 의존하지만, 큰 수의 분해와 같은지 여부는 아직 이론적으로 증명되지 않았다. 왜냐하면 큰 수를 분해해야 하기 때문에 증명할 필요가 없기 때문이다. 큰 숫자를 분해할 필요가 없는 알고리즘이 있다고 가정하면, 반드시 큰 수의 분해 알고리즘으로 수정할 수 있을 것이다. 현재 RSA 의 일부 변형 알고리즘은 이미 대수분해와 동등한 것으로 증명되었다. 어쨌든, N 을 분해하는 것이 가장 명백한 공격 방식이다. 이제 사람들은 140 개 이상의 십진수를 분해할 수 있게 되었다. 따라서 특정 응용 프로그램에 따라 모듈 N 이 더 커야 합니다.

RSA 의 속도입니다.

많은 수의 계산으로 인해 RSA 는 소프트웨어 구현이든 하드웨어 구현이든 DES 보다 100 배 느린 경우가 가장 빠릅니다. 속도는 항상 RSA 의 짧은 보드였습니다. 일반적으로 소량의 데이터를 암호화하는 데만 사용됩니다.

RSA 의 선택적 암호문 공격.

RSA 는 선택적 암호문 공격에 취약합니다. 일반 공격자는 일부 정보를 맹목적으로 위장하여 개인 키가 있는 엔티티에 서명할 수 있습니다. 그런 다음 계산을 통해 원하는 정보를 얻을 수 있습니다. 사실, 모든 공격은 같은 약점을 이용합니다. 즉, 즉, 제곱이 입력을 유지하는 곱셈 구조가 있다는 사실입니다.

(XM) d = x d * m d 모델 n.

앞서 언급했듯이 이 고유한 문제는 공개 키 암호 시스템의 가장 유용한 특성인 누구나 공개 키를 사용할 수 있습니다. 그러나 이 문제는 알고리즘에서 해결할 수 없습니다. 두 가지 주요 조치가 있습니다. 하나는 좋은 공개 키 프로토콜을 사용하여 개체가 다른 엔티티에서 임의로 생성된 정보를 해독하지 않도록 하고, 자신이 모르는 정보에 서명하지 않도록 하는 것입니다. 다른 하나는 절대 낯선 사람이 보낸 서류에 함부로 서명하지 말라는 것이다. 서명할 때 먼저 단방향 해시 함수를 사용하여 문서를 해시하거나 동시에 다른 서명 알고리즘을 사용합니다. 에는 여러 가지 유형의 공격 방법이 언급되어 있습니다.

RSA 의 공통 모드 공격.

시스템에 모듈이 있지만 다른 사람 E 와 D 가 다르면 시스템이 위험합니다. 가장 일반적인 경우는 서로 다른 공개 키로 동일한 정보를 암호화하는 것입니다. 이 공개 키는 모듈식이고 서로 소수이므로 개인 키 없이 정보를 복구할 수 있습니다. P 를 일반 텍스트로 설정하고, 두 개의 암호화 키는 e 1 및 E2 이고, 공개 * * * 모듈은 n 인 경우:

C1= p e1모듈 번호

C2 = P^e2 현대

비밀번호 분석가가 N, e 1, E2, C 1 및 C2 를 알면 P 를 받을 수 있습니다.

E 1 및 E2 상호 품질로 인해 R 과 S 는 유클리드 알고리즘으로 구할 수 있습니다.

R * e 1+s * E2 = 1

R 이 음수이고 유클리드 알고리즘을 사용하여 C 1 (- 1) 을 계산해야 한다고 가정하면

(c1(-1)) (-r) * C2 s = p modn

이 밖에도 공형을 이용해 공격하는 몇 가지 다른 방법이 있다. 결론적으로, 주어진 모듈 쌍의 E 와 D 를 알면 공격자가 모듈을 분해하는 데 도움이 되고 공격자가 모듈을 분해하지 않고 다른 쌍의 E' 와 D' 를 계산하는 데도 도움이 된다. 해결책은 오직 하나뿐이다. 즉, * * * 모듈 N 을 즐기지 않는 것이다.

RSA 의 작은 지수 공격. RSA 속도를 높이기 위한 권장 사항 중 하나는 공개 키 E 를 더 작은 값으로 설정하여 암호화를 더 쉽고 빠르게 수행할 수 있도록 하는 것입니다. 그러나 이렇게 하는 것은 안전하지 않다. 처리하는 방법은 E 와 D 에 더 큰 값을 취하는 것이다.

RSA 알고리즘은 암호화와 디지털 서명에 모두 사용할 수 있는 최초의 알고리즘이며 쉽게 이해하고 조작할 수 있습니다. RSA 는 가장 널리 연구되는 공개 키 알고리즘입니다. 제기된 지 거의 20 년이 지났고, 각종 공격의 시련을 거쳐 점차 사람들에게 받아들여지고 있다. 현재 최고의 공개 키 체계 중 하나로 널리 알려져 있습니다. RSA 의 보안은 많은 수의 인수 분해에 의존하지만, RSA 해독의 난이도가 큰 수의 인수 분해의 난이도와 같다는 이론적 증거는 없다. 즉, RSA 의 주요 결함 중 하나는 이론적으로 기밀 유지 성능을 파악할 수 없다는 것입니다. 암호학의 대부분의 사람들은 인수 분해가 NPC 문제가 아니라고 생각하는 경향이 있습니다. RSA 의 주요 단점은 A) 키 생성이 번거롭고 소수 생성 기술에 의해 제한되기 때문에 한 번에 한 번 밀착되기가 어렵다는 것입니다. B) 패킷 길이가 너무 커서 보안을 위해 N 은 최소 600 비트여야 하며, 연산 비용이 매우 높습니다. 특히 속도가 느리며 대칭 암호 알고리즘보다 몇 단계 느립니다. 그리고 대수 분해 기술이 발달하면서 이 길이는 여전히 증가하고 있어 데이터 형식의 표준화에 불리하다. 현재 Set (secure electronics transaction) 프로토콜은 CA 가 2048 비트 키를 사용하고 다른 엔티티는 1024 비트 키를 사용해야 합니다.