Tiền thưởng tìm seed của đường cong elliptic NIST
(words.filippo.io)- Seed của 5 đường cong elliptic NIST được dùng rộng rãi trong mật mã hiện đại bắt nguồn từ các giá trị do NSA cung cấp trong thập niên 1990, và hiện có tiền thưởng $12,288 cho việc tìm lại nguyên văn đầu vào đó
- Mục tiêu là P-192, P-224, P-256, P-384, P-521 trong FIPS 186-2; nếu người thành công chọn nhận dưới dạng quyên góp cho tổ chức từ thiện 501(c)(3) tại Mỹ thì khoản chi trả sẽ được nhân 3 lên $36,864
- Seed được cho là do Jerry Solinas tạo ra vào năm 1997, có thể bằng cách băm một câu tiếng Anh bằng SHA-1, nhưng câu gốc thực tế đã biến mất sau khi thiết bị được thay thế hoặc nâng cấp
- Định dạng câu vẫn chưa chắc chắn, từ dấu chấm câu, xuống dòng, vị trí và định dạng bộ đếm, cho đến việc có kèm tên đường cong hay không, nên danh sách khoảng 12 nghìn hash được ưu tiên làm mục tiêu tấn công ban đầu
- Người đầu tiên gửi ít nhất 1 pre-seed sẽ nhận $6,144, và người đầu tiên gửi đủ cả 5 sẽ nhận nốt $6,144 còn lại; thứ tự nộp được xác định bằng header
Receivedcủa máy chủ email
Mục tiêu tiền thưởng và mức chi trả
- Mục tiêu của chương trình tiền thưởng công khai là tìm giá trị đầu vào của hash (pre-seed) đã tạo ra seed cho 5 đường cong elliptic NIST
- Tổng tiền thưởng là $12,288, tức 12 Ki$
- Nếu người thành công chọn quyên góp thay vì nhận tiền mặt cho một tổ chức từ thiện 501(c)(3) tại Mỹ thì tổng số tiền sẽ tăng lên $36,864
- 5 hash cần crack là:
3045AE6FC8422F64ED579528D38120EAE12196D5BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5C49D360886E704936A6678E1139D26B7819F7E90A335926AA319A27A1D00896A6773A4827ACDAC73D09E8800291CB85396CC6717393284AAA0DA64BA
Vì sao seed của các đường cong NIST từng bị nghi ngờ
- Các đường cong NIST P-192, P-224, P-256, P-384, P-521 được công bố trong FIPS 186-2 năm 2000, và theo cách làm của ANSI X9.62, một số tham số được suy ra từ đầu ra của việc băm một seed ngẫu nhiên bằng SHA-1
- Rất nhiều hệ thống mật mã dùng các đường cong NIST, đặc biệt là P-256 và P-384
- Hai đường cong này nằm trong Commercial National Security Algorithm Suite
- Chúng cũng được dùng trong các chứng chỉ ECDSA X.509 đang bảo vệ phần lớn web
- Bài viết của Steve Weis NIST curve seed origins tổng hợp những gì được biết về các seed ngẫu nhiên trong đặc tả FIPS 186
- Các seed dường như do NSA cung cấp
- Chúng được cho là do Jerry Solinas tạo ra vào năm 1997
- Có thể chúng được tạo bằng cách băm một câu tiếng Anh bằng SHA-1
- Jerry Solinas từng nói ví dụ seed có thể được làm theo kiểu
SHA1("Jerry deserves a raise."), nhưng câu thực tế đã bị thất lạc, và những câu tương tự cũng không khớp với hash
Việc tìm ra pre-seed có thể làm giảm nghi ngờ như thế nào
- Các đường cong NIST trong các đánh giá gần đây có những điểm được nhìn nhận tích cực hơn
- complete addition formulas giúp giảm các footgun quan trọng
- Các phương pháp thiết kế giao diện an toàn hơn đã được biết đến
- Giá trị của các đường cong bậc nguyên tố miễn nhiễm với tấn công cofactor cũng đã rõ ràng hơn
- Một số người ngoài thực hành vẫn lo ngại NSA có thể đã cố tình chọn seed để tạo ra các đường cong yếu
- Bài A riddle wrapped in an enigma của Koblitz và Menezes cho rằng ngay cả khi NSA kiểm soát hoàn toàn seed thì kiểu tấn công đó cũng khó thuyết phục
- Vì nó đòi hỏi phải tồn tại một lớp đường cong yếu đủ lớn mà giới học thuật lẫn công nghiệp không phát hiện ra trong suốt 25 năm
- Dù những lo ngại này có vẻ không đủ cơ sở, việc tìm ra pre-seed vẫn có thể giúp giảm FUD xoay quanh các đường cong NIST
- Việc tìm ra preimage tiếng Anh không thể bảo đảm hoàn toàn rigidity, nhưng có thể lấp đầy một mảnh ghép còn thiếu trong lịch sử mật mã
Những manh mối đã biết về giá trị đầu vào hash
- Đầu vào nhiều khả năng là một câu tiếng Anh nhắc đến Jerry Solinas, và cũng có thể chứa tên người khác cùng bộ đếm
- Lý do bộ đếm có thể đã cần đến là vì tùy vào số bit của đường cong, chỉ khoảng 1 trong mỗi 192 đến 521 hash là phù hợp để tạo đường cong
- Với đường cong lớn nhất, xác suất bộ đếm nhỏ hơn 2400 là 99%
- Với P-256, có xác suất bộ đếm nhỏ hơn 1175
- Seed của P-192 và P-256 từng xuất hiện làm ví dụ trong chuẩn ANSI X9.62 trước đó, còn các seed còn lại chỉ xuất hiện mới trong FIPS 186-2, nên cấu trúc câu có thể khác nhau
- Tiền thưởng chỉ áp dụng cho 5 đường cong NIST bậc nguyên tố, nhưng nếu chi phí thử nghiệm thấp thì có thể thử cả các ví dụ khác trong ANSI X9.62 và seed của binary curve trong FIPS 186-2
- ANSI prime192v2, prime192v3, prime239v1, prime239v2, prime239v3 không thuộc phạm vi tiền thưởng
- NIST B-163, B-233, B-283, B-409, B-571 cũng không thuộc phạm vi tiền thưởng
Các định dạng chuỗi có thể có và danh sách tấn công
- Chính định dạng chuỗi vẫn là một bí ẩn
- Câu có thể kết thúc bằng dấu chấm hoặc không
- Có thể có xuống dòng hoặc không
- Bộ đếm có thể ở hệ thập phân, có
leading zero, hoặc là nhị phân 16-bit hay 32-bit - Bộ đếm có thể đứng sau dấu chấm hoặc được nối bằng cách phân tách khác
- Có thể mọi seed đều được tạo từ cùng một câu nhưng gắn bộ đếm khác nhau, hoặc mỗi seed dùng một câu khác nhau
- Tên hoặc kích thước đường cong cũng có thể đã được đưa vào câu
- Trí nhớ con người dễ sai lệch nên vẫn phải để ngỏ khả năng một số chi tiết trong lời kể gián tiếp là không chính xác
- Cũng có thể họ dùng hash lặp như
SHA-1(s),SHA-1(SHA-1(s))thay vì bộ đếm - Một ứng viên khác là bắt đầu từ
SHA-1(s)rồi tăng dần giá trị hash như cách ANSI X9.62 Section A.3.3.1 mô tả - Một danh sách khoảng 12 nghìn hash có tên
nist-and-ansi-prime-order-seeds-increments-99-percent.txtđã được cung cấp làm mục tiêu tấn công- Danh sách này bao phủ không gian xác suất 99% cho từng prime order curve seed trong FIPS 186-2 và ANSI X9.62
- Nếu chi phí kiểm tra nhiều hash là thấp thì nên dùng danh sách này làm mục tiêu tấn công
- Nếu có thể, chỉ cần so sánh 16 byte đầu của hash cũng cho kết quả tương tự
- SHA-1 rất nhanh để brute-force, nên đây là bài toán phù hợp với người có kinh nghiệm crack passphrase và brute-force brainwallet
Cách gửi bài và điều kiện chi trả
- Người đầu tiên gửi pre-seed của 5 đường cong NIST bậc nguyên tố qua email tới
seeds@filippo.iosẽ nhận tiền thưởng - Cấu trúc chi trả có hai bước
- Người đầu tiên gửi ít nhất 1 pre-seed sẽ nhận một nửa là $6,144
- Người đầu tiên gửi đủ cả 5 pre-seed sẽ nhận nốt $6,144 còn lại
- Một người có thể nhận cả hai khoản, nên không cần đợi đến khi tìm đủ cả 5
- Có thể chọn nhận tiền mặt hoặc quyên góp cho tổ chức từ thiện 501(c)(3) tại Mỹ
- Nếu chọn quyên góp thì số tiền được nhân 3
- Có thể bị từ chối nếu chọn tổ chức từ thiện trái ngược quá mạnh với các giá trị được nêu
- Nếu là công dân Mỹ hoặc Ý mà pháp luật không cho phép chuyển tiền tới đối tượng đó thì phải chọn phương án từ thiện
- Thuế đối với tiền thưởng tiền mặt do người nhận tự chịu trách nhiệm
- Tiêu đề email gửi bài phải chứa
ANTISPAMđể vượt qua quy tắc allowlisting - Thứ tự gửi được xác định cuối cùng theo header
Receivedcủa mail host - Tiền thưởng sẽ hết hiệu lực nếu seed được công khai; nếu không thì vẫn có hiệu lực cho đến khi trang này có thông báo khác
- Nếu hủy hoặc giảm tiền thưởng, sẽ có thông báo trước 6 tháng
- Không có giới hạn về cách tìm seed
- Có thể brute-force, đoán thông minh, điều tra, khôi phục bản sao lưu NIST cũ, hoặc bất kỳ cách nào khác
- Kèm theo điều kiện là nếu không muốn thì sẽ không bị hỏi đã làm bằng cách nào
1 bình luận
Các ý kiến trên Hacker News
Bối cảnh ở đây khá buồn cười: gần đây có câu chuyện lan truyền rằng seed “ngẫu nhiên” của NIST P-curve do Jerry Solinas của NSA tạo ra vào thập niên 1990 thực ra là giá trị băm SHA1 của một chuỗi biến thể từ
"Give Jerry a raise"Khi đó, việc đưa một chuỗi qua SHA1 được xem như một cơ chế tạo niềm tin: cấu trúc của seed sẽ biến mất, khiến NSA không thể cố ý chọn một seed yếu
Nhưng đến thập niên 2000, khi NIST/NSA tự làm tổn hại danh tiếng của mình, chỉ lời giải thích đó không còn đủ để dập tắt các thuyết âm mưu; về sau, khi NIST muốn chứng minh seed là lành tính và Jerry Solinas cố tái dựng lại, thì được nói là chính ông đã quên mất chuỗi mình từng dùng
Với một người theo thuyết âm mưu thực thụ thì có lẽ sẽ cho rằng không ai có thể tìm ra chuỗi tạo ra seed này, nhưng nếu có ai tìm được thì điều đó có thể giáng một đòn khá mạnh vào giả thuyết rằng NIST P-curve được tạo ra với ác ý, nên đây là một bounty thú vị
"Give Jerry a raise of $100000 dollars now!!!"có giá trị băm khớp với seed, tôi cũng không nghĩ đó là bằng chứng cho thấy không có ác ýBởi nếu họ biết các tính chất đặc biệt mà một đường cong yếu cần có, họ có thể đã băm một lượng khổng lồ các biến thể chuỗi tương tự rồi chọn cho đến khi xuất hiện hằng số có tính chất mong muốn
SSLv2 và SSLv3 là ví dụ hay; dù kích thước đầu ra khớp với SHA1, nếu đó là một pipeline kiểu
echo "$string" | md5sum | sha1sumthì cũng không quá ngạc nhiênhttps://eprint.iacr.org/2015/1018
https://eprint.iacr.org/2015/1018.pdf
Những nghi ngờ về backdoor tương tự cũng từng có với (EC)DSA; những người ủng hộ RSA từng cho rằng NSA thúc đẩy DSA vì đã cài backdoor vào đó, nhưng không có bằng chứng, và trong 20 năm cũng chưa ai phát hiện cách cài backdoor vào DSA hay ECDSA
Cũng có giai thoại rằng tại một cuộc họp chuẩn hóa, đại diện NSA sau khi nghe điện thoại quay lại và nói rằng NSA tin ECC đủ an toàn cho liên lạc bảo mật của tất cả cơ quan chính phủ Mỹ, bao gồm cả Federal Reserve, khiến mọi người ngạc nhiên
Việc chỉnh sửa DES về sau được hé lộ là để phòng chống phân tích mật mã vi sai, và giống như điểm yếu của SHA gốc, tức SHA-0, không còn tồn tại trong SHA-1 cuối cùng, nhiều hành động khác của NSA cũng đã bị nhìn nhận với sự nghi ngờ
Với cả hai đường cong, lựa chọn G đều là điểm gấp đôi của một điểm có tọa độ x với kích thước khớp một cách đáng ngờ, và đặc điểm đó giống nhau ở cả hai đường cong
Trong các đường cong này, lựa chọn G là đầu vào duy nhất có entropy lớn, nhưng có thể chứng minh là trên thực tế gần như không liên quan; cùng lắm là người chọn nó biết được một logarit rời rạc tùy ý cụ thể
Trong một giao thức gượng ép, nó có thể trở thành backdoor, nhưng sẽ rất khiên cưỡng; dù vậy, vì đó là tham số duy nhất chưa biết nên tôi nghĩ vẫn đáng thử tìm
Nếu tìm được seed của P-curve, nó cũng có thể tương tự seed dùng cho điểm sinh của các đường cong khác, qua đó giải được bí ẩn nhỏ đó
Một cụm từ về lý thuyết có thể được chọn để cho ra giá trị băm mong muốn
GCHQ của Anh tuyển dụng nhiều nhà toán học hơn bất kỳ viện nghiên cứu hay trường đại học nào trong nước. Cơ quan tương ứng của Mỹ có lẽ cũng tương tự
Trao đổi khóa Diffie-Hellman cũng đã được GCHQ và NSA biết đến trước khi Diffie và Hellman tái phát hiện
Rất khó khẳng định chắc chắn về năng lực nền tảng của các cơ quan tình báo, và tôi không nói rằng họ thật sự biết các họ đường cong yếu như vậy, nhưng cũng khó coi đó là điều bất khả thi. Đây là nghề chính của họ
Thường thì lập luận là giới học thuật giỏi đến mức nếu NSA đã làm gì đó thì hẳn đã bị phát hiện rồi; nếu không đồng ý thì sẽ bị coi là FUD của người không hiểu rõ. Bài này cũng lặp lại hướng đó, nhưng việc vấn đề được xử lý nghiêm túc hơn bằng một bounty có tổ chức là điều tốt
Tôi từng làm về mật mã trước đây, trong vài năm thường xuyên rà soát các bài báo mật mã cho công việc, từng dự hội nghị, nói chuyện với các nhà nghiên cứu, và cũng đã triển khai nhiều hiện thực mật mã đường cong elliptic “khác thường”. Từ góc nhìn không hẳn là người trong cuộc hoàn toàn nhưng cũng không phải người ngoài hoàn toàn, quan niệm phổ biến này trông có vẻ nguy hiểm
Lập luận cốt lõi có hai phần: một là nếu việc chuẩn hóa các đường cong NIST có thể bị tấn công kleptography thì giới học thuật hoặc công nghiệp hẳn đã tìm ra; hai là vì Dual_EC_DRBG đã ngay lập tức bị nghi ngờ nên cộng đồng mật mã công khai rất giỏi phát hiện backdoor
Phần đầu không mấy thuyết phục. Trong giới học thuật có vấn đề “ngăn kéo hồ sơ” và động lực “xuất bản hoặc biến mất”; với một nhà nghiên cứu trẻ, rõ ràng việc tạo ra một thuật toán chứng minh không tiết lộ mới để có bài được trích dẫn có lợi hơn việc tấn công một thuật toán mà ai cũng tin là mạnh rồi có thể chẳng thu được gì
Cơ sở là sự đồng thuận của chuyên gia rằng “rất nhiều người thông minh đã nghiên cứu sâu nhưng không tìm thấy gì”, nhưng vì trong học thuật rất khó xuất bản kết quả âm, nên không có cách nào biết thực tế đã có bao nhiêu nỗ lực được bỏ vào
Kleptography, tức bản thân cách đưa backdoor vào tiêu chuẩn, nếu không phải NSA thì gần như không có ích, nên không phải một con đường sự nghiệp tốt; nó cũng bất lợi cho việc chuyển sang công nghiệp hoặc nhận trích dẫn
Ngược lại, NSA có thể trả lương cao hơn giới học thuật, tuyển nhiều nhà nghiên cứu hơn cả giới học thuật để chuyên trách các hướng nghiên cứu có xác suất thất bại cao hoặc chỉ hữu dụng cho backdoor trong tiêu chuẩn, và nhờ ngân sách phần cứng, họ cũng có thể làm nghiên cứu liên ngành trong hàng chục năm theo cách mà nghiên cứu mật mã học thuật không làm được
Nếu phải cược xem bên nào hiểu ECC hơn, NSA hay giới học thuật, thì hỏa lực nằm ở phía chính phủ và không thể so sánh. Có thể ước lượng sơ bộ số tiến sĩ toán mà chính phủ thuê, nhưng ta không biết giới học thuật thực sự đã dồn bao nhiêu hỏa lực vào không gian vấn đề này
Lập luận thứ hai cũng không lý tưởng. Không chỉ Dual_EC_DRBG, mà ngay cả các đường cong NIST cũng đã bị người ta nêu quan ngại ngay lập tức. Khác biệt chỉ là với cái trước đã có thuật toán đã biết để thực hiện cuộc tấn công cần thiết, còn với cái sau thì chưa
Cách để ngay từ đầu khỏi cần cuộc tranh luận kiểu này đã được biết từ hàng chục năm trước, và đó cũng là lý do các đường cong NIST được tạo từ đầu ra SHA1. Thời điểm tốt nhất để loại bỏ dần các đường cong NIST là hàng chục năm trước, và thời điểm tốt thứ hai là bây giờ
Lý do đóng góp cho bounty này là vì nếu đó thật sự là một cụm từ có thể crack bằng mật khẩu, thì việc tìm ra nó có ý nghĩa lịch sử lớn
Việc các đường cong elliptic NIST được tạo bằng cách băm các seed do NSA cung cấp là khá đáng lo
Nghe giống như: “Đừng lo, chúng tôi tạo ra bằng cách băm một câu chẳng có gì đặc biệt. Giờ thì quên mất rồi, nhưng chỉ là Jerry đùa về việc tăng lương thôi”
Thật khó tin vì sao việc này không trải qua kiểm chứng mạnh hơn sớm hơn, và vì sao họ không chọn seed hợp lý hơn, chẳng hạn trộn seed ngẫu nhiên từ nhiều bên có lợi ích khác nhau với bộ sinh số ngẫu nhiên phần cứng, v.v.
Cách đó hẳn là tốt, nhưng vào thời điểm ấy có lẽ không nhiều người thấy cần thiết
https://en.wikipedia.org/wiki/Utah_Data_Center
Có video trong đó Giáo sư Dan Boneh giải thích bối cảnh: https://youtu.be/8WDOpzxpnTE?t=892
Nếu tôi hiểu đúng, có nghĩa là cộng đồng đã chấp nhận những chuỗi đáng ngờ không rõ nguồn gốc, trong khi việc đưa một đầu vào khác đã biết vào hàm băm để biến chúng thành chuỗi có nguồn gốc rõ ràng lại rất dễ?
Đáng tiếc là trong các vấn đề liên quan đến NSA và tiêu chuẩn mật mã, theo tôi biết đây là trường hợp duy nhất người ta nhắc đến sự kém năng lực; thông thường câu chuyện là theo hướng ngược lại
Điều còn rắc rối hơn là NIST đã có tiền lệ đưa backdoor vào một tiêu chuẩn liên quan đến đường cong elliptic, và việc cơ chế này không tạo được niềm tin cũng đã được chỉ ra ngay lập tức, nhưng NIST hay NSA đều không làm gì cả. Giống như với Dual_EC_DRBG
Điều còn rắc rối hơn nữa là vào năm 2015 NSA đã nói rõ không nên nâng cấp từ các đường cong NIST sang các đường cong khác hậu NIST. Lý do là máy tính lượng tử sẽ sớm đủ tốt để phá toàn bộ ECC, nên mọi người nên chuyển sang mật mã hậu lượng tử
Nếu ECC hoạt động tốt, máy tính lượng tử còn xa, và họ muốn giữ mọi người mắc kẹt với các đường cong NIST lâu nhất có thể, thì họ hẳn sẽ nói đúng như vậy
Khó có thể nói cộng đồng mật mã đáng tự hào trong tình huống này. Đã gần 25 năm trôi qua, và hiện có những đường cong mới hơn không có vấn đề này, vậy tại sao các đường cong NIST vẫn còn được dùng? Nỗ lực loại bỏ dần chúng như với SHA1 ở đâu? Bài này thậm chí trông như đang quảng bá cho các đường cong đó
Nếu cảm thấy may mắn, bạn có thể thử đoán hàm băm SHA1 ở đây: https://wending.dev/hash_guessing/
Nếu trình tạo seed của NSA biết dù chỉ một chút về mật mã học và máy tính, họ hẳn sẽ không nhập thủ công 500 cụm từ khác nhau cho đến khi ra được một đường cong tốt
Mà ngay cả nếu họ đã làm vậy, số biến thể khả dĩ là vô tận, như thêm dấu chấm ở cuối, đổi chữ hoa/thường, hoặc viết hoa kiểu tiêu đề
Danh sách các biến thể có vẻ đáng thử sẽ rất khó có thể đầy đủ, nhưng nếu chỉ tạo hàm băm SHA1 như trang này, thì ngay cả khi đoán đúng chuỗi đến từng dấu câu và chữ hoa/thường, việc tìm ra hàm băm thực tế trên thực tế là bất khả thi
Tối thiểu, để kiểm tra xem hàm băm kết quả có phải là giá trị đã được tăng lên hay không, cần có khả năng kiểm tra đại loại 10 byte ở đầu hoặc cuối có khớp không. Dù vậy, phần lớn chỉ khiến người ta lãng phí thời gian, và tác giả hẳn cũng biết rằng nó sẽ chẳng dẫn tới đâu
Trang này nên ghi rõ rằng đó chỉ là đồ chơi demo, và ngay cả khi đoán đúng cũng sẽ không giúp tìm ra seed thực tế
Điều tôi học được sau thời gian dài theo dõi những cuộc tranh luận nảy lửa giữa các nhà mật mã học là “đừng đặt cược chống lại Bernstein, và đừng tin NIST”
Giờ có lẽ phải sửa thành “đừng đặt cược chống lại Bernstein hay Filippo, và đừng tin NIST. Nếu hai quy tắc này xung đột, thì vẫn đừng tin NIST”
Đúng là SHA-1 đã bị phá, nhưng tôi từng nghĩ vấn đề chủ yếu là các thứ như va chạm thông qua tấn công mở rộng độ dài hoặc tấn công bản rõ đã biết
Tôi vẫn nghĩ rằng khi chỉ có hàm băm, việc tìm ra câu mật khẩu về thực tế vẫn khó xử lý
Nhưng nếu giả thuyết về cấu trúc seed là đúng, thì khả năng kháng tiền ảnh ở đây không quá quan trọng. SHA-1 rất nhanh và dễ song song hóa, nên có khả năng khá cao là ai đó kiên trì lục soát không gian các biến thể của
"Jerry needs a raise"sẽ phát hiện ra đầu vào ban đầuNó không liên quan nhiều đến bản thân SHA1