ChatGPT on tehty kielen mallintamiseen ja ohjelmointi on konekielellä ilmaisemista, joten on helppo kuvitella, että ChatGPT soveltuu hyvin ohjelmointiin, mutta tämä ei ole aivan yksinkertaista. Alla oleva perustuu osin toisen vuoden tietojenkäsittelyn opiskelijoille tehtyyn demonstraatioon.

Kirjoittaja: Aki Vainio

Tekoälyt ovat olleet jatkuvan keskustelun alla kuukausia. Ymmärrettävästi tämä kiinnostaa erityisesti tietojenkäsittelyn opiskelijoita, koska tekoälyt ovat osa alaa, mutta myös siksi, että yksi usein ehdotetuista käyttökohteista tekoälylle on ohjelmointi.

Tekoälyt pystyvätkin tekemään yksinkertaista ohjelmointia. Esimerkiksi ChatGPT korostaa usein olevansa kielen mallintamisen työkalu ja pohjimmiltaan ohjelmointi on vain hyvin vahvasti rakenteellisella kielellä ilmaisemista. Tässä suhteessa ohjelmointi on siis näille työkaluille helpompaa kuin luonnollinen kieli. Ohjelmointikielet on rakennettu koneellisesti käsiteltäviksi, kun taas luonnolliset kielet ovat usein vapaamuotoisia, tulkinnanvaraisia ja riippuvaisia kontekstista. Esimerkiksi Business Insider (Mok & Zinkula 2023) on listannut ohjelmoijat ammateiksi, jotka kärsivät tekoälyn noususta.

Kaikki tämä ei kuitenkaan tarkoita, että esimerkiksi ChatGPT olisi hyvä ohjelmoinnissa. Se kirjoittaa koodia nopeammin kuin ihminen, mutta kysymys ei ole välttämättä juuri nopeudesta. Tekoälyjen kirjoittamat ohjelmat ovat esimerkiksi olleet ongelmallisia tietoturvan näkökulmasta (Wiggers 2022), mutta tekoäly saattaa muutenkin ymmärtää asioita väärin tai tehdä huonoja ratkaisuja.

Foneettisten salasanat ja ChatGPT

Foneettisella salasanalla tarkoitetaan salasanaa, joka muistuttaa rakenteeltaan ihmiskieltä, mutta ei ole sitä. Tarkoituksena on löytää salasana, joka on helppo muistaa, mutta hankala tietokoneelle arvata. Tähän tarkoitukseen saatetaan käyttää apuna vaihtoehtoisia merkkejä kirjainten tilalta salasanan vahvuuden kasvattamiseksi.

Opetuksen näkökulmasta foneettisten salasanojen luominen on hyvä esimerkkitapaus ChatGPT:n käytöstä ohjelmoinnissa, koska ongelma on tekoälyn näkökulmasta vaikeasti hahmotettava, vaikka ChatGPT tekee sitä samalla itsevarmuudella kuin mitä tahansa muutakin koodausta. Lopputulos ei ole kuitenkaan hyvä.

Pyydettäessä kolmea algoritmia foneettisten salasanojen tekemiseksi, ChatGPT (2023a) ehdotti:

  1. Muodostetaan satunnaisia, lausuttavissa olevia sanoja satunnaisesta yhdistelmästä konsonantteja ja vokaaleja,
  2. Käytetään NATO-aakkosia,
  3. Luodaan salasana satunnaisesti luoduista tavuista.

On tärkeää huomioida, että mikään näistä ei ole algoritmi. Ensimmäinen kuvaa vain tavoitetta algoritmille ja kaksi muuta kuvaavat ajatusta, jonka pohjalta algoritmin voisi suunnitella. Lisäksi toinen vaihtoehto on äärimmäisen huono tietoturvan näkökulmasta. Se antaa käyttäjälle mielikuvan pitkästä salasanasta, mutta jos tämä on menetelmänä yleisesti käytetty ja tunnettu, salasanat ovat todella heikkoja, kun neljän NATO-aakkosen muodostama vähintään 16 merkin salasana on vain neljän merkin pituinen tietokoneelle.

ChatGPT:n toteutukset näille olivat myös huonoja. NATO-aakkosiin perustuva ratkaisu voi tuottaa salasanoja, joiden pituus on vain yksi NATO-aakkonen eli minimissään neljä merkkiä, mutta se voi olla myös 50 NATO-aakkosen pituinen. Jostain syystä ChatGPT näkee tarpeelliseksi myös lisätä jokaisen NATO-aakkosen jälkeen välilyönnin, jolloin salasanaa ei voi käyttää sellaisenaan. (ChatGPT 2023b)

Kahteen muuhun vaihtoehtoon ChatGPT tarjosi ratkaisuja, jotka olivat keskenään lähes identtiset. Tämä näkyy myös näiden tuottamista salasanoista, jotka ovat turvallisia, mutta eivät täytä foneettisen salasanan vaatimuksia. ChatGPT teki myös outoja ratkaisuja, kuten käytti kahta identtistä vokaalien taulukkoa. (ChatGPT 2023c; ChatGPT 2023d)

ChatGPT ei myöskään tuntenut kumpaakaan yleisesti käytettyä menetelmää foneettisten salasanojen luomiseen. Hyvin yksinkertainen menetelmä perustuu valmiisiin malleihin, joissa salasanalle annetaan vakiopituus ja siihen sijoitetaan valmiiksi paikat konsonanteille ja vokaaleille, jotka arvotaan paikoilleen.

