E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

ʻO nā leka SMS ke ala kaulana loa o ka hōʻoia ʻelua-factor authentication (2FA). Hoʻohana ʻia ia e nā panakō, nā ʻeke uila a me nā crypto, nā pahu leta a me nā ʻano lawelawe āpau; ke kokoke nei ka helu o nā mea hoʻohana i ka 100%.

Ua huhū au i kēia ʻano, no ka mea, ʻaʻole palekana kēia ala. Hoʻomaka ka hoʻihoʻi ʻana i kahi helu mai kahi kāleka SIM a i kekahi i ka hoʻomaka ʻana o ke au kelepona - ʻo ia ke ʻano o ka hoʻihoʻi ʻana o ka helu ke nalowale kahi kāleka SIM. Ua ʻike ʻo "nā loea ʻaihue kālā digital" hiki ke hoʻohana ʻia ke koho "kāleka SIM hou" i nā hoʻolālā hoʻopunipuni. Ma hope o nā mea a pau, hiki i ka mea e hoʻomalu i ke kāleka SIM ke hoʻomalu i ka waihona kālā o nā poʻe ʻē aʻe, nā ʻeke uila, a me ka cryptocurrency. A hiki iā ʻoe ke lawe i ka helu o kekahi kanaka ma ke kīpē ʻana i kahi limahana telecom, me ka hoʻohana ʻana i ka hoʻopunipuni a i ʻole nā ​​palapala hoʻopunipuni.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

Ua ʻike ʻia he mau kaukani o ka hoʻololi ʻana i ka SIM, no ka mea i kapa ʻia kēia ʻano hoʻopunipuni. Hōʻike ka nui o ka pōʻino e haʻalele koke ka honua iā 2FA ma o SMS. Akā ʻaʻole hiki kēia - i loko noiʻi ʻōlelo lākou ʻaʻole nā ​​mea hoʻohana e koho i ke ʻano 2FA, akā nā mea lawelawe.

Manaʻo mākou e hoʻohana i ke ala 2FA palekana me ka hāʻawi ʻana i nā code hoʻokahi manawa ma o ka blockchain, a e haʻi mākou iā ʻoe pehea e hiki ai i ka mea lawelawe ke hoʻopili iā ia.

Hele ka helu i nā miliona

I ka makahiki 2019, ua hoʻonui ʻia ka hoʻopunipuni SIM swap e 63% e like me ka mākaʻi o Lākana, a ʻo ka "average bill" o kahi mea hoʻouka he 4,000 GBP. ʻAʻole i loaʻa iaʻu nā helu helu ma Rusia, akā ke manaʻo nei au ua ʻoi aku ka ʻino.

Hoʻohana ʻia ʻo SIM swapping e ʻaihue i nā Twitter kaulana, Instagram, Facebook, nā moʻokāki VK, nā waihona waihona, a me nā kālā crypto - Hōʻike ka nūpepa Times e like me ka mea kālepa Bitcoin Joby Weeks. ʻO nā hihia kiʻekiʻe o ka ʻaihue cryptocurrency me ka hoʻohana ʻana i ka hoʻololi ʻana i ka SIM ua puka mai i ka paʻi mai 2016; Ua ʻike ʻo 2019 i kahi kiʻekiʻe maoli.

I Mei, ke Keʻena Loio ʻAmelika no ka Apana Hikina o Michigan lawe mai i ka uku ʻeiwa mau ʻōpio ma waena o nā makahiki 19 a me 26: ua manaʻo ʻia he ʻāpana lākou o kahi hui hacker i kapa ʻia ʻo "The Community". Hoʻopiʻi ʻia ka hui i ʻehiku mau hoʻouka kaua, ʻo ka hopena o ka poʻe hackers i ʻaihue i ka cryptocurrency i ʻoi aku ma mua o $ 2,4 miliona. A i ʻApelila, ua loaʻa i ka haumāna Kaleponi ʻo Joel Ortiz i 10 mau makahiki i loko o ka hale paʻahao no ka hoʻololi ʻana i ka SIM; ʻO kāna hana he $ 7.5 miliona ma nā cryptocurrencies.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain
ʻO ke kiʻi o Joel Ortiz ma kahi hālāwai kūkā o ke kulanui. ʻElua mau makahiki ma hope e hoʻopaʻa ʻia ʻo ia no ka hoʻopunipuni cyber.

