You are here: TUTWiki>Tietoturva>Jatkokurssi,OsaA?>KryptomoduuleistaJa-kirjastoista(2-A) (revision 1)

Kryptomoduuleista ja -kirjastoista (2-A)

Kryptoprimitiivejä ei juuri koskaan tarvitse itse ruveta luomaan, ja niiden toteuttaminenkin yleensä hoituu valmiilla moduuleilla. Nämä voivat olla laitteistopohjaisia, kuten

  • toimikortit
  • muut kryptoprosessorit, joilla voidaan tavoitella erityisesti peukaloinnin sietoa tai laitteistototeutuksen kautta nopeutta. Toisenlainen, joskin peukaloinnin sietoon kytkeytyvä esimerkki on (oli) Clipper-siru, jonka tarkoituksena on avaimen turvatalletus.
  • erikoisprosessorit, kuten SecurID? (RSA-yhtiön tavaramerkki ja yleisesti käytetty haaste-vaste -menetelmän "generaattori").

Kryptolaitteiden rajapintamäärityksiä löytyy RSA-yhtiön PKCS#11-standardista, josta käytetään myös nimeä Cryptoki.

Ohjelmallisista moduuleista käytetään termiä CSP (cryptographic service provider). Sellainen voi tarjota muutakin kuin vain salausta. Yksi yleinen palvelu ovat PKI-toiminnot. Microsoftin tuotteissa on mm. niitä varten CryptoAPI? eli CAPI (cryptographic application programming interface).

Hieman matalamman abstraktiotason ohjelmallinen liittymä kryptologiaan on tarpeen omia sovelluksia rakennettaessa. Silloin on luontevinta käyttää ohjelmakirjastoja. Niistä löytyy sekä asymmetrisiä että eri moodeissa olevia symmetrisiä algoritmeja, ja myös avaintenvaihdon toteutuksia.

  • OpenSSL sisältää algoritmikirjaston.
  • Vastaavasti kuin SSL:stä, algoritmeja löytyy PGP:stä ja sen GNU-vastineesta GPG:stä (Gnu Privacy Guard), SSH:sta, sekä IPSecistä -- ja kaikista näistä siis on avoimia toteutuksia.
  • Peter Gutmanin cryptlib on tarkoitettu helppokäyttöiseksi. Toteutuskielenä on C:n lisäksi assembly. Kohdassa 'downloading' kerrotaan lisenssiehdoista, jotka ovat (mm.) GPL:n kaltaiset.
  • Wei Dain keräämä Crypto++ Library on monipuolinen kokoelma C++ -kielisiä algoritmeja, (ks. myös lisenssiehtoja ja nopeustaulukko)
  • Lisää lähdekoodisia kirjastoja löytyy Adam Shostackin luettelosta.

Seuraavassa on asioita, jotka pitää tarkastaa, kun jotain valmista järjestelmää ottaa käyttöön.

  • Turvallisuusseikkoja:
    • Riittävän vahva algoritmi ja avain.
    • Luottamus siihen, ettei järjestelmässä ole takaporttia tai että asennettu Key Escrow toimii niin kuin pitää. Huolta ei ole ainoastaan verkosta ladatuista ohjelmistoista, vaan joissain tapauksissa "ison veljen" vaikutuksista virallisissakin ohjelmistoissa.
    • Laite ei saa säteillä eikä vuotaa selkotekstiä sille puolelle, minne salateksti lähtee. ("Red-Black separation", vrt. Hajasäteily)
    • On testattava salaus ja purku, myös hash-algoritmeissa pitää käyttää julkaistuja testiaineistoja.
    • Miten avaimia käsitellään, talletetaan.
  • Runsaasti turvaseikkoja liittyy avaintenhallintaan, jonka pitää tietysti olla paitsi turvallista myös tarkoituksenmukaista. Jos (ja kun) järjestelmässa myös luodaan avainmateriaalia, on syytä tarkastaa,
    • miten hankitaan satunnaislukuja
    • miten varmistetaan etteivät avaimet, alustusvektorit yms. ole huonoja (esim. tietyssä algoritmissa huonoiksi tiedettyjä, tai jo käytettyjä).
  • Yleisiä ohjelmointiin liittyviä seikkoja
    • Millaiset valinnat ohjelman käyttäjälle jätetään
    • Tarvitaanko lisenssejä niissä käyttöyhteyksissä joihin on tarkoitettu.
    • On arvioitava suorituskyky.

Salauskäytäntöjä koskeva VAHTI-suositus 3/2001 korosti avoimen lähdekoodin merkitystä. Suositus oli toisteinen ja sekava ja siinä oli epätäsmällisyyksiä. Sen tilalle tuli parempi mutta hieman vähemmän tekninen VAHTI 3/2008. Sen luku 5 sopii hyvin kryptoalgoritmien kertaukseen ja täydennykseenkin esim. salausmenetelmien vahvuusvaatimusten osalta.

Jos valinnan on jo turvallisesti tehnyt, ja intoa vielä riittää, voi tarkastella, millaisia "krypto-ohjelmistojen" tarjoajia Bruce Schneier on koonnut CryptoGram-lehteensä.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Krypto
Mitä Useita
Miltä Useita
Missä Järjestelmä
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r2 < r1 | 
Topic revision: r1 - 18 Apr 2010 - 20:06:11 - MaijuLehtonen?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback