Development, production, distribution of encryption (cryptographic) means, information systems and telecommunication systems, protected using encryption (cryptographic) means, performance of work, provision of information encryption services, maintenance of encryption (cryptographic) means, information systems and telecommunication systems, protected with the use of encryption (cryptographic) means (with the exception of the case if the maintenance of the encryption (cryp means of information, information systems and telecommunication systems protected using encryption (cryptographic) means, to ensure the own needs of a legal entity or an individual entrepreneur)
“For ES facilities, the technical task for development of which was approved after December 31, 2012, implementation of the facility functions in accordance with GOST R 34.10-2012 should be provided for at least one of the parameter requirements requirements for parameters defined by the standard (use of the option corresponding to the secret key length about 256 bits, is preferred because it provides a sufficient level of cryptographic security and the best performance, including when implemented jointly with the GOST R 34.10-2 scheme 001). After December 31, 2013, do not carry out confirmation of the conformity of ES facilities with the Requirements for electronic signature facilities approved by order of the FSB of Russia of December 27, 2011 No. 796, if these funds do not provide for the implementation of the instrument’s functions in accordance with GOST 34.10-2012 one of the standard-defined options for parameter requirements. An exception can be made for ES facilities that simultaneously satisfy the following conditions:
- the terms of reference for the development of the tool is approved until December 31, 2012;
- in accordance with the terms of reference, the development of the tool is completed after December 31, 2011;
- confirmation of compliance of the means with the specified Requirements has not previously been carried out
The use of the signature scheme GOST R 34.10-2001 for the formation of a signature after December 31, 2018 is not allowed. "
Hello!
In accordance with the extract from the document of the Federal Security Service of Russia No. 149/7/1 / 3-58 dated January 31, 2014, “On the Procedure for Transitioning to the Use of New EDS Standards and Hash Functions”,
Where it says that the use of GOST R 34.10-2001 for the formation of a signature after December 31, 2018 is not allowed and it is necessary to make the transition to the new standards GOST R 34.10-2012, GOST R 34.11-2012
Please indicate what work plan is envisaged for the transfer of the infrastructure of the Head Certifying Center of the Ministry of Communications and Mass Media of Russia to work with GOST R 34.10-2012, GOST R 34.11-2012
Will change:
- Root certificate of MCC Russia?
- certificates of PAC "TC 1 IS GUTs" and PAK "TC 2 IS GTS"?
- certificate of the TSLExt1.0.xml signature list of accredited CAs?
- (STREET = 125375 Moscow, Tverskaya street, 7, CN = Subsystem "Registries" IS GETs, O = Mincomsvyaz of Russia, L = Moscow, ST = 77 Moscow, C = RU)
- - The structure of the TSL list itself, published on the portal e-trust.gosuslugi.ru/CA/DownloadTSL?schemaVersion=0 ?
When do you plan to make changes and work?
Will there be any preliminary announcements on the e-trust.gosuslugi.ru portal?
What will happen with the old types of signature SMEV?
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001gostr3411"/> </ds:SignedInfo>
Will there be a one-time transition to SMEV 3 with a new signature algorithm?
Good day!
Due to the fact that from January 1, 2019, the formation of a signature using the old guests is not allowed, all the certificates used to form the signature will be replaced.
The transition of the Head Certification Center to new guests is planned in the first half of 2018, respectively, the certificate of the State Registration Center of the Ministry of Communications and Mass Media of Russia will be replaced at the same time.
CA 1 TC and TC 2 CA IS certificates and the TSL signature certificate are expected to be replaced at the same time.
The structure of the TSL list is not planned to change.
Information about the work on the transition to the new guests will be published on the page sc.minsvyaz.ru and minsvyaz.ru/ru/appeals/faq/66
According to the above statement, after January 1, 2019, the formation of signatures on the old GOST is not allowed, that is, on the basis of it, they can live, but they cannot sign. Mandatory revocation of certificates on the old GOST is also not planned. The transfer of its customers to new GOST accredited TC independently implements, to the best of their abilities, no general procedure for it is provided for.
According to SMEV, unfortunately, I can’t give a hint, the Head Certification Authority doesn’t deal with SMEV. For questions related to it, you need to create a separate application in support of SMEV.
For a while, both types of standards will be supported. The specific date of work in the SMEV is not defined. Participants of information interaction will be notified in advance of the relevant news on the Technology Portal, as well as all the necessary information.
Please note that due to the requirements of the Federal Security Service of Russia, associated with the prohibition of the use of GOST R 34.10-2001 for the formation of a signature after January 1, 2019 (see tc26.ru/info/new-national-standards ), from July 1, 2017 in CryptoPro CSP versions 3.9 and 4.0, as well as CryptoPro JCP 2.0 will appear warnings about the need for a quick transition to GOST R 34.10-2012 when generating keys of GOST R 34.10-2001, and since October 1, 2017 - and when forming a signature according to GOST R 34.10- 2001. A user with system administrator rights can launch a warning for a month when launching an application with administrator rights (UAC) by setting the corresponding flag in this window.
In case the appearance of these warnings on your system is undesirable, you can turn them off in advance.
ERROR: java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204) at java.awt.Window.<init>(Window.java:536) at java.awt.Frame.<init>(Frame.java:420) at java.awt.Frame.<init>(Frame.java:385) at javax.swing.JFrame.<init>(JFrame.java:189) at ru.CryptoPro.JCP.tools.j.<init>(Unknown Source) at ru.CryptoPro.JCP.tools.Gost2001Warning.warn(Unknown Source) at ru.CryptoPro.JCP.Sign.a.engineInitSign(Unknown Source) at java.security.Signature.initSign(Signature.java:527) at ru.CryptoPro.JCPxml.xmldsig.SignatureGostR3410.engineInitSign(Unknown Source) at org.apache.xml.security.algorithms.SignatureAlgorithm.initSign(SignatureAlgorithm.java:238) at org.apache.xml.security.signature.XMLSignature.sign(XMLSignature.java:591)
To disable these warnings in the CryptoPro CSP before January 1, 2019 on Unix systems, you need to add two keys to the /etc/opt/cprocsp/config64.ini configuration file (or /etc/opt/cprocsp/config.ini in the case of 32-bit systems) to the existing Parameters section:
Tell me, please, is it planned to transfer test CA testca2.cryptopro.ru/UI to GOST R 34.10-2012 and if so, in what time frame?
It is planned, the dates are not defined. Perhaps it will be another CA.
JCSP - CryptoPro Java CSP Provider
JCP - CryptoPro Java Provider
MessageDigest - GOST3411_2012_256
MessageDigest - GOST3411_2012_512
Signature - GOST3411_2012_256withGOST3410DH_2012_256
Signature - GOST3411_2012_512withGOST3410DH_2012_512
// try { for (Provider p : Security.getProviders()) { LOGGER.info(p.getName() + " - " + p.getInfo()); @SuppressWarnings("unchecked") ArrayList<String> propNames = (ArrayList<String>) Collections.list(p.propertyNames()); Collections.sort(propNames); Set<Service> services = new TreeSet<Service>(new Comparator<Service>() { @Override public int compare(Service s1, Service s2) { int res = s1.getType().compareTo(s2.getType()); if (res == 0) { res = s1.getAlgorithm().compareTo(s2.getAlgorithm()); } return res; } @Override public Comparator<Service> reversed() { return null; } @Override public Comparator<Service> thenComparing(Comparator<? super Service> arg0) { return null; } @Override public <U extends Comparable<? super U>> Comparator<Service> thenComparing(Function<? super Service, ? extends U> arg0) { return null; } @Override public <U> Comparator<Service> thenComparing(Function<? super Service, ? extends U> arg0, Comparator<? super U> arg1) { return null; } @Override public Comparator<Service> thenComparingDouble(ToDoubleFunction<? super Service> arg0) { return null; } @Override public Comparator<Service> thenComparingInt(ToIntFunction<? super Service> arg0) { return null; } @Override public Comparator<Service> thenComparingLong(ToLongFunction<? super Service> arg0) { return null; } }); services.addAll(p.getServices()); for (Service s : services) { LOGGER.info(" " + s.getType() + " - " + s.getAlgorithm()); } } } catch (Exception e) { throw new RuntimeException(e); }
private static final String GOST3411_2012_256 = "GOST3411_2012_256"; private static final String GOST3411_2012_256WITH_GOST3410DH_2012_256 = "GOST3411_2012_256withGOST3410DH_2012_256"; private static final String GOST3411_2012_512 = "GOST3411_2012_512"; private static final String GOST3411_2012_512WITH_GOST3410DH_2012_512 = "GOST3411_2012_512withGOST3410DH_2012_512";
Signature signature = Signature.getInstance(GOST3411_2012_512WITH_GOST3410DH_2012_512,config.getProperty(Config.CRYPTO_PROVIDER));
final DigestAlgorithmIdentifier digestAlgorithmIdentifier = new DigestAlgorithmIdentifier(new OID(JCP.GOST_DIGEST_2012_512_OID).value); digestAlgorithmIdentifier.parameters = new Asn1Null(); cms.digestAlgorithms.elements[0] = digestAlgorithmIdentifier;
for (int i = 0; i < cms.signerInfos.elements.length; i++) { cms.signerInfos.elements[i].digestAlgorithm = new DigestAlgorithmIdentifier(new OID(JCP.GOST_DIGEST_2012_512_OID).value); cms.signerInfos.elements[i].digestAlgorithm.parameters = new Asn1Null(); cms.signerInfos.elements[i].signatureAlgorithm = new SignatureAlgorithmIdentifier( new OID(JCP.GOST_PARAMS_SIG_2012_512_KEY_OID).value); cms.signerInfos.elements[i].signatureAlgorithm.parameters = new Asn1Null();
messageDigestBlob = calculateDigestm(data, GOST3411_2012_512, config.getProperty(Config.CRYPTO_PROVIDER)); final Asn1Type messageDigest = new Asn1OctetString(messageDigestBlob); cms.signerInfos.elements[i].signedAttrs.elements[k].values.elements[0] = messageDigest;
cms.signerInfos.elements[i].signedAttrs.elements[k] = new Attribute( new OID(ALL_PKIX1Explicit88Values.id_aa_signingCertificateV2).value, new Attribute_values(1)); // , // // . final DigestAlgorithmIdentifier a = new DigestAlgorithmIdentifier(new OID(JCP.GOST_DIGEST_2012_512_OID).value); // . final CertHash certHash = new CertHash(calculateDigestm(certificateList.get(i).getEncoded(), GOST3411_2012_512, config.getProperty(Config.CRYPTO_PROVIDER))); // Issuer name . GeneralName generalName = new GeneralName(); generalName.set_directoryName(name); GeneralNames generalNames = new GeneralNames(); generalNames.elements = new GeneralName[1]; generalNames.elements[0] = generalName; // . IssuerSerial issuerSerial = new IssuerSerial(generalNames, num); ESSCertIDv2 essCertIDv2 = new ESSCertIDv2(a, certHash, issuerSerial); _SeqOfESSCertIDv2 essCertIDv2s = new _SeqOfESSCertIDv2(1); essCertIDv2s.elements = new ESSCertIDv2[1]; essCertIDv2s.elements[0] = essCertIDv2; // . SigningCertificateV2 signingCertificateV2 = new SigningCertificateV2(essCertIDv2s); cms.signerInfos.elements[i].signedAttrs.elements[k].values.elements[0] = signingCertificateV2;
private static final String GOST3411_2012_256WITH_GOST3410DH_2012_256 = "GOST3411_2012_256withGOST3410DH_2012_256"; private static final String GOST3411_2012_512WITH_GOST3410DH_2012_512 = "GOST3411_2012_512withGOST3410DH_2012_512"; private static final OID OID_ALG_DIGEST_GOST_2012_256 = new OID("1.2.643.7.1.1.2.2"); private static final OID OID_ALG_SIGN_GOST_2012_256 = new OID("1.2.643.7.1.1.1.1"); private static final OID OID_ALG_DIGEST_GOST_2012_512 = new OID("1.2.643.7.1.1.2.3"); private static final OID OID_ALG_SIGN_GOST_2012_512 = new OID("1.2.643.7.1.1.1.2");
private static final OID OID_S_ALG_DIGEST_GOSTBC = new OID("1.2.643.2.2.9"); private static final OID OID_S_ALG_SIGN_GOSTBC = new OID("1.2.643.2.2.19");
if ((!signedData.digestAlgorithms.elements[0].algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_S_ALG_DIGEST_GOSTBC).value))) && (!signedData.digestAlgorithms.elements[0].algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_DIGEST_GOST_2012_256).value))) && (!signedData.digestAlgorithms.elements[0].algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_DIGEST_GOST_2012_512).value)))) { throw new SignatureVerificationException("Unexpected SignedData digest algorithm: " + signedData.digestAlgorithms.elements[0].algorithm); }
for (ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.SignerInfo signerInfo : signedData.signerInfos.elements) { SignatureVerificationResult svr = new SignatureVerificationResult(); result.getSignatureVerificationResultList().add(svr); //TODO if ((!signerInfo.digestAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_S_ALG_DIGEST_GOSTBC).value))) && (!signedData.digestAlgorithms.elements[0].algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_DIGEST_GOST_2012_256).value))) && (!signedData.digestAlgorithms.elements[0].algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_DIGEST_GOST_2012_512).value)))) { throw new SignatureVerificationException("Unexpected digest algorithm: " + signerInfo.digestAlgorithm.algorithm); } if ((!signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_S_ALG_SIGN_GOSTBC).value))) && (!signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_S_ALG_CADES).value))) && (!signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_S_ALG_DIGEST_GOSTBC).value))) && (!signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_SIGN_GOST_2012_256).value))) && (!signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_SIGN_GOST_2012_512).value)))) { throw new SignatureVerificationException("Unexpected signature algorithm: " + signerInfo.signatureAlgorithm.algorithm); }
MessageDigest digester = MessageDigest.getInstance(new OID(signerInfo.digestAlgorithm.algorithm.value).toString(), config.getProperty(Config.CRYPTO_PROVIDER));
Signature signature = null; if (signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_SIGN_GOST_2012_256).value))) { signature = Signature.getInstance(GOST3411_2012_256WITH_GOST3410DH_2012_256, config.getProperty(Config.CRYPTO_PROVIDER)); } else if (signerInfo.signatureAlgorithm.algorithm.equals(new Asn1ObjectIdentifier(new OID(OID_ALG_SIGN_GOST_2012_512).value))) { signature = Signature.getInstance(GOST3411_2012_512WITH_GOST3410DH_2012_512, config.getProperty(Config.CRYPTO_PROVIDER)); } else { signature = Signature.getInstance(GOST3411WITH_GOST3410DHEL, config.getProperty(Config.CRYPTO_PROVIDER)); }
Source: https://habr.com/ru/post/341476/
All Articles