我将讨论在哈萨克斯坦共和国国家认证中心(NCA RK)的背景下,将基于网络技术的电子数字签名(EDS)引入信息系统(IS)的复杂性。
重点将放在电子文件下的EDS的形成上,以及NCA RK提供的NCALayer密码软件。特别是,我将关注与UX有关的问题以及NCALayer支持的功能范围。
我将过程分为以下步骤:
- 形成签名文档的不变表示形式(通过签名文档,我指的是需要签名的任何数据,例如:合同,订单,身份验证表等);
- 使用NCALayer在网络界面中签署文档;
- 服务器端签名验证;
- (如果有必要)准备长期存储的签名。
形成对签名文件的持续展示
对于开发人员而言,重要的是要了解,签名文档中的任何更改都将导致其下的签名不再被验证的事实。在这种情况下,不仅可以通过编辑文档本身的数据来进行更改,还可以通过更新文档的结构或其序列化机制来进行更改。
考虑一个简单的示例-文档作为记录存储在数据库中。要对文档进行签名,必须以单个数据块的形式形成其表示形式(当然,您可以单独对记录的每个字段进行签名,但是通常不会这样做),例如,可以通过以下方式完成:
- 提取记录的所有字段,将它们放在字符串中,然后将它们组合成一行;
- 生成XML或JSON表示形式;
- 根据模板生成带有包含记录数据的设计的PDF文档;
- 等等
:
- ( ) ;
- .
, , , :
- ;
- ( , , ).
, - , .
, — ( ) , . , , , . . .
NCALayer
— NCALayer WebSocket , 127.0.0.1
, ( ) . NCALayer — .
API NCALayer . , NCALayer WebSocket KAZTOKEN mobile (KAZTOKEN mobile API NCALayer).
NCALayer WebSocket, ncalayer-js-client async
.
NCALayer kz.gov.pki.knca.commonUtils
, kz.gov.pki.knca.applet.Applet
( Java ) , , , , — ( -) .
kz.gov.pki.knca.commonUtils
, ( , ), . :
- ,
'PKCS12'
, - ( -), , ,
getActiveTokens
.
, NCALayer , :
- —
getActiveTokens
, ,'PKCS12'
; - —
getActiveTokens
, , , , , , ,'PKCS12'
.
( ):
createCAdESFromBase64
— CMS (CAdES);createCMSSignatureFromBase64
— , (TSP) CMS (CAdES) ;signXml
— XML , (XMLDSIG);signXmls
—signXml
, XML .
, , .
kz.gov.pki.knca.commonUtils
:
'AUTHENTICATION'
— ;'SIGNATURE'
— .
NCLayer , .
ncalayer-js-client:
async function connectAndSign(base64EncodedData) {
const ncalayerClient = new NCALayerClient();
try {
await ncalayerClient.connect();
} catch (error) {
alert(` NCALayer: ${error.toString()}`);
return;
}
let activeTokens;
try {
activeTokens = await ncalayerClient.getActiveTokens();
} catch (error) {
alert(error.toString());
return;
}
const storageType = activeTokens[0] || NCALayerClient.fileStorageType;
let base64EncodedSignature;
try {
base64EncodedSignature = await ncalayerClient.createCAdESFromBase64(storageType, base64EncodedData);
} catch (error) {
alert(error.toString());
return;
}
return base64EncodedSignature;
}
, , .
, — , . , , - , , , . , , .
“ ”. . , .
, , SIGEX.
. , , , , .
TSP. ( createCMSSignatureFromBase64
CMS), . , .
为了确保在签名时不会撤消证书,应使用CRL或OCSP响应。附录B-在RFC 3161中的特定时间点放置签名中描述了此细微差别和实施建议。