Ohjelman tekijän oikeuksien varmistus

Ajettavan ohjelmakoodin voi muuttaa jonkinlaiseksi lähdekoodiksi josta voi tutkia ohjelman toimintaa ja muuttaakin sitä. Kaiken ohjelmakoodin voi muuttaa ainakin assembler-listaukseksi, vaikkakin sellainen on hankalaa ja työlästä tohtoroida. Esimerkiksi Java-ohjelman voi muuttaa ihan Java-kieliseksi lähdekoodiksi jota on helppo lukea. Eräät softat kuten PHP:llä tehdyt ovat vain lähdekoodia jota pystyy suoraan lukemaan ja muokkaamaan. Tätä voidaan pitää etuna, mutta se voi olla myös ongelma.

Jos PHP-kielinen ohjelma toimitetaan asiakkaan koneeseen niin tämä pääsee samalla suoraan käsiksi sen lähdekoodiin. Jos ohjelmassa on piirteitä joilla pyritään varmistamaan sen tekijän oikeudet ja estämään softan myyminen edelleen, ovat tällaiset piirteet ohjelman lähdekoodista normaalisti helposti kytkettävissä pois päältä.

Esimerkiksi jos ohjelmassa tarkistetaan lisenssitiedosto tyyliin ...
JOS ( lisenssin_tarkistus )
NIIN jatka_ihan_normaalisti
MUUTEN päästä_helvetti_irralleen
... niin se on helposti muutettu kommentoimalla tarkistus ja suorituksen keskeytys pois ...
// JOS ( lisenssin_tarkistus ) NIIN
jatka_ihan_normaalisti
// MUUTEN päästä_helvetti_irralleen
... jolloin lisenssiä ei edes tarkisteta, eli ohjelma toimii ihan normaalisti ilman lisenssitiedostoa.

Herää kysymys onko olemassa ohjelmointimenetelmä joka tekisi ohjelman luvattoman muokkauksen vaikeaksi vaikka asiakkaalla onkin sen lähdekoodi. Tällainen ei saisi kohtuuttomasti vaikeuttaa ohjelman luvallista ylläpitoa. Voiko ohjelmassa olla jokin kriittisen tärkeä osa jota ilman se on hyödytön ja jonka oikein toimimiseksi tarvitaan "avain" joka liitetään tuohon osaan kuin lukon avain työnnetään oven lukkoon? Voiko ohjelman eri osat rakentaa ylläpitoa estämättä niin vaikeasti tulkittaviksi että niitä ei osaa toisiinsa yhdistää ellei tunne jotakin salaisuutta? Voivatko ohjelman osat olla kuin putkilla kytkettyjä johonkin funktioon johon vasta lisenssitiedostosta saatava kryptattu avaintieto tarjoaa oikean putkituksen toiminnosta toiseen? Jossakin hyvin erikoisessa überteknisessä ohjelman osassa (yksittäinen salainen spesiaalialgoritmi) näin voisi ehkä ollakin, mutta tällainen menetelmä täytyisi soveltua ihan tavalliseen toimistosoftaankin ollakseen yleisesti hyödyllinen.

Onko tiedossa viitteitä tällaisesta tai tämäntapaisesta ohjelmointiparadigmasta joka mahdollistaisi ohjelman järkevän ylläpidon, mutta tekisi sen luvattomasta muokkaamisesta hyvin vaativaa?

Tässä toki on perusoletuksena että softan muokkaus on tekijän ja asiakkaan välisellä juridisesti sitovalla sopimuksella kielletty, sillä eihän se muuten voi näin mennä.
7337
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Ohjelman käyttäjällä taas on syytä pyrkiä aivan toiseen suuntaan. Käyttäjän tulisikin saada ohjelmakoodi omaan käyttöönsä. Tällöin olisi ehkä hyvinkin kalliin ja elintärkeän ohjelman toiminta turvattu myös poikkeusoloissa. Esimerkiksi ohjelman tekijän konkurssissa.

Äänestä

Voithan toki ajaa skiptin jonkun obfuscaattorin läpi, jolloin koodista tulee mössöä josta on vaikeata ottaa selvää.
http://www.google.fi/search?q=php obfuscator

