암호화에서 소수가 중요한 이유는 무엇입니까?


191

암호 해독가로서 항상 나를 놀라게하는 한 가지 : 소수를 사용하는 것이 왜 그렇게 중요한가? 암호화에서 왜 그렇게 특별합니까?

누구든지 간단한 간단한 설명이 있습니까? (나는 많은 입문서가 있고 Applied Cryptography가 성경이라는 것을 알고 있지만 말 그대로 : 나는 내 자신의 암호화 알고리즘을 구현하려고하지 않고 발견 된 것들이 뇌를 폭발하게 만들었습니다-10 페이지의 수학 공식 없음 제발 :))

모든 답변에 감사드립니다 . 나는 실제 개념을 가장 명확하게 한 것을 받아 들였다.


몇 가지 관찰 : 1. 아래 사람들은 "많은 수의 주요 인수 분해에 시간이 오래 걸린다"고 언급합니다. 실제로 모든 인수 분해에 대해서도 마찬가지입니다. 중요한 것은 정수! = 0은 소수의 곱 (길이 0의 분해를 갖는 1 포함)의 고유 인수 분해를 갖는 것입니다.
TT_

1
2. 왜 소수가 해시 함수에 중요한지 설명을 확인하십시오 : stackoverflow.com/questions/1145217/… 이것은 필드에 속하는 계수를 갖는 다항식의 속성과 관련이 있습니다 (짧은 설명이 아님).
TT_

2
지나치게 간단한 간단한 설명 → 해결 : a * b = 91. 이제 해결하십시오 13 * 7 = x. 두 번째 방정식은 (사람이나 컴퓨터의 경우) 훨씬 빨리 풀 수 있습니다.
Dem Pilafian

답변:


204

가장 기본적이고 일반적인 설명 : 암호화는 모두 숫자 이론 에 관한 것이며 모든 정수 (0과 1 제외)는 소수로 구성되므로 소수 이론에서 소수를 다루는 것입니다.

보다 구체적으로, RSA 와 같은 일부 중요한 암호화 알고리즘 은 많은 수의 소인수 분해 에 오랜 시간이 걸린다는 사실에 크게 좌우됩니다 . 기본적으로 메시지를 암호화하는 데 사용되는 두 개의 큰 소수로 구성된 "공개 키"와 메시지를 해독하는 데 사용되는 두 개의 소수로 구성된 "비밀 키"가 있습니다. 공개 키를 공개로 만들 수 있으며 모든 사람이 공개 키를 사용하여 메시지를 암호화 할 수 있지만 주요 요소를 알고 메시지를 해독 할 수 있습니다. 다른 모든 사람들은 수 이론의 현재 상태를 감안할 때 실용적 이기에는 너무 오래 걸리는 숫자를 고려해야합니다.


7
우리가 컴퓨팅 양자의 시대를 입력으로는 양자 컴퓨터를 사용하는 소수의 인수 분해 쇼어의 알고리즘 usiong 다항식 시간에 달성 할 수 있음을 노트에 적합한 것 같습니다 en.wikipedia.org/wiki/Shor%27s_algorithm을 그것은 컴퓨터가 이미 존재 가능성이 높습니다하는 캔 RSA와 같은 해독 공개 키 암호화
stujo

16
@stujo : 당신은 양자 컴퓨팅의 상태를 과대 평가하고 있습니다. 실제로 그러한 컴퓨터가 존재하지 않는 것이 확실합니다. 양자 하드웨어에서 Shor의 알고리즘과 최첨단 연구 노력을 사용하여 고려 된 최대 숫자는 21입니다. 21 비트는 아니지만 21, 주요 요소 3 및 7입니다.
Michael Borgwardt

1
현재 데이터가 무엇인지 확실하지 않고 최신 작업에 대한 정보를 얻는 것이 까다 롭습니다 .2012 년으로 돌아 왔다고 생각합니다.이 기사는 2014 년입니다 ( m.phys.org/news/2014-11-largest-factored- quantum-device.html ) 2016 년부터 공개 데이터를 본 적이 있습니까? 분류 대상을 제외하지 마십시오. 이 쇼어 알고리즘을 실행할 수 있지만, D-웨이브는 이상 1,000 qbits 지금
stujo

1
@stujo : 프라임이 계속 커질 수 있기 때문에 우리 모두가 Quantum CPU를 사용할 때도 동일한 원칙이 적용됩니다. 더 큰 것, 양자 CPU에는 비실용적이며 일부는 일반 CPU를 사용하여 키를 만들고 일부는 Quantum CPU를 그들을 깰. 내가 이해하는 것처럼 양자 CPU의 힘은 qbits를 사용한다는 것입니다. 각 qbit는 3 개의 값을 가질 수 있습니다. 따라서 새로운 기술은 base 2가 아닌 base 3입니다. 64 qbits CPU는 단어에서 3 ^ 64 조합을 갖습니다. 그것이 성능에 어떤 영향을 미치는지 모릅니다.
juanmf 2016 년

