Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Study Case: PHP com Machine Learning e Geolocalização para segurança de autenticação

Study Case: PHP com Machine Learning e Geolocalização para segurança de autenticação

Descreve um caso de estudo real que foi presenciado pelo Ministério de Relações Exteriores (MRE), onde foi sugerido a utilização de um algorítimo de classificação com Machine Learning para detecção de autenticações ocorridas em várias partes do mundo. O estudo ainda visa demonstrar o resultado das classificações em autenticações suspeitas utilizando PHP com bibliotecas de Geolocalização para melhor visualização do dados.

BRUNO SOUZA

June 09, 2019
Tweet

More Decks by BRUNO SOUZA

Other Decks in Technology

Transcript

  1. Hello! Bruno Souza Analista de sistema Datainfo/MRE Twitter: @Bruno_HSouza Joind.in

    @BrunoHSouza 2 Marcelo Neres Analista de sistemas Datainfo/MRE Twitter @marceloncabral Joind.in @mneresc Telegram @mneresc
  2. “ 4 Machine Learning is the study of computer algorithms

    that improve automatically through experience Tom Mitchell, McGraw Hill, 1997
  3. 5

  4. User IP Browser Date/Time 1234 10.20.0.30 Mozilla Firefox 2019-06-09T09:32:45 3456

    192.168.90.34 Google Chrome 2019-03-09T03:56:33 0986 192.177.8.94 Google Chrome 2019-03-12T06:33:56
  5. • Possuo todos os dados necessários? • Os dados estão

    normalizados? • Existe algum padrão nos dados?
  6. ... $vicenty = new VicentyService(); $lines = []; foreach($dataset->getSamples() as

    $key => $sample) { if ($access->getIp() == $sample[0] && $access->getUser() !== $target) { $arrFrom = [$access->getLatitude(), $access->getLongitude()]; $arrTo = [$sample[4], $sample[5]]; $diffDistance = $vicenty->distance($arrFrom, $arrTo); if ($diffDistance > 0) { $lines[] = sprintf('%s,%s,%s,%s,%s', $arrFrom['lat'], $arrFrom['lon'], $arrTo['lat'], $arrTo['lon'], $diffDistance) . PHP_EOL; } } } } file_put_contents('data/datasets/suspect-access.csv', $lines);
  7. public function distance(array $coordFrom, array $coordTo): float { $latFrom =

    deg2rad(str_replace('.', '', $coordFrom[0])); $lonFrom = deg2rad(str_replace('.', '', $coordFrom[1])); $latTo = deg2rad(str_replace('.', '', $coordTo[0])); $lonTo = deg2rad(str_replace('.', '', $coordTo[1])); $lonDelta = $lonTo - $lonFrom; $a = pow(cos($latTo)*sin($lonDelta), 2)+pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2); $b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta); $angle = atan2(sqrt($a), $b); return $angle * self::EARTH_RADIUS; }
  8. • Não possui suporte à visualização de dados • Não

    possui suporte para processamento em GPU Principais Desafios do PHP com ML