PSpice ve Şifreleme
PSpice, Cadence Design Systems tarafından geliştirilen bir SPICE devre simülatörüdür. Bu yazılım, tescilli yarı iletken model dosyalarını şifreleyerek, satıcıların fikri mülkiyetini korumayı amaçlar. Ancak, bu şifreleme yöntemi belirsizdir ve belgelenmemiştir.
Ülkemizdeki birçok üçüncü taraf bileşen satıcısı, SPICE modellerini yalnızca PSpice şifreli dosyalar olarak dağıtmaktadır. Bu durum, bu modellerin açık kaynak ve alternatif araçlarda kullanılmasını engellemektedir. Araştırmalarımın bir parçası olarak, SpiceCrypt adında bir Python kütüphanesi geliştirdim. Bu araç, şifrelenmiş SPICE model dosyalarını çözerek mühendislerin yasal olarak edinilmiş modelleri her simülatörde kullanabilmesini sağlar.
Şifreleme Modları ve Kritik Hata
PSpice, altı farklı şifreleme modunu destekler (0-5). Modlar 0-3 ve 5, tüm anahtar materyalini ikili dosyada sabit kodlanmış sabitlerden türetir. Bu sabitler çıkarıldıktan sonra, bu modlardaki dosyalar doğrudan çözülebilir. Ancak, Mod 4, kullanıcı tarafından sağlanan anahtar materyalini içeren tek moddur; satıcılar, bu anahtar dizelerini bir CSV dosyası aracılığıyla sağlar. Ancak burada bir hata bulunmaktadır: Anahtar türetme süreci, anahtar alanını 2^32'ye indirgemektedir. Bu durum, kullanıcı anahtarının birkaç saniye içinde brute-force (kaba kuvvet) yöntemiyle ele geçirilmesine olanak tanır.
AES-256 ve Brute-Force Saldırısı
Mode 4, AES-256 algoritmasını ECB modunda kullanmaktadır. Kullanıcı anahtarı, belirli bir sabit anahtarla XOR’lanarak türetilir ve anahtar yapısı şu şekildedir:
g_desKey: 4 baytlık kısa anahtar ("8gM2")
g_aesKey: 27 baytlık genişletilmiş anahtar ("H41Mlwqaspj1nxasyhq8530nh1r")
Kullanıcı anahtarı, kısa anahtarın ilk 4 baytına ve genişletilmiş anahtarın geri kalanına XOR’lanarak uygulanır. Ancak, PSpiceAESEncoder_setKey yalnızca kısa anahtarı alır ve bu da 32 baytlık AES anahtarının oluşumunu etkiler. Bu durumda, 32 baytın 28'i bilinmektedir ve bu da etkin anahtar alanını 2^256'dan 2^32'ye düşürmektedir.
Brute-force yöntemi ile yapılan saldırıda, her $CDNENCSTART işaretinden sonraki ilk şifreli blok, her zaman "0001.0000 " sabit ön ekine sahiptir. Bu ön ek, ilk 16 baytlık AES alt blok içinde tamamen yer almaktadır. Bu durum, aday anahtarları doğrulamak için bilinen bir düz yazı sağlar.
Anahtar Kurtarma
SpiceCrypt aracı, bu brute-force saldırısını modern donanımda gerçekleştirmek üzere donanım hızlandırmalı bir Rust uzantısı kullanarak anahtar kurtarmayı sağlar. Aşağıdaki komut ile kullanıcı anahtarı birkaç saniye içinde kurtarılabilir:
spice-crypt --recover-key encrypted_file.lib
Tüm Kullanıcı Anahtarının Kurtarılması
4 baytlık brute-force saldırısı başarıyla gerçekleştirildiğinde, tam kullanıcı anahtarı kurtarılabilir. Metadata başlığının düz yazısı, türetilmiş g_aesKey'i içerir. Bu anahtarın kurtarılması, kullanıcı anahtarlarının tamamını ortaya çıkarır ve bu durum, tüm şifrelenmiş dosyaların tehlikeye girmesine yol açar.
Sonuç
PSpice 16.6 sürümüyle (Nisan 2014) AES-256 şifreleme desteği eklenmiştir. Bu hata, bu sürümden itibaren varlığını sürdürmektedir. Şimdi bu hatayı düzeltmek, on iki yıl boyunca oluşturulan tüm şifreli modellerin uyumluluğunu bozacaktır. SpiceCrypt, tüm PSpice şifreleme modlarının yanı sıra LTspice şifreleme formatlarını da destekler. Kurulum için PyPI üzerinden şu komut kullanılabilir:
pip install spice-crypt
SpiceCrypt, yasal olarak edinilmiş modellerle simülatörler arasında etkileşim sağlamak için tasarlanmıştır. Fikri mülkiyet haklarını ihlal etmek amacıyla kullanım, etik dışı ve kabul edilemez bir durumdur.




