## Generic Security Controls Uctan uca guvenlik kontrolleri dahil olarak ornek ### For HttpGet - ### For HttpPost/HttpPut/... ```plantuml @startuml participant Uygulama as client participant "Güvenlik SDK" as ssdk participant "Secure Server\nAPI Gateway" as ss participant "Dijital Bankacılık\n Middleware" as amorphie collections "Temel Sistemler" as backend client -> ssdk: Hesap Açma İsteği ssdk -> ss: Hesap Açma İsteği ss -> amorphie: Token Sorgulama İsteği amorphie -> ss: Token Sorgulama Yanıtı ss -> amorphie: JWS İmza Kontrolü amorphie -> ss: JWS İmza Kontrolü Tamam ss -> amorphie: İzin ve Yetki Kontrolü amorphie -> ss: İzin ve Yetki Tamam ss -> backend: Hesap Açma İsteği backend -> ss: Hesap Açma Yanıtı ss -> ssdk: Hesap Açma Yanıtı ssdk -> client: Hesap Açma Yanıtı @enduml ``` ## Enrollment (First Login) ```plantuml @startuml participant Uygulama as client participant "Güvenlik SDK" as ssdk participant "Secure Server API Gateway" as ssag participant "Dijital Bankacılık Platformu" as amorphie participant "Hashicorp Vault" as hv client -> ssdk : Guvenlik SDK başlat. ssdk-> ssdk: Güvenlik sensörlerini başlat. note right Güvenlik sensörleri sürekli olarak bu andan itibaren uygulamayı ve cihazı izleycektir. Riskli bir girişim bulduğu anda oturum sonlandırılacaktır. end note ssdk o<-[#0000FF]>o ssag: Başarılı 2FA Login Akışı ssdk-> ssdk: İmzalama için asimetrik anahtarları oluştur. \n(Keystore-Android,Secure Enclave-iOS) ssdk->ssag: İmzalama genel anahatarını gönder. ssag-->ssag: Güvenlik kontrolleri note right #aqua Tüm isteklerde güvenlik kontolleri tekrarlanır. end note ssag->amorphie: Genel Anahtarı gönder amorphie->amorphie: Genel anahtarı kullanıcı özelinde kaydet. amorphie->hv: Şifreleme için sertifika Oluştur hv->hv: Kuruluma özel mTLS Sertifikasını oluştur. hv->amorphie: mTLS Sertifikasını ve anahtarları ilet amorphie->amorphie: Genel anahtarı ve sertifikayı kurulum özelinde kaydet. amorphie->ssag: mTLS Sertifikasını ve özel anahtarı ilet ssag->ssdk: mTLS Sertifikasını ve özel anahtarı ilet amorphie->amorphie : Özel anahtarı sil (unut). ssdk->ssdk: mTLS Sertifikasını ve özel Anahtarı \n güvenli alana kaydet ssdk->client: Kayıt başarılı ssdk o<-[#green]>o ssag: MTLS Bağlantısını kur. note right Bu andan sonra; - Tüm bağlantılar mTLS kurulu olacaktır. - Tüm istekler imzalı olacaktır. end note @enduml ``` ## Login ```plantuml @startuml participant Uygulama as client participant "Güvenlik SDK" as ssdk participant "Secure Server\nAPI Gateway" as ss participant "Dijital Bankacılık\n Middleware" as amorphie collections "Temel Sistemler" as backend group Kullanıcı Giriş Adımları Başarılı end client->amorphie: Giriş onay istek amorphie->amorphie: Nonce değeri oluştur amorphie->amorphie: Kullanıcı Public Key db oku amorphie->amorphie: Nonce değerini \nKullanıcı Public Key ile şifrele - \nKullanıcıdan gelen amorphie->ssdk: Şifrelenmiş bilgileri gönder ssdk->ssdk: Secure Element üzerinden şifrelenmiş nonce çöz ssdk->ssdk: Secure Element üzerinden private key ile nonce imzala ssdk->amorphie: İmzalı bilgileri gönder amorphie->amorphie: Kullanıcı Public Key ile imzayı onayla amorphie->ssdk: Giriş başarılı ssdk->client: Giriş başarılı client<->backend: Güvenli bağlantı sağlandı @enduml ``` ## Transaction Signing in Detail ```plantuml @startuml participant Uygulama as client participant "Güvenlik SDK" as ssdk participant "Secure Server\nAPI Gateway" as ss participant "Dijital Bankacılık\n Middleware" as amorphie collections "Temel Sistemler" as backend group Finansal Sonuç Doğuran İşlemler end client->amorphie: Finansal işlem onay istek amorphie->amorphie: Nonce değeri oluştur amorphie->amorphie: Kullanıcı Public Key db oku amorphie->amorphie: Nonce değerini \nKullanıcı Public Key ile şifrele - \nKullanıcıdan gelen amorphie->ssdk: Şifrelenmiş bilgileri gönder ssdk->ssdk: Secure Element üzerinden şifrelenmiş nonce çöz ssdk->ssdk: Secure Element üzerinden private key ile nonce imzala ssdk->amorphie: İmzalı bilgileri gönder amorphie->amorphie: Kullanıcı Public Key ile imzayı onayla amorphie->ssdk: Onay başarılı amorphie->backend: Onay başarılı backend->backend: İşlemi gerçekleştir backend->ssdk: İşlem başarılı ssdk->client: İşlem başarılı @enduml ``` ### Full Flow ### 3FA Subflow ## Document Signing in Detail ```plantuml @startuml participant Uygulama as client participant "Güvenlik SDK" as ssdk participant "Secure Server\nAPI Gateway" as ss participant "Dijital Bankacılık\n Middleware" as amorphie amorphie->amorphie: Dokuman hash oluşturulur amorphie->amorphie: Dokuman bilgileri db kaydedibilir amorphie->client: Dokuman bilgisi response client-> ssdk: Kullanıcı Dokumanı onaylar ssdk->ssdk : Dokumanın Hash alınır ve \n kullanıcı device private key ile imzalanır ssdk->ssdk : Dokuman Pades ile imzalanır ssdk->amorphie: Dokuman onay kontrolu amorphie->amorphie: Dokuman hash kontrol amorphie->amorphie: Dokuman imza kontrol amorphie->amorphie: Dokuman Pades kontrol @enduml ``` ## API Gateway Log ve Telemetri Akisi