ProfilingCryptography Developers - Portal

31
Profiling Cryptography Developers Said Ali

Transcript of ProfilingCryptography Developers - Portal

Page 1: ProfilingCryptography Developers - Portal

Profiling CryptographyDevelopers

Said Ali

Page 2: ProfilingCryptography Developers - Portal

Goal

1

Correlation between crypto developer contribution on Stack OverFlow

andcrypto developer activity on GitHub

Page 3: ProfilingCryptography Developers - Portal

Sample crypto question

2

Page 4: ProfilingCryptography Developers - Portal

Sample profile

3

Reputation 28‘484Crypto score 543

Crypto accepted answers 85

Page 5: ProfilingCryptography Developers - Portal

4

Did Jay use crypto APIs on GitHub?

Page 6: ProfilingCryptography Developers - Portal

Pipeline

Tag analysis

• Crypto tag

5

Stack Exchange

• Crypto user

Scraping

• Social media• GitHub

GitHub API

• Repositories• Crypto repo

Git Blame

• File author• File committer

Page 7: ProfilingCryptography Developers - Portal

Tag analysis

6

11‘130 cryptodiscussions

2‘184 tags

Page 8: ProfilingCryptography Developers - Portal

Tag analysis

𝑯𝟏 𝑜𝑓 𝑡𝑎𝑔 "x" = #𝑝𝑜𝑠𝑡𝑠 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑖𝑛𝑔 "𝑥" 𝐴𝑁𝐷 "𝑐𝑟𝑦𝑝𝑡𝑜𝑔𝑟𝑎𝑝h𝑦 "#𝑝𝑜𝑠𝑡𝑠 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑖𝑛𝑔 "𝑥"

7

𝑯𝟐 𝑜𝑓 𝑡𝑎𝑔 "x" = #𝑝𝑜𝑠𝑡𝑠 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑖𝑛𝑔 "𝑥" 𝐴𝑁𝐷 "𝑐𝑟𝑦𝑝𝑡𝑜𝑔𝑟𝑎𝑝h𝑦" #𝑝𝑜𝑠𝑡𝑠 𝑐𝑜𝑛𝑡𝑎𝑖𝑛𝑖𝑛𝑔 "𝑐𝑟𝑦𝑝𝑡𝑜𝑔𝑟𝑎𝑝h𝑦 "

𝑯𝟏 = 0.025𝑯𝟐 = 0.005

Page 9: ProfilingCryptography Developers - Portal

Tag analysis

3des aes bouncycastle cng crypto++ cryptoapi cryptographic-hash-function cryptography

cryptojs des diffie-hellman digital-signature ecdsa elliptic-curve encryption-

asymmetricencryption-symmetric

encryption hash hmac jce keystore md5 openssl pbkdf2

pkcs#7 pkcs#11 private-key public-key-encryption public-key pycrypto rijndael rsa

salt sha sha1 sha256 smartcard x509 x509certificate Xor

8

Total: 42 Tags

Page 10: ProfilingCryptography Developers - Portal

Stack Exchange

9

UserIdCrypto score

Reputation#Crypto accepted answer

#Crypto accepted answer > 10Crypto score > 10

42 tags 92‘000 crypto discussions

Page 11: ProfilingCryptography Developers - Portal

Stack OverFlow users

10

Developers10

50

250

1250

6250

0 100 200 300 400 500 600 700 800 900 1000

#Crypto accepted answers

Page 12: ProfilingCryptography Developers - Portal

Stack OverFlow users

11

Jay

Developers10

50

250

1250

6250

0 100 200 300 400 500 600 700 800 900 1000

#Crypto accepted answers

Page 13: ProfilingCryptography Developers - Portal

Stack OverFlow users

12

Developers10

50

250

1250

6250

0 100 200 300 400 500 600 700 800 900 1000

Crypto score #Crypto accepted answers

Page 14: ProfilingCryptography Developers - Portal

Stack OverFlow users

13

Jay

Developers10

50

250

1250

6250

0 100 200 300 400 500 600 700 800 900 1000

Crypto score #Crypto accepted answers

Page 15: ProfilingCryptography Developers - Portal

