Ero sivun ”SCS” versioiden välillä

Kohteesta DigiWiki
Siirry navigaatioon Siirry hakuun
p (typokorjauksia osa x)
 
(13 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
 
[[Tiedosto:Scs.png|right|400px|thumb|SCS-tapahtuman viestit.]]
 
[[Tiedosto:Scs.png|right|400px|thumb|SCS-tapahtuman viestit.]]
'''Signature Creation Service''' (''SCS'') on [[Väestörekisterikeskus|Väestörekisterikeskuksen]] kehittämä ja tuottama Euroopan Unionin [[eIDAS]]-direktiivin luottopalveluiden (eTS, eletronic Trust Services) mukainen allekirjoituspalvelu jota on tarkoitus käyttää HTML5 mukaisissa Web-sivuissa.
+
'''Signature Creation Service''' (''SCS'') on [[Digivirasto]]n vuonna 2014 kehittämä ja tuottama allekirjoitusratkaisu, jonka avulla päätelaitteella (web-selain, mobiililaite) voi allekirjoittaa web-palvelussa sijaitsevaa 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 (''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-ohjelmistoissa sekä Android ''SCS Signer'' -sovelluksessa. Ilmeisesti tarkoitus on ollut tukea myös [[Apple]] [[Apple/iOS|iOS]]- ja [[Apple/iPadOS|iPadOS]]-laitteita, mutta tällä hetkellä (2022-01) SCS Signer-ohjelmaa ei ole edelleenkään saatavilla niihin.
 +
 
 +
== Toteutuksesta ==
 +
Totetustapa on tietotekniikassa harvinainen. Paikallisesti suoritettava ohjelmisto (web-selain) kommunikoi verkkoa käyttäen toisen paikallisesti suoritettavan ohjelmiston kanssa (DigiSign 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.
 +
 
 +
Versionkyselyoperaatio toimii hyvin yksinkertaisesti, osoite https://localhost:53952/version palauttaa:
 +
 
 +
<pre>
 +
{ "version": "1.1",
 +
  "httpMethods": "GET, POST",
 +
  "contentTypes": "data, digest",
 +
  "signatureTypes": "signature,cms,cms-pades",
 +
  "selectorAvailable": true,
 +
  "hashAlgorithms": "SHA1, SHA224, SHA256, SHA384, SHA512"
 +
}
 +
</pre>
 +
 
 +
Varsinainen allekirjoitusoperaatio on hieman monimutkaisempi, eli osoitteeseen https://localhost:53952/sign pitää lähettää seuraavanlainen JSON:
 +
 
 +
<pre>
 +
{ "version": "1.1",
 +
  "selector": {
 +
    "keyusages": [ "digitalsignature" ]
 +
  },
 +
  "signatureType": "signature",
 +
  "hashAlgorithm": "SHA256",
 +
  "contentType": "data",
 +
  "content: "xxxx"
 +
}
 +
</pre>
 +
 
 +
missä ''xxxx'' on base64-koodattu merkkijono, joka siis allekirjoitetaan. Tuossa '''data''' versiossa tuon pitää olla muotoa jossa alussa on URL ja sen perässä vähintään 64-merkkiä pitkä digest.
 +
 
 +
Ja vastauksena tulee:
 +
 
 +
<pre>
 +
{ "version": "1.1",
 +
  "signatureAlgorithm": "SHA256withRSA",
 +
  "signatureType": "signature",
 +
  "signature": "Dsf...3SMLF==",
 +
  "chain": [
 +
    "MII...8=",
 +
    "MII...Y=",
 +
    "MII...m" ],
 +
  "status": "ok",
 +
  "reasonCode": "200",
 +
  "reasonText": "Signature generated"
 +
}
 +
</pre>
 +
 
 +
Missä tuo '''signature''' kenttä sisältää sen allekirjoituksen ja '''chain''' sisältää varmenneketjun allekirjoittajasta juurivarmenteeseen.
  
 
== Katso myös==
 
== Katso myös==
 +
* [[Tekniikka/Allekirjoitus]]
 
* [[Google/Android]]
 
* [[Google/Android]]
 
* [[Apple/iOS]]
 
* [[Apple/iOS]]
  
 
== Aiheesta muualla ==
 
== Aiheesta muualla ==
 +
* [https://play.google.com/store/apps/details?id=fi.fineid.security.scs play.google.com - SCS Signer]
 +
* https://dvv.fi/fineid-maaritykset - SCS määritykset
 +
* [https://dvv.fi/documents/2634109/2858578/SCS-signatures_v1.0.1.pdf/e53a601f-a646-4de5-8857-3e5c31d1a9df/SCS-signatures_v1.0.1.pdf dvv.fi - SCS-signatures_v1.0.1.pdf]
 +
* https://developer.fineid.fi/scs/ - SCS testisivustoja jne.
  
* https://developer.fineid.fi/scs/
+
[[Luokka:Tekniikka]]
* [https://eevertti.vrk.fi/documents/2634109/2858578/SCS-signatures_v1.0.1.pdf vrk.fi - SCS 1.0.1 specification]
 

Nykyinen versio 18. tammikuuta 2022 kello 12.30

SCS-tapahtuman viestit.

Signature Creation Service (SCS) on Digiviraston vuonna 2014 kehittämä ja tuottama allekirjoitusratkaisu, jonka avulla päätelaitteella (web-selain, mobiililaite) voi allekirjoittaa web-palvelussa sijaitsevaa 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 (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-ohjelmistoissa sekä Android SCS Signer -sovelluksessa. Ilmeisesti tarkoitus on ollut tukea myös Apple iOS- ja iPadOS-laitteita, mutta tällä hetkellä (2022-01) SCS Signer-ohjelmaa ei ole edelleenkään saatavilla niihin.

Toteutuksesta

Totetustapa on tietotekniikassa harvinainen. Paikallisesti suoritettava ohjelmisto (web-selain) kommunikoi verkkoa käyttäen toisen paikallisesti suoritettavan ohjelmiston kanssa (DigiSign 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.

Versionkyselyoperaatio toimii hyvin yksinkertaisesti, osoite 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 allekirjoitusoperaatio on hieman monimutkaisempi, eli osoitteeseen https://localhost:53952/sign pitää lähettää seuraavanlainen JSON:

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

missä xxxx on base64-koodattu merkkijono, joka siis allekirjoitetaan. Tuossa data versiossa tuon pitää olla muotoa jossa alussa on URL 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