Pehea e hana ai ka hoʻololi SIM

"Swaping" 'o ia ho'i ka ho'ololi. Ma ia mau papahana a pau, lawe ka poʻe hewa i ka helu kelepona o ka mea i pepehi ʻia, ma o ka hoʻopuka hou ʻana i kahi kāleka SIM, a hoʻohana iā ia e hoʻoponopono hou i ka ʻōlelo huna. ʻO kahi swap SIM maʻamau i ke kumumanaʻo e like me kēia:

  1. ʻOihana naʻauao. ʻIke nā mea hoʻopunipuni i ka ʻike pilikino o ka mea i pepehi ʻia: inoa a me ka helu kelepona. Hiki ke loaʻa iā lākou ma nā kumu hāmama (nā kaiapili, nā hoaaloha) a i ʻole i loaʻa mai kahi hoa hana - he limahana o kahi mea hoʻohana kelepona.
  2. Kāohi ʻana. Hoʻopau ʻia ke kāleka SIM o ka mea i pepehi ʻia; No ka hana ʻana i kēia, e kāhea wale i ke kākoʻo ʻenehana o ka mea hoʻolako, hāʻawi i ka helu a haʻi aku ua nalowale ke kelepona.
  3. E hopu, e hoʻoili i ka helu i kāu kāleka SIM. ʻO ka maʻamau, hana ʻia kēia ma o ka mea hoʻopili i ka hui telecom a i ʻole ma o ka hoʻopunipuni ʻana i nā palapala.

Ma ke ola maoli, ʻoi aku ka paʻakikī o nā mea. Koho ka poʻe hoʻouka i kahi mea i hōʻeha ʻia a hahai i ka wahi o ke kelepona i kēlā me kēia lā - hoʻokahi noi e loaʻa ka ʻike i hoʻololi ʻia ka mea kākau inoa i nā kumukūʻai roaming 1-2 keneta. I ka hele ʻana o ka mea nona ka kāleka SIM i waho, kūkākūkā lākou me ka luna ma ka hale kūʻai kamaʻilio e hoʻopuka i kahi kāleka SIM hou. ʻO ke kumukūʻai ma kahi o $ 50 (Ua loaʻa iaʻu ka ʻike - ma nā ʻāina like ʻole a me nā mea hoʻohana like ʻole mai $ 20 a i $ 100), a i ka hihia ʻino loa e hoʻokuʻu ʻia ka luna - ʻaʻohe kuleana no kēia.

I kēia manawa e loaʻa nā SMS āpau e nā mea hoʻouka, a ʻaʻole hiki i ka mea nona ke kelepona ke hana i kekahi mea e pili ana iā ia - aia ʻo ia ma waho. A laila loaʻa i nā mea hewa ke komo i nā moʻokāki a pau a hoʻololi i nā ʻōlelo huna inā makemake ʻia.

Loaʻa ka hoʻihoʻi ʻana i ka waiwai ʻaihue

Hoʻokipa nā panakō i kekahi manawa i ka poʻe i hōʻeha ʻia a hoʻihoʻi i nā hoʻoili mai kā lākou moʻokāki. No laila, hiki ke hoʻihoʻi i ke kālā fiat inā ʻaʻole ʻike ʻia ka mea lawehala. Akā me nā wallets cryptocurrency ʻoi aku ka paʻakikī - a ʻenehana, a ma ke kanawai. I kēia manawa, ʻaʻole hoʻokahi pānaʻi / ʻeke kālā i uku i ka uku i ka poʻe i loaʻa i ka hoʻololi ʻana.

Inā makemake ka poʻe i hoʻopaʻi ʻia e pale i kā lākou kālā i ka ʻaha hoʻokolokolo, hoʻopiʻi lākou i ka mea hoʻokele: hana ʻo ia i nā kūlana no ka ʻaihue kālā mai ka moʻokāki. ʻO ia kaʻu i hana ai Michael Turpin, ua nalowale $224 miliona ma muli o ka hoʻololi ʻana. Ke hoʻopiʻi nei ʻo ia i ka hui kelepona ʻo AT&T.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