Tai sitten jotain ohjelmaa joka kryptaa php koodin:
http://www.google.fi/search?q=php encryption software

Kannattaa kuitenkin miettiä onko se sen arvoista. Potentiaaliset asiakkaat voi valita muun tuotteen, jos ne eivät voi tehdä pienintäkään muutosta itse.

Ylläpidettävyys tietysti myös kärsii, koska "suoajttuun" koodiin ei voi välttämättä tehdä enää muutoksia.

Äänestä

Kaikki suojaustekniikat, jotka EIVÄT vaikeuta suojattavan asian normaalia käyttöä ovat käytännössä kierrettävissä tavalla tai toisella. Liikaa vaivaa saatuu hyötyyn nähden. Monet ohjelmat olivat 90-luvulla suojattu donglella, mutta lopulta ne ovat osoittautuneet turhan hankaliksi käyttää. Vaivaa käyttäjälle ja toimittajalle.

Nykyään ohjelmoinnista jotain ymmärtävä yhteisö on tarkkana erilaisista asioita, eikä kopioidulla koodilla kovin pitkälle pötki. Tästä mm. Microsoftille langetettu Officen myyntikielto USAssa, koska se oli käyttänyt jonkun Kanadalaisen yrityksen XML:n käsittelyyn tarvittavaa koodia.

Usein jos tehdään asiakastoimituksia, niin lähes aina tehdään sopimus, jossa asiakas saa käyttöoikeuden tehtyyn tuotokseen, mutta tekijällä säilyy myös käyttöoikeus tuotokseen.

Yleensäkin ohjelmiston ylläpito on tarpeeksi hankalaa ilman mitään kommervenkkejä. Obfuskointia käytetään mm. Javan kanssa kun toimitetaan vain binääri ilman lähdekoodia. Keskimäärin koodareiden tuottama koodi on riittävän kryptistä ilman obfuskointiakin ;-)

Äänestä
  • Obfuskoitukin koodi luonnollisesti on tulkittavissa. Eihän sitä pystyisi muuten ajamaankaan. Minkä yksi osaa "kryptata", osaa toinen "murtaa". Vaikka olisi miten kryptattu, mutta kun ajoympäristö saa siitä jotakin tolkkua niin eihän se oikeasti voi olla käsittämätöntä.

    Minusta ainoa todellinen turva on siinä että asiakasta kielletään jakelemasta ja muuttamasta softaa tekijän ja asiakkaan välisellä juridisesti sitovalla sopimuksella. Käyttämistä tietenkään ei kielletä.

    Kun softa tarkistaa asiakaskohtaisen digitaalisesti allekirjoitetun lisenssin ja muutokset on kielletty juridisesti sitovalla sopimuksella niin tekijän oikeudet ovat niin turvassa kuin ne voivat olla. Lisenssin tarkistus on teknisesti helppo estää, mutta se merkitsee tehdyn sopimuksen rikkomista.

    Äänestä

  • "Keskimäärin koodareiden tuottama koodi on riittävän kryptistä ilman obfuskointiakin ;-)"

    Ehkä yksi ohjelmoijan (ainakin omalta osaltani kuulun joukkoon) eniten vihaama painajainen, toisen tuottaman, kenties vanhemmankin ohjelman pätkän, päivitys tai bugifixaus, oikea painajainen silloin kun koodi täynnä lippuja ja ehtoja, ja kommentointi tyyliin: Is it true ;)

    Nykyään liian vähän tahtoo nähdä hyvän näköistä ohjelmaa, kun väkisin halutaan sinne koodiin lätkiä sitä "muka hienoa" sontaa, tai ihan laiskuuden pohjalta jätetään perusasioita tarkistelematta..

    Meni yli tämän ketjun aiheen, mutta pakko purkaa joskus traumoja pois =)

    Äänestä

"... ohjelmointimenetelmä joka tekisi ohjelman luvattoman muokkauksen vaikeaksi vaikka asiakkaalla onkin sen lähdekoodi. ... Tällainen ei saisi kohtuuttomasti vaikeuttaa ohjelman luvallista ylläpitoa. ..."

