Zapewnienie bezpieczeństwa danych to konieczny standard w wielu środowiskach IT. W czasie gdy informacje coraz częściej są przetrzymywane w „chmurze” zapewnienie bezpieczeństwa stanowi coraz bardziej poważne wyzwanie.
IBM Advanced Crypto Service Provider (ACSP) jest rozwiązaniem, które pozwala udostępnić zasoby koprocesora kryptograficznego firmy IBM poza system, w którym został zainstalowany.
Takie rozwiązanie pozwala na korzystanie z silnej kryptografii sprzętowej jako usługi („cryptography as a service”) w środowiskach rozproszonych o niższym stopniu bezpieczeństwa.
ACSP to „network hardware security module (NetHSM)”, który pozwala na korzystanie zarówno z funkcji IBM Common Cryptographic Architecture (CCA) jak i standardu PKCS#11.
Więcej na https://ibm.box.com/v/acsp-vault-ibm-forum-2015
Nagranie z tej sesji znajduje się pod adresem https://vimeo.com/smartcoders/acsp-vault-ibm-forum-2015
4. Rozwiązanie
• System
w
architekturze
klient
–
serwer,
gdzie
serwer
w
imieniu
klienta
komunikuje
się
z
koprocesorem
kryptograficznym.
!
!
!! ACSP
servers
ACSP
client
TLS
5. Rozwiązanie
• Usługa
REST
z
prostszym
API
–
„zCloud
ACSP
REST
service”
!
!
!!!REST
client
ACSP
REST
on
WAS
+
ACSP
client
ACSP
servers
TLS TLS
6. !
!
!
!
!
!
INSECURE
ZONE
PUBLIC
ZONE
BLUE
SECURE
ZONE
RED
HTTPS TLS connection
– Client & server mutual authentication
iOS device with Touch ID
– Touch ID on iOS 8
TCP TLS connection
– Client & server mutual authentication
ACSP REST Service
– z/OS, AIX, Linux, Windows
– Websphere Liberty Core profile
– ACSP client
ACSP Servers
with cryptographic hardware
– z/OS, AIX, Linux, z/Linux
– ACSP server
– CEX2, 4764, CEX3, CEX4S, CEX5S, 4765
7. Kluczowa funkcjonalność
• Zdalny
dostęp
do
koprocesora
kryptograficznego.
• Szyfrowanie
oraz
deszyfrowanie
z
użyciem
algorytmów
symetrycznych
(w
demo
to
AES).
• Generowanie
i
weryfikacja
za
pomocą
funkcji
skrótu
SHA
• Generowanie
oraz
weryfikacja
podpisu
cyfrowego
(PoC).
8. Korzyści
• Zdalny
dostęp
do
„mocnej”
kryptografii
sprzętowej
firmy
IBM.
• Zwiększenie
wykorzystania
zasobów
koprocesora
kryptograficznego.
10. !
!
!
!
!
!
INSECURE
ZONE
PUBLIC
ZONE
BLUE
SECURE
ZONE
RED
HTTPS TLS connection
– Client & server mutual authentication
iOS device with Touch ID
– Touch ID on iOS 8
TCP TLS connection
– Client & server mutual authentication
ACSP REST Service
– z/OS, AIX, Linux, Windows
– Websphere Liberty Core profile
– ACSP client
ACSP Servers
with cryptographic hardware
– z/OS, AIX, Linux, z/Linux
– ACSP server
– CEX2, 4764, CEX3, CEX4S, CEX5S, 4765
5
4
3
2
1
11. Kluczowa funkcjonalność
• Zdalny
dostęp
do
koprocesora
kryptograficznego.
• Szyfrowanie
oraz
deszyfrowanie
z
użyciem
algorytmów
symetrycznych
(w
demo
to
AES).
• Generowanie
i
weryfikacja
za
pomocą
funkcji
skrótu
SHA
• Generowanie
oraz
weryfikacja
podpisu
cyfrowego
(PoC).
14. 1. Client protocol [cca] instantiated
2. Connecting [ssl on 127.0.0.1:-1] to [192.168.77.200:8994]
3. ACSP01250I Created TLS/SSL connection to [192.168.77.200:8994] using cipher suite
[SSL_RSA_WITH_AES_128_CBC_SHA] with protocols [[TLSv1.2]]
4. Connected for transport [ssl] protocol [cca] from own socket [ssl on 127.0.0.1:54211] to
[192.168.77.200:8994]
5. ACSP01110I Connected to [ssl:cca] on host [192.168.77.200] using service [$$acp-serv]
6. Connection [1] to [192.168.77.200] with transport [ssl] and protocol [cca] has been created
7. The connection pool now holds [1] connections.
Połączenie REST klient – serwer
16. 1.
Submitting
[34]
bytes
for
[CSNBRNGL]
to
host
[192.168.77.200]
using
connection
[1]
2.
Submitting
[217]
bytes
for
[CSNBSAE]
to
host
[192.168.77.200]
using
connection
[1]
Szyfrowanie REST – AES
17. Połączenie ACSP klient – serwer
1.
extracting
user
from
certificate
DN=CN=client1,OU=IWP
Operations,O=Internet
Widgits
Pty
Ltd,ST=Copenhagen,C=DK
using
SAN:
ACSP:CLIENT1
2.
extracting
user
from
certificate
DN=CN=client1,OU=IWP
Operations,O=Internet
Widgits
Pty
Ltd,ST=Copenhagen,C=DK
using
SAN:
ACSP:CLIENT1
3.
Incoming
connect
for
[cca]
on
port
[8994]
from
client
[192.168.77.200:54247]
4.
ACSP01196I
Client
[192.168.77.200
/
192.168.77.200]
connect
to
port
8994
using
ssl
for
protocol
cca
5.
Socket
receive/send
buffer
sizes
[87379/330075]
with
Nagle's
algorithm
used
[false]
6.
ACSP01190I
Awaiting
connect
-‐
name[ssl-‐cca]
transport[ssl]
protocol[cca]
port[8994]
-‐
Count[1]
Sessions[1]
7.
Identified
handler
of
class
[com.ibm.acsp.cca.ProtocolCcaServer]
for
port
number
[8994]
8.
Protocol
handler
[cca
on
layer
tcp
on
127.0.0.1:8994]
waiting
for
peer
[cca
at
192.168.77.200:54247]
18. Szyfrowanie ACSP serwer – AES
1.
Received
JCCA
call
for
verb
[CSNBRNGL]
2.
Adding
rule
[RANDOM]
3.
Flushing
[cca
on
layer
tcp
on
127.0.0.1:8994]
output
stream
to
[cca
at
192.168.77.200:54247]
4.
Number
of
connects
[1]
-‐
requests
[1]]
-‐
responses
[1]
5.
Protocol
handler
[cca
on
layer
tcp
on
127.0.0.1:8994]
waiting
for
peer
[cca
at
192.168.77.200:54247]
6.
Received
JCCA
call
for
verb
[CSNBSAE]
7.
Adding
rule
[AES]
8.
Adding
rule
[PKCS-‐PAD]
9.
Adding
rule
[KEYIDENT]
10.
Adding
rule
[INITIAL]
11.
Flushing
[cca
on
layer
tcp
on
127.0.0.1:8994]
output
stream
to
[cca
at
192.168.77.200:54247]
12.
Number
of
connects
[1]
-‐
requests
[2]]
-‐
responses
[2]
13.
Protocol
handler
[cca
on
layer
tcp
on
127.0.0.1:8994]
waiting
for
peer
[cca
at
192.168.77.200:54247]
14.
ACSP01195I
Closed
scheme
[tcp:cca]
on
port
[8997]
with
name
[tcp-‐cca]