중국시가넷 - 개인 서명 - DES 알고리즘과 RSA 알고리즘의 기본 아이디어를 간략하게 설명합니다.
DES 알고리즘과 RSA 알고리즘의 기본 아이디어를 간략하게 설명합니다.
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 비트 키를 사용해야 합니다.