"MQL5 kodunun güvenliğini sağlama: Parola Koruması, Anahtar Oluşturucular, Zaman Sınırları, Uzaktan Lisanslar ve Gelişmiş EA Lisans Anahtarı Şifreleme Teknikleri" makalesi için tartışma - sayfa 3

 
allicient:

Ön kapınızı güçlendirilmiş çelikle de değiştirebilirsiniz, ancak anahtarı paspasın üzerinde bırakırsanız girişi önlemek için hiçbir şey yapmaz. Tanımladığınız koruma, sıradan bir kodlayıcıyı caydırmak için iyidir, ancak kesinlikle motive olmuş bir saldırgana karşı değildir.

Buradaki soru şifreleme değil - bu işin kolay kısmı - daha ziyade anahtarları ve şifre çözme sürecini nasıl ele aldığınızdır.

Bir saldırganın, klasik tabirle ona Mallory diyeceğiz, anahtarına sahip olduğu bir EX5'i kopyalamak ve dağıtmak istediği senaryoda, kesinlikle şunları yapabilir:

i. EX5'i anahtarla çalıştırarak;

ii. süreci çalışırken izlemek, örneğin sürece bir DLL eklemek ve şifresi çözüldükten hemen sonra EX5'in içeriğini dökmek;

iii. artık düz metin olan EX5'i yeniden birleştirin (ve zahmete girebilirseniz potansiyel olarak kaynağa ayırın).

İlk nokta korumanız imza doğrulamayı içeriyorsa, saldırganın dosyaları dağıtmak için yapması gereken tek şey, ilgili ortak anahtarların değiştirildiği farklı bir MQL yürütülebilir dosyasını dağıtmaktır. MQL5 sertifikayı doğrulamak için kriptografik bir API kullanıyorsa, bu ikili dosyadan çıkarılabilir. Bu sonsuza kadar devam eder.

Bunların hepsi, anahtar yönetiminiz olacak kabusu düşünmeye başlamadan önce.

Bu tür bir ikili analiz bugünlerde benim yeteneklerimin dışında olsa da, bunu sorunsuz bir şekilde başarabilecek birkaç kişi tanıyorum. Bu nedenle, endişelenmeniz gereken şifrelemenin gücü değil, geçersiz bir güvenlik modeline sahip olmanızdır. Kimse MetaTrader'ın bu sorunu çözmesini beklemediğinden, bu kendi başına belirli bir sorun değildir - bu soruna çok kullanışlı başka çözümler de vardır, özellikle MQL5 / EX5 kodunun sahibinin onu kontrol ettikleri ayrı bir sunucuda çalıştırmasını ve alıcılara erişim / sinyalleri lisanslamasını sağlamak.

Bu nedenle, en azından kurcalamaya dayanıklı donanım olmadan düzgün bir şekilde uygulanması bu kadar zorken, insanların neden bu tesise ihtiyaç duyduklarını anlayamıyorum.


Gerçek bir koruma için aşağıdakileri tavsiye ederim:

Kaynak kodunun temel koruması için, mümkün olduğunca çok işlevi bir dll'ye doldurmak işe yaramalıdır. MT5 ve programlama arasında arayüz oluşturmak için minimum kod uygundur. Yazılımınızı vermediğiniz sürece ex4 / ex5'teki kaynak kodunun tamamına güvenmem. Ancak bu makale, kaynak kodunun verilmediği ücretli / ticari ürünler veya ücretsiz ürünler için fikri mülkiyetinizi korumakla ilgilidir.

Lisanslama için en iyi koruma ex4/dll kombinasyonunun ayrı demo ve canlı sürümlerine sahip olmaktır. Bunun karşılığında, geliştiricinin kendi yazılımının iki sürümünü sürdürmesi/derlemesi gerektiğinden, geliştirici ve müşteri için biraz daha fazla güçlük çıkar. Ancak, birisinin yazılımın tam sürümüne hack'lenmiş erişim elde etme şansını azaltırsınız; yalnızca demo sürümünü kullanabilirler. Bir çok şey demonun amacına bağlıdır. Eğer müşteriye tam işlevsellik sunmak istiyorsanız, o zaman