Kehittyneempi menetelmä on Markovin ketjut. Markovin ketjut toimivat stokastisesti eli seuraava tila, tässä tapauksessa merkki, perustuu nykyiseen tilaan tilastojen pohjalta laskettujen todennäköisyyksien mukaisesti. Kun pohjadatana käytetään oikeita sanoja, myös nämä stokastisesti tuotetut sanat ovat ainakin todennäköisesti foneettisia. Niistä voidaan tehdä todennäköisemmin foneettisia määrittelemällä nykyisen tilan pidemmäksi kuin yksi merkki.

Kysyttäessä suoraan asiasta, ChatGPT kertoi tuntevansa menetelmän ja antoi siitä myös toteutuksen. Tästä toteutuksesta puuttuu kuitenkin kokonaan todennäköisyyksien käyttäminen ja se valitsee automaattisesti todennäköisimmän vaihtoehdon, mikä tuottaa hyvin ennalta-arvattavia salasanoja. (ChatGPT 2023a; CHATGPT 2023e)

Lopuksi

Ohjelmoijien työpaikat ovat olleet uhattuna eri tahoilta jo pitkään. Erilaiset alustat, no-code-sovellukset ja helposti saatavilla olevat ohjelmistot eivät kuitenkaan ole vieneet työpaikkoja ohjelmoijilta, vaan ne ovat mahdollistaneet ohjelmoijien ajan käyttämisen uusiin tarkoituksiin.

ChatGPT ja vastaavat työkalut ovat hyviä apuvälineitä, jotka nopeuttavat työskentelyä, mutta toisaalta merkittävä osa siitä, mitä ne voivat tehdä, on jo tehty ja usein paljon paremmin kuin mihin nämä työkalut pystyvät. Ne tulevat vähentämään rutiinitehtäviä, mutta rutiinitehtävien vähentäminen on ollut trendi alalla jo niin kauan kuin ala on ollut olemassa.

ChatGPT onnistui kokeilussa hyvin kirjoittamaan ympärillä olevat rakenteet, joiden avulla salasanageneraattoria kutsuttiin, mutta tämä johtuu vain siitä, että tähän tarkoitukseen tehtyä koodia on ollut olemassa jo riittävästi niissä lähteissä, jotka ChatGPT:llä on ollut käytössään. Tätäkään koodia ei voi kuitenkaan hyödyntää ymmärtämättä sitä tai miten sitä käytetään, koska koodi itsessään ei tee mitään, jollei sitä pysty antamaan ohjeina tietokoneelle.

ChatGPT tai vastaavat työkalut eivät uhkaa ainakaan vielä ohjelmoijien työpaikkoja. Ohjelmointi vaatii usein mielikuvitusta ja ChatGPT:llä ei ole sitä. Sillä on käytettävissään paljon valmista koodia, jota se pystyy jossain määrin soveltamaan, mutta tässä nimenomaisessa tapauksessa se ei edes onnistunut ymmärtämään ongelman luonnetta riittävän hyvin tehdäkseen toteutusta.

Lähteet

ChatGPT. 2023a. Phonetic Password Algorithms. Viitattu 4.4.2023. Saatavissa https://akivainio.com/phonetic-passwords-discussion.html

ChatGPT. 2023b. Phonetic Passwords by ChatGPT – Algorithm 1. Viitattu 4.4.2023. Saatavissa https://akivainio.com/phonetic-password-codes/password-client.php?algorithm=2

ChatGPT. 2023c. Phonetic Passwords by ChatGPT – Algorithm 2. Viitattu 4.4.2023. Saatavissa https://akivainio.com/phonetic-password-codes/password-client.php?algorithm=1

ChatGPT. 2023d. Phonetic Passwords by ChatGPT – Algorithm 3. Viitattu 4.4.2023. Saatavissa https://akivainio.com/phonetic-password-codes/password-client.php?algorithm=3

ChatGPT. 2023e. Phonetic Passwords by ChatGPT – Algorithm 4. Viitattu 4.4.2023. Saatavissa https://akivainio.com/phonetic-password-codes/password-client.php?algorithm=4

Mok, A. & Zinkula, J. 2023. ChatGPT may be coming for our jobs. Here are the 10 roles that AI is most likely to replace. Business Insider. Viitattu 31.3.2023. Saatavissa https://www.businessinsider.com/chatgpt-jobs-at-risk-replacement-artificial-intelligence-ai-labor-trends-2023-02?r=US&IR=T

Wiggers, K. 2022. Code-generating AI can introduce security vulnerabilities, study finds. TechCrunch. Viitattu 4.4.2023. Saatavissa https://techcrunch.com/2022/12/28/code-generating-ai-can-introduce-security-vulnerabilities-study-finds/

Kirjoittaja

Aki Vainio toimii tietojenkäsittelyn lehtorina LABissa ja toimii asiantuntijana digitalisoitumiseen liittyvissä hankkeissa.

Artikkelikuva: https://pxhere.com/en/photo/545993 (CC0)

Julkaistu 5.4.2023

Viittausohje

Vainio, A. 2023. Ohjelmointi tekoälyn avulla – Case: foneettiset salasanat. LAB Pro. Viitattu pvm. Saatavissa https://www.labopen.fi/lab-pro/ohjelmointi-tekoalyn-avulla-case-foneettiset-salasanat/