Ero sivun ”SCS” versioiden välillä

Kohteesta DigiWiki
Siirry navigaatioon Siirry hakuun
p (typokorjauksia osa x)
 
(Yhtä välissä olevaa versiota samalta käyttäjältä 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 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.
+
'''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 (''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.
+
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 ohjelmistoiss sekä Android ''SCS Signer'' -sovelluksessa. Ilmeisesti tarkoitus on tukea myös [[Apple]] [[Apple/iOS|iOS]] ja [[Apple/iPadOS|iPadOS]] laitteita, mutta tällä hetkellä (2021-07) ohjelmaa ei ole saatavilla niihin.
+
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 ==
 
== 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:
+
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
 
* 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
 
* Digiviraston kehitystyötä on aina ohjannut pelkät Microsoftin tuotteet ja Googlen mobiiliohjelmistot
Rivi 21: Rivi 21:
 
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.
 
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:
+
Versionkyselyoperaatio toimii hyvin yksinkertaisesti, osoite https://localhost:53952/version palauttaa:
  
 
<pre>
 
<pre>
Rivi 33: Rivi 33:
 
</pre>
 
</pre>
  
Varsinainen allekirjoitus operaatio on hieman monimutkaisempi, eli sinne https://localhost:53952/sign pitää lähettää seuraavan tapainen json:
+
Varsinainen allekirjoitusoperaatio on hieman monimutkaisempi, eli osoitteeseen https://localhost:53952/sign pitää lähettää seuraavanlainen JSON:
  
 
<pre>
 
<pre>
Rivi 47: Rivi 47:
 
</pre>
 
</pre>
  
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.
+
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:  

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