Ödeme Sistemlerinde Luhn Algoritması

8 Mart 2020 Pazar

Modül 10 veya mod 10 algoritması olarak da bilinen Luhn algoritması, kredi kartı numaraları, IMEI numaraları,  doğrulamak için kullanılan basit bir sağlama toplamı formülüdür.

Luhn formülü 1960'ların sonunda bir grup matematikçi Hans Peter Luhn tarafından geliştirildi. Kısa süre sonra kredi kartı şirketleri bunu kabul etti. Algoritma kamuya açık olduğundan, herkes tarafından kullanılabilir. Çoğu kredi kartı ve birçok hükümet kimlik numarası, algoritmayı geçerli sayıları yanlış yazılmış veya yanlış numaralardan ayırmanın basit bir yöntemi olarak kullanır. Kötü niyetli saldırılara karşı değil, yanlışlıkla yapılan hatalara karşı koruma sağlamak üzere tasarlanmıştır.

Luhn algoritması 2 şekilde kullanılarak kart numarası hazırlanıp, doğrulabilir:

-Verilen bir sayıyı Luhn algoritmasına göre hazırlamak

-Verilen bir sayıyı Luhn algoritmasına göre çözmek

Kart no: 3 7 1 4 4 9 6 3 5 3 9 8 4 3 X

1. adım:  Değerleri 2 ile çarp

2 ile çarp 3 14 1 8 4 18 6 6 5 6 9 16 4 6 X

2. adım:  Elde edilen değerleri Topla

Değerleri Topla 3 5 1 8 4 9 6 6 5 6 9 7 4 6 X

3. adım:  Tüm değerleri Topla

3 + 5 + 1 + 8 + 4 + 9 + 6 + 6 + 5 + 6 + 9 + 7 + 4 + 6 = 79

4. adım:  9 ile Çarp

79 x 9 = 711

Sonuç:  Kart numarası geçerli.

Kart numaralarını doğrulamak için aşağıdaki linki kullanabilirsiniz.

http://www.datageneratortools.com/card/validator


Share/Bookmark

SQL Server 2019 Özellikler

Öncelikle SQL Server'ın önceki versiyonlarında da olan, sadece Enterprise Edition müşterilerinin kullanabildiği SQL Server 2019 ile birlikte Standard Edition'da da kullanılabilen bazı özellikleri aşağıda bulabilirsiniz:

Transparent Database Encryption (TDE): Bu özellik SQL Server 2008'den beri var ve bununla verilerimizi barındıran dosyaları diskte şifrelemeyapılıyor Ayrıca veritabanı yedek dosyalarımız da otomatik olarak şifrelenmiş oluyor. Böylece veritabanımıza bir Login veya uygulama açığı ile giremeyip, veritabanı dosyalarımıza ulaşabilecek kötü niyetli kişiler, bu dosyaları alsalar dahi gerekli sertifikalar olmadan verilere ulaşamıyorlar. Güvenlik açısından oldukça önemli bir özellik.

Always Encrypted with Secure Enclaves: Veritabanınızın bulunduğu bir SQL Server Instance'ında "sysadmin" üyesi bir Login, özelleştirilmiş bir şifreleme yöntemi kullanmadığınız müddetçe o Instance'taki tüm veritabanlarındaki tüm verilere ulaşabilir. Always Encrypted özelliği ilk defa SQL Server 2016 Enterprise Edition ile gelmişti. Bu özellik sayesinde kritik olan veriler sütun bazında şifrelenebiliyor, uygulamalar ihtiyaç duydukları verileri veritabanından çekerken veya veritabanına işlerken şifrelemeyi kendi taraflarında uyguluyorlar

Accelerated Database Recovery (ADR):  Uzun süren ve veri değişikliği yapan bir sorguyu durdurduğunuzda veya tam o esnada Database Engine servisini (çeşitli korkunç nedenlerle) yeniden başlattığınızda Rollback'in / Recovery sürecinin tamamlanmasını beklemek uzun sürüyor. ADR sayesinde Rollback / Recovery süreçleri anında sonlanıyor.

Intelligent Query Processing (IQP): "Intelligent Database: Scalar UDF özelliği yazılımcıların  UDF'i çağıran sorgu içerisinde UDF sanki elle yazılmış kod gibi açılır, olumsuz performans sorunu ortadan kalkar.


Share/Bookmark

Ocak ve Şubat 2020 Dergi Paketleri

Ocak 2020 Dergileri:

Toplam Boyut 2,11 GB.

https://turbobit.net/o3cc6i1flb14/Ocak2020Dergiler.WT.rar.html

Şubat 2020 Dergileri:

Toplam Boyut 3.57 GB.

https://turbobit.net/fkdl2ww6d9bx/Subat2020Dergiler.WT.rar.html

