You are on page 1of 16

PKCS 7 Kriptografik Mesaj Sözdizimi Standardı

(Cryptographic Message Syntax Standard)

Muhammet Ali KÖKER

Ders: Kriptoloji ve Güvenlik Protokolleri


Eğitmen: Öğr. Gör. Mehmet Fatih ZEYVELİ

Şubat 2021

1
2
İçindekiler
1. PKCS 7 ÖZET ................................................................................................................................ 4
1.1. ÖZET ....................................................................................................................................... 4
2. PKCS 7 HAKKINDA ..................................................................................................................... 5
2.1. TARİHÇESİ ............................................................................................................................ 5
2.2. ÇALIŞMASI ........................................................................................................................... 6
2.3. KRİPTOGRAFİK İLETİ SÖZDİZİMİ (CMS) ....................................................................... 7
2.4. DOLDURMA (PADDING) SÜRECİ ..................................................................................... 9
3. PKCS 7 KRİPTOANALİZ ........................................................................................................... 10
3.1. YAPILAN ÇALIŞMALAR ................................................................................................... 10
3.2. KRİPTOANALİZ DETAY .................................................................................................... 11
3.3. ALGORİTMA DEĞERLENDİRME .................................................................................... 12
4. UYGULAMA ............................................................................................................................... 13
4.1. DİĞER PKCS STANDARTLARI.......................................................................................... 13
4.2. PYTHON İLE KRİPTOANALİZ UYGULAMASI .............................................................. 14
5 KAYNAKÇA .................................................................................................................................. 16
5.1. YARARLANILAN KAYNAKLAR ....................................................................................... 16

3
1. PKCS 7 ÖZET
1.1. ÖZET
Bilgisayar bilimi, matematik ve kriptoloji birbirleriyle yakından ilgili alanlardır. İnsan
yaşamındaki gereksinimler bu alanlardaki araştırma ve geliştirme süreçlerini hızlandırmıştır.
Bu süreçlerde siber güvenlik, savunma, iletişim, elektronik imza, elektronik ticaret, kişisel
verilerin korunması gibi birçok alanda kriptoloji uygulamaları kullanılagelmiştir.

Yapılan çalışmalar şifre ve deşifre işlemlerinde açık ve gizli olmak üzere farklı anahtarların
kullanıldığı “Açık Anahtarlı Şifreleme” tekniklerinin diğer uygulamalara göre daha iyi bir
güvenlik sunduğunu göstermiştir.

Bilim ve mühendislikteki her çalışmada olduğu gibi güvenilirlik için standartlara gereksinim
duyulmaktadır. Bundan dolayı açık anahtarlı kriptografi ile ilgili olarak PKCS olarak bilinen
standartlar yayınlanmıştır.

Bu kapsamda geliştirilen PKCS 7, kriptografik iletilerde sözdizimi kurallarını belirlemek


amacıyla yayınlanmıştır. Söz konusu standart diğer PKCS standartları ile birlikte kabul
görmüş ve yaygınlaşmıştır.

Resim 1: PKCS- Açık Anahtar Şifreleme Standartları

4
2. PKCS 7 HAKKINDA
2.1. TARİHÇESİ
1991 yılında RSA isimli güvenlik şirketi tarafından aynı ismi taşıyan kriptografi standardını
detaylandıran ilk PKCS sürümü yayınlanmıştır. Adi Shamir, Leab Adleman ve Ron Rivest
tarafından kurulan RSA, sonraki yıllarda PKCS 3 üzerinde Diffie Hellman olarak bilinen
anahtar değişimi tabanlı algoritma standardını yayınlamıştır. PKCS 5 üzerinde şifre tabanlı
olan kriptografi standardı, PKCS 6 üzerinde de sertifika sözdizimleri için genişletilmiş
standardı önermiştir. Burada belirtilmeyen diğer standartlar ise iptal edilmiştir.

Sonraki süreçte geliştirilen PKCS 7 standardı ile kriptografik iletilerin sözdizimi ile ilgili en
çok kabul gören yaklaşım öne sürülmüştür. Söz konusu standart için 1998 yılında 1.5 sürümü
yayınlanmıştır.

RSA tarafından PKCS 7’den sonra da benzeri standartlar geliştirilmiştir. Periyodik olarak
düzenlenen konferanslarla tüm standartlar için düzenleme ve geliştirme çalışmaları
yapılmaktadır.

