![]() |
Open
Interfaces for e-Government |
![]() |
Designation |
Access control for Citizen Card Environment functions |
Short name |
Access control |
Version |
1.2.2 |
Date |
2013-07-22 |
Document class |
Convention |
Document status |
Recommendation |
Short Name |
This document describes how the functions of the Citizen Card Environment can be protected against unauthorised access:
|
Authors |
Arno Hollosi |
Work group |
Federal Chancellery, Federal Staff Unit for ICT Strategy, Technology and Standards |
© |
This specification is supplied by A-SIT and the Federal Chancellery. It may be used without modification provided that reference is made to this copyright notice. The specification may be expanded, however any additional material must be clearly identified and the expanded specification must be made freely available. |
This document describes how the functions of the Citizen Card Environment can be protected against unauthorised access:
For better readability, this document dispenses with non-gender-specific formulations. However, the formulations expressly relate to both sexes.
The following name space prefixes are used in this specification to identify the name spaces of XML elements:
Prefix
|
Name space
|
Explanation
|
sl |
http://www.buergerkarte.at/namespaces/securitylayer/1.2# |
Elements of the interface specification |
This document uses the following keywords to categorise requirements: must, must not, required, should, should not, recommended, may, and optional. The interpretation of these keywords is set down in [Keywords].
In terms of authentication, access to a Citizen Card command can be categorised in one of the following four classes: anonym, pseudoanonym, certified and certifiedGovAgency. In order for commands to be classified in this way, the following questions must be answered:
Referer
HTTP header, the DataURL
parameter of the HTTP binding, or information from the client or server
certificates used are also used to answer this question. DataURL
parameter of the HTTP
binding, or information from the client or server certificates used are
also used to answer this question. The four authentication classes can be characterised along the following simplified lines:
*.gv.at
pattern or the certificate contains either the certificate extension administrative property or service provider property [VerwEig]. The following graphic contains the decision-making tree for assigning access to a Citizen Card Environment command in one of the four authentication classes. For the sake of clarity, no further distinction is made in the graphic between certified and certifiedGovAgency.
Firstly, a distinction is to be made according to the origin
of the command request. A command request can be received from one of
the four bindings TCP, TLS, HTTP and HTTPS or from the DataURL
server (the server that is identified with the DataURL
parameter of the HTTP binding and which can transmit other command
requests to the Citizen
Card Environment as part of command cascading).
If a command request originates in the TCP binding, access is classified as pseudoanonym and the source IP address of the TCP connection is labelled as the identification URL.
If a command request originates in the TLS binding, the next step is to check whether the requesting party has identified himself in the TLS connection to the Citizen Card Environment using a client certificate. If so, access is classified as certified, otherwise (as with the TCP binding) it is classified as pseudoanonym. In both cases the source IP address of the TLS connection is recorded as the identifying URL.
If a command request originates in the HTTP binding, the next
step is to check whether the execution of the command requires
protection, or just the command response (cf. section 2.3).
If even the execution of the command requires protection, access should
be classified as anonym
because in this case, the origin of the command request determines how
access is classified. Although the IP address of the command request is
known, in most cases it must be assumed that the command request comes
from the citizen's
browser via the HTTP binding, so that the browser acts as a kind of
proxy and conceals the actual origin of the command request. The source
IP address of the HTTP connection is recorded as the identifying URL.
If, by contrast, the command response requires protection, then the
destination of the command response determines how access is
classified. Thus, the next step is to check whether the DataURL
parameter of this binding is used. If not, there is no information
available about the destination of the command response; access is
classified as anonym, and
the source IP address of the HTTP connection is recorded as the
identifying URL. If so, then the protocol of the DataURL
parameter is to be analysed in a final step. If the parameter is http
,
access is classified as pseudoanonym;
if, on the other hand, the parameter is https
,
access should be classified as certified
because the information about the destination of the command response
is secured by means of the server's certificate behind the DataURL
.
In both cases DataURL
is recorded as the
identifying URL.
If the command request reaches the Citizen
Card Environment via the HTTPS binding, the next
step is to check whether the requesting party has identified himself in
the TLS connection beneath using a client certificate. If not, then the
same further checks are to be used as in the HTTP binding, beginning
with the check of whether the command execution or command response
requires protection. If, by contrast, the client certificate was used,
the HTTP header Referer
has to be evaluated
to determine the actual origin of the command request. If this header
is in place, access is to be classified as pseudoanonym
and the value of the header is recorded as the identifying URL. If the
header is missing, access is to be classified as certified
and the source IP address of the HTTPS connection is recorded as the
identifying URL.
If the command request is routed via command cascading of the
HTTP or HTTPS bindings from the DataURL
server to the Citizen
Card Environment, then, in a subsequent step,
the protocol of the URL previously used by the Citizen
Card Environment to contact the DataURL
server is to be analysed. If the protocol is https
,
access is classified as certified,
because the origin of the command request is then assured via the
certificate of the DataURL
server. DataURL
is recorded as the identifying URL. If, on the other hand the protocol
is http
, the next step is to check whether
the execution of the command requires protection or just the command
response (cf. section
2.3). If even the execution of the command requires
protection, access should be classified as pseudoanonym
because in this case the origin of the command request determines how
access is classified. In this case, too, DataURL
is recorded as the identifying URL. Otherwise, the remaining checks
take place as in the case of the HTTP binding, starting with the check
of whether the DataURL
parameter of the
binding is used.
If a DataURL
with https
protocol is used, the TLS and HTTPS bindings and the connection of the Citizen
Card Environment to the DataURL
server are based on the TLS protocol, which uses X.509 certificates [X509] to authenticate client and
server.
In all three cases, the certificate used is only of relevance for assigning access to an authentication class if it has been issued by a certification service provider that has been established as trustworthy by the Citizen Card Environment.
The following table lists the commands of the Security Layer interface and shows whether this execution of the command or the command response requires protection (compare this with the decision-making tree for classifying access in section 2.1).
Command | Requires protection |
---|---|
Create a signature in CMS format (sl:CreateCMSSignatureRequest ) |
Command response |
Create a signature in XMLDSIG format (sl:CreateXMLSignatureRequest ) |
Command response |
Verify a signature in CMS format (sl:VerifyCMSSignatureRequest ) |
Command response |
Verify a signature in XMLDSIG format (sl:VerifyXMLSignatureRequest ) |
Command response |
Request available info boxes (sl:InfoboxAvailableRequest ) |
Command response |
Read info box data (sl:InfoboxReadRequest ) |
Command response |
Change info box data (sl:InfoboxUpdateRequest ) |
Command execution |
Create an info box (sl:InfoboxCreateRequest ) |
Command execution |
Delete an info box (sl:InfoboxDeleteRequest ) |
Command execution |
Request capsule properties (sl:GetPropertiesRequest ) |
Command response |
Request card status (sl:GetStatusRequest ) |
Command response |
NOP (sl:NullOperationRequest ) |
Command response |
Calculate hash value (sl:CreateHashRequest ) |
Command response |
Verify hash value (sl:VerifyHashRequest ) |
Command response |
Encrypt as a CMS message (sl:EncryptCMSRequest ) |
Command response |
Encrypt as an XML message (sl:EncryptXMLRequest ) |
Command response |
Decrypt a CMS message (sl:DecryptCMSRequest ) |
Command response |
Decrypt an XML message (sl:DecryptXMLRequest ) |
Command response |
PIN-request/change (sl:CardManagementRequest) | Command response |
CardChannel-request (sl:CardChannelRequest) | Comman execution |
It is a matter for implementers to decide which rules they implement with which degree of detail, based on the classification presented. However, the rules presented below must be protected.
Rules describe a link between input data and a resulting action or user interaction. Rules are organized in chains and processed in sequence. The first rule that applies is executed. This simple prioritisation of rules is sufficient for the purposes of access control.
anonym,
pseudoanonym, certified, certifiedGovAgency
(cf. section 2.1).
*
matches any value; *
for one or more parts of the domain is allowed at the start of the
pattern (e.g. *.gv.at
or *.cio.gv.at
,
but not *io.gv.at
); *
for one or more bytes of the IP address is allowed at the end of the
pattern (e.g. 193.170.*
or 193.170.251.*
,
but not 193.170.25*
); https://finanzonline.bmf.gv.at/arbeitnehmerveranlagung/*
).
InfoboxReadRequest
).
Part of the name is permitted with a subsequent wildcard '*'
(e.g. Infobox*
for all info box commands),
or, alternatively a wildcard '*'
may be used
for all commands. base
), or would be replaced by
the corresponding, derived sector-specific personal identifiers (derived
).
A single wildcard '*'
may be used for the InfoboxIdentifier, KeyboxIdentifier and Identifier parameters. Valid actions for rules are allow, deny and name of another chain. Allow means that the function call is permitted and is to be executed. Deny means that the function call is not permitted and is not to be executed. The name of another chain means that the processing of rules is to continue with the first rule in the chain specified.
In the case of the actions allow and deny, the type of interaction must also be defined via the user interface.
The type of interaction indicates how the user is to be
involved in command processing. This means that only the minimum
required interaction is defined in the context of the rules. Higher
grade interactions may be necessary, depending on the function to be
completed. There are four interaction types: none
,
info
, confirm
, confirmWithSecret
.
none
means that the function to be executed
does not need to be confirmed by the citizen;
info
means that the citizen
must be notified
of the action to be executed via the user interface; confirm
means that the citizen
must confirm
permission to execute via the user interface;
in the case of confirmWithSecret
, the citizen
must give
permission for execution by entering a password via the user interface.
At least two chains must
exist: Identification
und Command
.
Processing always begins with the Identification
chain. The division makes it possible first to pinpoint the command
request and the destination of the command response, after which
further limits can be set on a command basis.
When a local Citizen Card Environment is delivered to the citizen, its rules must be configured so that they comply with the following standard settings. The Citizen Card Environment should allow the citizen to change the standard settings according to his personal wishes.
Identification
Rule number |
Authentication class |
Identifying term |
Action | User interaction |
---|---|---|---|---|
1 | certifiedGovAgency |
* |
allow
|
confirm |
2 | pseudoanonym |
* |
Chain Command |
- |
3 | anonym |
127.0.0.1 |
Chain Command |
- |
4 | anonym |
* |
deny | info |
Command
Rule number |
Authentication class |
Identifying term |
Command name | Command parameter | Action | User interaction |
---|---|---|---|---|---|---|
1 | certified | * |
InfoboxReadRequest |
InfoboxIdentifier="IdenitityLink" |
allow
|
confirm |
2 | certified | * |
InfoboxReadRequest |
InfoboxIdentifier="Mandates" |
allow
|
confirm |
3 | anonym |
* |
Infobox* |
InfoboxIdentifier="IdenitityLink" |
deny | info |
4 | anonym |
* |
Infobox* |
InfoboxIdentifier="Mandates" |
deny | info |
5 | anonym |
* |
Infobox* |
* |
allow | confirm |
6 | anonym |
* |
GetPropertiesRequest |
* |
allow | none |
7 | anonym |
* |
GetStatusRequest |
* |
allow | none |
8 | anonym |
* |
NullOperationRequest |
* |
allow | none |
9 | anonym |
* |
CreateHashRequest |
* |
allow | info |
10 | anonym |
* |
VerifyHashRequest |
* |
allow | info |
11 | certified |
*.a-trust.at |
CardManagementRequest |
* |
allow | info |
12 | certified |
*.sozialversicherung.gv.at |
CardManagementRequest |
* |
allow | info |
13 | anonym |
* |
CardManagementRequest |
* |
deny | info |
14 | certified |
*.a-trust.at |
CardChannelRequest |
* |
allow | info |
15 | certified |
*.sozialversicherung.gv.at |
CardChannelRequest |
* |
allow | info |
16 | anonym |
* |
CardChannelRequest |
* |
deny | info |
17 | anonym |
* |
* |
* |
allow | confirm |
When a local Citizen Card Environment is used by the citizen for the first time, its rules must be configured so that they comply with the following standard settings. The Citizen Card Environment should allow the citizen to change the standard settings according to his personal wishes.
Identification
Rule number | Authentication class |
Identifying term |
Action | User interaction |
---|---|---|---|---|
1 | certifiedGovAgency |
* |
allow
|
confirm |
2 | pseudoanonym |
* |
Chain Command |
- |
3 | anonym |
* |
deny | info |
Command
See section 3.3.2.
The decision that only the result of commands for creating signatures, but not the action itself, requires protection was taken on pragmatic grounds. Thus, in principle, it is possible for commands for creating signatures to be issued from an unknown source and transferred to a known destination. However, because a potential attacker would need the signature result for an effective attack, this classification seems justified.
A cross-site scripting (XSS) attack (cf. [XSS-FAQ]) allows an individual who is attacking the Citizen Card Environment to use the HTTPS binding with client authentication to show a false origin for the command request:
The attacker deceives the citizen into executing a manipulated link to a page that is classified as trustworthy in the rules of the Citizen Card Environment (e.g. the homepage of a public authority). This link contains JavaScript elements as parameters that are to execute an HTTPS post to the Citizen Card Environment. If the authority's page really is susceptible to an XSS attack, then these JavaScript elements are located on the page that the citizen receives from the actual trustworthy page in response when the link is followed, and are executed after the page is loaded in the browser. The Citizen Card Environment now receives a command request via the HTTPS binding. In line with the decision-making tree from section 2.1 the Citizen Card Environment checks the HTTP header Referer if the citizen's browser has identified itself with a client certificate. This header refers to the page classified as trustworthy, which is why access is classified as pseudoanonym and the trustworthy page is falsely recorded as the identifying URL (even though the command to the Citizen Card Environment actually comes from the JavaScript smuggled in by the attacker).
It is not least for this reason that the standard settings for access control in sections 3.3 and 3.4 have been chosen so that the citizen must confirm all sensitive commands.
Date | Version | Changes |
---|---|---|
2013-07-22 | 1.2.2 |
|
2005-03-01 | 1.2.1 |
|
2004-05-14 | 1.2.0 |
|