I kēia manawa, ʻaʻohe mokuʻāina i hana i nā papa hana e pale kānāwai i nā mea nona ka cryptocurrency. ʻAʻole hiki ke hōʻoia i kāu kapikala a loaʻa paha ka uku no kona poho. No laila, ʻoi aku ka maʻalahi o ka pale ʻana i kahi hoʻouka kaua swap ma mua o ka hoʻoponopono ʻana i kona hopena. ʻO ke ala ʻoi loa ka hoʻohana ʻana i kahi "helu ʻelua" hilinaʻi no 2FA.

ʻAʻole ʻo SIM swap wale nō ka pilikia me 2FA ma o SMS

ʻAʻole palekana nā code hōʻoia ma SMS mai kahi ʻike loea. Hiki ke hoʻopaʻa ʻia nā memo ma muli o nā nāwaliwali i hoʻopaʻa ʻole ʻia ma Signaling System 7 (SS7). Ua ʻike ʻia ʻo 2FA ma luna o SMS he mea palekana (ke ʻōlelo nei ka US National Institute of Standards and Technology i kēia ma kāna Alakaʻi hōʻoia kikohoʻe).

I ka manawa like, hāʻawi pinepine ka hele ʻana o 2FA i ka mea hoʻohana i ka manaʻo o ka palekana hoʻopunipuni, a koho ʻo ia i kahi huaʻōlelo maʻalahi. No laila, ʻaʻole paʻakikī ia hōʻoia, akā e maʻalahi i ka mea hoʻouka ke komo i ka moʻokāki.

A hiki pinepine mai ka SMS me ka lohi lōʻihi a i ʻole hiki ʻole.

Nā ʻano hana 2FA ʻē aʻe

ʻOiaʻiʻo, ʻaʻole i hui ke kukui ma nā kelepona a me SMS. Aia kekahi mau ala ʻē aʻe o 2FA. No ka laʻana, hoʻokahi manawa TAN code: kahi hana primitive, akā hana ia - hoʻohana mau ʻia i kekahi mau panakō. Aia nā ʻōnaehana me ka hoʻohana ʻana i ka ʻikepili biometric: nā manamana lima, nā scan retinal. ʻO kahi koho ʻē aʻe e like me ka hoʻohālikelike kūpono e pili ana i ka maʻalahi, ka hilinaʻi a me ke kumukūʻai nā noi kūikawā no 2FA: RSA Token, Google Authenticator. Aia kekahi mau kī kino a me nā ʻano hana ʻē aʻe.

Ma ke kumumanaʻo, nā mea a pau e nānā pono a hilinaʻi. Akā i ka hoʻomaʻamaʻa, loaʻa nā pilikia 2FA hou, a ma muli o lākou, ʻokoʻa ka ʻoiaʻiʻo mai nā mea i manaʻo ʻia.

Wahi a noiʻi, ʻo ka hoʻohana ʻana i ka 2FA he pilikia ma ke kumu, a ua wehewehe ʻia ka kaulana o 2FA ma o SMS e "ka liʻiliʻi o ka pilikia i hoʻohālikelike ʻia me nā ʻano hana ʻē aʻe" - hiki ke hoʻomaopopo ʻia ka loaʻa ʻana o nā code hoʻokahi manawa no ka mea hoʻohana.

Hoʻohui nā mea hoʻohana i nā ʻano 2FA he nui me ka makaʻu e nalowale ke komo. Hiki ke nalowale a ʻaihue paha ke kī kino a i ʻole ka papa inoa o nā huaʻōlelo TAN. Ua loaʻa iaʻu nā ʻike maikaʻi ʻole me Google Authenticator. Ua haki kaʻu kelepona mua me kēia noi - mahalo i kaʻu mau hana i ka hoʻihoʻi ʻana i kaʻu mau moʻokāki. ʻO kekahi pilikia ke hoʻololi i kahi mea hou. ʻAʻole loaʻa iā Google Authenticator kahi koho hoʻopuka ma muli o nā kumu palekana (inā hiki ke hoʻokuʻu ʻia nā kī, he aha ka palekana?). I ka manawa aʻu i lawe lima ai i nā kī, a laila ua hoʻoholo wau e maʻalahi ka waiho ʻana i ke kelepona kahiko i loko o kahi pahu ma kahi papa.

