2008-08-28 42 views
8

Dường như với tôi là một ý tưởng rơi vào một nơi nào đó trong trại "bảo vệ bởi sự tối tăm" hoặc "bảo vệ giả mạo". Để bảo vệ quyền sở hữu trí tuệ, có bản quyền; để tránh phát hiện sự cố bảo mật, có khắc phục các sự cố đó. Tóm lại, tôi coi nó như một giải pháp kỹ thuật cho một vấn đề xã hội. Those almost never work.(Tại sao) tôi nên sử dụng obfuscation?

Tuy nhiên, tôi có vẻ là người duy nhất trong nhóm dev của chúng tôi cảm thấy như vậy, vì vậy tôi hoặc là sai, hoặc chỉ cần lập luận thuyết phục. Sản phẩm của chúng tôi sử dụng .NET, và một dev đề xuất .NET Reactor (trong đó, tình cờ, was suggested in this SO thread as well).

Lò phản ứng .NET dừng hoàn toàn bất kỳ giải mã bằng cách trộn bất kỳ bộ nối .NET thuần túy nào (được viết bằng C#, VB.NET, Delphi.NET, J #, MSIL ...) với mã máy gốc.

Vì vậy, về cơ bản, bạn ném tất cả các ưu điểm của bytecode đi một lần?

Có tốt kỹ thuật lợi ích để làm xáo trộn?

Trả lời

4

Nếu bạn dính vào obfuscation mã thuần túy quản lý, bạn có thể cạo khá một kích thước lắp ráp, và obfuscated lớp/tên chức năng (sụp đổ thành chữ cái duy nhất) có nghĩa là bộ nhớ nhỏ hơn. Điều này gần như luôn luôn không đáng kể, nhưng không có tác động (và được sử dụng) trên một số thiết bị di động/nhúng (mặc dù chủ yếu là trong java).

3

Một lợi ích kỹ thuật tiềm năng là trong một số trường hợp, việc làm xáo trộn có thể tạo ra các tệp thi hành nhỏ hơn hoặc các tạo tác khác - ví dụ: obfuscating javascript kết quả trong các tập tin nhỏ hơn (bởi vì tất cả các biến được đặt tên là "a" và "b" thay vì "descriptiveNameOne" và tất cả các khoảng trắng bị tước, vv). Điều này dẫn đến thời gian tải nhanh hơn cho các trang web sử dụng javascript bị xáo trộn. Rõ ràng điều này không áp dụng (nhiều) trong thế giới .NET, nhưng đó là một ví dụ về một tình huống trong đó có một lợi ích kỹ thuật trực tiếp.

6

Nếu một nhóm lớn các lập trình viên thực sự muốn lấy mã nguồn của bạn và có thời gian, tiền bạc và công sức, thì họ sẽ thành công.

Làm xáo trộn, do đó, nên ngăn những người không có thời gian, tiền bạc hoặc công sức để lấy nguồn, người qua đường của bạn có thể gọi cho họ.

2

Trong khi không liên quan đến .net, tôi sẽ xem xét sự xáo trộn trong Javascript và các ngôn ngữ khác có thể được xen kẽ. Javascript lợi ích tốt từ obfuscation vì nó làm giảm băng thông cần thiết, và các mã thông báo các trình phân tích cú pháp đã đọc.

Nhưng obfuscating bytecode biên dịch không thực sự có vẻ hữu ích với tôi. Ý tôi là bạn sẽ cố gắng đạt được điều gì? Tôi chỉ có thể nhìn thấy việc nuôi ong quấy rầy hơi hữu ích trong việc kiểm tra mã số giấy phép để tránh bị ong xâm lấn quá dễ dàng.

2

Lý do chính để sử dụng obfuscation là bảo vệ quyền sở hữu trí tuệ như bạn đã chỉ ra. Nói chung, chi phí hiệu quả hơn cho một doanh nghiệp khi mua một sản phẩm obfuscation như Lò phản ứng .NET hơn là thử và thực thi pháp lý bản quyền của bạn.

Obfuscation cũng có thể cung cấp các lợi ích ngẫu nhiên khác như cải thiện hiệu suất và giảm kích thước lắp ráp. Đây sẽ là các lợi ích của kỹ thuật mà bạn đang tìm kiếm.

13

Bạn đã hỏi vì lý do kỹ thuật, vì vậy đây không phải là câu trả lời đúng cho câu hỏi.Nhưng tôi nghĩ đó là một sự làm rõ hợp lệ.

Như bạn nói, obfuscation nhằm giải quyết một vấn đề xã hội. Và các vấn đề xã hội (hoặc kinh doanh), không giống như những vấn đề kỹ thuật, hiếm khi có một giải pháp hoàn chỉnh. Chỉ có mức độ thành công trong việc giải quyết hoặc giảm thiểu vấn đề.

Trong trường hợp này, sự xáo trộn sẽ làm tăng rào cản đối với một người nào đó giải mã và ăn cắp mã của bạn. Nó sẽ ngăn cản các cuộc tấn công bình thường và, thông qua quán tính, có thể làm cho tài sản trí tuệ của bạn ít có khả năng bị đánh cắp. Để thực hiện một tương tự mệt mỏi, một khóa bất động không ngăn cản chiếc xe của bạn bị đánh cắp, nhưng nó sẽ làm cho nó ít có khả năng.

Tất nhiên có chi phí, tính bảo trì, (có thể) về hiệu suất và quan trọng nhất là khiến người dùng khó gửi chính xác báo cáo lỗi hơn.

Như GateKiller cho biết, sự làm xáo trộn sẽ không ngăn cản một nhóm xác định từ dịch ngược, nhưng (và nó phụ thuộc vào sản phẩm của bạn) như thế nào xác định một đội có khả năng tấn công bạn?

Vì vậy, đây không phải là giải pháp kỹ thuật cho vấn đề xã hội, đó là một quyết định kỹ thuật làm tăng thêm một ảnh hưởng đến cấu trúc xã hội phức tạp.

1

Sử dụng mã hóa để bảo vệ thông tin trên đường đi.

Sử dụng sự can thiệp để bảo vệ thông tin trong khi chương trình của bạn vẫn có.

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