Tại sao các số nguyên tố quan trọng trong mật mã?


191

Một điều luôn luôn gây ấn tượng với tôi như một người không viết mật mã: Tại sao việc sử dụng số Prime lại quan trọng đến vậy? Điều gì làm cho chúng rất đặc biệt trong mật mã?

Có ai có một lời giải thích ngắn đơn giản ? (Tôi biết rằng có rất nhiều mồi và Mật mã học ứng dụng là Kinh thánh, nhưng như đã nói: Tôi không tìm cách thực hiện thuật toán mật mã của riêng mình và những thứ tôi tìm thấy chỉ khiến não tôi nổ tung - không có 10 trang công thức toán học xin vui lòng :))

Cảm ơn tất cả các câu trả lời. Tôi đã chấp nhận một khái niệm làm cho khái niệm thực tế rõ ràng nhất với tôi.


Một vài quan sát: 1. Những người dưới đây đề cập rằng "nhân tố chính của số lượng lớn mất nhiều thời gian". Trên thực tế, điều tương tự cũng đúng với bất kỳ yếu tố nào. Điều quan trọng là bất kỳ số nguyên nào! = 0 đều có một thừa số duy nhất là tích của các số nguyên tố (bao gồm 1, có phân tách độ dài 0).
TT_

1
2. Vui lòng kiểm tra giải thích của tôi tại sao các số nguyên tố quan trọng đối với các hàm băm: stackoverflow.com/questions/1145217/ Từ Nó liên quan đến tính chất của đa thức với các hệ số thuộc về một trường (có lẽ không phải là một lời giải thích ngắn).
TT_

2
Giải thích ngắn quá đơn giản → Giải quyết : a * b = 91. Bây giờ, giải quyết : 13 * 7 = x. Phương trình thứ hai nhanh hơn nhiều để giải (đối với người hoặc máy tính).
Dem Pilafian

Câu trả lời:


203

Hầu hết các giải thích cơ bản và chung chung: mật mã học là tất cả về lý thuyết số và tất cả các số nguyên (trừ 0 và 1) được tạo thành từ các số nguyên tố, vì vậy bạn xử lý các số nguyên tố rất nhiều trong lý thuyết số.

Cụ thể hơn, một số thuật toán mã hóa quan trọng như RSA cực kỳ phụ thuộc vào thực tế là yếu tố chính của số lượng lớn mất nhiều thời gian. Về cơ bản, bạn có một "khóa chung" bao gồm một sản phẩm gồm hai số nguyên tố lớn được sử dụng để mã hóa tin nhắn và "khóa bí mật" bao gồm hai số nguyên tố đó được sử dụng để giải mã tin nhắn. Bạn có thể đặt khóa công khai và mọi người có thể sử dụng nó để mã hóa tin nhắn cho bạn, nhưng chỉ bạn mới biết các yếu tố chính và có thể giải mã tin nhắn. Mọi người khác sẽ phải tính đến con số, mất quá nhiều thời gian để trở thành hiện thực, với tình trạng hiện tại của nghệ thuật lý thuyết số.


7
Khi chúng ta bước vào kỷ nguyên của điện toán lượng tử, có vẻ phù hợp để lưu ý rằng việc nhân tố các số nguyên tố bằng máy tính lượng tử có thể đạt được trong thời gian đa thức usiong Thuật toán của Shor en.wikipedia.org/wiki/Shor%27s_alacticm Có khả năng các máy tính đã tồn tại giải mã mã hóa khóa công khai như RSA
stujo

16
@stujo: bạn đang đánh giá quá cao trạng thái của máy tính lượng tử. Trong thực tế chắc chắn rằng không có máy tính như vậy tồn tại. Số lượng lớn nhất đã được thực hiện bằng cách sử dụng Thuật toán của Shor và các nỗ lực nghiên cứu vượt trội trong phần cứng lượng tử là 21. Đó không phải là 21 bit, mà là số 21, các yếu tố chính 3 và 7.
Michael Borgwardt