Stack OverFlow scraping

14

Page 16: ProfilingCryptography Developers - Portal

Stack OverFlow scraping

15

Page 17: ProfilingCryptography Developers - Portal

Manual search

16

Page 18: ProfilingCryptography Developers - Portal

Stack Overflow crypto users

17

44.8% Match

552 380 68

0 100 200 300 400 500 600 700 800 900 1000

No GitHub GitHub - Scraping GitHub - Manual search

Page 19: ProfilingCryptography Developers - Portal

GitHub API - PyGithub

18

RegEx

ExactCrypto-related

Exact Match

Repo API CodeSearch API

448 GitHub users

23’634Repositories Crypto-related

Page 20: ProfilingCryptography Developers - Portal

Languages

0

1000

2000

3000

4000

5000

6000

Shell

JavaScript

HTML

Python

CSS

Ruby C

Perl

C++

Java C# PH

P

Haskell

Objective-C Ru

st

TypeScript

Pascal

19

Total: 23634 Repositories

Page 21: ProfilingCryptography Developers - Portal

Selected languages

0

1000

2000

3000

4000

5000

6000

Shell

JavaScript

HTML

Python

CSS

Ruby C

Perl

C++

Java C# PH

P

Haskell

Objective-C Ru

st

TypeScript

Pascal

20

Page 22: ProfilingCryptography Developers - Portal

Crypto libraries

21

Python Ruby C Perl C++ Java C# PHP Rust

from passlib. require 'rbnacl' include "tomcrypt_ include <botan/ Java.security

import passlib require 'digest' include <tomcrypt.h> include "cryptlib.h" Javax.crypto

import pbkdf2_sha256 require 'openssl' include "paillier.h" include <cryptlib>

import nacl require 'bcrypt' include "rsa.h" include "aes.h"

from nacl include "x509.h" using CryptoPP::

import hashlib include "crypto_“ include <des.h>

from hashlib include <openssl/ include "blowfish.h"

from crypto include <themis/include <wolfssl/

include "secblock.h"

import crypto include "xxhash.h" include "eccrypto.h"

from pyelliptic include "aes.h" include <helib/

import bcrypt include "md5.h" include "cryptopp/

from bcrypt include "sha1.h" include <cryptopp/

include "sha256.h" include <openssl/

include "blowfish.h"

include "des.h

Page 23: ProfilingCryptography Developers - Portal

Crypto-related repositories

22

0

500

1000

1500

2000

2500

3000

3500

4000

4500

Python Ruby C C++ Java

Non-crypto repositorie Crypto-related repositorie

2.1%

2.5%

2.9%5.6%

9.2%

Page 24: ProfilingCryptography Developers - Portal

Crypto-related repositories

23

0

500

1000

1500

2000

2500

3000

3500

4000

4500

Python Ruby C C++ Java

Non-crypto repositorie Crypto-related repositorie

GitBlame

Page 25: ProfilingCryptography Developers - Portal

Crypto file contributor

24

58

6

36

37

39

22

3

11

9

25

JAVA

C++

PYTHON

RUBY

C

#Developer contributed to crypto file #Developer contributed to crypto project

Page 26: ProfilingCryptography Developers - Portal

Next steps

25

Page 27: ProfilingCryptography Developers - Portal

Remaining steps

26

No crypto projectsContributed tocrypto files

Contributed tocrypto projects

crypto score andreputationcrypto score

?

reputation

Page 28: ProfilingCryptography Developers - Portal

Remaining steps

27

No crypto projectsContributed tocrypto files

Contributed tocrypto projects

crypto score andreputationcrypto score

?

reputation

Page 29: ProfilingCryptography Developers - Portal

Remaining steps

28

No crypto projectsContributed tocrypto files

Contributed tocrypto projects

crypto score andreputationcrypto score

?

reputation

Page 30: ProfilingCryptography Developers - Portal

How experienced is Jay?

29

Reputation 28‘484Crypto accepted answers 85

Crypto score 543

Repositories 45Crypto repositories 3

Crypto files 87Crypto files contribution 5

Page 31: ProfilingCryptography Developers - Portal

Summary

30