Anahtar kullanmadan Save Files nasıl şifrelenir? [kapalı]


21

İkili Biçimde.dat şifrelenmiş bir dosyayı alan basit bir program yaptım , sonra onu bir bayt dizisine şifresini çözdüm ve daha sonra her şey şifreyi yeniden yazdı.

Örneğin:

İkili şifreleme algoritması yaptım. => 0100100001100101001000000110100001100101011000 ...

Ama bu şifresini çözmek çok çok kolay ...

Kaydetme sürecimi şifrelemek için mümkünse herhangi bir anahtara ihtiyaç duymaması mümkün mü?


15
Tasarrufları şifrelemek istediğinden emin misin? Hile yapmanın daha kolay yolları var, örneğin hafıza değiştirirken. Onları sadece zlib ile sıkıştırırdım (.gz içine koyardım), boyutu küçültür ve bazı hile yapanların değiştirmesini önlerdi.
HolyBlackCat

36
Kusur arama: Ne yapıyorsun bir olan kodlama değil, bir şifreleme .
Philipp

13
(bunun tek oyuncu için olduğu varsayılır) Tek oyuncu oyununda hile yapmayı önlemeye çalışmayın, hem sizin hem de oyuncu için can sıkıcıdır. Ve sonuçta işe yaramaz.

6
Kayıtlı dosyaları şifrelemek mümkün değildir , böylece kullanıcı bunları okuyamaz veya değiştiremez. (Örneğin, örneğin, şifre çözme işleminden hemen sonra oyununuzu bir hata ayıklayıcıda duraklatabilirler!). Ancak bunu daha da zorlaştırabilirsiniz (çünkü düz bir metin dosyasını açmak, oyunu bir hata ayıklayıcıda duraklatmak için doğru zamanı bulmakla karşılaştırıldığında gerçekten kolaydır). Yapmaya çalıştığın şey bu mu?
kullanıcı253751

6
@DanielBejar Az önce söyledim, bunu imkansız hale getiremezsin, sadece daha da zorlaştırabilirsin.
kullanıcı253751

Yanıtlar:


77

Eğer matematik hem de en az doktora yoksa Genel olarak, kendi şifreleme algoritmaları icat asla ve bilgisayar bilimleri. Ancak, bilinen hiçbir saldırısı olmayan ve birçok programlama dilinde ücretsiz uygulamaları olan birçok iyi stok algoritması vardır. Örneğin, RC5, AES veya Blowfish. Oyununuzu geliştirmek için hangi teknolojiyi kullandığınıza bağlı olarak, kullanıma hazır güvenli şifreleme bile sunabilir.

Bununla birlikte, soru, kayıt oyunlarının şifrelenmesi iyi bir fikir olup olmadığıdır.

İlk olarak, oyun çalıştırılabilir kodunuz şifreleme ve şifre çözme işlemlerini gerçekleştirdiğinde, oyunun çalıştırılabilir koduna hem algoritmayı hem de anahtarı dahil etmeniz gerekir. Bu, kararlı bir bilgisayar korsanının onları bulabileceği, çıkardığı ve bir tasarruf oyunu düzenleyicisi oluşturmak için kullanabileceği anlamına gelir. Böylece hiçbir zaman% 100 güvenli olamaz.

İkincisi, neden bunu yine de yapmak istiyorsun? Çevrimiçi bir oyun olduğunda, çevrimiçi oyun alanını çevrimiçi olarak oyuncuların değiştiremeyeceği bir yerde saklamalısınız. Çevrimdışı bir oyun olduğunda, neden rahatsız ediyorsun? Bir dolandırıcı, yalnızca kendi oyun deneyimini en kötü şekilde incitebilir. Oyununuzdan istediğiniz gibi zevk almak isteyen dürüst oyuncular bundan hiç etkilenmeyecek. Öte yandan, oyuncuların hile yapmasına izin vermek oyununuza değer katabilir . Oyuncuların oyunu farklı bir şekilde deneyimlemelerine olanak tanır ve oyunun uzun süreli zevkini artırabilir.