Pono ke ala 2FA:

  • Paʻa - ʻo ʻoe wale nō a ʻaʻole nā ​​​​mea hoʻouka e loaʻa i kāu moʻokāki
  • Pono - hiki iā ʻoe ke komo i kāu moʻokāki i nā manawa a pau āu e pono ai
  • Maʻalahi a hiki ke loaʻa - me ka hoʻohana ʻana iā 2FA maʻalahi a liʻiliʻi ka manawa
  • Māmā

Manaʻo mākou ʻo blockchain ka hopena kūpono.

E hoʻohana i ka 2FA ma ka blockchain

No ka mea hoʻohana, 2FA ma ka blockchain e like me ka loaʻa ʻana o nā code hoʻokahi manawa ma o SMS. ʻO ka ʻokoʻa wale nō ke ala lawe. ʻO ke ala no ka loaʻa ʻana o kahi code 2FA e pili ana i ka mea a ka blockchain e hāʻawi ai. Ma kā mākou papahana (ʻo ka ʻike ma koʻu ʻaoʻao) he polokalamu Pūnaewele kēia, Tor, iOS, Android, Linux, Windows, MacOS.

Hoʻopuka ka lawelawe i kahi code hoʻokahi manawa a hoʻouna i ka ʻelele ma ka blockchain. A laila e hahai i nā papa mele: hoʻokomo ka mea hoʻohana i ke code i loaʻa i ka lawelawe lawelawe a hoʻopaʻa inoa.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

ʻO ka ʻatikala Pehea e hana ai ka ʻelele decentralized ma ka blockchain? Ua kākau wau i ka blockchain e hōʻoia i ka palekana a me ka pilikino o ka hoʻouna ʻana i nā leka. Ma ka pilikia o ka hoʻouna ʻana i nā code 2FA, e kuhikuhi wau:

  • Hoʻokahi kaomi e hana i kahi moʻokāki - ʻaʻohe kelepona a i ʻole leka uila.
  • Hoʻopili ʻia nā memo āpau me nā code 2FA End-to-End curve25519xsalsa20poly1305.
  • Hoʻokuʻu ʻia ka hoʻouka kaua MITM - ʻo kēlā me kēia memo me ka code 2FA he hana ma ka blockchain a kau inoa ʻia e Ed25519 EdDSA.
  • Hoʻopau ka memo me ka code 2FA i kāna poloka ponoʻī. ʻAʻole hiki ke hoʻoponopono ʻia ke kaʻina a me ka timestamp o nā poloka, a no laila ke ʻano o nā memo.
  • ʻAʻohe hale kikowaena e nānā i ka "ʻoiaʻiʻo" o kahi leka. Hana ʻia kēia e kahi ʻōnaehana māhele o nā nodes e pili ana i ka ʻae ʻana, a nona nā mea hoʻohana.
  • ʻAʻole hiki ke hoʻopau ʻia - ʻaʻole hiki ke hoʻopaʻa ʻia nā moʻokāki a ʻaʻole hiki ke holoi ʻia nā memo.
  • E kiʻi i nā code 2FA mai kekahi mea hana i kēlā me kēia manawa.
  • ʻO ka hōʻoia ʻana o ka lawe ʻana i ka leka me ka code 2FA. ʻO ka lawelawe nāna e hoʻouna i ka ʻōlelo huna hoʻokahi e ʻike maopopo ua hāʻawi ʻia. ʻAʻohe pihi "Send hou".

No ka hoʻohālikelike ʻana me kekahi mau ʻano 2FA ʻē aʻe, ua hana wau i kahi papaʻaina:

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

Loaʻa ka mea hoʻohana i kahi moʻokāki ma ka ʻelele blockchain e loaʻa nā code i kekona - hoʻohana wale ʻia kahi ʻōlelo huna e komo ai. No laila, ʻokoʻa paha nā ʻano o ka noi: hiki iā ʻoe ke hoʻohana i hoʻokahi moʻokāki e loaʻa ai nā code no nā lawelawe āpau, a i ʻole hiki iā ʻoe ke hana i kahi moʻokāki kaʻawale no kēlā me kēia lawelawe.

