API Anahtarları ve Gizli Anahtarlar nasıl çalışır? API ve gizli anahtarlarımı başka bir uygulamaya geçirmek zorunda kalırsam güvenli olur mu?


136

Sadece api anahtarlarının ve gizli anahtarların nasıl çalıştığını düşünmeye başladım. Sadece 2 gün önce Amazon S3'e kaydoldum ve S3Fox Eklentisini yükledim . Hem Erişim Anahtarımı hem de Gizli Erişim Anahtarımı istedi, ikisi de erişim için giriş yapmamı gerektiriyor.

Merak ediyorum, eğer gizli anahtarımı istiyorlarsa, bir yerde saklıyor olmalılar değil mi? Bu benim kredi kartı numaramı veya şifremi istemek ve kendi veritabanında saklamakla aynı şey değil mi?

Gizli anahtarlar ve api anahtarlarının nasıl çalışması gerekiyor? Ne kadar gizli olmaları gerekiyor? Gizli anahtarları kullanan bu uygulamalar bir şekilde saklıyor mu?

Yanıtlar:


90

Temelde burada ana hatları verilenler üzerinde durulacaktır .

Şöyle çalışır: diyelim ki sıfırdan dokuza kadar bir sayı alan, üç ekleyen ve sonuç ondan büyükse on çıkarır. Böylece f (2) = 5, f (8) = 1 vb. Şimdi, üç yerine yedi ekleyerek başka bir işlev yapabiliriz, geriye f gider diyebiliriz. f '(5) = 2, f' (1) = 8 vb.

Bu, iki yönlü bir işlev ve tersinin bir örneğidir. Teorik olarak, bir şeyi diğerine eşleyen herhangi bir matematiksel fonksiyon tersine çevrilebilir. Ancak pratikte, girdisini öylesine iyi karıştıran bir işlevi tersine çevirmek inanılmaz derecede zor olabilir.

Bir giriş almak ve tek yönlü bir işlevi uygulamak girdiye "hash" denir ve Amazon'un sistemlerinde sakladığı şey gizli anahtarınızın bir "hash" ıdır. SHA1 bu tür "tek yönlü" fonksiyonlara bir örnektir, saldırılara karşı da sertleştirilmiştir.

HMAC fonksiyonu metin dizesini kimliğini doğrulamak için bilinen bir anahtar kullanmak üzere kurulan hash fonksiyonları üzerine kurulmuştur. Şöyle çalışır:

  • İsteğinizin metnini ve gizli anahtarınızı alıp HMAC işlevini uygularsınız.
  • Bu kimlik doğrulama başlığını isteğinize ekler ve Amazon'a gönderirsiniz.
  • Amazon, gizli anahtarın kopyalarını ve az önce gönderdiğiniz metni arar ve HMAC işlevini uygular.
  • Sonuç eşleşirse, aynı gizli anahtara sahip olduğunuzu bilirler.

Bu ve PKI arasındaki fark, bu yöntemin RESTful olması ve sisteminizle Amazon'un sunucuları arasında minimum sayıda alışverişe izin vermesidir .

Bu benim kredi kartı numaramı veya şifremi istemek ve kendi veritabanında saklamakla aynı şey değil mi?

Evet, birisinin S3 ile yapabileceği hasar hesabınızı boşaltmakla sınırlı görünmektedir.

Ne kadar gizli olmaları gerekiyor? Gizli anahtarları kullanan bu uygulamalar bir şekilde saklıyor mu?

Bir noktada, gizli anahtarı yüklemeniz gerekecek ve çoğu Unix tabanlı sistemde, bir saldırgan root erişimi elde ederse anahtarı alabilir. Anahtarı şifrelerseniz, şifresini çözmek için kodunuz olmalıdır ve bir noktada şifre çözme kodunun yürütülebilmesi için düz metin olması gerekir. Bu, DRM'nin sahip olduğu sorunla aynıdır, ancak bilgisayarın sahibi olmanız gerekir.

Çoğu durumda, gizli anahtarları sınırlı izinlere sahip bir dosyaya koyarım ve sistemimin köklenmesini önlemek için her zamanki önlemleri alırım. Geçici dosyalardan kaçınmak gibi çok kullanıcılı bir sistemle düzgün çalışmasını sağlamak için birkaç püf noktası vardır.


