e-tinglysning teknikgruppem øde 09.02.2007
DESCRIPTION
e-tinglysning Teknikgruppem øde 09.02.2007. Bjarne Hansen Business Systems Architect e-mail: [email protected]. Indholdsfortegnelse. Digital signering af tinglysningsdokumenter… Vedhæftning af (store) bilag… Præsentationsservices…. Digital signering af tinglysningsdokumenter. - PowerPoint PPT PresentationTRANSCRIPT
Copyright 2007, Computer Sciences Corporation
e-tinglysningTeknikgruppemøde 09.02.2007
Bjarne Hansen
Business Systems Architect
e-mail: [email protected]
Copyright 2007, Computer Sciences Corporation Slide 2
Indholdsfortegnelse
Digital signering af tinglysningsdokumenter… Vedhæftning af (store) bilag… Præsentationsservices…
Copyright 2007, Computer Sciences Corporation Slide 3
Digital signering af tinglysningsdokumenter
Digital Signering i e-tinglysning XML Signature standarden Elementer i en anmeldelse (<etl:anmeldelse>…</etl:anmeldelse>) Elementer i en kuvert (<etl:kuvert>…</etl:kuvert>)
Principper for brug af XML Signature (i e-tinglysning)… Kanonisering Signatur metode Referencer KeyInfo
Eksempel: Opbygning og underskrift af anmeldelse (Java)
Copyright 2007, Computer Sciences Corporation Slide 4
XML-Signature på én side(http://www.w3.org/TR/xmldsig-core/)
<Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference URI? > <Transforms> <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo>
<SignatureValue>
(<KeyInfo>)?
(<Object ID?>)*
</Signature>
Det man rent faktisk underskriver…I hovedsagen en beskrivelse af hvordan underskriften er foretaget, samt en række referencer til det som underskrives, f.eks. et tinglysningsdokument.Referencen indeholder “digest” af det som refereres for at sikre at det refererede ikke kan ændres efterfølgende.
Referencerne kan pege på XML elementer i <Object> tag’et, XML elementer andre steder i dokumentet eller ressourcer som ikke er inkluderet i dokumentet, men som kan nås via f.eks. HTTP.
Den digitale signatur…Den digitale signatur af <SignedInfo> elementet. Dette er den egentlige underskrift.
Det man har underskrevet med…Der er forskellige muligheder i XML-Signature for at underskrive et dokument – i e-tinglysning vil dette være et X509 Certificate.
Data som underskrives…Her kan være de data som underskrives (digest) – eller f.eks. ekstra attributter som vedrører underskriften, som f.eks. tidsstempel eller lignende.
Copyright 2007, Computer Sciences Corporation Slide 5
XML Signature eksempel…Eksempel på XML Signature (taget fra XML Signature standarden)
<Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/> <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> </SignedInfo>
<SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
<KeyInfo> <KeyValue> <DSAKeyValue> <P>...</P><Q>...</Q><G>...</G><Y>...</Y> </DSAKeyValue> </KeyValue> </KeyInfo>
</Signature>
Copyright 2007, Computer Sciences Corporation Slide 6
En anmeldelse…
<etl:Anmeldelse> <etl:Tinglysningsdokument> … </etl:Tinglysningsdokument>
<etl:Bilag … /> <etl:Bilag … /> …
<etl:Underskrifter> <ds:Signature … /> <ds:Signature … /> … </etl:Underskrifter></etl:Anmeldelse
Underskrifter for anmeldelsenHer findes en eller flere underskrifter (XML-Signature), som underskriver Tinglysningsdokumentet samt evt. bilag. Hvad der konkret underskrives udpeges gennem referencer (<xs:Reference>) i <xs:SignatureInfo> elementet.
Antallet af underskrifter i <etl:Underskrifter> kan udvides uden at den øvrige del af dokumentet berøres. Således kan en anmeldelse underskrives af flere parter inden det sendes til tinglysning.
Selve tinglysningsdokumentetDet tinglysningsdokument som anmeldelsen vedrører. Tinglysningsdokumentet følger et fastlagt skema.På grund af “digest” i <xs:Reference> elementet kan tinglysningsdokumentet ikke ændres efter første underskrift (ude at det opdages)
Bilag til anmeldelsenMeta-data og de binære data (base64) for eventuelle bilag til anmeldelsen
Denne del af en anmeldelse er den som udfyldes i overensstemmelse med XML Signature standarden.
Copyright 2007, Computer Sciences Corporation Slide 7
En kuvert…
<etl:Kuvert> <etl:Anmeldelse … /> <etl:Anmeldelse … />
… <etl:Følgeseddel … /> … <etl:Underskrifter> <ds:Signature … /> </etl:Underskrifter></etl:Kuvert>
Underskrift(er) af følgeseddelHvis det er nødvendigt kan vi her have underskrifter af selve følgesedlen. Underskriften af følgesedlen er en kvittering for at den som har indsendt kuverten ønsker de anmeldelser som forefindes I kuverten behandlet som specificeret i følgesedlen. Der er således ikke (nødvendigvis) nogen sammenhæng mellem underskriften af følgesedlen og underskrifterne på anmeldelsen.
FølgeseddelFølgeseddel som angiver rækkefølge for behandling, samt forskellige egenskaber ved behandlingen.
AnmeldelserDe enkelte anmeldelser som er indeholdt i kuverten. Hver anmeldelse indeholder i sig selv underskrifter fra forskellige parter.
Denne del af en anmeldelse er den som udfyldes i overensstemmelse med XML Signature standarden.
Copyright 2007, Computer Sciences Corporation Slide 8
Principper for brug af XML Signature…
XML Signature er en generel standard som sætter vide rammer for digital signatur af XML dokumenter/elementer
Metode (algoritme) til dannelse af kanonisk repræsentation (canonicalization) af <SignatureInfo> elementet
Metode (algoritme) til underskrift Transformationer på data inden der beregnes “digest” Digest algoritme Hvilken slags KeyInfo (f.eks. certifikat) der bruges ved underskrift
Formålet med at fastsætte principper for anvendelse af XML Signature i forbindelse med e-tinglysning er…
…at begrænse muligheder til en fornuftig delmængde som understøtter det behov der er i forbindelse med e-tinglysning
…gennem denne begrænsningen at gøre det mere enkelt at udvikle og anvende digital signatur i forbindelse med e-tinglysning
Copyright 2007, Computer Sciences Corporation Slide 9
Kanonisering…
Angivelse af algoritme til kanonisering af <SignedInfo> elementet <CanonicalizationMetod Algorithm=“…” /> Der findes to algoritmer som udgangspunkt i XML signature, en som
medtager XML kommentarer og en som udelader XML kommentarer Der er beskrevet 2 algoritmer i XML Signature standarden
Kanonisk XML uden kommentarer (required) http://www.w3.org/TR/2001/REC-xml-c14n-20010315
Kanonisk XML med kommentarer (optional) http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
e-Tinglysning anbefaling Kanonisering uden kommentarer
http://www.w3.org/TR/2001/REC-xml-c14n-20010315
Copyright 2007, Computer Sciences Corporation Slide 10
Signatur metode
Algoritme for signering af <SignedInfo> elementet <SignatureMethod Algorithm=“…” /> Der er beskrevet 2 algoritmer i XML Signature standarden
DSA med SHA1 (required) http://www.w3.org/2000/09/xmldsig#dsa-sha1
RSA med SHA1 (optional) http://www.w3.org/2000/09/xmldsig#rsa-sha1
Ifølge standarden skal DSA understøttes, mens RSA er optionel, men da de nøgler som er indeholdt i OCES certifikaterne er RSA nøgler anvendes RSA algoritmen i forbindelse med signering i e-tinglysning
e-tinglysning anbefaling Algorithm = http://www.w3.org/2000/09/xmldsig#rsa-sha1
Copyright 2007, Computer Sciences Corporation Slide 11
Referencer…
Elementet <SignedInfo> kan indeholde et antal referencer <Reference> til elementer / data som “underskrives”
En reference er kendetegnet ved URI – Udpeger de data der skal med i underskriften Transforms – Angiver transformeringer som skal udføres på data inden
hash funktionen beregnes på data DigestMethod – Angivelse af den hash algoritme som anvendes
SHA1 http://www.w3.org/2000/09/xmldsig#sha1 (required)
DigestValue – Den beregnede værdi fra hash funktion
e-tinglysning anbefaling URI – Se efterfølgende sider… Transforms – Det foreslås at der kun tillades Canonicalization og Base64. DigestMethod – SHA1
Copyright 2007, Computer Sciences Corporation Slide 12
Referencer (URI)
Eksempler på URI’er “http://example.com/data/test.xml”
Reference til en ekstern data strøm, ie. man kan underskrive noget som ikke er med i selve dokumentet, f.eks. et bilag.
“” (tom streng)Refererer til hele dokumentet som signaturen er indeholdt i
“#dokument”Reference til det XML element som har ID=“dokument”
XPointer/XPath udtryk, f.eks. #xpointer(id(‘someid’)) #xpointer(id(‘hæftelse’)/child::hovedstol)
URI’en kan således udpeges lokale eller eksterne dokumenter/fragmenter
e-tinglysning anbefaling Brug af “#en-id-på-et-element” til at udpege element i anmeldelsen Det overvejes hvorvidt det kan tillades at bruge referencer til eksterne
ressourcer, i.e. http://...
Copyright 2007, Computer Sciences Corporation Slide 13
Flere referencer vs. flere signaturer
Underskrift <SignedInfo> er det som rent teknisk underskrives <SignedInfo> indeholder referencer <Reference> til elementer, der er en
del af underskriften Hver <Reference> indeholder hash af indhold
<Signature> <SignedInfo> <Reference /> <Reference /> </SignedInfo></Signature>
<Signature> <SignedInfo> <Reference /> </SignedInfo></Signature><Signature> <SignedInfo> <Reference /> </SignedInfo></Signature>
VS.
Forskellige måder at håndtere flere underskrifter på En “samlet” underskrift af flere elementer… En signatur per element…
Copyright 2007, Computer Sciences Corporation Slide 14
KeyInfo…
Angiver den “nøglering” som er anvendt ved underskrift af “dokumentet”
http://www.w3.org/2000/09/xmldsig#DSAKeyValue http://www.w3.org/2000/09/xmldsig#RSAKeyValue http://www.w3.org/2000/09/xmldsig#X509Data http://www.w3.org/2000/09/xmldsig#PGPData http://www.w3.org/2000/09/xmldsig#SPKIData http://www.w3.org/2000/09/xmldsig#MgmtData
e-tinglysning anbefaling Der anvendes X509Data, da vi ønsker underskrift med OCES certifikat
(generelt X509 certifikat)
Copyright 2007, Computer Sciences Corporation Slide 15
Sammendrag
Egenskab e-tinglysning anbefaling
CanonicalizationMethod http://www.w3.org/TR/2001/REC-xml-c14n-20010315
SignatureMethod http://www.w3.org/2000/09/xmldsig#rsa-sha1
DigestMethod http://www.w3.org/2000/09/xmldsig#sha1
KeyInfo http://www.w3.org/2000/09/xmldsig#X509Data
Copyright 2007, Computer Sciences Corporation Slide 16
Opbygning af <etl:anmeldelse> - step 1
// Opret nyt XML dokument
dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
db = dbf.newDocumentBuilder();
doc = db.newDocument();
// Tilføj XML rod element <etl:anmeldelse>
anmeldelse = doc.createElementNS("http://www.tinglysning.dk/schema/2007/01", "etl:anmeldelse");
anmeldelse.setAttributeNS(Constants.NamespaceSpecNS,"xmlns:etl", ETLNS);
doc.appendChild(anmeldelse);
// Tilføj XML element <etl:tinglysningsdokument>
tinglysningsdokument = doc.createElement("etl:tinglysningsdokument");
tinglysningsdokument.setAttribute("id", "dokument");
tinglysningsdokument.setIdAttribute("id", true);
tinglysningsdokument.appendChild(doc.createTextNode("..."));
anmeldelse.appendChild(tinglysningsdokument);
// Tilføj XML element <etl:bilag> for bilag nr. 1
bilag = doc.createElement("etl:bilag");
bilag.setAttribute("id", "bilag1");
bilag.setIdAttribute("id", true);
bilag.appendChild(doc.createTextNode("..."));
anmeldelse.appendChild(bilag);
Eksempel baseret på brug af Apache XML Security library
Copyright 2007, Computer Sciences Corporation Slide 17
Opbygning af <etl:anmeldelse> - step 2 // Tilføj XML element <etl:underskrifter>
underskrifter = doc.createElement("etl:underskrifter");
underskrifter.setAttribute("id", "underskrifter");
underskrifter.setIdAttribute("id", true);
anmeldelse.appendChild(bilag);
// Opret XML Signature element (<ds:Signature>) og tilføj den til elementet <etl:underskrifter>
signature = new XMLSignature(doc, baseURI, XMLSignature.ALGO_ID_SIGNATURE_DSA);
signature.getSignedInfo().addResourceResolver(new ResolverFragment());
underskrifter.appendChild(signature.getElement());
// Definer transformationer for <ds:Reference> elementer
transforms = new Transforms(doc);
transforms.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);
// Tilføj reference (<ds:Reference>) for tinglysningsdokumentet og bilag
signature.addDocument("#dokument", transforms, Constants.ALGO_ID_DIGEST_SHA1);
signature.addDocument("#bilag1", transforms, Constants.ALGO_ID_DIGEST_SHA1);
signature.addDocument("#bilag1", transforms, Constants.ALGO_ID_DIGEST_SHA1);
Copyright 2007, Computer Sciences Corporation Slide 18
Opbygning af <etl:anmeldelse> - step 3
// Indlæs Java keystore
ks = KeyStore.getInstance(keystoreType);
fis = new FileInputStream(keystoreFile);
ks.load(fis, keystorePass.toCharArray());
// Get private key for signing
privateKey = (PrivateKey) ks.getKey(privateKeyAlias, privateKeyPass.toCharArray());
// Tilføj certifikatet til <ds:KeyInfo> elementet
certificate = (X509Certificate) ks.getCertificate(certificateAlias);
signature.addKeyInfo(certificate);
// Underskriv tinglysningsdokument og bilag
signature.sign(privateKey);
Copyright 2007, Computer Sciences Corporation Slide 19
Referencer
Standarder X.509 Certificate (http://www.ietf.org/rfc/rfc2459.txt) XML Signature (http://www.w3.org/TR/xmldsig-core/)
Java Apache XML Security (http://xml.apache.org/security/)
.NET http://www.c-sharpcorner.com/UploadFile/lsitaraman/XMLSignatures11232005051727AM/XMLSignatures.aspx http://msdn2.microsoft.com/en-us/library/ms229950(vs.80).aspx
Copyright 2007, Computer Sciences Corporation Slide 20
Udestående…
“Features” i XML Signature som er under overvejelse… Brug af <Manifest> som “samlemappe” for referencer… <SignatureProperties>?
Har vi meta-data som vi gerne vil have embedded i signaturen?
Copyright 2007, Computer Sciences Corporation Slide 21
Vedhæftning af (store) bilag
Bilag i anmeldelsen Kan indlejres i <etl:Anmeldelse> som Base64 og refereres fra
tinglysningsdokumentet Der vil være en grænse for størrelsen af sådanne bilag Grænsen er ikke undersøgt endnu (Mb)…
Refererede bilag XML Signature åbner op for at referere bilag eksternt i forhold til det
dokument som indeholder underskriften Referencen kan være alt muligt – men er ”typisk” på formen http(s)://www.eksempel.dk/dokumenter?docid=12345
Dokumentet indeholder underskreven hash-værdi af det refererede dokument
Ved check af underskrift skal referencen kunne opløses således at det originale dokument er tilgængelig
Det er vigtigt at det originale dokument ”i al evighed” vil kunne refereres via denne reference (ellers vil signaturen ikke kunne verificeres)
Copyright 2007, Computer Sciences Corporation Slide 22
Mulige eksterne referencer
”Pull” model Anmelder inkluderer underskrevet reference til dokument på egen web server e-tinglysning henter dokumentet via referencen… Eksempel: http://www.billigeskøder.dk/bilag/sag1614/deklaration.pdf
”Push” model Anmelder beregner hash-værdi Anmelder indsender dokument (bilag) til e-tinglysning e-tinglysning svarer tilbage med reference + hash-værdi Eksempel:https://www.e-tinglysning.dk/bilag/id=D074A20F-8C5B-49b9-9B3F-E484399ADBE3
Anmelder checker hash-værdi Anmelder inkluderer reference i anmeldelsen
”push” modellen foretrækkes, da dokumenter således opbevares hos e-tinglysning (i al evighed) og der er ikke afhængigheder til eksterne systemer i det initielle check af anmeldelsen
Copyright 2007, Computer Sciences Corporation Slide 23
Konsekvenser af ”push” modellen
”Opløsning” af reference sker nemt hos e-tinglysning Der laves unik reference til dokumentet som opbevares i tinglysningssystemet e-tinglysning kan altid checke underskrift
Ingen afhængighed af eksterne systemer ved initielt check af anmeldelse Da dokumentet er ”indsendt” på forhånd er der ikke tilgængelighedsproblemer som
time-out etc.
Samme bilag kan ”genbruges” e-tinglysning garanterer at dokumentet forefindes ”i al evighed” – dermed kan
”standard” bilag refereres igen og igen (f.eks. forretningsbetingelser eller lignende)
Sikkerhed(?) Hvis eksterne skal kunne validere signaturen skal de have adgang til bilaget – er det
altid OK?? Eksterne skal implementere ”opløsning” af e-tinglysningsreferencen i deres check af
signaturer…
Copyright 2007, Computer Sciences Corporation Slide 24
Præsentationsservices
XSLT transformationer e-tinglysning stiller XSLT transformationer til rådighed Referencer til disse XSLT stylesheets kan hentes via WebService Selve XSLT stylesheet’et kan downloades eller refereres direkte hos e-
tinglysning WebService tillader at der hentes stylesheets til brug for forskellige typer af
præsentation (medier) WebService tillader at der altid hentes nyeste ”standard” stylesheet
XSLT kan bruges af eksterne parter til præsentation Brug XSLT til transformation gennem XML library Vis output via browser eller lignende
Copyright 2007, Computer Sciences Corporation Slide 25
WSRP Portlets
Information fra e-tinglysning kan udstilles som WSRP Portlets Hvad er behovet? Hvordan tænkes Portlets anvendt i eksterne systemer?
Hvilken funktionalitet anvendes?...hvordan tænkes integration med evt. lokalt sagsbehandlingssystem
Granularitet Inkludering af større mænge samlet funktionalitet på egen portal… Portlets med begrænset funktionalitet…
Sikkerhed SSO sammenhæng mellem ekstern portal og e-tinglysning
Kræver OCES login på ekstern portal …eller login i selve portlet skærmbilledet
Sikkerhed og ”federation” er ikke præcist defineret i standarden… Der kan være ”interoperability” problemer… Hvilke konkrete portal produkter anvendes til intra- / internet?
Copyright 2007, Computer Sciences Corporation
Experience. Results.