5
Yine de birisinin birkaç saat içinde iyi bir şeyle geldiğini düşünemiyorum. Ve muhtemelen ihtiyaç duymadığınız bir şey için kaynakları boşa harcarsınız.
Aistis

6
"Çevrimdışı bir oyun olduğunda, neden rahatsız ediyorsun?" Ya çevrimiçi yüksek skorlara sahip tek oyunculu bir oyunsa?
Şapkalı Adam

19
"oyuncuların hile yapmasına izin vermek oyununuza değer katabilir" - bu açıklama için oy verildi. Belli bir ustalık seviyesine ulaşana kadar kazandığım tecrübenin bir bölümünü kilitlemeye karar veren oyunlardan gerçekten çok kızgınım ve bu durumlarda, oyunun tamamının kilidini açmak için hilelerin mevcut olmasına sevindim. Mesela, daha eski Need for Speed parçalarında AI'ya karşı yarış turnuvalarında tamamen kayboldum ; benim için zevk, daha çok çeşitli manzaraları seyretmekten ibaretti, bu yüzden genellikle yarışı atlayıp tüm haritaların ve arabaların kilidini açarım. Bunu önleyen bir oyun beni rahatsız ederdi.
VEYA Eşleştiricisi

6
"Hem matematik hem de bilgisayar bilimlerinde en az bir doktora dereceniz olmadığı sürece" olarak yeniden yazılmış ", en azından hem matematik hem de bilgisayar bilimlerinde doktora almak için gerekli olan bilgilere sahip olmadığınız sürece" (ve hatta en azından, Almanya'da, kurslar genellikle kripto ile ilgili olmayan şeylerle doludur). İnsan doğasında doktora yapmak için bir dereceye ihtiyaç duymaz.
phresnel

5
@phresnel Teknik olarak haklı olsanız da, bir doktora teorik bir konudaki uzmanlığının güvenilir kurumlar tarafından verilen standart bir ölçütüdür. Bu yüzden doktora yapmak için gereken bilgi ve beceri miktarı için bir steno olarak kullanmak mantıklı. Başka bir deyişle: OP'nin ne anlama geldiği yeterince açık :-)
Tobia

10

Yerel olarak şifrelemek ve şifresini çözmek için anahtarı programınıza kaydetmeniz gerekir, böylece insanlar kodunuzu sökerlerse şifrelemeyi kırabilirler. Anahtarları şaşırtmak için hileler vardır, ancak özel bir saldırganla bile anahtarı bulabilir ve daha sonra görmeye daha az adanmış olan herkes için çevrimiçi olarak gönderebilirsiniz. Şifrelemenin önlediği tek şey, onaltılı bir düzenleyici kullanan insanlardır - bunu sıkıştırmayla ve dosyayı bir unzip programı tarafından okunamaz hale getiren herhangi bir şeyi kolayca kandırabilirsiniz. Örneğin, verinin önüne bir bayt ekleyin.

Alternatif olarak, dosyanın sonuna savefile dosyasının md5'ini ekleyebilirsiniz, böylece bir dosyanın tahrif edilmiş olup olmadığını göreceksiniz. Bunu daha sonra tasarruf oyununu yüklemeyi reddetmek veya destek biletlerini uygun şekilde işaretlemek için kullanabilirsiniz, böylece manuel olarak değiştirilen tasarruf oyunlarının neden olduğu sorunlara zaman kaybetmezsiniz. Yine, bu kodunuzu okuyabilen herhangi biri tarafından atlatmak için çok önemlidir.

Cihazlarındaki ikili dosyalara erişimi olmayan biri tarafından engellenemeyecek bir şey istiyorsanız, programın bir bölümünü kontrol altında olan bir sunucuda çalıştırmanız gerekir.

Son sorunuzu yanıtlamak için, bir anahtar artı şifreleme türü şifrelemek / şifresini çözmek için uygulanması gereken kesin algoritmayı tanımlamaktadır. Nasıl yapılacağını tanımlayan bir algoritma olmadan verileri şifreleyemez / şifresini çözemezsiniz.


İkinci noktan çok hoş. Ayrıca, dosya bozulması durumunda sorunların izlenmesine yardımcı olabilir.
knowledge_is_power

4

Aktüel kaydetme verisinin dönüştürülmüş SHA256 karmasını kaydetme dosyasında saklayın.

Saklanan karma değeri, yüklediğiniz verilerin SHA256 değeriyle karşılaştırın.

Bu eşleşmezse, dosyayı aldatmış veya bozmuşlardır.

Netleştirmek için düzenleyin: bu, hile önleme sistemini kırmayı zorlaştırır , ancak yine de mümkün olur .


7
Hiçbir şey, insanları değişiklikleri yaptıktan sonra hash'ı yeniden hesaplamaktan alıkoyamaz. Ayrıca, neden SHA-256 (imzalar için) veya bcrypt (şifreler için) gibi çok daha iyi alternatifler mevcutsa, bilinen MD5 algoritmasını tüm bilinen kriptografik zayıflıkları ile savunan insanlar olduğunu hala anlamıyorum.
Philipp

1
Basit, hızlı ve tamamen kırılmış.
DeadMG

2
@DeadMG Kullanıcı, anahtarı içermesi gereken ikili dosyalara erişime sahip olduğundan tasarım nedeniyle bozulmuştur. Daha güçlü bir karma kullanmak veya dosyayı AES gibi bir şeyle şifrelemek, kaynak kaybı ve kötü bir tasarım olacaktır, çünkü ek güvenlik sağlamaz, ancak maliyet ekler. +1 çünkü aşağı oylama hak edilmedi.
Peter - Unban Robert Harvey

7
@Philipp, çünkü bu durumda MD5 açıkça SHA-256'dan üstündür. Tanımlanan yaklaşımın gerektirdiği şey, tam olarak MD5'in olduğu ucuz bir checksum algoritmasıdır.
Peter - Unban Robert Harvey

3
@ Transistör09 Tamamen müşteri tarafındaysa, hiçbir şeyi garanti edemeyiz ve sağlama toplamı, müşterinin her şeyi şifrelemesi kadar çalışır. Her iki durumda da kırılabilir.
Lolums,

1

Standart bir şifreleme algoritması kullanırdım (çünkü kaydedilen dosyada kripto analizi yapmayı zorlaştırır), ancak en çok kullanılan ilk beşinden birini kullanmaz ve kodunuz boyunca gizler (çünkü hangi algoritmayı anlamasını zorlaştırır) nerede ve anahtar nerede?)