1
Tôi không chắc chắn dữ liệu nào là hiện tại, thật khó để có được thông tin về công việc mới nhất, tôi tin rằng đó là vào năm 2012, bài viết này là từ năm 2014 ( m.phys.org/news/2014-11-largest-factored- quantum-device.html ) Chúng ta đã thấy bất kỳ dữ liệu nào từ năm 2016 chưa? Không loại trừ những gì có thể được phân loại. Mặc dù nó không thể chạy Thuật toán Shors, D-Wave hiện có hơn 1000
qbit

1
@stujo: các nguyên tắc tương tự sẽ cai trị khi tất cả chúng ta sử dụng CPU lượng tử, vì số nguyên tố có thể tiếp tục phát triển, tất cả là về việc tìm CPU lớn hơn, không thực tế, một số sử dụng CPUS thông thường để tạo khóa và một số sử dụng CPU lượng tử để phá vỡ những cái đó Sức mạnh của CPU lượng tử, theo tôi hiểu là nó sử dụng qbit, mỗi qbit có thể có 3 giá trị, do đó công nghệ mới là cơ sở 3 chứ không phải cơ sở 2. CPU 64 qbits sẽ có 3 ^ 64 kết hợp trong một từ. Không biết làm thế nào nó ảnh hưởng đến hiệu suất.
juanmf

5
@juanmf: sự hiểu biết của bạn về điện toán lượng tử là hoàn toàn sai. Hoàn toàn không có gì để làm với 3 giá trị, điều đó hoàn toàn không thú vị. Các chi tiết rất phức tạp, nhưng hiệu quả là một số thuật toán lượng tử có thể giải quyết các vấn đề ở độ phức tạp Big-O thấp hơn thuật toán "bình thường" trên phần cứng không lượng tử.
Michael Borgwardt

137

Đơn giản? Vâng

Nếu bạn nhân hai số nguyên tố lớn, bạn sẽ nhận được một số nguyên tố không lớn chỉ với hai thừa số nguyên tố (lớn).

Bao thanh toán số đó là một hoạt động không tầm thường và thực tế đó là nguồn gốc của rất nhiều thuật toán mã hóa. Xem các chức năng một chiều để biết thêm thông tin.

Phụ lục: Chỉ cần giải thích thêm một chút. Sản phẩm của hai số nguyên tố có thể được sử dụng làm khóa chung, trong khi các số nguyên tố là khóa riêng. Bất kỳ hoạt động nào được thực hiện đối với dữ liệu chỉ có thể được hoàn tác bằng cách biết một trong hai yếu tố sẽ không tầm thường đối với việc không mã hóa.


2
Cũng đáng lưu ý rằng, ngoài vấn đề nhân tố hóa, rất nhiều loại tiền điện tử hiện đại cũng (hoặc thay vào đó) phụ thuộc vào vấn đề logarit rời rạc. Cả hai đều là các hàm "một chiều": thật dễ dàng để lấy các đầu vào đã biết và tính toán một câu trả lời, nhưng khó có thể trả lời và tính toán các đầu vào đó.
nezroy

4
Liên kết giải thích này với thuật ngữ "chức năng một chiều" sẽ hữu ích: en.wikipedia.org/wiki/One-way_feft
Chris Conway

Nhưng nếu khóa công khai có thể được sử dụng để mã hóa tại sao nó không thể được sử dụng để làm ngược lại?
jayarjo

45

Dưới đây là một ví dụ rất đơn giản và phổ biến.

Các thuật toán mã hóa RSA được sử dụng phổ biến trong các trang web thương mại điện an toàn, được dựa trên thực tế là nó rất dễ dàng để mất hai (rất lớn) số nguyên tố và nhân họ, trong khi nó là vô cùng khó có thể làm điều ngược lại - có nghĩa là: Hãy số lượng rất lớn, cho rằng nó chỉ có hai yếu tố chính, và tìm thấy chúng.


30
Chỉ cần FYI, số bạn nhận được từ nhân hai số nguyên tố được gọi là bán nguyên tố.
Matthew Brubaker

15

Bản thân các số nguyên tố không quan trọng lắm, nhưng các thuật toán hoạt động với các số nguyên tố. Đặc biệt, tìm các yếu tố của một số (bất kỳ số nào).

Như bạn đã biết, bất kỳ số nào cũng có ít nhất hai yếu tố. Số nguyên tố có thuộc tính duy nhất ở chỗ chúng có chính xác hai yếu tố: 1 và chính chúng.

