我工作并完成了一个PKI项目,该项目使用HSM生成 - 存储密钥和执行加密功能.我使用PKCS#11与我们的sigining/verifying和加密/解密应用程序连接.我们的平台是windows.
现在,我们希望通过用软件安全模块替换HSM来提供低成本的替代解决方案.我必须在此注意,我知道不使用HSM的缺点.它是安全与成本之间的权衡.
我发现Microsoft提供了下一代CryptoAPI(CNG),密钥存储和证书服务.我的高级管理层不倾向于使用开源软件.我还发现了RSA和cryptomathic提供工具包来执行基于软件的解决方案.
有没有人遇到任何商业软件安全模块工具包来执行密钥生成,密钥存储和加密功能?
编程语言 - c/c ++
谢谢
拉吉
我有两个直方图.
int Hist1[10] = {1,4,3,5,2,5,4,6,3,2};
int Hist1[10] = {1,4,3,15,12,15,4,6,3,2};
Run Code Online (Sandbox Code Playgroud)
Hist1的分布是多模式的;
Hist2的分布是单模型,具有单个突出峰.
我的问题是
谢谢
在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinCrypt.h,定义CERT_CHAIN_ENGINE_CONFIG是
typedef struct _CERT_CHAIN_ENGINE_CONFIG {
DWORD cbSize;
HCERTSTORE hRestrictedRoot;
HCERTSTORE hRestrictedTrust;
HCERTSTORE hRestrictedOther;
DWORD cAdditionalStore;
HCERTSTORE* rghAdditionalStore;
DWORD dwFlags;
DWORD dwUrlRetrievalTimeout; // milliseconds
DWORD MaximumCachedCertificates;
DWORD CycleDetectionModulus;
*#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif*
} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;
Run Code Online (Sandbox Code Playgroud)
我在XP sp3机器中使用visual studio 2010,在这种情况下,我希望上面结构中的以下两个成员变灰.但这不会发生,
#if (NTDDI_VERSION >= NTDDI_WIN7)
HCERTSTORE hExclusiveRoot;
HCERTSTORE hExclusiveTrustedPeople;
#endif
Run Code Online (Sandbox Code Playgroud)
NTDDI_VERSION反过来定义sdkddkver.h如下,并且_WIN32_WINNT以某种方式取得NTDDI_WIN7我的情况下的值不正确,因为我的是XP SP3机器.
#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
#define _WIN32_WINNT 0x0601
#endif
#ifndef NTDDI_VERSION
#ifdef _WIN32_WINNT
// …Run Code Online (Sandbox Code Playgroud) 我有一个关于 HSM 会话的问题。
我知道,如果您为要加密/解密的每个文件初始化并最终确定 cryptoki api,则会产生开销。
我的疑问是,
打开和关闭每个文件的单独会话是否有开销,您想要加密/解密。 (C_Initialize/C_Finalize)
在不影响性能的情况下,一个 HSM 最多可以同时有多少个会话?
打开和关闭会话以处理单个文件是最好的方法,还是打开一个会话并处理多个文件然后关闭会话是最好的方法?
谢谢
我收到使用cryptoki库CKR_DEVICE_MEMORY进行C_Encrypt呼叫的错误代码。
根据PKCS#11规范,CKR_DEVICE_MEMORY表示令牌没有足够的内存来执行请求的功能。
在什么情况下,我们是否使令牌的内存完全满了?
HSM已连续7天,每天7天,每天24小时不间断地工作,并通过2个并行会话对文件进行加密和解密。C_Finalize最近7天内没有打电话给我。因此cryptoki库从初始化开始就一直在其内存空间中工作(请参阅此内容的相关文章)。
我可以从应用程序中看到调试日志,无论我分配的是什么,我正在分配的都是什么,因此应用程序代码不会发生内存泄漏。
更新1:有一个相关的详细讨论如何我可以叫C_Finalize中Application_End的ASP.NET的。我不能使用它的主要原因是,在回收/超时后,ASP.net线程访问单个会话,从而导致CKR_OPERATION_ACTIVE错误。以我为例,多个应用程序正在通过Web服务访问HSM。
我们有一个MS Enterprise 2003 CA. 我正在尝试为没有证书模板生成的PKCS#10 CSR颁发证书.我收到以下错误
该请求不包含证书模板信息.0x80094801(-2146875391)被策略模块0x80094801拒绝,请求不包含证书模板扩展或证书模板请求属性
是否有解决方案来增强CA的互操作性,以便我们可以在没有证书模板的情况下为CSR颁发证书?
MS的帖子见HERE.即使他们谈论解决方案,也没有指向任何解决方案.本文讨论了一些Web界面.你能否对这个网络界面有所了解?
谢谢
拉吉
cryptography certificate active-directory windows-server-2003 x509certificate
我想将数组<Byte> ^转换为unsigned char*.我试图解释我做了什么.我不知道如何继续前进.请告诉我正确的方法.我正在使用MS VC 2005.
//Managed array
array<Byte>^ vPublicKey = vX509->GetPublicKey();
//Unmanaged array
unsigned char vUnmanagedPublicKey[MAX_PUBLIC_KEY_SIZE];
ZeroMemory(vUnmanagedPublicKey,MAX_PUBLIC_KEY_SIZE);
//MANAGED ARRAY to UNMANAGED ARRAY
// Initialize unmanged memory to hold the array.
vPublicKeySize = Marshal::SizeOf(vPublicKey[0]) * vPublicKey->Length;
IntPtr vPnt = Marshal::AllocHGlobal(vPublicKeySize);
// Copy the Managed array to unmanaged memory.
Marshal::Copy(vPublicKey,0,vPnt,vPublicKeySize);
Run Code Online (Sandbox Code Playgroud)
这里vPnt是一个数字.但是如何将数据从vPublicKey复制到vUnmanagedPublicKey.
谢谢
Raj
cryptography ×5
encryption ×3
hsm ×3
certificate ×2
pkcs#11 ×2
c++ ×1
c++-cli ×1
cryptoapi ×1
histogram ×1
interop ×1
math ×1
memory-leaks ×1
probability ×1
security ×1
statistics ×1
visual-c++ ×1