PKCS genel olarak RSA tarafından sunulsa da Apple, Microsoft, MIT gibi kuruluşlarca
uygulanmakta ve uyarlanmaktadır. Günümüzde birçok kriptografi uygulamasında kabul
görmüş, güvenilirlik yönünden çok daha elverişli hale gelmiştir.

Resim 2: RSA Kurucuları

5
2.2. ÇALIŞMASI
PKCS 7 genel olarak kriptografik iletiler için sözdizimi yapısı ile birlikte imzalama,
doğrulama ve iletim süreçlerini belirlemiştir. Bu kapsamda kullanılan sayısal imza,
imzalayan için kimlik bilgisini garanti etmektedir. Ayrıca kaynak sistem üzerinden iletim
sırasında şifrelenmiş iletinin hedefe değiştirilmeden ulaştığı doğrulanmaktadır.

İletinin imzalanması sürecinde ilk olarak kaynak tarafında ileti içeriği temel alınarak
özetleme (hashing) işlemi sağlanmaktadır. Bu aşamada RSA veya DSA gibi özel bir anahtar
algoritması kullanılarak elde edilen özet şifrelenmektedir. Daha sonra kaynak ileti ile birlikte
şifrelenen ve imzaya karşılık gelen özet bilgisi de hedefe gönderilmektedir.

Hedef tarafından alınan şifrelenmiş özet değer, kaynağın özel anahtarı ile ilgili olan ortak
anahtarla çözülmektedir. Bu aşamada kaynak ile hedefte aynı özetleme algoritması
kullanılmaktadır. Genel olarak ileti içeriği de şifrelenmekte ve çözülmektedir. Her durumda
kaynak özeti ile hedef tarafından yeniden hesaplanan özet bilgisi karşılaştırılmaktadır.
Böylece söz konusu imzanın doğrulanması sağlanmaktadır.

İmzalama süreçlerinde ilgili iletinin içeriğinin sadece kaynak ve hedef tarafından


okunabilmesini sağlamak amacıyla şifreleme kullanılmaktadır. Kaynak tarafında simetrik
bir anahtar kullanılarak iletinin içeriği şifrelenmektedir. Bu süreçte ortak bir anahtar
kullanılarak simetrik anahtar da şifrelenmektedir. Hedefte özel bir anahtar ile söz konusu
simetrik anahtar ve bu anahtar ile ileti içeriği çözülmektedir.

Resim 3: PKCS 7 Çalışma Akış Şeması

6
2.3. KRİPTOGRAFİK İLETİ SÖZDİZİMİ (CMS)
Daha önce belirtildiği gibi iletilerin şifrelenmesi, imzalanması, iletilmesi ve doğrulanması
ile ilgili süreçlerde ilgili ileti için genel kabul görmüş bir sözdizimine gereksinim
duyulmuştur. PKCS 7, söz konusu gereksinimi karşılamakta ve sonuçta ilgili süreçlerin
güvenilirliğini garanti etmektedir.

CMS ile verinin şifreleme sürecinde kullanılan diğer bilgilerle birlikte kapsül olarak ele
alınması sağlanmaktadır. Burada kapsül zarfı olarak adlandırılan ve iç içe olabilen veri
kümeleri söz konusudur. İleti içeriği ile gönderilen diğer veriler ile çözümleme ve daha
yüksek doğrulama olanağı sunulmaktadır.

PKCS 7 uygulamalarında tercihen şifreleme yönünden daha basit algoritmalar ve daha düşük
boyutlu kapsül zarfları kullanılabilmektedir. Bu durumda temel içerik söz konusudur.

Ancak genel olarak yüksek doğruluk sunmak amacıyla geliştirilmiş içerik tercih
edilmektedir. Veriler olabildiğince yüksek güvenlik sunan algoritmalar ile şifrelenmekte,
imzalama ve doğrulama aşamaları daha gelişmiş doğruluk sunacak şekilde tasarlanmaktadır.

Geliştirilmiş sınıflar taban sınıf özelliklerini içerecek şekilde tasarlanabilmektedir. Burada


taban sınıf iç içerik, geliştirilmiş sınıfta yer alan diğer özellikler dış içerik olarak
değerlendirilmektedir. Nesne yönelimli programlama yaklaşımında yer alan kalıtım temelli
mimariler söz konusu sürecin uygulanmasını kolaylaştırmaktadır.

