Ero sivun ”SCS” versioiden välillä
p (typokorjauksia osa x) |
|||
(7 välissä olevaa versiota 2 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 [[Digivirasto]]n kehittämä ja tuottama | + | '''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 | + | 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 | + | 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> | <pre> | ||
Rivi 20: | Rivi 33: | ||
</pre> | </pre> | ||
− | Varsinainen | + | Varsinainen allekirjoitusoperaatio on hieman monimutkaisempi, eli osoitteeseen https://localhost:53952/sign pitää lähettää seuraavanlainen JSON: |
<pre> | <pre> | ||
Rivi 34: | Rivi 47: | ||
</pre> | </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: | Ja vastauksena tulee: | ||
Rivi 56: | Rivi 69: | ||
== 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/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/ - SCS testisivustoja jne. | ||
[[Luokka:Tekniikka]] | [[Luokka:Tekniikka]] |
Nykyinen versio 18. tammikuuta 2022 kello 12.30
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.
Sisällysluettelo
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
- play.google.com - SCS Signer
- https://dvv.fi/fineid-maaritykset - SCS määritykset
- dvv.fi - SCS-signatures_v1.0.1.pdf
- https://developer.fineid.fi/scs/ - SCS testisivustoja jne.