Lý do bao thanh toán rất quan trọng là các nhà toán học và các nhà khoa học máy tính không biết cách tính một số mà không cần đơn giản thử mọi kết hợp có thể. Đó là, trước tiên hãy thử chia cho 2, sau đó cho 3, sau đó cho 4 và cứ thế. Nếu bạn cố gắng tính một số nguyên tố - đặc biệt là một số rất lớn - bạn sẽ phải thử (về cơ bản) mọi số có thể có giữa 2 và số nguyên tố lớn đó. Ngay cả trên các máy tính nhanh nhất, sẽ mất nhiều năm (thậm chí hàng thế kỷ) để xác định các loại số nguyên tố được sử dụng trong mật mã.

Đó là thực tế là chúng ta không biết làm thế nào để tính một cách hiệu quả một số lượng lớn mang lại cho thuật toán mật mã sức mạnh của chúng. Nếu, một ngày nào đó, ai đó tìm ra cách để làm điều đó, tất cả các thuật toán mật mã chúng tôi hiện đang sử dụng sẽ trở nên lỗi thời. Đây vẫn là một lĩnh vực nghiên cứu mở.


10
Bạn thực sự chỉ phải kiểm tra các số nguyên tố cho đến căn bậc hai của số bạn đang cố gắng tính.
Matthew Brubaker

3
Tôi biết. Đó là một chi tiết tôi "bỏ qua" trong tên của sự đơn giản.
Barry Brown

@MatthewBrubaker Bạn có phiền giải thích lý do tại sao không? Tôi thực sự không hiểu.
Kartik Chugh

4
@KartikChugh nói nkhông phải là chính & n = a * b. Nếu a > sqrt(n), bphải nhỏ hơn và ngược lại, a * b > nchính điều đó sẽ phủ nhận yêu cầu ban đầu của chúng tôi. Vì vậy, để kiểm tra số nguyên tố, chúng tôi chỉ kiểm tra cho đến khi sqrt.
Abhinav Gauniyal

13

Bởi vì không ai biết một thuật toán nhanh để nhân một số nguyên thành các thừa số nguyên tố của nó. Tuy nhiên, rất dễ dàng để kiểm tra nếu một tập hợp các thừa số nguyên tố nhân với một số nguyên nhất định.


1
Thật thú vị, trong thời gian nhanh chóng có thể tìm ra NẾU một số là số nguyên tố.
nes1983

Ở đây thiếu "nếu các yếu tố chính là lớn" ở đây.
Ben Voigt

@Ben: Nó không thiếu. Vấn đề là khó nói chung. Lưu ý rằng các vấn đề khó nói chung có thể có trường hợp dễ dàng. Trong trường hợp này, các số nguyên tố nhỏ không phải là trường hợp dễ dàng duy nhất.
nes1983

2
Không ai biết "ở nơi công cộng". Có thể các cơ quan tình báo của các chính phủ thế giới khác nhau có các kỹ thuật mà họ không chia sẻ. Họ thuê số lượng lớn các sinh viên toán. Ví dụ, NSA đã bí mật thúc đẩy thế hệ nguyên tố ngẫu nhiên bằng "Dual EC_DRBG", mà họ biết là yếu, như là một phần của sơ đồ mật mã tiêu chuẩn cho sử dụng công cộng. bits.bloss.nytimes.com/2013/09/10/ từ
don sáng

don: các tài liệu snowden dường như tiết lộ rằng đó không phải là trường hợp. họ vẽ một bức tranh khá kết luận rằng, (nói chung, có thể có các góc), NSA không thể giải mã dữ liệu được mã hóa thông qua phép thuật toán học đặc biệt chỉ họ biết. Schneier đã thảo luận vấn đề rộng rãi.
nes1983

12

Có một số tài nguyên tốt để tăng cường về tiền điện tử. Đây là một:

Từ trang đó:

