10. tammikuuta 2018

WPA3 on paska parannus WLAN:ien lapsellisiin suunnitteluvirheisiin

Kauan turvallisena pidetystä WPA2-salauksesta löytyi tovi sitten todella härski tietoturva-aukko. Kyseinen aukko oli osoitus melkoisesta idiotismista WPA2-suunnittelijoiden osalta, koska näin simppelisti selitettynä se onnistuu vain ja ainoastaan, koska paska WPA2 sallii 4-portaisen avaintenvaihdon yhteydessä ulkopuolisen pakottamisen pelkkää nollaa sisältävään avaimeen. Tämä vastaa tietoturvapieruna samaa, kuin että asentaisit oveesi uusimmat ja vahvimmat lukot, mutta todellisuudessa murtovaras voi avata ovesi vain painamalla kahvaa, koska "ei lukkopesä hoksannut tsekata, onko se avain siellä oikein sisällä vaan hupsista vaan vapauttaa oven kahvan muutenkin". Moisen lukon väsännyt lukkoseppä saisi varmasti kenkää, mutta WPA2 väsänneet kryptosta ja tietoturvasta tietämättömät pellet luonnollisestikaan eivät saa.

Aikaisemmat tietoturvaongelmat WLAN:ssa, kuten tämä minunkin aikoinaan kertoma WPA-murto, olivat sentään paria pykälää "vaikeampia" ja fiksumpia, vaikka toki niissäkin tulee pakostakin mieleen, miksei turvamarginaalia viitsitä alunperinkin nostaa riittävästi?

No, nyt on sitten tulossa kovaa vauhtia WPA3-salaus, jonka tarkoitus on paikata tuo WPA2:ssa oleva aukko. Sen se tekee monimutkaisesti ja tyhmästi, kun helpompi vaihtoehto olisi vain yksinkertaisesti estättää ulkopuolinen pakottaminen, esimerkiksi jaetulla avaimella ja kryptografisilla tiivisteillä "allekirjoittamalla" tuo avaintenvaihdon tulos tms. Lisäksi WPA3 nostaa kryptoavainten kokoja, mutta vain hitusen, mikä on täysin naurettavaa, kun ne voisi laskentakapasiteettien puolesta nostaa samantien tappiin asti (AES-256, SHA3-512, brainpoolP512, jne.) ja homma olisi ns. pihvi vuosikymmeniksi eteenpäin. Mutta ei niin ei.

Surkuhupaisin WPA3 "parannus" on sen paljon hehkutettu ominaisuus voida "näppärästi" "salata" (avoimet?) langattomat lähiverkot siten, että sitä käyttävät eivät voi salakuunnella toistensa verkkoviestintää. Tämä tehdään muodostamalla tukiaseman ja asiakkaiden välillä aina yksilöllinen salausavain ECDH-salauksella - toisin kuin esim. WPA2-PSK:ssa, jossa salausavaimen alkusiemen on jaettu salaisuus ja mahdollistaa siten käytännössä kenen tahansa, jolla on tuo PSK-avain tiedossaan, suorittaa "man-in-the-middle-attack" muiden asiakkaiden avaintenvaihtoja vastaan ja purkaa heidän liikenteensä salaus WLAN:ssa. No, arvatkaapa, suojaako WPA3 todellisuudessa tämmöiseltä "man-in-the-middle-attack":ltä?

Hah, no ei tietenkään suojaa:
   "OWE is susceptible to an active attack in which an adversary
   impersonates an access point and induces a client to connect to it
   via OWE while it makes a connection to the legitimate access point.
   In this particular attack, the adversary is able to inspect, modify,
   and forge any data between the client and legitimate access point."

Naamapalmu.jpg.