5
@ juanmf : 양자 컴퓨팅에 대한 이해가 완전히 잘못되었습니다. 3 개의 값을 갖는 것과 전혀 관련이 없으므로 전혀 관심이 없습니다. 세부 사항은 매우 복잡하지만 일부 양자 알고리즘은 비 양자 하드웨어의 "일반"알고리즘보다 Big-O 복잡도가 낮은 문제를 해결할 수 있습니다.
Michael Borgwardt

137

단순한? 예.

두 개의 큰 소수를 곱하면 두 개의 큰 소수만있는 큰 비 프라임 숫자를 얻게됩니다.

그 수를 고려하면 사소한 작업이 아니며, 그 사실은 많은 암호화 알고리즘의 원천입니다. 자세한 내용은 단방향 기능 을 참조하십시오.

부록 : 조금만 더 설명하겠습니다. 두 소수의 곱은 공개 키로 사용할 수 있지만 소수는 개인 키로 사용할 수 있습니다. 두 가지 요소 중 하나를 알면 실행 취소 할 수있는 데이터에 대한 모든 작업은 암호화하기에 쉽지 않습니다.


2
또한 인수 분해 문제 외에도 많은 현대 암호가 또한 이산 로그 문제에 의존한다는 점에 주목할 가치가 있습니다. 둘 다 "단방향"기능입니다. 알려진 입력을 받고 답을 계산하는 것은 쉽지만 답을 얻고 입력을 계산하기는 어렵습니다.
nezroy 2012 년

4
이 설명을 "단방향 기능"이라는 용어에 연결하면 도움이됩니다. en.wikipedia.org/wiki/One-way_function
Chris Conway

그러나 공개 키를 사용하여 암호화 할 수 있다면 왜 반대의 방법으로 사용할 수 없습니까?
jayarjo

45

다음은 매우 간단하고 일반적인 예입니다.

RSA 암호화 알고리즘 일반적으로 안전한 상거래 웹 사이트에 사용되는, 반대를 할 매우 어려운 반면,이 (매우 큰) 소수와 다중 데리고 쉽다는 사실을 기반으로 - 의미 : 테이크 a를 두 개의 주요 요소 만 가지고있는 것을 감안할 때 매우 큰 숫자입니다.


30
참고로 두 소수를 곱한 숫자를 세미 프라임이라고합니다.
Matthew Brubaker

15

중요한 소수 자체는 아니지만 소수와 함께 작동하는 알고리즘입니다. 특히, 숫자 (모든 숫자)의 요인을 찾는 중입니다.

아시다시피, 숫자에는 적어도 두 가지 요소가 있습니다. 소수는 정확히 두 가지 요소 인 1과 그 자체가 있다는 점에서 고유 한 속성을 갖습니다.

인수 분해가 중요한 이유는 수학자와 컴퓨터 과학자가 가능한 모든 조합을 시도하지 않고 숫자를 인수 분해하는 방법을 모르기 때문입니다. 즉, 먼저 2, 3, 4 등으로 나눕니다. 소수, 특히 매우 큰 소수를 고려하려고하면 2와 그 큰 소수 사이의 가능한 모든 숫자를 (본질적으로) 시도해야합니다. 가장 빠른 컴퓨터에서도 암호화에 사용되는 소수의 숫자를 고려하는 데 몇 년 (수백 년)이 걸릴 것입니다.

우리는 암호화 알고리즘에 강도를 부여하는 많은 수를 효율적으로 인수 분해하는 방법을 모른다는 사실입니다. 언젠가 누군가가 방법을 알아 내면 현재 사용하는 모든 암호화 알고리즘이 더 이상 사용되지 않습니다. 이것은 열린 연구 영역으로 남아 있습니다.


10
실제로 당신은 고려하고자하는 숫자의 제곱근까지 소수를 테스트해야합니다.
Matthew Brubaker

3
알아. 단순함의 이름으로 내가 "간과 한"세부 사항이었습니다.
베리 브라운

@MatthewBrubaker 이것이 왜 그런지 설명해 주시겠습니까? 나는 정말로 이해하지 못한다.
Kartik Chugh

4
@KartikChugh ヅ 말 n은 소수가 아닙니다 & n = a * b. 경우 a > sqrt(n), b작아야합니다 반대로, 다른 a * b > n자체가 우리의 초기 주장을 부정하는 것이다. 따라서 소수를 확인하기 위해 sqrt까지만 확인합니다.
Abhinav Gauniyal 3