Şifreleme algoritmasını kodunuza gizlemek için: açık kaynak kodlu bir versiyon alın, akışını (hangi fonksiyonlar hangi sırayla diğerini çağırır) anlayın, ardından tüm değişkenleri yeniden adlandırın, alanları ve fonksiyon adlarını (sadece emin olmak için) yapılayın ve fonksiyonların yayılmasını sağlayın kod tabanınızın her yerinde, farklı nesnelerde ve modüllerde, muhtemelen uygulamalarını geçici olarak da ayırma (şifreleme işleminin bir parçasını gerçekleştir, sonra başka bir şey yap, sonra bazı ms'ler görünmeyen bir kod parçasından geri döndükten ve başka bir aşama gerçekleştirdikten sonra) şifreleme ve benzeri.) Anahtar, çalışma zamanında şifreleme algoritmasının çeşitli gizli bölümleri tarafından erişilen, sınıflarınızda görünüşte ilgisiz sabitler gibi aynı şekilde gizlenebilir.

Bütün bunların ekonomik anlamda anlamlı olup olmadığı tamamen bir başka konudur.


Bilmiyorum ... Sadece bir oyun için onu zorlaştırıyor ... Ama yardımın için teşekkürler! Elimden geleni yapacağım!
Daniel Béjar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.