ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:cades:imza-tipleri

Farklar

Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.

Karşılaştırma görünümüne bağlantı

esya:cades:imza-tipleri [2013/07/22 10:15]
Beytullah Yiğit
esya:cades:imza-tipleri [2014/01/21 09:30] (mevcut)
Beytullah Yiğit [ESA]
Satır 1: Satır 1:
-====== Farklı İmza Tiplerinin Oluşturulması======+===== Farklı İmza Tiplerinin Oluşturulması =====
  
-API  tarafından ​ desteklenen ​ imza  tiplerinden ​  ​çok ​  ​kullanılanları ​ hakkında ​ kısa açıklamaları burada bulabilirsiniz. Hangi imzanın size uygun  olduğuna karar  vermek için "E- imza Profilleri"​ dökümanını inceleyebilirsiniz. İmza tipleri hakkında daha  geniş bilgi için ise "​ETSI ​TS 101 733" ​dökümanına bakınız.+API  tarafından ​ desteklenen ​ imza  tiplerinden ​  ​çok ​  ​kullanılanları ​ hakkında ​ kısa açıklamaları burada bulabilirsiniz. Hangi imzanın size uygun  olduğuna karar  vermek için "E- imza Profilleri"​ dökümanını inceleyebilirsiniz. İmza tipleri hakkında daha  geniş bilgi için ise [[http://​www.etsi.org/​deliver/​etsi_ts/​101700_101799/​101733/​02.02.01_60/​ts_101733v020201p.pdf|TS ETSI 101 733]] dökümanına bakınız.
  
-===== BES =====+==== BES ==== 
 + 
 +BES imza, en basit imza türüdür. BES imza sadece ​ o kişinin imzayı attığını garanti eder. İmza zamanı belli olmadığından ancak  sertifika geçerli iken imza doğrulanabilir. Sertifika iptal edildiğinde veya  sertifika süresi dolduğunda imza doğrulanamaz. BES  imza içersine zaman bilgisi eklenebilir,​ eklenen zamanın herhangi bir hukuki yükümlülüğü,​ kesinliği yoktur. Beyan edilen zaman şeklinde kullanılabilir.
  
-BES imza, en basit imza türüdür. BES, imza sadece ​ o kişinin imzayı attığını garanti eder. İmza zamanıda belli olmadığından ancak  sertifika geçerli iken imza doğrulanabilir. Sertifika iptal edildiğinde veya  sertifika süresi dolduğunda imza doğrulanamaz. BES  imza içersine zaman bilgisi eklenebilir,​ eklenen zamanın herhangi bir hukuki yükümlülüğü,​ kesinliği yoktur. Beyan edilen zaman şeklinde kullanılabilir. 
 <sxh java;​title:​Java>​ <sxh java;​title:​Java>​
 BaseSignedData bs = new BaseSignedData();​  BaseSignedData bs = new BaseSignedData();​
Satır 34: Satır 35:
 </​sxh>​ </​sxh>​
  
-İmzanın beyan edilen zamanını almak için aşağıdaki ​örnek kod kullanılabilir.+İmzanın beyan edilen zamanını almak için [[esya:​cades:​imza-zamani|buradaki ]] örnek kod kullanılabilir.
  
-Java +Beyan edilen zamanın kullanımında oluşabilecek kötü senaryo aşağıdaki gibidirİmza atıldığı sırada imzacı sertifikası iptal edilmiştir,​ fakat kullanıcı imza zamanı olarak daha önceki bir zamanı beyan etmiştirBeyan edilen zamana güvenildiği durumda geçersiz olan bu imza doğrulanacaktır.
-byte[] input = AsnIO.dosyadanOKU(BESwithSIGNING_TIME);​ +
-BaseSignedData bs = new BaseSignedData(input);​ +
-List<​EAttribute>​ attrs =  +
-                  bs.getSignerList().get(0).getSignedAttribute(SigningTimeAttr.OID);​ +
-Calendar time = SigningTimeAttr.toTime(attrs.get(0));​ +
-System.out.println(time.getTime().toString());​+
  
-C# +{{ :​esya:​cades:​cades.png | Şekil 16 Yanlış Beyan İle Kötü Kullanım Senaryosu}}
-byte[] input = AsnIO.dosyadanOKU(BESwithSIGNING_TIME);​ +
-BaseSignedData bs = new BaseSignedData(input);​ +
-List<​EAttribute>​ attrs = bs.getSignerList()[0]. +
-                            getSignedAttribute(AttributeOIDs.id_signingTime);​ +
-DateTime? time = SigningTimeAttr.toTime(attrs[0]);​ +
-Console.WriteLine(time.Value.ToString());​+
  
-Beyan edilen zamanın kullanımında oluşabilecek kötü senaryo Şekil 17’daki gibidir. İmza atıldığı sırada imzacı sertifikası iptal edilmiştir;​ yalnız kullanıcı imza zamanı olarak daha önceki bir zamanı beyan etmiştir. Beyan edilen zamana güvenildiği durumda geçersiz olan bu imza doğrulanacaktır.+==== EST ====
  
-  +EST imza, BES imzadan türemiştir. İçerisinde imzalama zamanını gösteren zaman damgası bulundurmaktadır. İmza atılırken zaman damgası ayarlarının verilmesi gerekmektedir. Aşağıdaki örnek kodda bir EST imzanın nasıl atılacağını bulabilirsiniz.
-Şekil 17 Yanlış Beyan İle Kötü Kullanım Senaryosu+
  
 +<sxh java;​title:​Java>​
 +BaseSignedData bs = new BaseSignedData();​
 +bs.addContent(new SignableByteArray("​test"​.getBytes()));​
 +
 +HashMap<​String,​ Object> params = new HashMap<​String,​ Object>​();​
 +//ilerli for getting signaturetimestamp
 +TSSettings tsSettings = new TSSettings("​http://​zd.ug.net",​ 21,
 +"​12345678"​.toCharArray(),​DigestAlg.SHA1);​
 +params.put(EParameters.P_TSS_INFO,​ tsSettings);​
 +params.put(EParameters.P_CERT_VALIDATION_POLICY,​ TestConstants.getPolicy());​
 +
 +//add signer
 +bs.addSigner(ESignatureType.TYPE_EST,​ cert, signer, null, params);
 +</​sxh>​
 +
 +<sxh csharp;​title:​C#>​
 +BaseSignedData bs = new BaseSignedData();​
 +bs.addContent(new SignableByteArray(Encoding.ASCII.GetBytes("​test"​)));​
 +Dictionary<​String,​ Object> params_ = new Dictionary<​String,​ Object>​();​
 +//ilerli for getting signaturetimestamp
 +TSSettings tsSettings = new TSSettings("​http://​zd.ug.net",​ 21, "​12345678",,​DigestAlg.SHA1);​
 +params_[EParameters.P_TSS_INFO] = tsSettings;
 +params_[EParameters.P_CERT_VALIDATION_POLICY] = TestConstants.getPolicy();​
 +
 +//add signer
 +bs.addSigner(ESignatureType.TYPE_EST,​ cert, signer, null, params_);
 +</​sxh>​
 +
 +İmza zamanı belli olduğundan,​ BES  tipi imzadan farklı olarak sertifika doğrulamada kesin sonuçlara ulaşılabilir. İmza zamanını almak için [[esya:​cades:​imza-zamani|buradaki ]] örnek kod kullanılabilir. ​
 +
 +==== ESXLong ====
 +
 +ESXLong imza aynı zamanda bir EST  imzadır. ESXLong imza, EST imzadan farklı olarak imza içerisinde sertifika doğrulamada kullanılacak olan doğrulama verisini içerir. . Bundan dolayı ESXLong imza atılırken veya bir imza ESXLong’a çevrilirken sertifika doğrulama işlemi yapılmak zorundadır. Sertifika ​ ömrü ​  ​dolduktan ​ sonra   ​doğrulamada kullanılacak veriye ulaşmada sorunlar çıkabilir. ​ ESXLong imza, doğrulama verisini içinde barındırdığından bu tür sorunların çıkmasını engeller. EST imza atılırken kullanılan örnek kodun aynısı sadece eklenecek imza türü değiştirilerek kullanılabilir.
 +
 +==== ESA ====
 +
 +ESA imza tipi kriptografik algoritmaların zamanla güvenilirliğini ​ kaybetmesine karşı geliştirilmiş bir imza türüdür. Şu anda  güvenerek kullandığımız ​ algoritmalar,​ 5-10  yıl sonra güvenilemez olabilir. Bu  algoritmalar güvenilmez duruma geçmeden önce, imzaların ESA tipine ​ çevrilmesi ​ gerekmektedir. ​ Fakat imza  atıldıktan ​ hemen sonra   ​imzanın ​ ESA'ya çevrilmesi fazladan bir güvenlik sağlamaz. Algoritmaların bir  kısmı güvenilmez duruma geçerken, daha  güvenilir yeni algoritmalar kullanılmaya ​ başlanacaktır. ESA  tipine çevrim sırasında bu yeni algoritmalar kullanılmalıdır.
 +
 +ESA'​yı kullanmanın bir diğer amacı da imza üzerinde değişiklik yapılmasını engellemek olabilir. ESA ile imzanın altındaki tüm seri imzalar korunur. Bu yüzden seri imzalar için ayrıca arşiv zaman damgası almaya gerek yoktur. Eğer   seri imza kullanılıyorsa; ​ ESA'ya çevrilen imzanın ​ altındaki ​ imzaların ​ veri yapısında bir değişiklik yapılamaz. Bu  değişiklikler ​ imza türünün değiştirilmesi, ​ imzanın silinmesi olabilir. Arşiv zaman damgası v2 özelliği bulunduran ES-A tipindeki imzada, yeni bir seri imza yahut doğrulama verisi de imzaya eklenemez. Arşiv zaman damgası v3 özelliği bulunduran ES-A tipindeki imzada ise, bu eklemeler yapılabilir.
 +
 +Bir imza atılırken ESA tipinde atılamaz. Öncelikle başka ​ bir tipte atılmalı, daha  sonra ESA  tipine çevrilmelidir. ESA  tipine dönüşüm sırasında arşiv tipi zaman  damgası kullanılmaktadır. ​ Bundan dolayı parametreler yardımıyla zaman damgası ayarları verilmelidir.
 +
 +<sxh java;​title:​Java>​
 +byte [] signatureFile = AsnIO.dosyadanOKU(TestConstants.getDirectory() +  "​testdata/​ESXLong-1.p7s"​);​
 +BaseSignedData bs = new BaseSignedData(signatureFile);​
 +
 +Map<​String,​Object>​parameters = new HashMap<​String,​ Object>​();​
 +
 +//Archive time stamp is added to signature, so time stamp settings are needed.
 +parameters.put(EParameters.P_TSS_INFO,​ TestConstants.getTSSettings());​
 +parameters.put(EParameters.P_CERT_VALIDATION_POLICY,​ TestConstants.getPolicy());​
 +
 +bs.getSignerList().get(0).convert(ESignatureType.TYPE_ESA,​ parameters);​
 +
 +AsnIO.dosyayaz(bs.getEncoded(),​ TestConstants.getDirectory()+"​testdata/​ESA-2.p7s"​);​
 +</​sxh>​
 +<sxh csharp;​title:​C#>​
 +byte[] content = AsnIO.dosyadanOKU(TestConstants.getDirectory() + "​testdata\\ ESXLong-1.p7s"​);​
 +BaseSignedData bs = new BaseSignedData(content);​
 +
 +Dictionary<​String,​ Object> parameters = new Dictionary<​String,​ Object>​();​
 +
 +//Archive time stamp is added to signature, so time stamp settings are needed.
 +parameters[EParameters.P_TSS_INFO] = TestConstants.getTSSettings();​
 +parameters[EParameters.P_CERT_VALIDATION_POLICY] = TestConstants.getPolicy();​
 +
 +bs.getSignerList()[0].convert(ESignatureType.TYPE_ESA,​ parameters);​
 +
 +AsnIO.dosyayaz(bs.getEncoded(),​ TestConstants.getDirectory() + "​testdata\\ESA-2.p7s"​);​
 +</​sxh>​
esya/cades/imza-tipleri.1374488144.txt.gz · Son değiştirilme: 2013/07/22 10:15 Değiştiren: Beytullah Yiğit