Link silinmeden indirin!!!


Share/Bookmark

HCE (Host Card Emulation) Güvenliği Hakkında

Yeni trend HCE’den daha önce bahsetmiştim: http://ercumentyenikaya.blogspot.com/2019/10/odeme-sistemlerinde-hce-kullanm-hakknda.html

HCE güvenliği nasıl oluşur onlardan bahsedelim. HCE bulut tabanlı güvenlik altyapısı 4 ana başlıktan oluşur:

1. Tokenizasyon

2. Risk Yönetimi

3. Oturum Anahtarları

4. Kullanıcı/Cihaz Doğrulama

Tokenizasyon: Token üretme tipini gösterir.3 farklı tokenizasyon vardır.

-Statik Tokenizasyon (Tek token – Tek kart)

-Yarı Dinamik Tokenizasyon (Tokenı belirli amaç için üretme)(Ör: sadece doğrulama için)

-Dinamik Tokenizasyon (İşlem başına farklı token üretme)

Risk Yönetimi: İşlemlerdeki risk kontrollerinin yapılmasını içerir.

-Kullanıcı Alışkanlıkları

-Fraud Kontrolleri (ATC (Uygulama işlem sayacı) doğrulama vs.)

Oturum Anahtarları: Oturum yönetiminin ne şekilde yapılacağını gösterir.

-Statik Kullanım

-Dinamik Kullanım

-Çoklu Oturum Anahtarları

Kullanıcı/Cihaz Doğrulama: Kullanıcı ya da cihazın işlemlerde doğrulama tiplerini gösterir. Eğer kullanıcı ya da cihazın doğrulaması başarılı olmazsa işlem başlatılmaz.

Örneğin; mobil telefonumuz başka bir cihaza kopyalanıp başka bir cihaz mobil cihazımız gibi davranarak token üretmeye çalışırsa otomatik olarak mobil cihazdan mobil uygulamanın silinmesi, üzerindeki üretilmiş tokenların silinmesi vs. aksiyonlarının uygulama tarafından alınması gibi.

-Card PIN (İşlemlerde kart Pini ile doğrulama)

-Wallet (Cüzdan) PIN (Mobil uygulamanın şifre ile doğrulanması)

-Kullanıcı Parmak izi (Cihazdaki kullanıcının doğruluğu)

-Cihaz Parmak izi (Farklı bir cihazın orijinal cihaz gibi token üretmediğinin kontrolü)


Share/Bookmark

Jumanji: The Next Level-Jumanji: Yeni Seviye (2019)

İlk filim beğenilince ikinci film geldi. IMDB puanı 6.8

Konu: Elemanlar Jumanji'ye geri dönüyorlar. Fakat Jumanji artık değişmiştir ve sadece bir ormandan ibaret değildir. Daha tehlikeli bir yere dönüşüyor…

Bilgi: https://www.imdb.com/title/tt7975244/


Share/Bookmark

SQL Query Tunning Hakkında

6 Ekim 2019 Pazar

Genellikle Oracle ve Microsoft SQL’de “tuning” den yani “performans artırma / akort yapma” donanım kaynaklı olarak düşünülür. Sunucu üzerinde daha fazla CPU, RAM vb. bileşenlere bakılır. Bir noktaya kadar doğru bir yaklaşımdır. Fakat kullanıcıların özellikle DML sorguları (Örn: Select) çalıştırdığında, bir miktar sunucu performansını etkileyecektir. Peki aynı anda 50 kullanıcı sorgu çalıştırırsa, arka planda raporlar çalışırsa? Durum kötüye gider…

Herhangi bir SQL sorgusu çalıştırıldığında, istenilen bilgiye nasıl ulaşılacağına “Optimizer” adı verilen veri tabanı optimizasyon birleşeni karar veriyor. Oracle, kullanıcılarına tahminler üzerine çalışan “Rule-Based Optimizer” ve daha çok akıl yürütme yöntemi ile çalışan “Cost-Based Optimizer” olmak üzere iki adet optimizasyon seçeneği sunmaktadır.

MS SQL’de de execution plan vb. kontroller ile sorgu anını kontrol edebiliriz. Sorgularda en çok can sıkan kısım, yanlış yazımlarla index’lerin kullanılamaması ve sorgu süresinin giderek artmasıdır.

Aşağıda sık kullanılan query örnekleri var. Bu örneklerde, yanlış kullanımı ve doğru kullanımı beraber yazdım.

HAVING yerine WHERE kullanımı:   
Önerilmez
SELECT product_type_id,
AVG(price)
FROM products
GROUP BY product_type_id
HAVING product_type_id IN ( 1, 2 );

Önerilir
SELECT product_type_id,
AVG(price)
FROM products
WHERE product_type_id IN ( 1, 2 )
GROUP BY product_type_id;