Ayrıca, yerel yazılım çalıştırılmadan önce küçük bir temel kod parçasının uzaktan çalıştırılmasını gerektirebilecek lisanslama uygulayın. CNS SaaS (Hizmet Olarak Yazılım) aslında tam olarak bunu yaptı ve buna CCoHS (Barındırılan sunucuda kod çağır) işlevleri deniyor. EA'nızın düzgün çalışması için gereken kodun sınırlı bir bölümünü barındırılan bir şekilde yerleştirebilirsiniz.Böylece birisi EA'yı alıp kaçsa ya da lisanslama dll'ini bir şekilde kırsa bile dll işe yaramaz hale gelir. Barındırılan kod sunucusu ile EA ve/veya lisanslama sunucuları arasında gecikme olur, ancak bunu aşabilirsiniz. Uygulama çok zor değildir, ancak kullanıcının CCoHS'yi kendi sunucularında uygulamak için bir yol bulması gerekir. Küçükken, bunu bir bütçe sunucusunda veya herhangi bir yerde yapabilir ve daha sonra abone tabanınız büyüdüğünde ölçeklendirebilirsiniz.

Barındırılan işlevler, tüm seçenekler arasında en pahalısı olsa da, birisinin gerçekten dll'inizi derleyebilmesi durumunda gerçek bir koruma sağlar, ki bu çok düşük bir ihtimaldir. Büyük olasılıkla yazılımınızı çalıştırmak için dll'i 'kırarlar'. Ancak gerekli barındırılan işlevler olmadan, burada bir şey kaçırmadıysam, yine de işe yaramaz olurdu.

 
MetaQuotes:

Yayınlanan makale MQL5 Programlarını Koruma: Parolalar, Anahtarlar, Zaman Sınırı, Uzaktan Lisans Kontrolü:

Yazar: investeo

3. Hesaba bağlama - Uzman Danışmanın çalışmasını hesaba bağlamayı denedim. Koruma çalışmıyor, /Uzman Danışmanın bu hesapta çalışmasına izin verilmiyor/ mesajını veriyor, ancak EA hala işlem yapıyor. Derleme sırasında hata yok. Neyin yanlış olduğunu anlamıyorum.

 
Makale için teşekkürler
 
Bu komut satırlarını metatrader 4 için geliştirilmiş bir ea'ya nasıl ekleyebilirim?
Bu kod satırı nereye yerleştirilmelidir. ??
 

Merhaba, bir sorum olacak, sitemde danışman satışı yapmak istiyorum ama nasıl yapacağımı bilmiyorum, yardımcı olabilecek var mı?

Şimdiden teşekkürler!

 

Merhaba,


Makale için teşekkürler. Lütfen bana Şifre koruması için, şifre yazıldığında girişin yıldız ("*") veya nokta ("-") olarak görüntülenmesini nasıl sağlayacağımı önerin

Ben iyi bir programcı değilim.


Teşekkürler

 
Peter Maxwell:

Kınadığım için üzgünüm ancak makalede sunulan şey güvenlik değil, belirsizliktir. Kopyalama koruması son derece zor bir sorundur, bu nedenle müzik/film endüstrisinin DRM ile ilgili çabaları ve tekrarlanan başarısızlıkları söz konusudur.

En iyi ihtimalle, buradaki bilgiler bazı insanların zamanını boşa harcayacaktır; en kötü ihtimalle de okuyucuya yanlış bir güvenlik hissi vermiş olabilirsiniz. Daha sonra tavsiyenizi kullanarak bir ürünü "korumaya" karar verirlerse, tüketicileri birkaç saat içinde korumayı çıkardığında ve fiyatın çok altında bir fiyata yeniden sattığında biraz şaşırabilirler.

Base64 kodlamasının şifrelemeyle bir ilgisi yoktur. Base64 kodlaması, 8 bitlik verilerin, veri kodlamasını 7 bit olarak kabul eden protokoller kullanılarak güvenli bir şekilde iletilmesini sağlamak için tasarlanmıştır. base64 kodlamasını tersine çevirebilirsiniz - ve bu amaç için tasarlanmıştır!