CMS sözdizimi öncelikle içerik türünün belirtildiği “Content Type” alanı ile başlamaktadır.
Daha sonra alan olarak sırasıyla sürüm bilgisi, tercihen kaynak bilgisi, alıcı bilgisi, mesaj
doğrulama kodu (MAC) algoritması, tercihen özümleme (digest) algoritması, kapsülleme
içerik bilgisi, tercihen yetkilendirme öznitelikleri, elde edilen MAC kodu, tercihen
yetkisizleştirme öznitelikleri yer almaktadır.

Resim 4: Kriptografik İleti Sözdizimi Veri Türleri


7
Kapsül zarfı içinde yer alan içerikte ileti özeti (hash) değeri mevcutsa veri “imzalı veri”
türündedir. Bu durumda sözdizimine göre içerik türü bilgisi “Signed Data” olarak
belirtilmektedir. Hedefler için şifrelenmiş içerik ve ilgili şifreleme anahtarının birlikte
bulunduğu veriler de “zarflı veri” olarak değerlendirilmektedir. Bu durumda ise içerik türü
“Enveloped Data” şeklinde olmaktadır. Bunlara ek olarak veri hem imzalı hem de zarflı
olabilmektedir.

Zarflı içerik türünden farklı olarak verinin sadece şifrelenmiş halinin bulunduğu, hedef ve
anahtar bilgisinin ise bulunmadığı veriler ise “şifrelenmiş veri” olarak değerlendirilmekte,
içerik türü ise “Encrypted Data” olarak belirtilmektedir.

Sadece içerik tür bilgisi ve özeti mevcutsa “özümsenmiş veri” söz konusudur. Bu durumda
da “Digested Data” içerik türü belirtilmektedir.

Resim 5: Kriptografik İleti Sözdiziminde Biçimi

8
2.4. DOLDURMA (PADDING) SÜRECİ
Kriptografi algoritmalarında verinin başına, ortasına veya sonuna içerikten bağımsız veri
ekleme söz konusu olmaktadır. Bu işlem standart veri boyutunu sağlamak için yapılabileceği
gibi kriptanalistleri yanıltma amaçlı olarak da yapılabilmektedir.

PKCS 7 yaklaşımına göre doldurma süreci tüm veri için geçerli olmaktadır. Her durumda
eklenen byte adedi aynı zamanda eklenen byte değerine karşılık gelmektedir. Örneğin 10
adet doldurma byte değeri bulunuyorsa eklenen değerlerde onluk tabanda 10, onaltılık
tabanda 0x0A olmaktadır.

1 byte işaretsiz tamsayı olarak en fazla 255 değerini alacağından 1 byte’tan büyük değerler
için daha fazla alan kullanılmaktadır. Bu süreçte içeriğin boyutu doldurulan alanın
boyutunun tam katıysa fazladan veri blokları ilave edilmektedir.

Her durumda doldurma işlemi belirli bir standarda göre yapıldığından hedef üzerinde verinin
hangi kısmının gerçek veri, hangi kısmının doldurma değeri olduğu belirlenebilmektedir.

PKCS 7 ile belirlenen doldurma yaklaşımı PKCS 5’te belirlenen yaklaşımla benzerlik
göstermektedir. PKCS 5 farklı olarak 8 byte (64 bit) uzunluğunda blok şifrelemeyi temel
almaktadır.

Resim 6: Doldurma (Padding) Süreci

9
3. PKCS 7 KRİPTOANALİZ
3.1. YAPILAN ÇALIŞMALAR
PKCS 7 ileti sözdizimini ve ilgili süreçleri belirleyen bir standarttır. Kullanılan şifreleme
algoritması ve algoritma ile ilgili kriptoanaliz süreçleri bu standardın kapsamı dışındadır.
Ancak doğrudan standart ile belirtilen ileti sözdizimi ve doldurma (padding) süreçlerinde
kriptoanaliz yapılabilmektedir.

Doldurma saldırısı (Padding Attack), yan kanal saldırısı (Side Channel Attack) ve tüm
olasılıkları deneme saldırısı (brute force attack) yöntemleri ile kriptoanaliz
gerçekleştirilmekte, zayıf güvenlikli PKCS 7 – CMS iletileri çözülebilmektedir.

Makale kapsamında doldurma saldırısı detaylı olarak incelenmiş, konuyla ilgili olarak
Python programlama dili ile bir kriptoanaliz yazılımı uygulanmıştır.

Resim 7: PKCS 7 İçin Padding Saldırısı