İkincisi işlemin başlangıcında kayıtları sınırlarken, ilkinde tüm kayıtlar için AVG çalıştırılıyor.

UNION yerine UNION ALL kullanımı
Önerilmez
SELECT product_id,
product_type_id,
name
FROM products
UNION
SELECT product_id,
product_type_id,
name
FROM more_products;

Önerilir
SELECT product_id,
product_type_id,
name
FROM products
UNION ALL
SELECT product_id,
product_type_id,
name
FROM more_products;

UNION ALL her iki sorgu sonucunda tüm kayıtları getirirken, UNION tekrarlanan kayıtları elemine ediyor. Bu nedenle, gerçekleşen eleme işleminden dolayı UNION ALL daha hızlıdır ve sistemi yormaz.

IN yerine EXISTS kullanımı:   
Önerilmez
SELECT product_id,
name
FROM products
WHERE product_id IN (
SELECT product_id
FROM purchases );

Önerilir
SELECT product_id,
name
FROM products pr
WHERE EXISTS (
SELECT 1
FROM purchases pu
WHERE pu.product_id = pr.product_id );

IN bir listede aranan verinin olup olmadığını kontrol eder. EXISTS sadece kayıtların varlığını kontrol ederken, IN ise gerçek verileri kontrol eder. Alt sorgularda EXISTS daha iyi sonuçlar verdiğinden tercih edilmelidir.

OR yerine UNION kullanımı:   
Önerilmez
SELECT ...
FROM ps_jrnl_header a
WHERE jrnl_hdr_status = ‘E’
OR EXISTS
( SELECT ‘x’
FROM ps_jrnl_header
WHERE business_unit_js = a.business.unit_js
AND journal_id = a.journal_id
AND unpost_seq = a.unpost_seq
AND jrnl_hdr_status = ‘E’ );

Önerilir
SELECT ...
FROM ps_jrnl_header a
WHERE jrnl_hdr_status = ‘E’
UNION
SELECT ...
FROM ps_jrnl_header a,
ps_jrnl_header b
WHERE a.business_unit_js = b.business.unit_js
AND a.journal_id = b.journal_id
AND a.unpost_seq = b.unpost_seq
AND a.jrnl_hdr_status = ‘E’
AND b.jrnl_hdr_status != ‘E’;

UNION kullanıldığında, optimizer kayıtları getirmek için iki benzer işlem gerçekleştirir. OR yapısında ise optimizer karar verirken daha karmaşık işlemler yapar ve daha az verimli sonuçlara ulaşır.

İndeks kullanımını engelleyen örnek bir sorgu:
Önerilmez
...
WHERE SUBSTR(account_name,1,7) = ‘CAPITAL’

Önerilir
...
WHERE account_name LIKE ‘CAPITAL%’

SUBSTR indeks kullanımını iptal eder.


Share/Bookmark

Ödeme Sistemlerinde HCE Kullanımı Hakkında

HCE (Host Card Emulation), mobil cihazın işletim sisteminin günlük hayatta kullandığımız kartları (kredi kartı, debit kart, gift kart vs.) emule ederek NFC ile temassız ödeme işlemini gerçekleştirmemize yarayan bir teknolojidir diyebiliriz. Başka bir deyişle, telefonlarımız ödemelerde kullandığımız kartlar gibi davranabiliyor.

Şu an Türkiye’de de çoğu banka HCE entegrasyonunu tamlamak üzere diyebilirim.

HCE ile ödemede ödeme için gerekli olan kart bilgilerinin telefon üzerinde tutulmasına gerek yoktur. İlgili kart bilgileri bulut üzerinde tutulmakta ve bu teknoloji, mevcut geleneksel yönteme göre hem kolay uygulanabilir hem de daha ucuzdur.  HCE teknolojisinde ne telefon üzerinde ne de SIM karta entegre bir çip olarak secure element yer almasına gerek yoktur. Mobil ödeme hizmeti sunan servis sağlayıcılara donanım bağımsızlığı bakımından büyük fayda sağlamaktadır. 

Türkiye’de birçok banka uygulamalarının Android versiyonlarında HCE ile mobil temassız ödeme yapılabilir. Bu uygulamaları kullanarak ödeme yapabilmek için 3 koşulun sağlanması yeterlidir:

1. İlgili banka adına alınmış bir kart sahibi olmak

2.  Güncel bir versiyon Android telefonuna sahip olmak.

3.  İşlem yapmadan önce eğer kapalıysa NFC özelliğini açmak gerekiyor.

Daha detaylı bilgi için aşağıdaki kaynaklara da bakabilirsiniz.

Mastercard

http://www.hceservice.com/ 

Visa

https://www.openwaygroup.com/way4-wallet-solution


Share/Bookmark