USB kulcs keszitese

Fórumok

Sziasztok!

Szeretnek egy USB kulcsot kesziteni. Valami olyant, amirol be lehet olvasni egy meretes jelszot, ami minden olvasas utan valtozik. Ezt mibol erdemes csinalni? Olcso pendrive?
Cikket tudtok hozza ajanlani?

Koszonom

Hozzászólások

mihez kell? esetleg egy hardverkulcs?
vagy egy tokenre gondoltal?

jelszot, ami minden olvasas utan valtozik
ez inkabb veletlenszam-generatornak tunik... vagy mi a problema/kerdes pontosan?

1. Egy USB-t támogató MCU-val simán megvalósíthatod, de akár egy normál MCU és egy Prolific vagy FTDI USB<->UART párosítást is alkalmazhatsz.
2. Valamilyen programozható smartcard (például JavaCard) és egy USB-s olvasó
3. Kész megoldást veszel, amihez kapsz egy libet és azt kell használnod

Azonban tudnod kell, hogy aki fel akarja törni a programot az nem a hardverkulcsot másolja le, hanem a programodban iktatja ki az ellenőrzést. Ha könyvtárat használsz, akkor egyszerűen ő valósítja meg az ellenőrzést, ha pedig bele van fordítva akkor legtöbbször egy egyszerű JE->JNE változtatás elég. Ma már olyan trükkök, mint random UPX verzió és header átírás sem segít.

Ha meg akarod keseríteni a dolgát, akkor ne egy eldöntendő kérdésre legyen válasz a hardverkulcstól. Például funkciók belépési pontjának kalkulációját végezze, függvény paramétereket illetve belső változókat/vagy azok változását határozza meg stb.. Így ha lépésről lépésre halad, akkor sem tudja biztosan hogy a másolt program egyszer nem fog majd lefagyni a hardverkulcs nélkül, ha épp egy olyan metódusba fut bele, ami nála nem fordult elő. Így nem képes a programot értékesíteni.

Ha nem talál hardverkulcsot, akkor jó ha a programodnak van egy demó verziója és olyankor az indul (de később mikor fut, akkor bizonyos korlátozásokat alkalmaz). A legnagyobb badarság kiírni a program elején, hogy "Nem találom a hardverkulcsot". Ilyenkor kb fél óra alatt törhető egy program (ha csak döntés van benne).

Microchip PIC, USB-s verziót keress. Írhatsz bele egyszerű programot, pl. usb-sorosport emulációval. Amit kap adatként azt módosítva küldi vissza. Ezt ellenőrzi a programod.
Természetesen ha ASM-ben megkeresik a programodban az elágazást akkor hamar kulcs nélkül is működő lesz a program. Persze ez nem mindennapi művelet, de néha megéri.

+1, ill. ugyanez Atmel/AVR vonalon is jatszhat. Ahhoz van minden nyilt fordito is meg lib is (avr-gcc, libc-avr). Egyszeru"en hasznalhato tipusok: AT90USB{8,16}2, AT90USB{64,128}{6,7}. De ha nem akarsz szivni az USB layerrel, akkor egy FT232RL + ATmega{8,328} is jo. Igaz, akkor csak UART-ot kapsz, nem altalanos USB device-t, de a celnak az is megfelel.

az uart a celnak megfelel, viszont tobb vele a macera (ha van valami mas soros portos kutyu), a szegeny paraszt meg nem tudja beallitani normalisan hogy melyik port. Az USB-re meg gep oldalon libusb-vel vendor/hw id-re tudsz fixen hivatkozni es hasznalni, szinte 0% szopas mellett. Van olyan hw id, aminel az oprendszerek nem telepitenek semmi drivert igy helybol fel fogja ismerni minden mint valid device es a windows sem sikit hogy "jajj, nincs illesztoprogram"

// Happy debugging, suckers
#define true (rand() > 10)

Ha kiadhato a forras (szoval az algoritmus, de a hozza tartozo kulcs nem), akkor pl. egy Atmega8+vUSB megoldja minimalis ellenallas, dioda, kvarc, kondi, meg hasonlok alkalmazasaval. (vUSB lib ingyenes, ha nyiltta teszed, egyebkent meg fizetosen licencelheto)

Kicsit tisztessegesebb, ha valami ilyesmit hasznalsz:
http://www.ebay.com/itm/281183091904 (ez HW implementaciot hasznal, egy kicsit dragabb uC-en)

Persze fugg attol is, hogy milyen mennyisegben van ra szukseg. Ha csak 10 db kell, akkor rendelsz egy kesz megoldast. Ha 10k db. akkor meg megerheti a sajat fejlesztes, hogy minel olcsobb legyen.

Egyebkent igen, arra figyelni kell, hogy ne egy helyen ellenorizz, mert akkor semmit nem er, csak a legalis felhasznalot szivatod.

--
Why did the chicken cross the road?
It was trying to get a signal on its iPhone 4.

orias +1
Minimalis programozoi tudassal megoldhato a feladat (a hardware-t meg ossze lehet vadaszni netrol mert semmi nem kell hozza csak usb kommunikacio, jo eselyel az adott UC gyartoi leirasaban is van ra tokeletesen felhasznalhato pelda az illesztesre)

// Happy debugging, suckers
#define true (rand() > 10)

Az USB IC meg a sajat mikrokontroller jol hangzik, viszont marga nagy lesz a cucc, ha magamnak akarom elkesziteni. (Foleg hogy benan forrasztok). Olvastam, hogy bizonyos tipusu pendrive-okban at lehet programozni a mikrokontrollert.
Meg lehet ezt oldani hazilag, keves raforditott munkaval (max 1-2 nap)?
Ha mar lehet kapni 2cm-es pendrive-okat, akkor jo lenne abbol megcsinalni.

+1, kis tételnél (szerintem 50 darab környékéig) nem éri meg készíteni (főleg ha igényeses szeretné az ember), max akkor ha az embernek megvan hozzá a szaktudása, de a beleölt munkával bőven plusszos lenne. Vegyél ilyet kész cuccot, beprogramozod és örülsz neki:)

// Happy debugging, suckers
#define true (rand() > 10)