키 배포 문제를 해결하는 방법
인원수가 많은 경우 통신에 필요한 열쇠 수가 늘어난다. 예를 들어 1000 명의 직원 각각이 다른 999 명과 통신할 수 있는 경우 각 사람은 999 개의 통신 키가 필요합니다. 총 키 수는 다음과 같습니다.
1000 x 999 ÷ 2 = 499500
매우 비현실적이기 때문에 이런 방법은 한계가 있다.
Diffic-Hellman 키 교환에서 암호화된 통신의 양 당사자는 도청자가 도청해도 문제가 없는 정보를 교환해야 합니다 (아래 자세히 설명).
대칭 암호화에서 암호화 키와 암호 해독 키는 동일하지만 공개 키 암호화에서는 암호화 키와 암호 해독 키가 다릅니다. 누구나 암호화 키만 있으면 암호화할 수 있지만 암호 해독 키 없이는 암호를 해독할 수 없습니다.
공개 키 암호화에서 키는 암호화 키 (공개 키) 와 암호 해독 키 (개인 키) 로 구분됩니다.
공개 키와 개인 키는 일대일로 대응한다. 한 쌍의 공개 키와 개인 키를 통칭하여 키 쌍이라고 한다. 공개 키로 암호화된 암호문은 공개 키와 쌍을 이루는 개인 키로만 해독할 수 있다. 키 쌍의 두 키 사이에는 매우 밀접한 관계, 즉 수학적 관계가 있으므로 공개 키와 개인 키를 별도로 생성할 수 없습니다.
발신자: 앨리스 수신자: 밥 도청자: 이브
통신 프로세스는 수신자 밥이 시작합니다.
공개 키 암호는 키 배포 문제를 해결하지만 여전히 다음과 같은 문제가 발생합니다.
RSA 는 현재 가장 널리 사용되고 있는 공개 키 암호 알고리즘으로, 그 이름은 론 리스터, 아디 사모어, 레너드 아드먼이라는 세 개발자의 성 이니셜로 구성되어 있다. RSA 는 공개 키 암호 및 디지털 서명에 사용할 수 있습니다 (이 문서에서는 공개 키 암호만 다루므로 디지털 서명의 후속 문장 기대). 1983 은 미국에서 특허를 받았지만 지금은 특허가 만료되었습니다.
RSA 에서 일반 텍스트, 키 및 암호문은 숫자이며 RSA 암호화 프로세스는 다음 공식으로 나타낼 수 있습니다.
암호문 = 일반 텍스트 e 모드 n
간단히 말해서, RSA 의 암호문은 일반 텍스트의 수를 나타내는 E 승 mod N 의 결과입니다. 즉, 일반 텍스트와 자신을 e 번 곱한 다음 결과를 n 으로 나누면 나머지는 암호문입니다.
RSA 의 암호 해독 프로세스는 다음 공식으로 나타낼 수 있습니다.
일반 텍스트 = 암호문 D mod N
암호문의 수를 나타내는 D 제곱의 mod N 을 찾아 일반 텍스트를 얻을 수 있다. 즉, 암호문과 너 자신을 D 번 곱하면 결과를 N 으로 나누어 나머지를 구하면 명문을 얻을 수 있다.
이때 사용되는 디지털 N 은 암호화에 사용되는 디지털 N 과 동일합니다. 디지털 D 와 디지털 N 의 조합은 RSA 의 암호 해독 키이므로 D 와 N 의 조합은 개인 키입니다. 디지털 D 와 N 을 아는 사람만 암호 해독 작업을 완료할 수 있다.
암호화 및 암호 해독 공식에 따르면 키 쌍을 생성하는 데 E, D, N 의 세 가지 숫자가 필요하다는 것을 알 수 있습니다. RSA 키 쌍을 생성하는 단계는 다음과 같습니다.
두 개의 큰 소수 P 와 Q 를 준비하고 이 두 숫자를 곱하면 N 이 됩니다.
N = p x q
L 은 p- 1 과 Q- 1 의 최소 공배수입니다. Lcm( X, Y) 으로' X 와 Y 의 최소 공배수' 를 나타내는 경우 L 은 다음과 같이 쓸 수 있습니다.
L = LCM (p-1, q-1)
E 는/kloc-0 보다 크거나 l 보다 작은 수이고 e 와 l 의 최대 공약수는 1 이어야 합니다. X 와 y 의 최대 공약수를 gcd( X, y) 로 표시하면 e 와 l 사이에는 다음과 같은 관계가 있습니다.
1< E<L
Gcd( E, L) = 1 (암호 해독을 위해서는 디지털 d 가 필요합니다.).
1< D<L
E x D mod L = 1
P = 17
Q = 19
N = p x q = 17 x 19 = 323
L = LCM (p-1, q-1) = LCM (16,18))
Gcd( E, L) = 1
5,7, 1 1, 13, 17,1등 다양한 기준에 맞는 e 가 있습니다 ...
여기서 우리는 5 를 E 로 선택했고, 여기서 우리는 이미 E = 5 를 알고 있습니까? N = 323 공개 키입니다.
E x D mod L = 1
D = 29 는 위의 조건을 충족시킬 수 있으므로:
공개 키: E = 5 N = 323
개인 키: D = 29? N = 323
암호화할 일반 텍스트는 n 보다 작은 숫자여야 합니다. 암호화된 일반 텍스트가 123 이라고 가정하기 위해 암호화 작업에 mod N 이 필요하기 때문입니다.
일반 텍스트 E mod N = 123 5 mod 323 = 225 (암호문)
암호문 해독 225
암호문 d mod n = 225 29 mod 323 = 22510x22510x225 9 mod 323 = (22510 mod 323 =16x16x191mod 323 = 48896 mod 323 =/kloc-0
Mod N 이 없는 경우:
일반 텍스트 = 암호문 D mod N
암호문을 통해 명문을 구하는 것은 어렵지 않다. 로그를 구하는 문제로 볼 수 있기 때문이다.
그러나 mod N 을 더하면 일반 텍스트를 찾는 것이 이산로그를 찾는 문제가 되고, 인간이 아직 이산로그를 찾는 효율적인 알고리즘을 찾지 못했기 때문이다.
D 만 알면 암호문을 해독할 수 있고, D 는 폭력적으로 RSA 를 해독할 수 있다. 폭력적인 해독의 어려움은 d 의 길이가 증가함에 따라 증가 할 것입니다. D 가 충분히 길면, 실제 시간에 폭력적인 해독은 D 라는 숫자를 찾을 수 없다.
현재 RSA 에서 사용하는 p 와 q 의 길이는 1024 비트보다 크고 n 의 길이는 2048 비트보다 큽니다. E 와 D 의 길이는 N 의 길이와 비슷할 수 있기 때문에 2048 위 이상의 폭력으로 D 를 해독해야 한다. 이 길이에서 폭력 해독은 d 를 찾기가 매우 어렵다.
E x d mod l =1l = LCM (p-1,q-1)
E 에서 D 를 계산하려면 P 와 Q 가 필요하지만 암호사는 P 와 Q 를 모른다.
RSA 에게 소수 P 와 Q 를 해독할 수 없는 것은 매우 중요하다. P 와 Q 를 암호학자에게 주는 것은 암호학자에게 개인키를 주는 것과 같다.
P 와 Q 는 암호학자가 알 수 없지만 N = p x q, N 은 공개이고 P 와 Q 는 모두 소수이기 때문에 N 에서 P 와 Q 를 구하는 것은 N 인자를 소수로 분해하는 것만으로 이뤄질 수 있습니다.
큰 정수의 소수 인수 분해에 대한 효율적인 알고리즘을 찾으면 RSA 를 해독할 수 있다.
이 방법은 RSA 를 해독할 수는 없지만 기밀성에 대한 효과적인 공격이다.
중매인 공격이란 능동적인 공격자 Mallory 가 발신자와 수신자 사이에 들어가 발신자를 수신자로 위장하고 수신자를 발신자로 위장하는 공격이다. 여기서 말로리는' 중개인' 이다.
이 공격은 RSA 뿐만 아니라 모든 공개 키 암호에도 적용됩니다. 이 과정에서 공개 키 암호가 깨지지 않고 모든 암호 알고리즘이 정상적으로 작동하고 기밀성을 보장합니다. 하지만 소위 기밀이라고 하는 것은 앨리스와 밥 사이가 아니라 앨리스와 말로리 사이, 말로리와 밥 사이입니다. 공개 키 암호화만으로는 중개인의 공격을 막을 수 없다.
중매인 공격을 막기 위해서는 받은 공개 키가 실제로 Bob 에 속하는지 확인하는 수단도 필요하다. 이것이 바로 인증이다. 이 경우 공개 키 인증서를 사용할 수 있습니다. 나중에 문장 업데이트를 통해 설명하겠습니다
네트워크의 많은 서버가 잘못된 형식의 데이터를 수신하면 통신 개체에 "여기에 데이터에 문제가 있습니다." 라는 오류 메시지가 반환됩니다. 그러나, 이 겉보기에 친밀 한 디자인은 공격자에 게 기회를 줄 것 이다. 공격자는 자신이 위조한 암호문을 서버에 반복적으로 보낸 다음 반환된 오류 메시지와 응답 시간을 분석하여 키와 일반 텍스트에 대한 정보를 얻을 수 있습니다.
이러한 공격에 저항하기 위해 암호문을 인증할 수 있습니다. RSA-OAEP (최적 비대칭 암호화 채우기) 는 이러한 사고 설계에 기반한 향상된 RSA 알고리즘입니다.
RSA-OAEP 암호화는 일반 텍스트의 해시 값과 일정 수의 0 을 포함한 인증 정보를 일반 텍스트 앞에 채운 다음 RSA 로 암호화합니다. 암호 해독 과정에서 암호 해독 데이터의 시작 부분에서 올바른 인증 정보를 찾지 못하면 문제가 있는지 판단하고 고정 오류 메시지를 반환할 수 있습니다 (특정 오류 내용은 개발자에게 알릴 수 없음).
실제 응용 프로그램에서 RSA-OAEP 는 난수를 사용하여 생성된 암호문을 다른 순서로 표시함으로써 보안을 더욱 향상시킵니다.
컴퓨터 기술이 발전함에 따라, 이전에는 안전한 비밀번호가 해독될 것이라고 생각했었는데, 이것이 바로 이른바 암호 열화였다. 이에 비추어 볼 때: