Ero sivun ”SCS” versioiden välillä

Kohteesta DigiWiki
Siirry navigaatioon Siirry hakuun
Rivi 13: Rivi 13:
 
* verkon yli kommunikoidessa laitteessa päällä oleva palomuuri voi estää toiminnan, toisin kuin PKCS#11 tai muissa IPC-/RPC-yhteystavoissa.
 
* verkon yli kommunikoidessa laitteessa päällä oleva palomuuri voi estää toiminnan, toisin kuin PKCS#11 tai muissa IPC-/RPC-yhteystavoissa.
 
* allekirjoitusrajapinta tulee suojata ulkoiselta käytöltä (joko middlewaressa, palomuurilla tai molemmilla)
 
* allekirjoitusrajapinta tulee suojata ulkoiselta käytöltä (joko middlewaressa, palomuurilla tai molemmilla)
* toteutettavaa toimintoa ei ollut aikanaan eikä nykyään standardoitu.
+
* toteutettavaa toimintoa ei ollut aikanaan eikä nykyään kansainvälisesti standardoitu.
  
 
Virossa ja Belgiassa vastaava on toteutettu selaimen PKCS#11 laajennoksella joka kommunikoi varmennekortteja hallinnoivan PCSC-ohjelmiston kanssa.
 
Virossa ja Belgiassa vastaava on toteutettu selaimen PKCS#11 laajennoksella joka kommunikoi varmennekortteja hallinnoivan PCSC-ohjelmiston kanssa.

Versio 26. heinäkuuta 2021 kello 08.33

SCS-tapahtuman viestit.

Signature Creation Service (SCS) on Digiviraston vuonna 2014 kehittämä ja tuottama allekirjoitusratkaisu jossa päätelaitteella (web-selain, mobiililaite) voi allekirjoittaa web-palvelussa sijaitseva sisältö. Itse toteutus on ilmeisesti merkittävästi vanhempi henkilökortin alkuajoista (2000 alusta) lähtien, sen nimi, dokumentaatio ja mobiililaitteiden tuki tehtiin vasta vuoden 2014 aikoihin.

Allekirjoitustapahtumassa SCS käyttää käyttäjän päätelaitteessa väliohjelmiston (eng middleware) kautta saatavilla olevia henkilökortin varmenteita, tarjoaa niistä listan käyttäjälle ja allekirjoittaa tapahtuman käyttäjän valinnan ja syöttämän tunnusluvun jälkeen.

SCS on ohjelmointirajapinta jonka tuki on DigiSign Client ja SecMaker Net iD ohjelmistoiss sekä Android SCS Signer -sovelluksessa. Ilmeisesti tarkoitus on tukea myös Apple iOS ja iPadOS laitteita, mutta tällä hetkellä (2021-07) ohjelmaa ei ole saatavilla niihin.

Toteutuksesta

Totetustapa on tietotekniikassa harvinainen. Paikallisesti suoritettava ohjelmisto (web-selain) kommunikoi verkkoa käyttäen toisen paikallisesti suoritettavan ohjelmiston kanssa (DigSign middleware). Syitä toteutustavan valinnalle voi vain arvailla. Seuraavat kohdat silti liittyvät toteutustapaan:

  • web-selain käsittelee verkon sisältöä ja yrittää suojata sitä suorittavaa käyttöjärjestelmää ja muita sovelluksia, joten pääsy henkilökortin varmenteisiin on em suojausten takia hankalaa
  • Digiviraston kehitystyötä on aina ohjannut pelkät Microsoftin tuotteet ja Googlen mobiiliohjelmistot
  • DigSign-ohjelmiston kehitysaikoihin selaimien PKCS#11-rajapinta oli mahdollisesti tekemättä eri selaimissa
  • verkon yli kommunikoidessa laitteessa päällä oleva palomuuri voi estää toiminnan, toisin kuin PKCS#11 tai muissa IPC-/RPC-yhteystavoissa.
  • allekirjoitusrajapinta tulee suojata ulkoiselta käytöltä (joko middlewaressa, palomuurilla tai molemmilla)
  • toteutettavaa toimintoa ei ollut aikanaan eikä nykyään kansainvälisesti standardoitu.

Virossa ja Belgiassa vastaava on toteutettu selaimen PKCS#11 laajennoksella joka kommunikoi varmennekortteja hallinnoivan PCSC-ohjelmiston kanssa.

Toiminta

Tekninen toteutus on JSON-muotoa käyttävä rajapinta HTTP-yhteystavalla paikalliseen porttiin. Rajapintaa voi kokeilla avaamalla selaimella osoitteen https://localhost:53952/ jolloin aukeaa sivu jossa pystyy käyttämään erilaisia testejä jne. Itse json rajapinta tukee kahta operaatiota eli version ja sign operaatiot. Jos haluaa käyttää rajapintaa ilman salausta (https) niin porttinumero on 53951.

Version operaatio toimii hyvin yksinkertaisesti urli https://localhost:53952/version palauttaa:

{ "version": "1.1", 
  "httpMethods": "GET, POST", 
  "contentTypes": "data, digest", 
  "signatureTypes": "signature,cms,cms-pades", 
  "selectorAvailable": true, 
  "hashAlgorithms": "SHA1, SHA224, SHA256, SHA384, SHA512"
}

Varsinainen allekirjoitus operaatio on hieman monimutkaisempi, eli sinne https://localhost:53952/sign pitää lähettää seuraavan tapainen json:

{ "version": "1.1",
  "selector": { 
     "keyusages": [ "digitalsignature" ]
  },
  "signatureType": "signature",
  "hashAlgorithm": "SHA256",
  "contentType": "data",
  "content: "xxxx"
}

Missä tuo xxxx on base64 encoodattu merkkijono, joka siis allekirjoitetaan. Tuossa data versiossa tuon pitää olla muotoa jossa alussa on urli ja sen perässä vähintään 64-merkkiä pitkä digest.

Ja vastauksena tulee:

{ "version": "1.1", 
  "signatureAlgorithm": "SHA256withRSA", 
  "signatureType": "signature", 
  "signature": "Dsf...3SMLF==", 
  "chain": [
    "MII...8=",
    "MII...Y=",
    "MII...m" ], 
  "status": "ok", 
  "reasonCode": "200", 
  "reasonText": "Signature generated"
}

Missä tuo signature kenttä sisältää sen allekirjoituksen ja chain sisältää varmenneketjun allekirjoittajasta juurivarmenteeseen.

Katso myös

Aiheesta muualla