13

정수를 주요 요소로 분해하는 빠른 알고리즘을 아는 사람이 없기 때문입니다. 그러나 소수 요인이 특정 정수로 곱해 지는지 확인하는 것은 매우 쉽습니다.


1
흥미롭게도, 숫자가 소수 인 경우 빠른 시간 내에 이미 가능합니다.
nes1983

여기에 "주요 요소가 큰 경우"가 누락되었습니다.
벤 Voigt

@Ben : 빠지지 않았습니다. 문제는 일반적으로 어렵다. 일반적으로 어려운 문제는 쉬운 경우가있을 수 있습니다. 이 경우 작은 소수가 결코 쉬운 일이 아닙니다.
nes1983

2
"공공"을 아는 사람은 없습니다. 여러 세계 정부의 정보 기관이 공유하지 않는 기술을 가지고있을 수도 있습니다. 그들은 많은 수학 대학원생을 고용합니다. 예를 들어, NSA는 "Dual EC_DRBG"에 의해 랜덤 프라임 생성을 비밀리에 장려했습니다.이 표준은 공개 사용을위한 표준 암호화 체계의 일부로 약한 것으로 알고 있습니다. bits.blogs.nytimes.com/2013/09/10/…
돈을

돈 : 눈이 쌓인 문서는 그렇지 않다는 것을 보여줍니다. 그들은 NSA가 그들이 알고있는 특별한 수학 마법을 통해 암호화 된 데이터를 해독 할 수 없다는 꽤 결정적인 그림을 그립니다. Schneier는이 문제를 광범위하게 논의했습니다.
nes1983

12

암호화에 대한 좋은 자료가 있습니다. 여기 하나가 있습니다 :

해당 페이지에서 :

1977 년 Ron Rivest, Adi Shamir 및 Len Adleman이 발명 한 가장 일반적으로 사용되는 공개 키 암호화 시스템에서 공개 키와 개인 키는 비교적 간단한 수학 공식에 따라 한 쌍의 큰 소수에서 파생됩니다. 이론적으로 수식을 거꾸로 사용하여 공개 키에서 개인 키를 파생시킬 수 있습니다. 그러나 소수의 제품 만 공개되고, 그 크기의 숫자를 소수로 고려하면 세계에서 가장 강력한 슈퍼 컴퓨터조차도 일반 공개 키를 깰 수 없습니다.

Bruce Schneier의 책 Applied Cryptography 도 있습니다. 나는 그 책을 강력히 추천한다. 재미 있어요.


9

RSA가 소수의 속성을 사용하는 방법에 대해 좀 더 구체적으로 설명하기 위해 RSA 알고리즘은 Euler 'Theorem 에 결정적으로 의존합니다. Euler의 정리 는 비교적 소수 인 "a"와 "N"의 경우 a ^ e는 1 modulo N에 합치합니다 . e는 오일러의 N 의 끈기있는 함수 입니다.

프라임은 어디에서 발생합니까? 오일러의 N의 유능함 함수를 효율적으로 계산하려면 N의 소인수 분해를 알아야합니다. RSA 알고리즘의 경우, 일부 소수 (p) 및 "q"에 대해 N = pq 인 경우 e = (p-1) (q -1) = N-p-q + 1. 그러나 p와 q를 모르면 e의 계산은 매우 어렵습니다.

더 추상적으로, 많은 crypotgraphic 프로토콜 은 계산하기 쉽지만 반전하기 어려운 다양한 trapdoor 함수 를 사용합니다. 숫자 이론은 이러한 트랩 도어 함수의 풍부한 소스 (예 : 큰 소수의 곱셈)이며 소수는 절대적으로 숫자 이론의 중심입니다.


7

나는 코드에서 수학 여행을 제안합니다 . 이 책은 지구에 대한 느낌이 좋으며 암호화에 관한 것이므로 놀랍습니다. 이 책은 어린이로서 퍼즐을 배우는 것에서부터 16 세의 나이에 Cayley-Purser (CP) 알고리즘을 만드는 것에 이르기까지 Sarah Flannery의 여정을 요약합니다.이 함수는 일방 함수, 숫자 이론 및 소수와 그 관련 방법에 대한 놀랍도록 자세한 설명을 제공합니다. 암호화.

이 책을 귀하의 질문에 더욱 구체적으로 만드는 것은 Sarah가 행렬을 사용하여 새로운 공개 키 알고리즘을 구현하려고 시도한 것입니다. 소수를 사용하는 것보다 훨씬 빠르지 만 그것을 사용할 수있는 루프 구멍이 발견되었습니다. 그녀의 알고리즘은 개인 암호화 메커니즘으로 더 잘 사용되었습니다. 이 책은 암호 테스트에 소수를 사용하는 것에 대한 훌륭한 증거입니다.