10
3.2. KRİPTOANALİZ DETAY
Doldurma başlığı altında belirtildiği gibi PKCS 7 standart bir doldurma (padding) sürecini
kapsamaktadır. Analiz sürecinde özel olarak kahin (oracle) olarak adlandırılan yazılım, ileti
üzerindeki bloklarda doldurma işleminin doğruluk durumuna yanıt vermesi yaklaşımını
temel almaktadır. Bu yöntem genellikle blok şifrelemede şifre bloku zincirleme (CBC) söz
konusuysa kullanılmaktadır. Sistemin veya hesaplanan değerin hatalı olması, geçersiz bir
doldurma işlemi yapıldığını dolayısıyla sonucun yanlış olduğunu göstermektedir.

Örneğin C1, C2, C3 şifreli blokları ve P1, P2 blokları mevcutsa farklı senaryolarda analiz
söz konusu olmaktadır. Analiz sürecinde kriptanalist P2 blok şifresini çözmek ister ve sadece
son blokta doldurma olduğunu bilirse C1 için son byte’ı değiştirerek saldırı
gerçekleştirebilmektedir. Sonuçta ilgili algoritma gereği P1 bloğunun tamamının değiştiği,
ancak P2 bloğunun sadece son byte’ının değiştiği görülecektir. Bu aşamada kahin yazılımı
söz konusu P2 bloğu için doldurma işleminin doğru olup olmadığını tespit etmektedir.
Sonuçta veri bloğunun boyutuyla doğru orantılı iterasyonlar gerçekleştirilerek P2 için son
byte elde edilmiş olacaktır.

Bunun dışında yan kanal saldırısı ile şifrelenip çözülen farklı veri blokları için şifreleme
algoritmasının ve parametrelerinin kısmen tespiti sağlanabilmektedir. Tüm olasılıkların
denendiği brute force yaklaşımında ise güvenlik yönünden çok zayıf olan CMS verilerinin
çözülmesi mümkün olabilmektedir. Olasılık çok fazla ise paralel algoritmalar, GPU
akselerasyonlu algoritmalar daha kısa sürede sonuca ulaşma konusunda yardımcı
olmaktadır.

Resim 8: PKCS 7 İçin Kriptoanaliz

11
3.3. ALGORİTMA DEĞERLENDİRME
PKCS 7 ve kapsadığı ileti sözdizimi ile ilgili yaklaşım birçok yazılım ve donanım üreticisi
tarafından geniş kabul görmüştür. Web sitelerinde, elektronik posta sistemlerinde, elektronik
imza yazılımlarında, sertifika uygulamalarında yaygın olarak tercih edilen standartlar ile
güvenilir ve farklı platformlara uyumlu projeler geliştirilebilmektedir.

Verilerde şifreli ve zarflı veri türlerinin bulunması, standartlara tam olarak uyum sağlanması
gibi durumlar şifreli verilerin çözülmesini zorlaştırmaktadır. Aslında yaygın olarak
kullanılan PKCS gerçeklemelerinde varsayılan yapılandırma çoğu durumda yüksek güvenlik
sunmaktadır.

PKCS 7 birçok alanda kullanılmasına rağmen özellikle elektronik imza sistemleri ile
özdeşleşmiştir. Yüksek güvenlik ve güvenilirlik gerektiren sistemlerde biyometrik yöntemler
giriş sistemleri ile birlikte elektronik imza yöntemleri de yaygın olarak kullanılmaktadır. Bu
süreçte PKCS 7 ve diğer standartlar e-imzanın taklit edilmesi ve yeniden kullanılması gibi
durumları önlemektedir.

PKCS 7 ayrıca web ve e-posta sunucularında kullanılan SSL sertifikaları için de bir alternatif
sunmaktadır. Sertifikalar ile ilgili dosyalar genellikle P7B ve P7C dosya uzantılarına sahiptir.
Dosya içeriğinde BEGIN ile başlayıp END ile sonlanan kısımda tutulan, özel anahtar
içermeyen veri bloğu şeklinde bulunmaktadır. Bu sertifikalar diğer SSL biçimleri olan PEM
ve DER ile, PKCS 12 ile tanımlanan PFX biçimiyle benzer özellikler taşımaktadır.

OpenSSL isimli kütüphane kullanılarak diğer SSL biçimlerinde olduğu gibi PKCS
sertifikaları ile ilgili uygulamalar geliştirilebilmektedir. Söz konusu kütüphane iletinin
biçimi, şifrelenmesi, zarflı veri haline getirilmesi ve doğrulanması gibi süreçlerde kapsamlı
bir yapılandırma imkanı sunmaktadır.