Väännetään nyt rautalangasta: Koko ajatus tuolla WPA3 "parannuksella" on, että se estäisi tekemästä tuon tyyppisiä välistäveto- ja manipulointihyökkäyksiä "jaetulla salaisuudella". Kuitenkaan WPA3 ei sitä estä, koska siinäkin voidaan samantapainen hyökkäys toteuttaa. Miksi? Koska WPA3 suunnittelijat ovat ilmeisesti vielä tyhmempiä ja enemmän pihalla salauksesta ja tietoturvasta, kuin mitä WEP, WPA1 ja WPA2 salausten suunnittelijat olivat aikoinaan!

Miten tämä haluttu ominaisuus - helppo liittyminen ja yksilöllinen salaus jokaiselle asiakkaalle sitten voitaisiin toteuttaa turvallisesti? Antakaapa, kun Markus-setä kertoo teille sairaanhoitajan rautaisella tietoturvan ammattitaidolla vaihtoehdon:
  1. Jokaiseen WLAN-tukiasemaan ja korttiin ja systeemiin voisi luoda julkiset ja salaiset avaimet sisälle, sanotaan vaikka ne 500+ bittiset ECC:tä käyttävät.
  2. Näiden avainten julkisista avaimista muodostettaisiin halutessaan esimerkiksi 128 tai 256 bittiä pitkä kryptografinen tiiviste, joka laitettaisiin näkyviin sinne, missä WLAN on. Tiiviste voisi olla: A) Vaikkapa sanojen muodossa jotta se olisi helpompi lukea ja erehtymisen mahdollisuus olisi pienempi. B1) Tiiviste tai vaikkapa koko avainkin voisi olla vaikkapa QR-koodina B2) NFC-tarrana paikan seinässä tms.
  3. Kun asiakas sitten kytkeytyy WLAN:iin, hänen laitteensa vastaanottaisi julkisen avaimen verkosta ja laskisi siitä tuon saman kryptografisen tiivisteen: A) Käyttäjä varmistaisi, täsmääkö se näkyvillä olevien / annettujen kanssa B1) Tietokone, puhelin, tms. automaattisesti käyttäisi kameralla skannattua avainta B2) NFC:llä saatua avainta.
  4. Tämän jälkeen asiakkaan laite loisi yksilöllisen kertakäyttöisen avaimen ja tunnisteensa ja salaisi ne tuolla julkisella avaimella ja lähettäisi tukiasemalle.
  5. Tukiasema käyttäisi niitä ko. asiakkaan kanssa salatun viestinnän ja autentikoinnin luomiseen.
  6. Kukaan ulkopuolinen ei pääsisi väliin kuuntelemaan tai manipuloimaan viestintää. Case closed.
Oliko tuo nyt niin helvetin vaikeaa? Ei minusta. Ja itse asiassa koko helvetin avaintenvaihdon voisi suorittaa noin, ei tarvittaisi mitään erillistä muuta tilaa lainkaan: Yhteys olisi aina salattu tuollaisella tavalla ja se olisi aina käytössä oletuksena. Salaussysteemi olisi siis sama, käyttäisit sitten WLAN:ia kotonasi tai julkisessa kahvilassa. Simppeliä, toimivaa, varmaa, nopeaa.

Että tämmöistä tänään. Ehkä mun pitäisi vaihtaa alaa?

2 kommenttia:

Teija Väisänen kirjoitti...

Signal on turvallisempi kuin WhatsApp.
https://blog.cryptographyengineering.com/2018/0
1/10/attack-of-the-week-group-messaging-in-whatsapp-a
nd-signal/

malicious WhatsApp server can add any user it wants
into the group

Anonyymi kirjoitti...

En nyt pitäisi tuota surkuhupaisimpana haavoittuvuutena mainitsemaasi asiaa kovin huolestuttavana. Jos käyttää avointa verkkoa, niin tukiaseman omistaja pystyy joka tapauksessa tutkimaan kaiken salaamattoman liikenteen, vaikka langaton signaali salattaisiin parhailla mahdollisilla menetelmillä. Kannattaa aina miettiä, että mitä avoimessa verkossa tekee.