Trong hệ thống mật mã khóa công khai được sử dụng phổ biến nhất, được phát minh bởi Ron Rivest, Adi Shamir và Len Adeld năm 1977, cả khóa công khai và khóa riêng đều được lấy từ một cặp số nguyên tố lớn theo một công thức toán học tương đối đơn giản. Về lý thuyết, có thể lấy được khóa riêng từ khóa chung bằng cách làm ngược công thức. Nhưng chỉ có sản phẩm của các số nguyên tố lớn là công khai, và bao gồm các số có kích thước đó thành số nguyên tố khó đến nỗi ngay cả các siêu máy tính mạnh nhất trên thế giới cũng không thể phá vỡ khóa công khai thông thường.

Cuốn sách Mật mã ứng dụng của Bruce Schneier là một cuốn khác. Tôi đánh giá cao cuốn sách đó; đọc rất vui


9

Nói rõ hơn một chút về cách RSA sử dụng các thuộc tính của số nguyên tố, thuật toán RSA phụ thuộc rất nhiều vào Định lý Euler , trong đó nói rằng với các số nguyên tố tương đối "a" và "N", a ^ e phù hợp với 1 modulo N, trong đó e là hàm toàn phần của Euler của N.

Trường hợp nào số nguyên tố đi vào đó? Để tính toán hàm tổng của Euler của N một cách hiệu quả đòi hỏi phải biết hệ số nguyên tố của N. Trong trường hợp thuật toán RSA, trong đó N = pq cho một số số nguyên tố "p" và "q", sau đó e = (p - 1) (q - 1) = N - p - q + 1. Nhưng không biết p và q, việc tính toán của e rất khó khăn.

Tóm tắt hơn, nhiều giao thức crypotgpson sử dụng các hàm bẫy khác nhau , các hàm dễ tính toán nhưng khó đảo. Lý thuyết số là một nguồn phong phú của các hàm bẫy như vậy (chẳng hạn như nhân các số nguyên tố lớn) và các số nguyên tố hoàn toàn tập trung vào lý thuyết số.


7

Tôi muốn đề nghị cuốn sách Hành trình toán học trong mã . Cuốn sách có một cảm giác tốt đẹp đến trái đất, thật đáng ngạc nhiên, vì nó là về mật mã. Cuốn sách tóm tắt hành trình của Sarah Flannery từ khi học câu đố khi còn nhỏ để tạo ra thuật toán Cayley-Purser (CP) ở tuổi 16. Nó đưa ra một lời giải thích chi tiết đáng kinh ngạc về các hàm một chiều, lý thuyết số và số nguyên tố và cách chúng liên quan đến mật mã.

Điều khiến cuốn sách này trở nên cụ thể hơn đối với câu hỏi của bạn là Sarah đã cố gắng thực hiện thuật toán khóa công khai mới bằng ma trận. Nó nhanh hơn nhiều khi sử dụng các số nguyên tố nhưng một lỗ lặp được tìm thấy có thể khai thác nó. Hóa ra thuật toán của cô được sử dụng tốt hơn như một cơ chế mã hóa riêng. Cuốn sách là một minh chứng tuyệt vời cho việc sử dụng các số nguyên tố để mã hóa vì nó đã đứng trước thử thách của thời gian và những thách thức của những cá nhân rất thông minh.



6

Tôi không phải là nhà toán học hay nhà mật mã, vì vậy đây là một quan sát bên ngoài theo thuật ngữ của giáo dân (không có phương trình ưa thích, xin lỗi).

Toàn bộ chủ đề này chứa đầy những lời giải thích về các số nguyên tố CÁCH được sử dụng trong mật mã, thật khó để tìm thấy ai trong chủ đề này giải thích một cách dễ dàng TẠI SAO các số nguyên tố được sử dụng ... rất có thể vì mọi người đều coi đó là kiến ​​thức.

Chỉ nhìn vấn đề từ bên ngoài mới có thể tạo ra phản ứng như; nhưng nếu họ sử dụng tổng của hai số nguyên tố, tại sao không tạo một danh sách tất cả các khoản tiền có thể có bất kỳ số nguyên tố nào có thể tạo ra?

Trên trang này có một danh sách 455.042.511 số nguyên tố, trong đó số nguyên tố cao nhất là 9,987.500.000 ( 10 chữ số).

Số nguyên tố lớn nhất được biết đến (tính đến feb 2015) là 2 với sức mạnh của 256.885.161 - 117.425.170 chữ số.

