Mission possible: Oblivious Transfer
Lyubomir Filipov @FilipovG
Who am I
Lyubomir Filipov
Team Lead
Enthusiast
Building block
Keys exchange
Identification
Authentication
Oblivious transfer
cryptographic primitive
1-out-of-2 OT: Alice chooses as input two bits b0 and b1. Bob chooses a selection bit c and gets as output the bit bc.
Bananas in Pyjamas
Oblivious transfer
Alice should not learn c
Bob should not learn b1-c
Alice
Bob
Oblivious transfer
Only one item is returned to Bob.
Alice won't know what Bob has in his mind!
Oblivious transfer
Biometric data
personal data resulting from specific technical processing relating to the physical, physiological or behavioural characteristics of a natural person, which allow or confirm the unique identification of that natural person.
Biometric data
Fingerprint scanning
Iris recognition
Biometric data
Not 100% perfect
Every scan will return different results
Data representation
Hamming distance
Privacy-preserving biometric identification
- Anonymous Biometric access Control
- Biometric Anonymous Credentials
- Secure Biometric Database Intersection
Biometric identification
SHADE protocol
SHADE protocol
SHADE protocol
X | Y | X XOR Y |
---|---|---|
0 | 0 | |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
0
0
1
1
SHADE protocol
SHADE protocol
SHADE protocol
SHADE protocol
SHADE protocol
Where it could be applied
- Dating app where you only want to receive messages from one user.
- IoT devices that send sensitive data.
But, wait
To be aware of
- All this comes as extra traffic
- It could not be extended easily
What about PHP?
php-bdt
(WIP)
Steps
- Library in C
- Use build directly
- Create PHP Extension
PHP Extension
You could use Zephir
FFI
Foreign Function Interface (PHP 7.4)
Ed25519
Relocation R_X86_64_32S against `scale19' can not be used when making a shared object; recompile with -fPIC
const gfe4x Gk =
{{
{ repeat4x(3338585.0) } ,
{ repeat4x(3934835965952.0) } ,
{ repeat4x(16993937369696567296.0) } ,
{ repeat4x(4464222746302153748381696.0) } ,
{ repeat4x(93371163235585075216663357423616.0) } ,
{ repeat4x(1163399014865459815517614333765877760.0) } ,
{ repeat4x(441936960085431936284569284157504919873519616.0) } ,
{ repeat4x(355047131404459050871642921761149483359549389799424.0) } ,
{ repeat4x(626647004757192365988092839070681114614100044180388577280.0) } ,
{ repeat4x(13159058716893486699394031679446200360393917757201178927420145664.0) } ,
{ repeat4x(12842070454865951878207543570322902610654944894655310136406629955928064.0) } ,
{ repeat4x(16295354408597167049195255459117446390458785936524946835293367493552880222208.0) }
}};
mov $Gk,%rcx
vmovupd 0(%rcx),%ymm2
vmulpd %ymm1,%ymm2,%ymm3
vmulpd 32(%rcx),%ymm1,%ymm4
...
vmulpd 160(%rcx),%ymm1,%ymm8
vmulpd 192(%rcx),%ymm1,%ymm9
...
vmulpd 224(%rcx),%ymm1,%ymm10
rdynamic
Questions?
Mission possible: Oblivious Transfer
By Lyubomir Filipov
Mission possible: Oblivious Transfer
- 1,289