14
"Bir girdi alma ve tek yönlü bir işlevi uygulama girişe" hash "denir ve Amazon'un sistemlerinde sakladığı şey gizli anahtarınızın" karma "sıdır - Amazon gizli anahtarınızın bir HASH değerini depolarsa, nasıl Amazon'un kendilerine gönderilen metni HASH yapması mümkün mü?
Franklin

21
Önce "Amazon'un sistemlerinde depoladığı şey gizli anahtarınızın" karması "dır ve daha sonra" Amazon gizli anahtarın kopyasını arar "deyin. Bunlar birbiriyle çelişiyor gibi görünüyor. İlk ifadenin yanlış olduğuna inanıyorum.
Sean

3
Bu url, Amazon S3 Yetkilendirme
asyncwait

10
"Teorik olarak, bir şeyi diğerine eşleyen herhangi bir matematiksel fonksiyon tersine çevrilebilir" - Bu doğru değil, hash fonksiyonları örnektir. göstermek çok kolay. diyelim ki kelimelerin değerlerin toplamına (a = 1, b = 2, c = 3 vb.) dayalı olarak sayılara dönüştüren bir fonksiyonumuz var. Örneğin, "SO" 18 + 14 = 32 olur. Yani, SO'yu 32'ye değiştirdik ama eğer bu fonksiyonu birine açıklarsam ve ona 32 numara verirsem, temel kelimemizin "SO" olup olmadığını bilmesinin hiçbir yolu yoktur. "ZF" (26 + 6) veya düzinelerce diğer olasılıktan biri
Leo

1
@Asyncwait'in bağlı olduğu belgeye göre, amazon kesinlikle sadece bir karma değil gizli anahtarınızı saklar. Aslında, HMAC işlevi içinde ne olursa olsun devam eden hash gibi görünüyor
cowlinator

7

Ortak Anahtar Kriptografisi , bazıları yaygın olan çok spesifik saldırılara karşı savunmak için kullanılır. Kısacası bu, bireyin sadece ortak anahtarı bilerek hem Genel hem de Özel Anahtar çiftine sahip olduğunu doğrulamasını sağlayan karmaşık matematiktir. Bu, kredi kartı veya statik şifreden çok farklıdır. Örneğin, bir OpenSSH sunucusuyla kimlik doğrulaması yapıyorsanız, sunucunun özel anahtara ihtiyacı yoktur .

İdeal olarak, Amazon'un güvenliği ihlal edileceği API veritabanı saldırganın genel anahtarların bir listesine sahip olacak ve bu bilgileri kullanarak kullanıcının API'sına erişemeyecektir. Ancak ideal sistemler her zaman uygulamaya konulmaz ve Amazon'un bu saldırı vektörüne karşı koruma sağlayıp sağlamadığından emin değilim, ama olmalılar.

Açık anahtarda kimlik doğrulaması, kaba kuvvetten istatistiksel olarak etkilenmez. Parolalar genellikle göreliliği hızlı bir şekilde kırılabilen sözlük sözcükleridir. Ancak özel anahtar tahmin edilmesi kolay olmayan devasa bir sayıdır. Saldırganın ortak anahtarı varsa, süper bilgisayarda birçok tahmin "çevrimdışı" gerçekleştirebilirdi, ancak o zaman bile anahtarı kırmak çok zaman ve para harcayacaktı.


2
Özel anahtar gerekmez bağlantı artık bozuldu.
setzamora

@Joset, 2008'den itibaren internet
wayback

1

AWS kendi özel kimlik doğrulama algoritmasını tasarladı. v4 2014 yılında piyasaya sürüldü. Ayrıntılar burada özetlenmiştir: Kimlik Doğrulama İstekleri (AWS İmza Sürüm 4) . Önemli bir nokta, isteğin sır ile değil, sır kullanılarak oluşturulan bir imza anahtarıyla imzalanmasıdır. Ayrıca imzalama için HMAC-SHA256 kullanır.

İmza Üretimi

AWS, hem kullanıcı hem de AWS tarafından saklanan sır yerine yalnızca ortak bir anahtar depolayacağından asimetrik anahtarlar kullanmak daha güvenli olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.