Aia kekahi pilikia - pono e loaʻa i ka moʻokāki hoʻokahi ma ka liʻiliʻi. I mea e hiki ai i ka mea hoʻohana ke loaʻa i kahi leka i hoʻopili ʻia me kahi code, pono ʻoe e ʻike i kāna kī ākea, a ʻike ʻia ma ka blockchain wale nō me ka hana mua. ʻO kēia ke ala i hiki ai iā mākou ke puka i waho: hāʻawi mākou iā lākou i ka manawa e loaʻa ai nā hōʻailona manuahi i kā lākou ʻeke. Eia naʻe, ʻoi aku ka maikaʻi o ka hoʻopaʻa inoa ʻana i ka moʻokāki he kī lehulehu. (No ka hoʻohālikelike, loaʻa iā mākou kahi helu moʻokāki U1467838112172792705 he kumu ia o ke kī lehulehu cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. No ka ʻelele ʻoi aku ka maʻalahi a hiki ke heluhelu ʻia, akā no ka ʻōnaehana no ka hoʻouna ʻana i nā code 2FA he palena ia). Manaʻo wau i ka wā e hiki mai ana e hoʻoholo kekahi a neʻe i ka "Convenience and Accessibility" i ka ʻāpana ʻōmaʻomaʻo.

He haʻahaʻa loa ke kumukūʻai o ka hoʻouna ʻana i kahi code 2FA - 0.001 ADM, i kēia manawa ʻo 0.00001 USD. Eia hou, hiki iā ʻoe ke hoʻokiʻekiʻe i kāu blockchain a hana i ke kumu kūʻai ʻole.

Pehea e hoʻopili ai i ka 2FA ma ka blockchain i kāu lawelawe

Manaʻo wau ua hiki iaʻu ke hoihoi i kekahi mau mea heluhelu e hoʻohui i ka mana blockchain i kā lākou lawelawe.

E haʻi wau iā ʻoe pehea e hana ai i kēia me ka hoʻohana ʻana i kā mākou ʻelele ma ke ʻano he laʻana, a ma ka hoʻohālikelike hiki iā ʻoe ke hoʻohana i kahi blockchain ʻē aʻe. Ma ka 2FA demo app hoʻohana mākou i ka postgresql10 e mālama i ka ʻike moʻokāki.

Nā pae hoʻohui:

  1. E hana i kahi moʻokāki ma ka blockchain kahi āu e hoʻouna ai i nā code 2FA. E loaʻa iā ʻoe kahi ʻōlelo huna, i hoʻohana ʻia ma ke ʻano he kī pilikino e hoʻopili ai i nā memo me nā code a e kau inoa i nā kālepa.
  2. Hoʻohui i kahi palapala i kāu kikowaena e hana i nā code 2FA. Inā ʻoe e hoʻohana nei i kekahi ʻano hana 2FA ʻē aʻe me ka hāʻawi ʻana i ka ʻōlelo huna hoʻokahi manawa, ua hoʻopau ʻoe i kēia kaʻina.
  3. Hoʻohui i kahi palapala i kāu kikowaena e hoʻouna i nā code i ka mea hoʻohana ma ka ʻelele blockchain.
  4. E hana i kahi mea hoʻohana no ka hoʻouna ʻana a me ke komo ʻana i kahi code 2FA. Inā ʻoe e hoʻohana nei i kekahi ʻano hana 2FA ʻē aʻe me ka hāʻawi ʻana i ka ʻōlelo huna hoʻokahi manawa, ua hoʻopau ʻoe i kēia kaʻina.

1 Hana moʻokāki

ʻO ka hana ʻana i kahi moʻokāki ma ka blockchain ʻo ia ka hana ʻana i kahi kī pilikino, kahi kī lehulehu, a me kahi helu helu moʻokāki.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

ʻO ka mua, hoʻokumu ʻia ka passphrase BIP39, a ua helu ʻia ka hash SHA-256 mai ia mea. Hoʻohana ʻia ka hash e hana i ke kī pilikino ks a me ke kī lehulehu kp. Mai ke kī lehulehu, me ka hoʻohana ʻana i ka SHA-256 like me ka hoʻohuli ʻana, loaʻa iā mākou ka helu wahi ma ka blockchain.

