2009-03-04 39 views
6

Tôi có một phần dữ liệu. Hiện tại, nó là một tệp XML, nhưng kiến ​​trúc có thể thay đổi. Vì vậy, hãy giả sử cho thời điểm đó là một lớp C#.Tạo chữ ký giả mạo của một số dữ liệu?

Khi lưu trữ dữ liệu trên đĩa hoặc trong cơ sở dữ liệu, tôi cần thêm một số chữ ký hoặc vân tay hoặc kiểm tra hoặc bất kỳ thứ gì để đảm bảo không ai có thể sửa đổi dữ liệu. Thông báo trước: ngay cả quản trị viên hoặc nhà phát triển có quyền truy cập vào tất cả các mã nguồn sẽ không thể sửa đổi nó. Tôi giả định rằng vì ai đó có quyền truy cập mã đầy đủ có thể tạo chữ ký mới dễ dàng (việc ký cần được thực hiện theo chương trình, vì vậy không có mục nhập mật khẩu thủ công), chữ ký bằng cách nào đó cần chứa một số dữ liệu bổ sung. Lý tưởng nhất là tôi có thể trích xuất dữ liệu này trở lại từ chữ ký, ví dụ như ngày ký và một số chuỗi.

Cách tiếp cận chung của tôi là sử dụng mã hóa đối xứng. Tôi tạo ra một Hash, tức là SHA-512 từ tất cả các lĩnh vực và sau đó mã hóa băm đó và dữ liệu bổ sung của tôi với để có được chữ ký của tôi, bằng cách sử dụng băm như mật khẩu. Để giải mã, hàm của tôi sẽ tạo băm từ dữ liệu thực tế trong tệp và cố gắng giải mã chữ ký. Điều đó sẽ không được giả mạo bằng chứng mặc dù nó rất dễ dàng để tạo ra một chữ ký, nơi ngày ký và thông tin bổ sung vẫn còn nguyên vẹn.

Vì tôi không phải là chuyên gia về lĩnh vực này, tôi tin rằng tôi đang cố gắng phát minh lại bánh xe và đó không phải là một bánh xe tốt. Tôi chỉ tự hỏi nếu có một số cách tiếp cận tiêu chuẩn? Tôi tin rằng một phần yêu cầu của tôi là không thể (sau khi tất cả, nếu ai đó kiểm soát toàn bộ môi trường, người đó cũng kiểm soát thời gian hệ thống), nhưng tôi vẫn tự hỏi làm thế nào điều này thường được giải quyết?

+1

Chỉ muốn xác nhận rằng quản trị viên và nhà phát triển có toàn quyền truy cập vào mã nguồn, nhưng nếu bạn sử dụng khóa không đối xứng, họ cũng sẽ có quyền truy cập vào phần riêng tư của khóa không? – Ants

Trả lời

6

Có vẻ như tôi muốn kết hợp một số digital signature với số secure digital timestamp. Tóm lại, sau khi ký dữ liệu, bạn gọi dịch vụ web của bên thứ ba để cung cấp dấu thời gian chính thức và chữ ký điện tử của chính nó liên kết dấu thời gian đó với giá trị chữ ký của bạn.) đã được tạo vào hoặc trước ngày đó. Với lược đồ này, ngay cả khi khóa ký gốc ban đầu bị xâm phạm, bị thu hồi hoặc bị vô hiệu hóa, bất kỳ chữ ký nào đã được thực hiện trước khi việc vô hiệu vẫn hợp lệ nhờ dấu thời gian.

Thiết bị chữ ký phần cứng chống giả mạo có thể hữu ích. Nếu phần cứng mục tiêu là khá gần đây nó có thể có một số hỗ trợ đã có trên bo mạch chủ ở dạng một TPM, nhưng có rất nhiều nhà cung cấp sẵn sàng tính phí một cánh tay và một chân cho riêng của họ hardware security modules, hoặc phần nào ít hơn cho một smart card .

Bảo mật đầy đủ có thể không thể đạt được chỉ bằng công nghệ. Bạn có thể cần xác thực độc lập của hệ thống.Bạn có thể cần giám sát CCTV từ xa và ghi lại vị trí của máy hoặc các biện pháp an ninh vật lý khác để phát hiện hoặc ngừng giả mạo. Bạn có thể cần ký gửi mã của bên thứ ba, xem xét và ký tên để đảm bảo rằng mã được tải trên máy là những gì được dự định, và để ngăn chặn và/hoặc phát hiện việc chèn logic backdoor vào mã.

Điểm mấu chốt là số tiền, thời gian và công sức bạn cần chi cho việc này phụ thuộc rất nhiều vào những gì bạn chịu thua nếu hồ sơ được giả mạo.

0

Bạn muốn có một digital signature sử dụng mật mã không đối xứng.

Điều này article dường như có một số ví dụ và giải thích tốt.

0

Điều này về cơ bản là những gì code signing là ngoại trừ, trong trường hợp của bạn, nó không phải là mã thực sự là những gì được ký kết. Bạn sẽ phải sắp xếp cho một chứng chỉ được mua hoặc thiết lập máy chủ chứng chỉ của riêng bạn.

3

Bạn cần cả số digital signaturetrusted timestamp. Dấu thời gian đáng tin cậy giúp bên thứ ba tham gia xác thực thư. Sau đó, bất kỳ kẻ tấn công nào không có 'toàn quyền kiểm soát' của toàn bộ hệ thống.

+0

Ninja sẽ mất 23 giây! :) –

1

Bạn có thể muốn tận dụng PGP bằng cách sử dụng GPGME (GnuPG Made Easy) một thư viện được thiết kế để giúp truy cập vào GnuPG dễ dàng hơn cho các ứng dụng.

1

Câu trả lời của Jeffrey Hantin là tốt nhất tôi nghĩ bạn sẽ có thể làm được. Đó là KHÔNG hoàn hảo, mặc dù:

1) Nó không ngăn chiếc mũ đen của bạn tạo giao dịch hoàn toàn giả mạo.

2) Nó không hoàn toàn ngừng giả mạo giao dịch. Có, giao dịch mới sẽ có dấu thời gian khác nhau nhưng làm cách nào để bạn chứng minh dấu thời gian đã bị làm phiền nếu họ xóa dữ liệu có liên quan? Ngay cả khi bạn cung cấp cho họ một số biên lai giả mạo (băm & ký dữ liệu trên đó), khi nói đến một cuộc thách bạn làm thế nào để bạn chứng minh có hồ sơ đã được giả mạo?

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