Veri bütünlüğü, yüksek güvenlikli kimlik doğrulama, veri gizliliği sağlama konusunda
PKCS tüm standartları ile önemli bir çözüm sunmaktadır.

Resim 9: Elektronik İmza Donanımları

12
4. UYGULAMA
4.1. DİĞER PKCS STANDARTLARI
PKCS varsayılan olarak bir şifreleme algoritması önermemekte, genel bir ileti sözdizimi
açıklamaktadır. Uygulamalarda kullanılan şifreleme algoritmaları diğer PKCS
standartlarının kapsamındadır.

PKCS 1, RSA tarafından geliştirilen aynı isimli kriptografi standardının belirlendiği


sürümdür. Algoritma temel olarak p ve q olmak üzere 2 büyük asal sayının çarpımı olan n
değeri ile çalışmaktadır. Burada söz konusu çarpanların 1 eksiklerinin çarpımını veren totient
fonksiyonu ile aralarında asal olan e sayısı belirlenmektedir.

PKCS 3, Diffie Helman olarak da bilinen anahtar değişimi algoritmasını açıklamaktadır.


Algoritma güvensiz ortam üzerinde oluşturulan gizli ve ortak anahtarın daha sonra güvenli
ortamda veriyi şifreleme amaçlı kullanılmasını temel almaktadır.

PKCS 5, şifre tabanlı olarak kriptografi ve doldurma standardı belirlemiştir.

PKCS 6, sertifika sözdizimleri için genişletme sunmuştur.

PKCS 8, gizli anahtarlara bilgi için sözdizimi standardı belirlemiştir.

PKCS 9, seçili nesne sınıfları ve ilgili özellikler için standartlar belirlemiştir.

PKCS 10, sertifika istekleri için bir biçim tanımlamıştır.

PKCS 11, token arabirimleri üzerinde standart belirlemiştir.

PKCS 12, kişisel bilgi aktarımında sözdizimi için standart belirlemiştir.

PKCS 13, eliptik eğri tabanlı kriptografi algoritması ile ilgili standartlar belirlemiştir.

PKCS 14, sözde ve rasgele sayı üretimi ile ilgili standartlar belirlemiştir.

PKCS 15, token bilgilerinin biçimlendirilmesi ile ilgili standartlar belirlemiştir.

13
4.2. PYTHON İLE KRİPTOANALİZ UYGULAMASI
Makale kapsamında incelenen doldurma saldırısı yöntemi Python programlama dili ile
uygulanmış, örnek bir veri üzerinde kriptoanaliz işlemi gerçekleştirilmiştir. Github
üzerindeki örnekler incelenerek geliştirilen projede OracleModule isimli modül kullanılmış,
PKCS7 ile uyumlu padding işlemi gerçekleştirilmiştir. Sonuçta şifrenin ilgili yöntemle
çözülmesi sağlanmıştır.

Resim 10: Python İle Uygulama Kaynak Kodu

14
Resim 11: Python İle Uygulama Kaynak Kodu (Devam)

15
5. KAYNAKÇA
5.1. YARARLANILAN KAYNAKLAR
Açık Anahtarlı Şifreleme, Vikipedi. (Erişim Tarihi: 19.02.2021)

Aterya M. PKCS Standartlarına Giriş (2016).

Baidya B. Açık Anahtar Kriptoloji Standarları (2014). (Erişim Tarihi: 19.02.2021)

Klima V, Rosa Tomas. PKCS 7'de CBC Şifreli Mesajlara Yönelik Yan Kanal Saldırıları
(2013). Çek Cumhuriyeti

Kriptografide Doldurma, Vikipedi. (Erişim Tarihi: 19.02.2021)

Kriptografik İleti Sözdizimi Standardı, Vikipedi. (Erişim Tarihi: 19.02.2021)

Microsoft Docs. PKCS 7 Kriptografik İleti Sözdizimi Konseptleri (2018). (Erişim Tarihi:
20.02.2021)

Padding Oracle Atağı, Vikipedi. (Erişim Tarihi: 19.02.2021)

Parker A. Sayısal imza ve PKCS 7'ye Giriş (2018). (Erişim Tarihi: 19.02.2021)

PKCS 7 Nasıl Çalışır, SAP Yardım Portalı. (Erişim Tarihi: 19.02.2021)

RSA Laboratuvarları Teknik Bildirisi. PKCS 7 Kriptorgrafik İleti Standartları (1993).

Wang Yongge. Açık Anahtar Kriptografi Standartları (2012). Kuzey Carolina Üniversitesi

16

You might also like