6

저는 수학 자나 암호학자가 아니므로 평신도의 관점에서 외부 관찰이 있습니다 (공상 방정식 없음, 죄송합니다).

이 전체 스레드는 소수가 암호화에 사용되는 방법에 대한 설명으로 가득 차 있습니다 .이 스레드에서 WHY 소수가 사용되는 쉬운 방법으로 설명하는 사람을 찾기가 어렵습니다 .

외부에서 문제를 바라 보는 것만으로도 반응이 일어날 수 있습니다. 그러나 두 소수의 합계를 사용하는 경우 두 소수가 생성 할 수있는 모든 가능한 합계 목록을 작성하지 않겠습니까?

사이트 에는 455,042,511 개의 소수가 있으며 가장 높은 소수는 9,987,500,000 ( 10 자리)입니다.

알려진 가장 큰 소수 (2015 년 2 월 기준)는 2의 2 승 257,885,161-1 이며 17,425,170 자리입니다.

이것은 알려진 모든 소수와 가능한 모든 합계의 목록을 유지하는 것이 중요하지 않음을 의미합니다. 숫자를 취하고 소수인지 확인하는 것이 더 쉽습니다.

큰 프라임 자체를 계산하는 것은 기념비적 인 작업이므로 암호 전문가와 수학자가 서로 곱한 두 개의 프라임을 역으로 계산 하는 것은 오늘날 충분히 어렵다고 말할 것 입니다.


3
마지막 단락 만 유효합니다. 합계의 인수는 모든 복합 번호에 대해서도 말할 수 있습니다 (기술적으로 무한대로 넓은 범위가 있으며 모든 합계의 저장이 불가능하거나 어리 석습니다). 또한 소수의 합계는 암호화와 관련성이 많지 않으며 (보통 RSA의 경우와 같이) 더 중요한 것은 제품입니다. 또한 역 계산 하면 아마도 인수 분해를 의미 합니다. 그것은 아마도 당신이 의미하는 바를 도울 것입니다.
initramfs

4

암호화 알고리즘은 일반적으로 "어려운 문제"에 대한 보안에 의존합니다. 대부분의 최신 알고리즘은 매우 큰 수의 인수 분해를 어려운 문제로 사용하는 것 같습니다. 두 개의 큰 수를 곱하면 계수 계산이 "어려워"집니다 (예 : 시간이 많이 소요됨). 이 두 숫자가 소수이면 답이 하나뿐이므로 답이 더 어려워지고 답을 찾을 때 같은 결과를 제공하는 다른 답이 아니라 올바른 답이됩니다.


4

나는 그 자체를 소수가 있습니다 암호화 중요하다 무엇을 생각하지만, 그것은이다 어려움소인수 분해 문제

두 개의 소수 m과 n의 곱으로 알려진 매우 큰 정수가 있다고 가정하면 m과 n이 무엇인지 찾기가 쉽지 않습니다. RSA와 같은 알고리즘은이 사실에 달려 있습니다.

그건 그렇고, 양자 컴퓨터를 사용하여 수용 가능한 시간 내에이 주요 인수 분해 문제를 "해결"할 수있는 알고리즘에 관한 논문 이 있습니다. 따라서 암호화의 새로운 알고리즘은 양자 컴퓨터가 도시에 올 때 더 이상 소수 분해의 "난이도"에 의존하지 않을 수 있습니다. :)


3

인수 분해 알고리즘은 발견 된 각 요소에 따라 상당히 빨라지기 때문입니다. 두 개인 키를 소수로 만들면 발견 된 첫 번째 요소도 마지막이됩니다. 이상적으로는 약한 키의 장점 만 중요하므로 두 개인 키의 가치는 거의 동일합니다.


이것은 나에게 약간 중복되어 보입니다. 주요 답변에 댓글을

-1

소수는 주어진 숫자가 소수인지 여부를 판별하는 데 상당한 시간이 걸리기 때문에 주로 암호화에 사용됩니다. 해커에게 알고리즘이 코드를 깨는 데 많은 시간이 걸리면 쓸모 없게됩니다


7
숫자가 소수인지 알아내는 것이 싸고 값이 싸야합니다. RSA의 주요 요소로 소수를 선택하거나 유한 필드 암호화의 계수로 소수를 선택한 것을 어떻게 알 수 있습니까? 비용이 많이 드는 것은 큰 복합 요소를 큰 주요 요소로 고려하는 것입니다.
코드 InChaos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.