Muutokset

Siirry navigaatioon Siirry hakuun

SCS

4 161 merkkiä lisätty, 18. tammikuuta 2022 kello 12.30
p
typokorjauksia osa x
[[Tiedosto:Scs.png|right|400px|thumb|SCS-tapahtuman viestit.]]
'''Signature Creation Service''' (''SCS'') on [[Väestörekisterikeskus|VäestörekisterikeskuksenDigivirasto]] n vuonna 2014 kehittämä ja tuottama Euroopan Unionin [[eIDAS]]allekirjoitusratkaisu, jonka avulla päätelaitteella (web-direktiivin luottopalveluiden (eTSselain, eletronic Trust Servicesmobiililaite) mukainen allekirjoituspalvelu jota voi allekirjoittaa web-palvelussa sijaitsevaa sisältöä. Itse toteutus on tarkoitus käyttää HTML5 mukaisissa Web-sivuissailmeisesti 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==
* [[Tekniikka/Allekirjoitus]]
* [[Google/Android]]
* [[Apple/iOS]]
== 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/* [https[Luokka://eevertti.vrk.fi/documents/2634109/2858578/SCS-signatures_v1.0.1.pdf vrk.fi - SCS 1.0.1 specificationTekniikka]]

Navigointivalikko