Pókerszoftverünk adatvédelmi jellemzői
Szoftverünk adatvédelmi jellemzői
A felhasználók számítógépein futó kliensek és szerverünk kizárólag titkosított adatokat küldenek egymásnak. Fontos tudni, hogy a szó szoros értelmében véve a titkosítás önmagában még nem biztosítja az adatok védelmét. Egy olyan terem például, amely használ ugyan titkosítást, viszont valamennyi játékos kézbe osztott lapjainak adatait elküldi az összes kliens számára, nem biztonságos. Ezért tettünk komoly erőfeszítéseket biztonsági rendszerünk és előírásaink kidolgozására
FONTOSABB BIZTONSÁGI JELLEMZŐK:
Programletöltés:
A biztonság fontosságának kérdései először a kliensprogramnak a PokerStars webhelyéről való letöltése során merülnek fel. Gondoskodnunk kell arról, hogy a letöltött szoftver módosításoktól mentes legyen. E követelmény teljesítése érdekében a következő funkciókat építettük be a kliens telepítőprogramjába:
- A végrehajtható telepítőfájl egy RSA 2048 bites kódaláíró tanúsítványt használ, ami a Rational Services Ltd részére lett kiállítva és a VeriSign, egy nyilvános tanúsítványkibocsátó hatóság engedélyezte, és webböngésződ segítségével lehet érvényesíteni.
- Ez biztosítja, hogy a kliens telepítőprogramja valóban a szoftvert készítő PokerStarstól származik.
- Megakadályozza, hogy a kliens telepítőprogramját a készítés és a saját számítógépedre való telepítés közti időben bárki megváltoztassa.
Biztonságos játékfolyamat:
Játékaink folyamatának biztonságát számos beépített funkció segítségével védjük.
- Szervereink hitelesítésére kliensprogramunk a saját tanúsítványkiadónk (CA) által kibocsátott tanúsítványokat használja.
- Kliensprogramunk az iparágban elfogadott TLS protokollon keresztül kommunikál. Jelenleg 2048 bites RSA-kulcsot használunk, amely az RSA állásfoglalása szerint megfelelő 2030-ig. Kiszolgálóink titkos kulcsait háromhavonta cseréljük, ami jó biztonsági ráhagyást jelent. A munkamenetek során AES128-SHA (128 bites) és DES-CBC3-SHA (168 bites) ciphereket alkalmazunk.
- Más játékosok gépeire soha nem küldünk el olyan magánjellegű adatokat, mint például a kézbe osztott lapok (kivéve a játékszabályokban foglaltak esetén).
- Szerveroldalról minden kliens adatbefogadás érvényesítve van.
ÖSSZEJÁTSZÁS
Az összejátszás a csalás egy formája. Lényege, hogy két vagy több játékos tájékoztatja egymást a kezükben lévő lapokról egy játékban, vagy más módon működik együtt a velük egy asztalnál ülő többi játékos kárára.
Míg egyetlen leosztás lejátszása alatt online egyszerűbb információkat megosztani, mint élőben, a csalás leleplezését jóval nehezebb elkerülni, mivel játék után lehetőség nyílik valamennyi játékos lapjainak megvizsgálására.
Bármilyen kifinomult is legyen az összejátszás módszere, a leosztás lejátszásának menete mindenképpen el fog térni attól, mint ami összejátszás nélkül várható lenne. Ellenőrzési módszereink kiszűrik a szokatlan mintákat követő játékokat, illetve felhívják ezekre biztonsági munkatársaink figyelmét, akik ezt követően alapos manuális vizsgálatot végeznek. Kivizsgáljuk valamennyi játékosunk összejátszás gyanújáról szóló jelentését is.
Azon játékosok számláit, akiről bebizonyosodik, hogy bármilyen formában összejátszottak másokkal, véglegesen megszüntetjük.
KEVERÉSEK
„Aki véletlen számjegyeket generáló számtani módszereket igyekszik kidolgozni, az természetesen a bűn állapotában leledzik.” – Neumann János, 1951
Tisztában vagyunk azzal, hogy programunk szempontjából kritikus jelentőséggel bír az igazságos és semmilyen sémát nem követő keverési algoritmus alkalmazása. A 1. forrásmunkában leírt súlyos problémák elkerülése érdekében két, egymástól független forrásból nyerünk valóban véletlenszerű adatokat:
- A felhasználói adatbevitel különféle formáiból, melyek között szerepelnek az egérrel végzett mozgások, illetve a kliensprogramoktól begyűjtött összefoglalókból származó eseményidőzítések.
- A Quantis nevű, a svájci illetőségű ID Quantique cég által kifejlesztett valódi hardveres véletlenszám-generátorból (2. forrásmunka), mely az entrópia forrásaként eredendően véletlenszerű kvantumjelenségeket használ.
Ez a két forrás külön-külön is elegendő entrópiát biztosít az igazságos és semmilyen sémát nem követő keverésekhez.
A keverések főbb jellemzői:
- Egy 52 lapból álló kártyacsomag 52! különféle módon keverhető meg. Az 52! körülbelül akkora, mint 2 a 225. hatványon (egészen pontosan 80 658 175 170 943 878 571 660 636 856 404 000 000 000 000 000 000 000 000 000 000 000 000 különféle keverési lehetőségről van szó). Az egyenletes és nem megjósolható statisztikai eloszlás elérése érdekében mindkét entrópiaforrásunkból (a felhasználói adatbevitelből és az eredendően véletlenszerű kvantumjelenségekből) 249 bitet használunk fel.
- Ezen túlmenően kiegészítő szabályokat vezettünk be a véletlenszerűség kívánt mértékének elérése érdekében. Ha például a felhasználói adatbevitelből nem nyerhető szükséges mértékű entrópia, akkor mindaddig nem kezdjük meg a következő leosztást, amíg azt a Quantis véletlenszám-generátorból ki nem nyerjük.
- A biztonság szintjének emelése érdekében a két forrásból begyűjtött entrópiát az SHA-1 titkosítási hash-algoritmus alkalmazásával egyesítjük.
- A felhasználói adattámadásokkal szembeni védelmének, illetve a még fokozottabb biztonság elérésének érdekében SHA-1-alapú pszeudo-véletlengenerátort is alkalmazunk.
- A véletlenszerű bitfolyamokat egyszerű és megbízható algoritmus alkalmazásával konvertáljuk át a szükséges tartományon belülre eső véletlen számokká. Tegyük fel például, hogy a 0–25 tartományon belül szeretnénk véletlenszerűen kiválasztani egy számot.
- Ha 5 véletlenszerűen meghatározott bit áll rendelkezésünkre, akkor egy 0-nál nem kisebb és 31-nél nem nagyobb számot fogunk kapni.
- Amennyiben 25-nél nagyobb számot kapunk, úgy azt egyszerűen elvetjük, és újrakezdjük a folyamatot.
- E módszer segítségével kiküszöbölhetők a konvertáláshoz modulusműveleteket alkalmazó módszerek egyenetlenségei. Az utóbbiak nem megbízhatóak akkor, ha a konvertálandó tartomány elemeinek számát a kívánt tartomány elemeinek számával elosztva nem egész érték lesz az eredmény.
- Magát a keverési műveletet egy másik egyszerű és megbízható algoritmus alapján végezzük el:
- Először véletlenszerűen kiválasztunk egy lapot az eredeti pakliból (52 különféle lehetőség adott). E választás után az eredeti pakliban 51, míg az új pakliban 1 lap lesz.
- A második lépésben egy újabb lapot választunk ki véletlenszerűen az eredeti pakliból (ekkor 51 különféle lehetőség adott), majd azt az új pakli tetejére helyezzük. A második választás után az eredeti pakliban 50, míg az új pakliban 2 lap lesz.
- A második lépést mindaddig ismételjük, amíg az eredeti pakliból az összes lap át nem kerül az új pakliba.
- Ez az algoritmus mentes a „keverések rossz eloszlásától”, melyet a 1. forrásmunka ír le.
A PokerStars keverési algoritmusa
A PokerStars részletes tájékoztatást adott véletlenszám-generátoráról (RNG) egy független szervezet számára. Ezt a megbízható forrást arra kértük, hogy alaposan elemezze az RNG kimenetét jellemző véletlenszerűséget, illetve annak a PokerStars lapjainak keverésében alkalmazott megvalósítását.
A független szervezet teljes hozzáférést kapott a forráskódhoz és igazolta, hogy keverési módszerünk véletlenszerű és biztonságos. További részletek az online véletlenszám-generátorról szóló oldalunkon olvashatók.
[1] "How We Learned to Cheat at Online Poker: A Study in Software Security" -
http://www.cigital.com/papers/download/developer_gambling.php
[2] http://www.idquantique.com/products/quantis.htm