Điều này có nghĩa là không có điểm nào giữ một danh sách tất cả các số nguyên tố đã biết và ít hơn tất cả các khoản tiền có thể có của chúng. Lấy số và kiểm tra xem nó có phải là số nguyên tố hay không.

Tính toán các số nguyên tố lớn tự nó là một công việc hoành tráng, vì vậy tính toán ngược lại hai số nguyên tố đã được nhân với nhau cả nhà mật mã học và nhà toán học sẽ nói là đủ khó ... ngày nay.


3
Chỉ đoạn cuối cùng của bạn là thực sự hợp lệ. Đối số của các khoản tiền cũng có thể được nói cho bất kỳ số tổng hợp nào (có một phạm vi lớn [về mặt kỹ thuật vô cùng lớn], việc lưu trữ tất cả các khoản tiền là không thể thực hiện được / ngu ngốc). Ngoài ra, các số nguyên tố không có liên quan nhiều đến mật mã, quan trọng hơn (thông thường, như trong trường hợp RSA) là sản phẩm của họ. Ngoài ra, bằng cách tính toán ngược bạn có thể có nghĩa là bao thanh toán . Điều đó có thể sẽ giúp với những gì bạn có ý nghĩa ở đó.
initramfs

4

Các thuật toán mật mã thường dựa vào sự bảo mật của chúng để có một "vấn đề khó khăn". Hầu hết các thuật toán hiện đại dường như sử dụng bao thanh toán với số lượng rất lớn là vấn đề khó khăn của chúng - nếu bạn nhân hai số lớn với nhau, việc tính toán các yếu tố của chúng là "khó khăn" (tức là tốn thời gian). Nếu hai số đó là số nguyên tố, thì chỉ có một câu trả lời, điều này càng khó hơn, và cũng đảm bảo rằng khi bạn tìm thấy câu trả lời, đó là câu trả lời đúng, không phải câu trả lời nào khác cũng cho kết quả tương tự.


4

Tôi nghĩ những gì quan trọng trong mật mã học không phải là số nguyên tố, nhưng đó là khó khăn của vấn đề nhân tố chính

Giả sử bạn có số nguyên rất lớn được biết là tích của hai số nguyên tố m và n, không dễ để tìm ra m và n là gì. Các thuật toán như RSA phụ thuộc vào thực tế này.

Nhân tiện, có một bài báo được xuất bản về thuật toán có thể "giải quyết" vấn đề nhân tố chính này trong thời gian chấp nhận được bằng máy tính lượng tử. Vì vậy, các thuật toán mới hơn trong mật mã học có thể không dựa vào "khó khăn" này của yếu tố chính nữa khi máy tính lượng tử xuất hiện :)


3

Bởi vì các thuật toán nhân tố tăng tốc đáng kể với từng yếu tố được tìm thấy. Làm cho cả hai khóa riêng đều đảm bảo yếu tố đầu tiên được tìm thấy cũng sẽ là yếu tố cuối cùng. Lý tưởng nhất là cả hai khóa riêng cũng sẽ có giá trị gần bằng nhau vì chỉ có sức mạnh của khóa yếu hơn.


Điều này có vẻ hơi dư thừa đối với tôi. Một phần từ phần quan trọng yếu hơn có thể được nhận xét cho câu trả lời hàng đầu :)
Ulysse BN

-1

Số nguyên tố chủ yếu được sử dụng trong mật mã vì nó tiêu tốn thời gian đáng kể để xác định xem một số đã cho có phải là số nguyên tố hay không. Đối với tin tặc nếu bất kỳ thuật toán nào mất nhiều thời gian để phá mã thì nó trở nên vô dụng đối với chúng


7
Chỉ ra nếu một số là một nguyên tố là rẻ và chúng ta cần nó phải rẻ. Làm thế nào khác chúng ta sẽ biết rằng chúng ta đã chọn các số nguyên tố là các yếu tố chính của chúng ta trong RSA hoặc một số nguyên tố làm mô đun trong tiền điện tử trường hữu hạn? Những gì đắt tiền là bao gồm một số lượng lớn tổng hợp vào các yếu tố chính lớn của nó.
CodeInChaos
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.