哈萨克斯坦共和国国家研究中心的数字签名在基于Web技术的信息系统中的集成

我将讨论在哈萨克斯坦共和国国家认证中心(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);
  • signXmlssignXml, 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中的特定时间点放置签名中描述了此细微差别和实施建议




All Articles