Ei ole, sillä kaikki menetelmät mitkä sotkevat koodia, yms. hankaloittvat myös luvallista muokkausta sekä ylläpitio, niin asiakkaan kuin tekjiäosapuolen päässä.

Äänestä

että sitä ei kukaan muu kuin lisenssinhaltija käytä. Abduktio on erittäin yksinkertainen toimenpide eikä laillisen lisenssin haltija huomaa mitään.

Äänestä

Kommentoi aloitusta


ohjelman rakenteella kirjoitti:

Ajettavan ohjelmakoodin voi muuttaa jonkinlaiseksi lähdekoodiksi josta voi tutkia ohjelman toimintaa ja muuttaakin sitä. Kaiken ohjelmakoodin voi muuttaa ainakin assembler-listaukseksi, vaikkakin sellainen on hankalaa ja työlästä tohtoroida. Esimerkiksi Java-ohjelman voi muuttaa ihan Java-kieliseksi lähdekoodiksi jota on helppo lukea. Eräät softat kuten PHP:llä tehdyt ovat vain lähdekoodia jota pystyy suoraan lukemaan ja muokkaamaan. Tätä voidaan pitää etuna, mutta se voi olla myös ongelma.

Jos PHP-kielinen ohjelma toimitetaan asiakkaan koneeseen niin tämä pääsee samalla suoraan käsiksi sen lähdekoodiin. Jos ohjelmassa on piirteitä joilla pyritään varmistamaan sen tekijän oikeudet ja estämään softan myyminen edelleen, ovat tällaiset piirteet ohjelman lähdekoodista normaalisti helposti kytkettävissä pois päältä.

Esimerkiksi jos ohjelmassa tarkistetaan lisenssitiedosto tyyliin ...
JOS ( lisenssin_tarkistus )
NIIN jatka_ihan_normaalisti
MUUTEN päästä_helvetti_irralleen
... niin se on helposti muutettu kommentoimalla tarkistus ja suorituksen keskeytys pois ...
// JOS ( lisenssin_tarkistus ) NIIN
jatka_ihan_normaalisti
// MUUTEN päästä_helvetti_irralleen
... jolloin lisenssiä ei edes tarkisteta, eli ohjelma toimii ihan normaalisti ilman lisenssitiedostoa.

Herää kysymys onko olemassa ohjelmointimenetelmä joka tekisi ohjelman luvattoman muokkauksen vaikeaksi vaikka asiakkaalla onkin sen lähdekoodi. Tällainen ei saisi kohtuuttomasti vaikeuttaa ohjelman luvallista ylläpitoa. Voiko ohjelmassa olla jokin kriittisen tärkeä osa jota ilman se on hyödytön ja jonka oikein toimimiseksi tarvitaan "avain" joka liitetään tuohon osaan kuin lukon avain työnnetään oven lukkoon? Voiko ohjelman eri osat rakentaa ylläpitoa estämättä niin vaikeasti tulkittaviksi että niitä ei osaa toisiinsa yhdistää ellei tunne jotakin salaisuutta? Voivatko ohjelman osat olla kuin putkilla kytkettyjä johonkin funktioon johon vasta lisenssitiedostosta saatava kryptattu avaintieto tarjoaa oikean putkituksen toiminnosta toiseen? Jossakin hyvin erikoisessa überteknisessä ohjelman osassa (yksittäinen salainen spesiaalialgoritmi) näin voisi ehkä ollakin, mutta tällainen menetelmä täytyisi soveltua ihan tavalliseen toimistosoftaankin ollakseen yleisesti hyödyllinen.

Onko tiedossa viitteitä tällaisesta tai tämäntapaisesta ohjelmointiparadigmasta joka mahdollistaisi ohjelman järkevän ylläpidon, mutta tekisi sen luvattomasta muokkaamisesta hyvin vaativaa?

Tässä toki on perusoletuksena että softan muokkaus on tekijän ja asiakkaan välisellä juridisesti sitovalla sopimuksella kielletty, sillä eihän se muuten voi näin mennä.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu