2012-06-29 14 views
7

Tôi đang cố gắng tìm hiểu cách sử dụng MCSAPI để thực hiện mã hóa AES với nhà cung cấp dịch vụ mã hóa ncipher (CSP). Câu hỏi của tôi là hàm tạo AesCryptoServiceProvider không chấp nhận lớp CspParameters, được sử dụng để chỉ định nCipher làm csp.sử dụng Ncipher CSP với MSCAPI để thực hiện mã hóa AES

CspParameters cp = new CspParameters(24, "nCipher Enhanced RSA and AES Cryptographic Provider"); 
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CspParameters) // works fine 
AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); // Constructor takes no parameters. 

Từ những gì tôi có thể thấy Lớp Rijndael cũng không có cách chỉ định CSP của bên thứ ba khác. Tôi đang thiếu gì? Có cách nào để khởi tạo toàn bộ hệ thống của tôi để tải CSP cho tất cả các cuộc gọi mã hóa tiếp theo không? Tôi có giả sử sử dụng CSP để chỉ quản lý khóa đối xứng và sau đó sử dụng mặc định AesCryptoServiceProvider để mã hóa/giải mã? RSACryptoServiceProvider(CspParameters) hoạt động tốt. Nhưng tôi muốn làm mã hóa đối xứng. Tôi cần làm điều này trong khung công tác .NET.

+0

Xin chào user1491745 và chào mừng. Tôi đã thay đổi các thẻ để câu hỏi này trở nên rõ hơn (ví dụ: sử dụng C# thay cho C# -4.0 sẽ dẫn đến nhiều người xem câu hỏi này). Hơn nữa tôi đã đặt một tiền thưởng vào nó hy vọng nó sẽ nhận được một số sự chú ý. –

Trả lời

1

AES là một thuật toán đối xứng, vì vậy không thể sử dụng CspParameters.

nCipher là tiêu chuẩn phần cứng (xem http://technet.microsoft.com/en-us/library/dd277354) để mã thông báo có thể tính toán thuật toán AES, nhưng vì mọi người (Alice và Bob) cần biết khóa bí mật không có lợi ích để tính hoặc lưu trữ trên mã thông báo phần cứng.

Bạn có thể xem cách sử dụng AesCryptoServiceProvider trong MSDN example, có thể bạn muốn sử dụng AesManaged (cũng có một ví dụ).

8

Microsoft CAPI không hỗ trợ khóa được bảo vệ bằng phần cứng cho các thuật toán đối xứng. Đây là một thiếu sót của API, không phải của nCipher CSP. Các khóa duy nhất có thể được bảo vệ bằng phần cứng là cặp khóa ký hiệu và trao đổi của thùng chứa CAPI. Bất kỳ khóa đối xứng nào được tạo sẽ được tạo và sử dụng trong phần mềm.

Bạn có thể bọc (phần mềm) các khóa đối xứng trong khóa chứa (phần cứng) để bảo vệ và kiên trì, nhưng điều đó không làm cho các khóa đối xứng này được bảo vệ phần cứng.

Nếu bạn đang triển khai trên Vista, Server 2008 hoặc mới hơn, bạn nên xem xét CAPI Next Generation hoặc CNG: nó hỗ trợ tạo và sử dụng khóa đối xứng được bảo vệ bằng phần cứng và Thales/nCipher CNG CSP hỗ trợ điều này. Tuy nhiên, Thales/nCipher CNG CSP không hỗ trợ các khóa đối xứng bền vững, do đó, để làm điều đó bạn phải quấn chúng trong cặp khóa chứa giống như bạn làm với CAPI của trường cũ.

Tôi làm việc cho Thales nhưng không nói cho họ: liên hệ với Thales Support nếu bạn có thắc mắc và/hoặc muốn tìm hiểu cách nhận hỗ trợ nhà phát triển.

+0

Câu trả lời tiêu cực cũng là câu trả lời, và nếu không ai có câu trả lời tốt hơn vào ngày mai, tôi sẽ trao cho bạn tiền thưởng. –

+0

Cảm ơn Sander đã bình luận, đây là thông tin mà tôi cuối cùng cũng có thể nhận được từ đại diện của Thales. Tôi đã đi trước và triển khai giải pháp của chúng tôi bằng cách sử dụng kỹ thuật gói chính. – user1491745

+0

Guys Cách thích hợp để xác nhận rằng người dùng đã trả lời đầy đủ câu hỏi ban đầu của tôi là gì? Tôi đã bỏ phiếu bình chọn. Có gì khác? Cảm ơn bạn lần nữa. – user1491745

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