2009-05-04 38 views
9

Tôi muốn thử nghiệm thuật toán mã hóa để tăng cường độ mạnh. Nó không phải là mạnh mẽ, nó chỉ có để chống lại tình cờ nứt và nói, một hacker xác định với 10 giờ để lãng phí. (Tôi đã viết the crypto algorithm. Có, tôi biết rằng đây thường là một ý tưởng tồi nhưng tôi nghĩ rằng tôi có lý do chính đáng.)Làm cách nào để kiểm tra chất lượng của thuật toán mã hóa?

Tôi nên làm những loại xét nghiệm nào? Cho đến nay tôi đã thử điều này:

  • Tạo A. ngẫu nhiên
  • Lật một chút ngẫu nhiên của A để làm cho B.
  • Kiểm tra rằng số lượng 1s trong mã hóa (a) mã hóa XOR (b) phù hợp với phân phối Poisson (ngoại trừ XOR không bao giờ xuất ra 0).

Bất kỳ thử nghiệm được đề xuất nào khác?

Giới thiệu về mã hóa

Đó là một tiêu chuẩn Fiestel Cipher thiết kế để chạy trong 3ns và chịu hoàn toàn tổ hợp, không có đăng ký. (Đây là đơn đặt hàng của cường độ nhanh hơn DES/AES/etc) Tôi làm nhiều vòng như tôi có thể trong 3ns, mà chỉ là khoảng 6.

Đầu tiên tôi permute thứ tự của các bit đầu vào.

Sau đó, đối với mỗi bit ở nửa bên trái của đầu vào I XOR với đầu ra của hàm F. F có đầu vào 3 bit và đầu ra 1 bit. 3 bit đầu vào cho F được chọn từ nửa bên phải của đầu vào. Đầu ra của F là một hoán vị của {00001111} vì vậy F được cân bằng. 3 bit đầu vào cho F được chọn từ các bit ở nửa bên phải sao cho mỗi bit trên nửa bên phải được sử dụng cùng một số lần (hoặc càng gần càng tốt). Mỗi "F" được tạo ngẫu nhiên và độc lập một lần.

Tiếp theo, tôi hoán đổi nửa trái và phải của kết quả và thực hiện lại. Một lần nữa, "F" mới cho mỗi bit với đầu vào mới.

Tất cả chỉ là một vòng. Tôi làm điều đó 6 lần, mỗi vòng với các hàm F ngẫu nhiên, được tạo độc lập. 6 viên đạn mất khoảng 3ns. Tôi đã thử thay đổi số vòng và số lượng đầu vào cho F, quá.

+7

Bạn có thể xuất bản nó như là thuật toán đằng sau một sản phẩm tiêu dùng mới mang tính cách mạng, nhằm loại bỏ hành vi trộm cắp danh tính. Điều đó sẽ khiến một số người cố gắng phá vỡ nó cho bạn;) –

+0

Bạn có thể đăng toàn bộ thuật toán không? Tôi rất muốn có một cái nhìn vào nó. –

+0

Từ câu hỏi khác của bạn, có vẻ như bạn không thực sự sau một mật mã, mỗi lần. Nếu đúng như vậy, hãy kiểm tra nó theo cách thống kê, giống như hàm băm. –

Trả lời

11

Tôi nghi ngờ rằng câu trả lời thông thường sẽ là "Nếu bạn cần đặt câu hỏi này, điều tốt nhất bạn có thể hy vọng là mã hóa cấp độ trẻ em."


Nhưng nếu bạn phải, bạn có thể bắt đầu bằng cách áp dụng các bài kiểm tra randnomness bình thường để đầu ra (How to test random numbers?) trong byte, word, dài từ vv

Nếu bạn không thể vượt qua mà bạn biết nó yếu mà không cần thêm bất kỳ công việc nào. Lưu ý rằng việc chuyển khoản này không không phải là đảm bảo rằng nó mạnh.

8

Nếu bạn phải hỏi - đó là dấu hiệu tốt cho thấy bạn không nên tự viết.

Nếu bạn chỉ muốn viết một bài tập như một bài tập học tập, thì Kiểm tra tra tấn mã hóa mà Kirtan đề xuất có thể là tốt. Tuy nhiên, nếu bạn đang có kế hoạch thực sự sử dụng mã hóa này cho một số mục đích mà an ninh là thật sự cần thiết, công cụ đó sẽ không thay thế được trong nhiều năm phân tích chuyên gia đã xuất bản các thuật toán đã trải qua.

Ngay cả khi thuật toán của bạn tạo đầu ra trông ngẫu nhiên, điều đó KHÔNG có nghĩa là nó nhất thiết phải bảo mật.

6

Tôi gần như có thể đảm bảo bạn không có lý do chính đáng. Tuy nhiên, nếu bạn làm, hãy gửi nó để xem xét bởi các đồng nghiệp và NIST của bạn khi AES đến để thay thế. Kiểm tra bền vững bởi những người thực sự biết những gì họ đang làm là cách duy nhất để biết.

11

Đăng lên internet và xem có ai có thể phá vỡ nó không (NIST/NSA đã làm gì với AES, SHA-3, v.v.).

Tôi sẽ xem xét tất cả các cuộc tấn công thông thường.

Xác định khoảng trống chính mà ai đó phải bruteforce để tìm bản rõ, nó có nhỏ hơn tất cả các khóa có thể không? Hai khóa có tạo ra cùng một bản mã không?

Bạn có thể chọn một bản rõ sẽ tiết lộ khóa trong bản mã không?

4

Đánh giá thống kê thuật toán mã hóa là cần thiết nhưng không đủ để đảm bảo nó an toàn. Nhiều thuật toán đã biết những điểm yếu hoặc điểm yếu tiềm ẩn không liên quan gì đến các thuộc tính entropy và thống kê của mã hóa. Nhìn vào RSA (phụ thuộc vào bao thanh toán là khó), MD5 (collision attacks), và các thuật toán khác. Những người này đã có những năm tháng thăm dò khắt khe về những điểm yếu.

18

Tải xuống hướng dẫn trên web để tạo thiết bị hạt nhân bẩn cấp thấp, zip với bản đồ đường phố Washington, D.C., sau đó mã hóa và gửi tới [email protected]

Cường độ của thuật toán mã hóa của bạn sẽ tỷ lệ nghịch với thời gian người đàn ông mặc bộ đồ đen xuất hiện ở cửa của bạn.

Hãy ghi nhớ này có khả năng là một thí nghiệm một lần, ít nhất là đối với những vài năm bạn chi tiêu trong Gitmo :-)

+1

Anh ấy ... đó là một điều tốt. – Hemant

+1

Bạn có chắc chắn về Gitmo? Họ "hy vọng" sẽ sớm đóng cửa điều đó. –

+0

@Hemant: thứ hai là – pop850

1

Theo lời khuyên của không viết riêng bạn. Điều này không có nghĩa là bạn phải kéo vào một thư viện ssl phức tạp. Nhìn vào một cái gì đó giống như TEA (và là dẫn xuất) chúng có thể được mã hóa trong một hàm duy nhất trong một tá dòng.

Các vấn đề liên quan