MQL5 yazılımını güvenli bir şekilde dağıtmak için görebildiğim tek çözüm, ya aracının sınırlı vekaletname hükümleri aracılığıyla ya da bir sunucuya .ex5 dosyalarıyla birlikte bir MQL5 örneği yüklemek ve müşterinin ince bir istemci kullanarak erişmesine izin vermektir (böylece .ex5'i indiremezler). Ve evet, 15 yıldan fazla bir süredir bilgi güvenliği alanında çalışıyorum, bu yüzden neden bahsettiğim hakkında adil bir fikrim var.

Dürüst olmak gerekirse, Metaquotes'un makaleyi yayınlamasına oldukça şaşırdım.

Doğru. Tam olarak bu şekilde.
 

Merhaba iyi günler danışma mt4'te hesap numarasına göre bir EA kullanımını başarabilmek için yardıma ihtiyacım var ve bu, değiştirmeme izin veriyor ve yalnızca lisans dahilindeki hesapları çalıştırabilir ve iki mt4 kullandığı için uzaktan etkinleştirebilir ve devre dışı bırakabilir bir ana ve bir bağımlı Kodun açıklamasını ve iyi çalışması için nasıl daha iyi olabileceğimi ekliyorum çünkü lisansın dışında başka bir hesap girersem aynı şekilde çalışır.

<?xml version="1.0" encoding="UTF-8"?>

<lisans>

<programVersion>

</programVersion>

<licenseType>Full</licenseType>

<geçerlilik süresi>

<endDate>1/18/2080</endDate>

</validityPeriod>

<Sahipler>

<sahipAdı>

<Hesap>6789</Hesap>

<Hesap>7994</Hesap>

<Hesap>22302</Hesap>

</ownerName>

</Owners>

<İmza xmlns="http://www.w3.org/2000/09/xmldsig#">

<İmzalıBilgi>

<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />

<Referans URI="">

<Dönüşümler>

<Dönüşüm Algoritması="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />

</Transforms>

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<DigestValue>Cl8vF8+Uyyms3pEodjip5ol5J4s=</DigestValue>

</Referans>

</SignedInfo>

<İmzaDeğeri> p/NlTyHeUy5CVC01H/2WmvTcN8TqJhrInkhqtyzR6vqn/koJHqm6fiD6mepklpn4fud0em7vqOiyWcQ9KQ8jqoyoN9ExkJUEvepWBQT2HHcaoW2kpV17ch+CZvtFX74cHE23WrOi9/p3RoK/4G0rsgvdjvefdZRQRsM5k=</SignatureValue>

</İmza>

</license>

 

Bir fikrim var. Her zaman web akışına bakan bir web monitörü olduğunu varsayalım.

1. EA istemcisi, sunucu tarafından rastgele oluşturulan bir sha.pub anahtarı için web sunucusunu çağırır.

2. EA, pub anahtarı ile sunucuya yetkilendirme isteyen bazı veriler gönderir, böylece monitör verinin ne olduğunu bilemez. Ve verilerde istemci tarafından oluşturulan bazı rastgele anahtarlar bulunabilir. Monitör sha anahtarı nedeniyle verinin şifresini çözemez.

3. Sunucu verileri alır ve istemcinin kendisine gönderdiği anahtarla şifrelenmiş yetkilendirme izinli bilgileri gönderir. Monitör bu bilginin şifresini çözebilir çünkü pub sha anahtarını biliyor olabilir, ancak istemcinin anahtarını bilmiyor, bu yüzden hala işe yaramaz.

Bu şekilde, sunucu EA istemcisinin davranışını kontrol edebilir.

 

Merhaba, bu makaleyi yeni Python sürümünü dikkate alarak güncellemek mümkün olmalı mı?

Çalışmasını sağlayamıyorum. Not: Python benim için hala yeni.


Teşekkürler,

Danny