Inā makemake ʻoe e hoʻouna i nā code 2FA i kēlā me kēia manawa mai kahi moʻokāki hou, pono e hoʻohui ʻia ka code hana moʻokāki i ke kikowaena:

import Mnemonic from 'bitcore-mnemonic'
this.passphrase = new Mnemonic(Mnemonic.Words.ENGLISH).toString()

…

import * as bip39 from 'bip39'
import crypto from 'crypto'

adamant.createPassphraseHash = function (passphrase) {
  const seedHex = bip39.mnemonicToSeedSync(passphrase).toString('hex')
  return crypto.createHash('sha256').update(seedHex, 'hex').digest()
}

…

import sodium from 'sodium-browserify-tweetnacl'

adamant.makeKeypair = function (hash) {
  var keypair = sodium.crypto_sign_seed_keypair(hash)
  return {
    publicKey: keypair.publicKey,
    privateKey: keypair.secretKey
  }
}

…

import crypto from 'crypto'

adamant.getAddressFromPublicKey = function (publicKey) {
  const publicKeyHash = crypto.createHash('sha256').update(publicKey, 'hex').digest()
  const temp = Buffer.alloc(8)
  for (var i = 0; i < 8; i++) {
    temp[i] = publicKeyHash[7 - i]
  }
  return 'U' + bignum.fromBuffer(temp).toString()
}

Ma ka noi demo, ua maʻalahi mākou - ua hana mākou i hoʻokahi moʻokāki ma ka noi pūnaewele, a hoʻouna i nā code mai ia mea. I ka hapanui o nā hihia, ʻoi aku ka maʻalahi o ka mea hoʻohana: ʻike ʻo ia e hoʻouna ana ka lawelawe i nā code 2FA mai kahi moʻokāki kikoʻī a hiki iā ia ke inoa.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

2 Hoʻopuka i nā code 2FA

Pono e hana ʻia kahi code 2FA no kēlā me kēia kau inoa mea hoʻohana. Hoʻohana mākou i ka waihona haʻiʻōlelo, akā hiki iā ʻoe ke koho i kekahi.

const hotp = speakeasy.hotp({
  counter,
  secret: account.seSecretAscii,
});

Ke nānā nei i ka pono o ke code 2FA i hoʻokomo ʻia e ka mea hoʻohana:

se2faVerified = speakeasy.hotp.verify({
  counter: this.seCounter,
  secret: this.seSecretAscii,
  token: hotp,
});

3 Ka hoʻouna ʻana i ke code 2FA

No ka hoʻouna ʻana i kahi code 2FA, hiki iā ʻoe ke hoʻohana i ka API node blockchain, hale waihona JS API, a i ʻole ka console. Ma kēia hiʻohiʻona, hoʻohana mākou i ka console - ʻo ia ka Command Line Interface, kahi mea pono e hoʻomaʻamaʻa i ka pilina me ka blockchain. No ka hoʻouna ʻana i kahi leka me kahi code 2FA, pono ʻoe e hoʻohana i ke kauoha send message nā consoles.

const util = require('util');
const exec = util.promisify(require('child_process').exec);

…

const command = `adm send message ${adamantAddress} "2FA code: ${hotp}"`;
let { error, stdout, stderr } = await exec(command);

ʻO kahi ala ʻē aʻe e hoʻouna ai i nā memo ʻo ka hoʻohana ʻana i ke ʻano send ma ka waihona JS API.

4 Mea hoʻohana

Pono e hāʻawi ʻia ka mea hoʻohana i ke koho e komo i kahi code 2FA, hiki ke hana i kēia ma nā ʻano like ʻole e pili ana i kāu kahua noi. I kā mākou hiʻohiʻona ʻo Vue kēia.

E neʻe e hoʻopaʻa i ka 2FA ma ka blockchain

Hiki ke ʻike ʻia ke kumu kumu no ka noi blockchain ʻelua-factor authentication demo ma GitHub. Aia kahi loulou i ka Readme i kahi demo Live e hoʻāʻo ai.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka