Features
• A Family of 9 Devices with User Memories from 1-Kbit to 256-Kbit • EEPROM User Memory
– Four, Eight or Sixteen Zones – Self-timed Write Cycles – Single-Byte or Multiple-Byte Page-Write Modes – Programmable Access Rights for Each Zone 2-Kbit Configuration Memory – 37-byte OTP Area for User-defined Codes – 160-byte Area for User-defined Keys and Passwords High Security Features – 64-bit Mutual Authentication Protocol (under license of ELVA) – Encrypted Checksum – Stream Encryption – Four Key Sets for Authentication and Encryption – Eight Sets of Two 24-bit Passwords – Anti-tearing Function – Voltage and Frequency Monitor Embedded Application Features – Low Voltage Operation: 2.7V to 5.5V – Secure Nonvolatile Storage for Sensitive System or User Information – 2-wire Serial Interface – 1.0 MHz Compatibility for Fast Operation – Standard 8-lead Plastic Packages – Same Pinout as 2-wire Serial EEPROM's Smart Card Features – ISO 7816 Class A (5V) or Class B (3V) Operation – ISO 7816-3 Asynchronous T = 0 Protocol (Gemplus® Patent) – Multiple Zones, Key Sets and Passwords for Multi-application Use – Synchronous 2-wire Serial Interface for Faster Device Initialization – Programmable 8-byte Answer-To-Reset Register – ISO 7816-2 Compliant Modules High Reliability – Endurance: 100,000 Cycles – Data Retention: 10 years – ESD Protection: 4,000V
•
•
CryptoMemory Specification For Standard Mode of Operation AT88SC0104C AT88SC0204C AT88SC0404C AT88SC0808C AT88SC1616C AT88SC3216C AT88SC6416C AT88SC12816C AT88SC25616C
•
•
•
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Table of Contents
Features ...................................................................................................... i Table of Contents...................................................................................... 1 1 Pin Configuration and Package Information ......................................... 1
1.1 1.2 Pin Configuration ...............................................................................................1 Package Information ..........................................................................................1
2
Description ............................................................................................... 1
2.1 2.2 2.3 Embedded Applications .....................................................................................2 Smart Card Applications ....................................................................................2 Scope and Purpose of This Document ..............................................................2
3
Pin Description ......................................................................................... 3
3.1 3.2 3.3 3.4 Supply Voltage (VCC) .......................................................................................3 Clock (SCL/CLK) ...............................................................................................3 Serial Data (SDA/IO) .........................................................................................3 Reset (RST) .......................................................................................................3
4
Detailed Description ................................................................................ 3
4.1 4.2 User Memory .....................................................................................................3 Configuration Memory .......................................................................................9
5
Communication Security Modes .......................................................... 13
5.1 5.2 5.3 5.4 Security Operations .........................................................................................13 Data Protection Features .................................................................................14 Configuration Memory Values .........................................................................15 Security Fuses ................................................................................................20
6 7
Protocol Selection ................................................................................. 22 Synchronous Protocol .......................................................................... 24
7.1 7.2 7.3 7.4 7.5 7.6 7.7 Start-up Sequence ...........................................................................................24 Command Set ..................................................................................................24 Command Format ............................................................................................25 Acknowledge Polling .......................................................................................26 Device Addressing ...........................................................................................27 Command Descriptions ...................................................................................27 Initialization Example .......................................................................................33
1
5210B–SMIC–11/08
8
Asynchronous T=0 Protocol ................................................................. 34
8.1 8.2 8.3 8.4 8.5 Character format ..............................................................................................34 Command format .............................................................................................34 PPS Support ....................................................................................................35 Command Set ..................................................................................................37 Command Descriptions ...................................................................................40
9
Initialization Example ............................................................................ 46
9.1 9.2 9.3 9.4 Write Data to User Zones ................................................................................46 Unlock Configuration Memory .........................................................................46 Write Data to Configuration Memory ...............................................................46 Set Security Fuses ..........................................................................................46
10 Absolute Maximum Ratings .................................................................. 49
10.1 10.2 DC and AC Characteristics ..............................................................................50 Timing Diagrams for Synchronous Communications ......................................52
11 Tamper Detection ................................................................................... 54
2
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
1. Pin Configuration and Package Information
1.1 Pin Configuration
Table 1-1.
Pad VCC GND SCL/CLK SDA/IO RST
Package Pin Configuration
Description Supply Voltage Ground Serial Clock Input Serial Data Input/Output Reset Input ISO Module Contact C1 C5 C3 C7 C2 Standard Package Pin 8 4 6 5 NC
1.2
Package Information
Smart Card Module
VCC=C1 RST=C2 SCL/CLK=C3 NC=C4 C5=GND C6=NC C7=SDA/IO C8=NC
8-lead SOIC, PDIP
NC NC NC GND
1 2 3 4
8 7 6 5
VCC NC SCL SDA
2. Description
The AT88SCxxxxC is a family of 9 high-performance secure memory devices providing 1K to 256K bits of user memory with advanced built-in security and cryptographic features. The memory is divided into 4, 8 or 16 user zones each of which may be individually set with different security access rights or used together to provide space for one or multiple data files. Cryptomemory has a configuration memory that contains registers to define the security rights for each user zone and space for passwords and secret keys used by the security logic of CryptoMemory.
Through dynamic, symmetric mutual authentication, data encryption, and the use of encrypted checksums, CryptoMemory provides a secure place for storage of sensitive information within a system. With its tamper protection circuits, this information remains safe even under attack.
CryptoMemory also provides high security, low cost and ease of implementation of host-client type systems without the need for a microprocessor operating system. The embedded cryptographic engine provides for a dynamic, symmetric mutual authentication between the device and host, as well as performs stream encryption for all data and passwords exchanged between the device and host. Up to four unique key sets are available for these operations. 1
5210B–SMIC–11/08
2.1
Embedded Applications
A 2-wire serial interface running at 1.0 MHz is used for fast and efficient communications with up to 15 devices that may be individually addressed. CryptoMemory is available in industry standard 8-lead packages with the same familiar pinout as 2-wire serial EEPROM’s supporting only the synchronous communications protocol.
2.2
Smart Card Applications
CryptoMemory offers the ability to communicate with virtually any smart card reader using the asynchronous T=0 protocol defined in ISO 7816-3. For devices with 32K bits of user memory and larger, communication speeds up to 153,600 baud are supported by utilizing ISO 7816-3 Protocol and Parameter Selection. All CryptoMemory devices in smart card module form will also communicate using a synchronous 2-wire serial interface. Figure 2-1. Block Diagram
VCC GND
Power Management
Authentication, Encryption and Certification Unit
Synchronous Interface SCL/CLK SDA/IO RST Asynchronous ISO Interface Reset Block
Data Transfer EEPROM Password Verification Answer to Reset
2.3
Scope and Purpose of This Document
This document covers only the Standard Mode of operation of CryptoMemory. The other modes of operation are the Authentication and Encryption Modes. This document provides all the information needed to utilize CryptoMemory in the Standard Mode. The scoping of this document allows for free distribution without formal requirements of any user agreements and serves the purpose of developing applications using only the Standard Mode of operation. Documents containing detailed description of the cryptographic technology, operation and function of the Authentication and Encryption Modes of CryptoMemory are secure and so only available under Non-Disclosure and Limited Licensing Agreements (NDA and LLA). Contact your regional Atmel sales office to obtain these secure documents.
2
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
3. Pin Description
3.1 Supply Voltage (VCC)
The VCC input is a 2.7V to 5.5V positive voltage supplied by the host.
3.2
Clock (SCL/CLK)
In the asynchronous T=0 protocol, the SCL/CLK input is used to provide the device with a carrier frequency f. The nominal length of one bit emitted on I/O is defined as an "elementary time unit" (etu) and is equal to 372/f. When the synchronous protocol is used, the SCL/CLK input is used to clock data in on the positive clock edge and clock data out on the negative clock edge.
3.3
Serial Data (SDA/IO)
The SDA pin is bi-directional for serial data transfer. This pin is open-drain driven and may be wired with any number of other open drain or open collector devices. An external pull up resistor should be connected between SDA and VCC, a nominal value of 4.7K ohm may be used. The value of this resistor and the system capacitance loading the SDA bus will determine the rise time of SDA. This rise time will determine the maximum frequency during Read operations. Low value pull up resistors will allow higher frequency operations while drawing higher average power supply current.
3.4
Reset (RST)
CryptoMemory provides an ISO 7816-3 compliant asynchronous answer-to-reset sequence. When the reset sequence is activated, the device will output the data programmed into the 64-bit answer-to-reset register. When RST is low, all internal logic, access-rights, and write cycles are in reset, except the asynchronous mode activation flag. A weak internal pull-up on the RST input pad allows the device to be used in synchronous mode without bonding RST. For synchronous only smart card applications, an external pull-up on RST is recommended to ensure synchronous operation under any system timings or conditions. CryptoMemory does not support a synchronous answer-to-reset sequence. The RST input is not available in the plastic package options for CryptoMemory.
4. Detailed Description
To enable the security features of CryptoMemory, personalize the device by setting up registers and loading appropriate passwords and keys. Do this by programming the configuration memory using simple write and read commands. Gain access to the configuration memory by successfully presenting the secure code (write 7 password). After writing and verifying data in the configuration memory, blow the security fuses to lock this information in the device. For additional information on personalizing CryptoMemory, please see the examples in the protocol sections of this specification.
4.1
User Memory
The EEPROM user memory is divided into 4, 8 or 16 user zones. Multiple zones allow for the storage of different data types or files in different zones. Access to user zones is possible only after meeting security requirements. The customer defines these security requirements in the configuration memory during device personalization. When the same security requirements define access to multiple zones, the zones effectively serve as one large storage area albeit with the requirement to select each zone prior to acces..
3
5210B–SMIC–11/08
Figure 4-1.
ZONE
AT88SC0104C User Memory
$0 $00 $1 $2 $3 $4 $5 $6 $7
User 0
$18 $00
32 Bytes
User 1
-
32 Bytes
$00 User 2 $18 $00 User 3 $18 Note: Page size=16 bytes 32 Bytes 32 Bytes
Figure 4-2.
ZONE
AT88SC0204C User Memory
$0 $00 $1 $2 $3 $4 $5 $6 $7
User 0
$38 $00
64 Bytes
User 1
$38 $00
64 Bytes
User 2
$38
64 Bytes
4
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Figure 4-2.
ZONE $00 User 3 $38 Note: Page size=16 bytes 64 Bytes
AT88SC0204C User Memory
$0 $1 $2 $3 $4 $5 $6 $7
Figure 4-3.
ZONE
AT88SC0404C User Memory
$0 $00 $1 $2 $3 $4 $5 $6 $7
User 0
$78 $00
128 Bytes
User 1
$78 $00
128 Bytes
User 2
$78 $00
128 Bytes
User 3
$78
128 Bytes
Note:
Page size=16 bytes
5
5210B–SMIC–11/08
Figure 4-4.
ZONE
AT88SC0808C User Memory
$0 $00 128 Bytes $1 $2 $3 $4 $5 $6 $7
User 0 $78 User 1 User 6 $00 $78 $00 User 7 $78 Note: Page size=16 bytes 128 Bytes
Figure 4-5.
ZONE
AT88SC1616C User Memory
$0 $00 128 Bytes $1 $2 $3 $4 $5 $6 $7
User 0 $78 User 1 User 14 $00 $78 $00 User 15 $78 Note: Page size=16 bytes 128 Bytes
6
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Figure 4-6.
ZONE
AT88SC3216C User Memory
$0 $00 256 Bytes $1 $2 $3 $4 $5 $6 $7
User 0 $F8 User 1 User 14 $00 $F8 $00 User 15 $F8 Note: Page size= 64 bytes 256 Bytes
Figure 4-7.
ZONE
AT88SC6416C User Memory
$0 $000 512 Bytes $1 $2 $3 $4 $5 $6 $7
User 0 $1F8 User 1 User 14 $000 $1F8 $000 User 15 $1F8 Note: Page size= 64 bytes 512 Bytes
7
5210B–SMIC–11/08
Figure 4-8.
ZONE
AT88SC12816C User Memory
$0 $000 1024 Bytes $1 $2 $3 $4 $5 $6 $7
User 0 $3F8 User 1 User 14 $000 $3F8 $000 User 15 $3F8 Note: Page size= 128 bytes 1024 Bytes
Figure 4-9.
ZONE
AT88SC25616C User Memory
$0 $000 2024 Bytes $1 $2 $3 $4 $5 $6 $7
User 0 $7F8 User 1 User 14 $000 $7F8 $000 User 15 $7F8 Note: Page size= 128 bytes 2024 Bytes
4.1.1
Control Logic Access to the user zones occurs only through the device’s control logic. This logic is configurable through proper programming of access, passwords and keys registers of the configuration
8
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
memory during device personalization. This logic also implements the cryptographic engine for performing the various higher-level security functions of the device.
4.2
Configuration Memory
The configuration memory consists of 2048 bits of EEPROM memory used for storing passwords, keys, codes and defining security levels to be used for each User Zone. The control logic defines access rights to the configuration memory as well as to the user zones and the user may not alter these rights. The access rights include the ability to program certain portions of the configuration memory and then lock the data written through the use of Security Fuses. The configuration memory for each CryptoMemory device is identical with the exception of the number of Access Registers and Password/Key Registers available. Devices with 4 user zones have four sets of registers, those with 8 user zones 8 sets of registers, and those with 16 user zones 16 sets of registers. Unused memory space in the register region becomes reserved to ensure other components of the configuration memory remain at the same address location.
9
5210B–SMIC–11/08
Figure 4-10. AT88SC0104C, 0204C, 0404C Configuration Memory
$0 $00 $08 $10 $18 $20 $28 $30 $38 $40 Issuer Code $48 $50 $58 $60 $68 Reserved for Authentication and Encryption $70 $78 $80 $88 $90 $98 Reserved for Authentication and Encryption $A0 $A8 $B0 $B8 $C0 $C8 $D0 Reserved $D8 $E0 $E8 $F0 Reserved $F8 PAC Write 7 PAC Read 7 Forbidden PAC PAC PAC Write 0 Write 1 Write 2 PAC PAC PAC Read 0 Read 1 Read 2 Password Secret Cryptography Reserved DCR AR0 PR0 AR1 Fab Code MTZ Lot History Code Identification Number Nc PR1 AR2 PR2 AR3 PR3 Access Control $1 $2 $3 $4 $5 $6 $7 Identification Card Manufacturer Code Read Only
Answer To Reset
10
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Figure 4-11. AT88SC0808C Configuration Memory
$0 $00 $08 $10 $18 $20 $28 $30 Reserved $38 $40 Issuer Code $48 $50 $58 $60 $68 Reserved for Authentication and Encryption $70 $78 $80 $88 $90 $98 Reserved for Authentication and Encryption $A0 $A8 $B0 $B8 $C0 $C8 $D0 $D8 $E0 $E8 $F0 Reserved $F8 PAC PAC PAC PAC PAC PAC PAC PAC Write 0 Write 1 Write 2 Write 3 Write 4 Write 5 Write 6 Write 7 PAC PAC PAC PAC PAC PAC PAC PAC Read 0 Read 1 Read 2 Read 3 Read 4 Read 5 Read 6 Read 7 Forbidden Password Secret Cryptography DCR AR0 AR4 PR0 PR4 AR1 AR5 Fab Code MTZ Lot History Code Identification Number Nc PR1 PR5 AR2 AR6 PR2 PR6 AR3 AR7 PR3 PR7 Access Control $1 $2 $3 $4 $5 $6 $7 Identification Card Manufacturer Code Read Only
Answer To Reset
11
5210B–SMIC–11/08
Figure 4-12. AT88SC1616C, 3216C, 6416C, 12816C, 25616C Configuration Memory
$0 $00 $08 $10 $18 $20 $28 $30 $38 $40 Issuer Code $48 $50 $58 $60 $68 Reserved for Authentication and Encryption $70 $78 $80 $88 $90 $98 Reserved for Authentication and Encryption $A0 $A8 $B0 $B8 $C0 $C8 $D0 $D8 $E0 $E8 $F0 Reserved $F8 PAC PAC PAC PAC PAC PAC PAC PAC Write 0 Write 1 Write 2 Write 3 Write 4 Write 5 Write 6 Write 7 PAC PAC PAC PAC PAC PAC PAC PAC Read 0 Read 1 Read 2 Read 3 Read 4 Read 5 Read 6 Read 7 Forbidden Password Secret Cryptography DCR AR0 AR4 AR8 AR12 PR0 PR4 PR8 PR12 AR1 AR5 AR9 AR13 Fab Code MTZ Lot History Code Identification Number Nc PR1 PR5 PR9 PR13 AR2 AR6 AR10 AR14 PR2 PR6 PR10 PR14 AR3 AR7 AR11 AR15 PR3 PR7 PR11 PR15 Access Control $1 $2 $3 $4 $5 $6 $7 Identification Card Manufacturer Code Read Only
Answer To Reset
12
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5. Communication Security Modes
Communication between the device and host operates in three basic modes: Standard, Authentication and Encryption Modes. The Standard Mode is the default mode for the device after power-up. Special procedures exist for enabling Authentication and Encryption Modes but are beyond the scope of this document. Information pertaining to use of Authentication and Encryption Modes of CryptoMemory is available from Atmel under Non-Disclosure and/or Limited Licensing Agreements (NDA and/or LLA).
Table 5-1.
Mode
Communication Security Modes
Configuration Data clear clear clear User Data clear clear encrypted Passwords clear encrypted encrypted Data Integrity Check n/a MAC MAC
Standard/Password Authentication Encryption
Configuration data includes the entire configuration memory except the passwords. MAC: Message Authentication Code.
5.1
5.1.1
Security Operations
Password Verification The use of passwords protects read and write accesses to the user zones. Any one of 8 password sets is available for assignment to any user zone through configuration of access registers. CryptoMemory provides separate 24-bit passwords for read and write operations. Read passwords grant only read accesses to zones under password protection, while write passwords grant both read and write accesses. Successful presentation of any password renders the verify password command active until the presentation of another password or device reset. Only one password may be active at a time. Presenting incorrect passwords decrements the value of the corresponding password attempts counter (PAC). Decrementing the PAC to $00 permanently disables the corresponding password and permanently renders the corresponding user zone(s) under protection inaccessible. Operation in authentication or encryption modes requires encryption of passwords for all password transactions. Password Verification
Figure 5-1.
CryptoMemory Device Verify Password
Command/Communication Verify Password
Host Logic Send Password encrypted if performed after Mutual Authentication
Allow Access
5.1.2
Mutual Authentication The mutual authentication mode employs cryptographic technology that allows the device to authenticate the host, and the host to authenticate the device prior to any data communication between the two. Additional information on using mutual authentication is available from Atmel under NDA and/or LLA.
13
5210B–SMIC–11/08
5.1.3
Data Encryption The encryption mode builds upon the mutual authentication mode such that the host and device first authenticate each other and go further to encrypt all data communications between them. Additional information on using the encryption mode is available from Atmel under NDA and/or LLA.
5.1.4
Encrypted Checksum The encrypted checksums allows for bidirectional data validity and integrity check between the host and device. Additional information on using encrypted checksums is available from Atmel under NDA and LLA.
5.2
Data Protection Features
Security operations control access to data stored in CryptoMemory. After gaining access, additional options exist to protect data in the user memory.
5.2.1
Modify Forbidden The Modify Forbidden option renders the user zone read-only by restricting all write operations to it. It is recommended to program all required data in the user zone prior to enabling this option. Modify Forbidden is available for any user zone and is selectable by configuring appropriate Access Registers. Program Only The Program Only option constrains data bit modification to programming from logic “1” to logic “0” only. Data bits may never change from logic “0” to logic “1”. Program Only is available for any user zone and is selectable by configuring appropriate Access Registers.
5.2.2
5.2.3
Write Lock The Write Lock option provides ability to render individual bytes within a user zone read-only by restricting all write operations to it. It operates on 8-byte page level whereby the lowest addressed byte of the page serves as the write access control byte for that page. Figure 5-2 shows the use of write lock for data at addresses $080 - $087. The byte at $080 controls writeaccess to bytes from $080 to $087.
Figure 5-2.
Address $080
Write Lock example
$0 110110011 $1 xxxx xxxx locked $2 xxxx xxxx locked $3 xxxx xxxx $4 xxxx xxxx $5 xxxx xxxx locked $6 xxxx xxxx $7 xxxx xxxx
The Write Lock option also applies to the access control byte for each page by writing its least significant (rightmost) bit to logic “0”. Moreover, only logic modifications from logic “1” to logic “0” of the access control byte are permissible.
14
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Write Lock is available for any user zone and is selectable by configuring appropriate access registers. Furthermore, configuring a user zone with the Write Lock option restricts writing to that zone to a byte at a time. Attempts to write several bytes within a command results in writing only the first byte. 5.2.4 Anti-tearing (Power Loss Protection) In the event of a power loss during a write cycle, the integrity of the device's stored data may be recovered. This function is optional and the host may choose to activate the anti-tearing function for any write to a user zone or configuration memory by use of the appropriate B4 system write command. When anti-tearing is active, write commands will take longer to execute since more write cycles are required. Additionally, the data written is limited to 8 bytes.
Data is written first to a buffer zone in EEPROM instead of the intended destination address in the user zone or configuration memory, but with the same access conditions. If this write cycle is interrupted the original data remains in tact in the user zone or configuration memory. The data is then written in the required memory location. If this second write cycle is interrupted the device will automatically recover the data from the system buffer zone at the next power-up and write it to the intended destination address.
In two-wire mode, the host is required to perform ack polling for 28ms after write commands when anti-tearing is active. At power-up five clock cycles are required to check the anti-tearing flags. In the event that the device needs to carry out the data recovery process the host is required to perform ack polling for 14ms.
5.3
Configuration Memory Values
This section describes each individual field in the configuration memory.
5.3.1
Default Values Atmel programs certain fields of the configuration memory at the factory. The customer may elect to change the content of all of these fields except for the Lot History Code field, which is permanently locked. Atmel programs the remainder of the fields, including all of the configuration memory and user zones to ones prior to releasing the device from the factory. Table 5-2 on page 16 summarizes device fields Atmel programs at the factory. A brief description of each field follows.
15
5210B–SMIC–11/08
Table 5-2.
Factory Programmed Fields
ATR 3B B2 11 00 10 80 00 01 3B B2 11 00 10 80 00 02 3B B2 11 00 10 80 00 04 3B B2 11 00 10 80 00 08 3B B2 11 00 10 80 00 16 3B B3 11 00 00 00 00 32 3B B3 11 00 00 00 00 64 3B B3 11 00 00 00 01 28 3B B3 11 00 00 00 02 56 Fab Code 10 10 20 20 40 40 80 60 16 80 32 10 64 40 28 60 58 60 Lot History Code Variable, locked Variable, locked Variable, locked Variable, locked Variable, locked Variable, locked Variable, locked Variable, locked Variable, locked Write 7 Password (Secure Code) DD 42 97 E5 47 47 60 57 34 22 E8 3F 20 0C E0 CB 28 50 F7 62 0B 22 EF 67 17 C3 3A
Device AT88SC0104C AT88SC0204C AT88SC0404C AT88SC0808C AT88SC1616C AT88SC3216C AT88SC6416C AT88SC12816C AT88SC25616C
5.3.2
Answer To Reset (ATR) This is an 8 byte wide register with content that Atmel defines. This register is read/write accessible prior to blowing the FAB fuse, but becomes read-only after blowing the fuse. Fab Code This field is a 16-bit wide register with content that Atmel defines. This field is read/write accessible prior to blowing the FAB fuse, but becomes read-only after blowing the fuse.
5.3.3
5.3.4
Memory Test Zone (MTZ) This field is a 16-bit wide register with open read/write access privileges at all times for testing basic communication to the device. This field is free of all security constraints at all times. Card Manufacturer Code This field is a 32-bit wide register with read/write access privileges for the customer to define its content. The content of this field becomes read-only after blowing the PER fuse. Lot History Code This field is a 64-bit wide register with content that Atmel defines. This field is read-only. Issuer Code This field is a 128-bit wide register with read/write access privileges for customer to define its content. The content of this field becomes read-only after blowing the PER fuse.
5.3.5
5.3.6
5.3.7
5.3.8
Device Configuration Register (DCR) This 8-bit register allows selection of the following device configuration options (active low). The values programmed have an immediate affect on the logic of the device. The default value is “1” for each bit. Table 5-3.
Bit 7 SME Bit 6 UCR Bit 5 UAT Bit4 ETA Bit 3 CS3 Bit 2 CS2 Bit 1 CS1 Bit 0 CS0
16
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5.3.8.1 SME – Supervisor Mode Enable Asserting this bit (SME = “0”) enables supervisor mode for Write 7 password such that verifying Write 7 password grants read and write accesses to all password sets and PACs. Verifying Write 7 password does not grant access to other passwords when this bit is not asserted (SME = “1”). UCR – Unlimited Checksum Reads UCR is applicable under authentication and encryption modes of operation. UAT – Unlimited Authentication Trials UAT is applicable under the authentication mode of operation. ETA – Eight Trials Allowed Asserting this bit (ETA = “0”) extends the trials limit to 8 incorrect attempts to verify a password. The password attempt counter (PAC) will decrement ($FF, $FE, $FC, $F8, $F0, $E0, $C0, $80, $00) with each incorrect attempt. Disabling this bit (ETA = “1”) limits password verification trials to only four incorrect attempts ($FF, $EE, $CC, $88, $00). The ETA bit also has an application in the authentication mode of operation. CS0 – CS3: Programmable Chip Select (only relevant in synchronous protocol) The four most significant bits (b4 – b7) of every command comprise the Chip Select Address. All CryptoMemory devices will respond to the default Chip Select Address of $B (1011). Each device also responds to a second Chip Select Address programmed into CS0-CS3 of the Device Configuration Register. By programming each device to a unique Chip Select Address, it is possible to connect up to 15 devices on the same Serial Data bus and communicate individually to each. Global communications to all devices sharing the bus is accomplished using the default Chip Select Address $B. Access Registers Four, eight, or sixteen 8-bit access registers allow personalization of the device. Each access register works in conjunction with a Password/Key register to define the security settings for each individual zone of the user memory. Values in the access registers take immediate effect after programming. The default value for each bit is “1”.
5.3.8.2
5.3.8.3
5.3.8.4
5.3.8.5
5.3.9
Table 5-4.
Bit 7 PM1
Access Register
Bit 6 PM0 Bit 5 AM1 Bit4 AM0 Bit 3 ER Bit 2 WLM Bit 1 MDF Bit 0 PGO
5.3.9.1
PM(1:0) Password Mode
Table 5-5.
PM0 1 1 0
Password Mode
PM1 1 0 X Access No Password required Write Password required Read and Write Passwords required
17
5210B–SMIC–11/08
When PM = “11”, the user zone under protection requires no password. When PM = “10”, the zone requires Write Password verification for writing and reading is free. When PM = “01” or “00”, reading requires the read password verification and writing requires write password verification. However, proper verification of the Write Password also grants read access. The password set required is specified by PW(3:0) in the corresponding Passwords/Keys Register (see following section). Verification of the Write password also allows modification of the read and the write passwords. 5.3.9.2 AM(1:0) – Authentication mode The AM bits allow configuration of the authentication modes and only available under the authentication mode of operation. ER – Encryption Required The use of the ER bit is applicable in the encryption mode of operation. WLM – Write Lock Mode Asserting this bit (WLM = “0”) divides the user zone into 8-byte pages. The first byte of each page becomes the Write Lock Byte and defines the locked/unlocked status for each byte in the page. Write access is forbidden to a byte if its associated bit in the Write Lock Byte is set to “0”. Bit 7 controls byte 7; bit 6 controls byte 6, etc. Setting bit 0 to “0” locks the Write Lock Byte itself. Enabling Write Lock Mode limits write operations to one byte at a time. MDF – Modify Forbidden Asserting this bit (MDF = “0”) renders the user zone read-only at all times. The user zone must, therefore, be programmed before setting this bit to “0” PGO – Program Only Asserting this bit (PGO = “0”) allows changing of data within the user zone under protection from “1” to “0” and never from “0” to “1”. Password/Key Registers Four, eight or sixteen 8-bit Password/Key registers receive definition during device personalization. Each Password/Key register works in conjunction with a corresponding Access register to define the security settings of each zone. The values programmed have an immediate affect on the logic of the device. The default value is “1” for each bit. Bit 3 is reserved and should be left as value “1.”
5.3.9.3
5.3.9.4
5.3.9.5
5.3.9.6
5.3.10
Table 5-6.
Bit 7 AK1
Password/Key Register Definition
Bit 6 AK0 Bit 5 POK1 Bit4 POK0 Bit 3 Resv Bit 2 PW2 Bit 1 PW1 Bit 0 PW0
5.3.10.1
AK(1:0) – Authentication Key The AK bits are applicable under the authentication mode of operation. POK(1:0) – Program Only Key The POK bits are applicable under the authentication mode of operation.
5.3.10.2
18
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5.3.10.3 PW(2:0) – Password Set These bits define which of the eight password sets must be presented to allow access to the user zone when the password mode is selected. Identification Number A 56-bit number the customer defines during personalization. It is recommended that a unique identification number be assigned to each device. Cryptograms Cryptograms are applicable to authentication and encryption modes of operation. 5.3.13 Session Keys Session keys are applicable to authentication and encryption modes of operation. 5.3.14 Secret Seeds Secret Seeds are applicable to authentication and encryption modes of operation. 5.3.15 Password Sets The password fields contain eight sets of two 24-bit passwords for read and write operations. The customer defines the values of these passwords during personalization. Successfully verifying the Write password allows modification of the Read and the Write passwords of the same set. Secure Code The secure code is Write 7 Password. Properly presenting this password grants write access to the configuration memory during personalization. Atmel defines the initial values of the secure code but the customer may change these values after successful verification of Write 7 password. Table 5-2 on page 16 shows the secure codes for the various devices as they leave the Atmel factory. After blowing the PER fuse, verifying Write 7 password no longer grant write access to the configuration memory, and the configuration memory becomes read-only thereafter. 5.3.17 Password Attempts Counters (PAC) Each of the sixteen PAC fields contains an 8-bit attempts counter for the verify password process. Each PAC corresponds to a password. The attempts counter limits the number of incorrect consecutive presentations of the corresponding password to four, after which it locks the password from future use. The PAC will decrement ($FF, $EE, $CC, $88, $00) with each incorrect attempt to present the password. The PAC permanently locks the corresponding password once its value reaches $00. Prior to reaching $00, any correct presentation of the password resets the PAC value to $FF. Authentication Attempts Counters (AAC) The authentication attempts counters are applicable in authentication and encryption modes of operation only.
5.3.11
5.3.12
5.3.16
5.3.18
19
5210B–SMIC–11/08
5.4
Security Fuses
CryptoMemory uses four fuses. The status of these fuses is given in a ‘fuse byte.’ A value of ‘0’ indicates that the fuse has been blown. Bits 4 to 7 of this byte are not used as Security Fuses and are reserved for Atmel use. Table 5-7.
F7 resv
Device Fuses
F6 resv F5 resv F4 resv F3 SEC F2 PER F1 CMA F0 FAB
The bits SEC, PER, CMA and FAB are non-volatile fuses blown at the end of various steps in the manufacturing and personalization process. Once blown, these fuses can never be reset. Atmel blows the SEC fuse to lock the lot history code before the device leaves the factory. Blowing the remainder of the fuses must follow the sequence: 1. FAB – To lock the Answer To Reset and the Fab Code portions of the Configuration Memory. 2. CMA – To lock the Card Manufacturer Code of the Configuration Memory 3. PER – To lock the remainder of the Configuration Memory Any attempt to blow a fuse out of sequence will be unsuccessful. Table 5-8 on page 21 provides a summary of access rights for all portions of the memory for each fuse condition.
20
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Table 5-8.
Fuse Access Rights Summary
Fuse Zone Operation Read Write Read Free Write Read Write Read Write Read Access Control Write Read Write Read Secure Code Write Read Secure Code Secret Write Read Secure Code Passwords Write Read Write Read Forbidden Forbidden Write Read AR User Zones Write AR AR AR Forbidden Forbidden Forbidden Free Secure Code Free Secure Code Free Secure Code Free Write PW Secure Code Secure Code Write PW Secure Code Secure Code Forbidden Secure Code Secure Code Forbidden Free Secure Code Free Forbidden Free Secure Code Free Secure Code Free Secure Code Free Forbidden Free Secure Code Free Secure Code Free Forbidden Free Forbidden Free Secure Code Free Secure Code Free Forbidden Free Forbidden Free Forbidden Free Forbidden Free Free Free SEC=0 Free Secure Code FAB=0 Free Forbidden CMA=0 Free Forbidden PER=0 Free Forbidden
Identification (Except MTZ and CMC) Memory Test Zone (MTZ) Card Manufacturer Code (CMC) Read Only (Lot History Code)
Crytography (Except Encryption Keys S) Encryption Keys (S)
Password Attempts Counters (PAC)
Note:
AR: Access Rights are defined by the Access Registers PW: Password Secure Code: Write 7 password is the Secure Code until the PER fuse is blown Forbidden: No access is permitted
21
5210B–SMIC–11/08
6. Protocol Selection
CryptoMemory supports two application areas with different communication protocols: a 2-wire serial communication for embedded applications and an ISO 7816 asynchronous T=0 smart card interface. The power-up sequence of CryptoMemory determines what mode it shall operate in. A brief description of each of these modes follows. 6.0.1 Synchronous Mode for Embedded Applications The 2-wire serial interface is used for fast and efficient communication with logic and controllers. The synchronous mode is the default after powering up VCC due to the internal and/or external pull-up on RST. For embedded applications using CryptoMemory in standard plastic packages RST is not bonded out and this is the only communication protocol. Power-up VCC, RST goes high also. After stable VCC, apply 5 pulses CLK-SCL CLK-SCL and I/O-SDA may then be driven.
Figure 6-1.
Power Up Sequence for 2-Wire Mode
Vcc I/O-SDA RST CLK-SCL
1 2 3 4 5
The asynchronous mode is selected when RST is low on a rising edge of CLK. Once the asynchronous mode has been selected, it is not possible to return to the synchronous mode other than by powering the device off and on again. 6.0.2 Asynchronous Mode for Smart Card Applications The asynchronous T=0 protocol defined by ISO 7816-3 is used for compatibility with industry standard smart card readers. Selecting this mode requires the following power-up sequence, which complies with ISO 7816-3 for a cold reset in smart card applications. • Power up VCC; RST, IO-SDA and CLK-SCL are low • Set I/O-SDA in receive mode • Provide a clock signal to CLK-SCL • RST goes high after 400 clock cycles. The device will respond with a 64-bit ATR code, including historical bytes to indicate the memory density within the CryptoMemory family. The 64-bit ATR code comes from a register that contains the characters shown in Table 6-1 on page 23 and Table 6-2 on page 23. The historical bytes (T1, T2, T3) show the density of the CryptoMemory device. This register may be modified during personalization but is locked when the PER fuse is blown. Care must be taken to respect the applicable standards defining the ATR
22
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
value if operating in asynchronous mode. The CyrptoMemory device will always output all 8 bytes in response to the asynchronous ATR command regardless of the contents of the register.
Table 6-1.
Device
ATR Codes for Lower Density CryptoMemory
TS $3B $3B $3B $3B $3B T0 $B2 $B2 $B2 $B2 $B2 TA(1) $11 $11 $11 $11 $11 TB(1) $00 $00 $00 $00 $00 TD(1) $10 $10 $10 $10 $10 TA(2) $80 $80 $80 $80 $80 T1 $00 $00 $00 $00 $00 T2 $01 $02 $04 $08 $16
AT88SC0104C AT88SC0204C AT88SC0404C AT88SC0808C AT88SC1616C
Table 6-2.
Device
ATR Codes for Higher Density CryptoMemory
TS $3B $3B $3B $3B T0 $B3 $B3 $B3 $B3 TA(1) $11 $11 $11 $11 TB(1) $00 $00 $00 $00 TD(1) $00 $00 $00 $00 T1 $00 $00 $00 $00 T2 $00 $00 $01 $02 T3 $32 $64 $28 $56
AT88SC3216C AT88SC6416C AT88SC12816C AT88SC25616C
Once the asynchronous mode has been selected, it is not possible to switch to the synchronous mode without powering off the device. Figure 6-2. Power Up Sequence for Smart Card Mode
Vcc I/O-SDA RST CLK-SCL ATR
After a successful ATR, the Protocol and Parameter Selection (PPS) protocol defined by ISO 7816-3 may be used to negotiate the communications speed with CryptoMemory devices 32Kbits and larger in user memory. CryptoMemory supports D values of 1,2,4,8,12 and 16 for an F value of 372. CryptoMemory also supports D values of 8 and 16 for F = 512. This allows selection of 8 communications speeds ranging from 9600 baud to 153,600 baud.
Smart card applications that support the 2-Wire protocol can also use CryptoMemory in the synchronous mode.
23
5210B–SMIC–11/08
7. Synchronous Protocol
Communication with the CryptoMemory using the synchronous protocol is very similar to communication with AT24Cxxx Serial EEPROM devices using a two-wire protocol (TWI). Basic command structure and timing are the same however a significant difference exists when reading the CryptoMemory device that will be described below.
7.1
Start-up Sequence
When first powering up the device, 5 pulses are required on CLK-SCL for reading of internal registers. This may be accomplished by sending one full command byte to the device. The device will not respond but will then be ready to respond to the next correct command sequence.
• Power-up VCC • External pull-up resistor pulls I/O-SDA high with VCC • After stable VCC, 5 pulses are applied to CLK-SCL • CLK-SCL and I/O-SDA may be driven.
Vcc I/O-SDA CLK-SCL
1 2 3 4 5
7.2
Command Set
The command set of CryptoMemory is expanded compared to a Serial EEPROM as the functionality of CryptoMemory exceeds that of a simple memory device. Each instruction sent to the CryptoMemory must have 4 bytes: Command, Address 1, Address 2 and N. The last byte, N, defines the number of any additional data bytes to be sent or received from the CryptoMemory device.
24
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Table 7-1.
CryptoMemory Synchronous Command Set
Command Description Command $B0 $B0 $B0 $B0 $B2 Write Config Zone (AT88SC0104C-AT88SC1616C) Write Config Zone (AT88SC3216C, AT88SC6416C) Write Config Zone (AT88SC12816C, AT88SC25616C) Write Fuses Set User Zone Write Config Zone with Anti-Tearing Set User Zone with Anti-Tearing $B4 $B4 $B4 $B4 $B4 $B4 $B4 $B6 $B6 $BA Addr 1 addr addr addr addr addr $00 $00 $00 $01 $03 $08 $0B $00 $01 $0X Addr 2 addr addr addr addr addr addr addr addr fuse ID zone addr zone addr $00 $00 N N ≤$10 N ≤$40 N ≤$80 N ≤08 N N ≤$10 N ≤$40 N ≤$80 $00 $00 N ≤$08 $00 N $01 $03 3 byte password X=password set (0-7) 3 byte password X=password set (0-7) N bytes N bytes N bytes N bytes Data (N) N bytes N bytes N bytes N bytes
Write User Zone
Normal (AT88SC0104C-AT88SC1616C) Normal (AT88SC3216C, AT88SC6416C) Normal (AT88SC12816C, AT88SC25616C) with Anti-Tearing (all devices)
Read User Zone System Write
System Read Verify Password
Read Config Zone Read Fuse Byte Write Password
Read Password
$BA
$1X
$00
$03
7.3
Command Format
Most CryptoMemory commands have the same format as a two wire interface (TWI) write command. The TWI write command is characterized by a zero in the LSB of the first byte (device address). The number of word address bytes in a TWI write command will vary depending on the size of the memory being addressed. All bytes whether part of the command or data are generated by the host and sent to the memory device that will acknowledge each byte.
25
5210B–SMIC–11/08
Figure 7-1.
S T A R T
TWI Write Command:
S T O P A C K
Device Address
xxxx xxx0
Word Address 1
xxxx xxxx
Word Address 2
xxxx xxxx
N
xxxx xxxx
Data
d7--- ---d0
Data X N
d7--- ---d0
A C K
A C K
A C K
A C K
A C K
All CryptoMemory commands will have a zero for the LSB of the first byte. All CryptoMemory commands will have 4 bytes used for defining the command and addressing the memory. All but the CryptoMemory read commands will send an additional 0 to 128 bytes of data following the 4 command bytes. These commands comply with the format of a TWI write command.
The CryptoMemory read commands (Read User Zone, System Read) do not comply with the format of a TWI write or read command. The CryptoMemory read command looks like a TWI write command (LSB of the first byte = 0) but after the 4th byte of the command the CryptoMemory device will begin to send data back on the bus. The number of bytes sent by CryptoMemory will be equal to the value of N.
Figure 7-2.
CryptoMemory Read Command
NS AT CO KP
d7--- ---d0
S T A R T Command
xxxx 0x10
Address 1
xxxx xxxx
Address 2
xxxx xxxx
N
xxxx xxxx d7--- ---d0
A C K A C K Data Data x N
A C K
A C K
A C K
The response of CryptoMemory will cause contention with the host on a standard TWI bus. Typically CryptoMemory cannot be used on a standard TWI bus but requires a modified TWI protocol to account for the unique read command format.
7.4
Acknowledge Polling
Each command is ended with a stop condition. Certain commands are required to be followed by an acknowledge polling sequence. Acknowledge polling consists of sending a start condition followed by the command byte and determining if the device responded with an ACK. If the device is not ready for the command it will not acknowledge and the sequence must be repeated (start condition, command byte, check for ACK). The ACK indicates the operation has completed but gives no indication of the success or failure of the command. • Read Commands: No ACK polling required.
26
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
• Write Commands: ACK polling required except encrypted write commands. Any command may be used. • Set commands: No ACK polling required. • Verify commands: ACK polling required with B2 or B6 commands only.
The following table lists the specific requirements for ACK polling and the maximum expected delay before the device will ACK indicating readiness for the next command.
Table 7-2.
Minimum Delay for ACK Polling for each Command
Command Description Command $B0 $B0 $B0 $B0 $B2 Write Config Zone Write Fuses Set User Zone Write Config Zone with AntiTearing Set User Zone with AntiTearing $B4 $B4 $B4 $B4 $B4 $B6 $B6 $BA $BA Addr 1 addr addr addr addr addr $00 $01 $03 $08 $0B $00 $01 $0X $1X Addr 2 addr addr addr addr addr addr fuse ID zone addr zone addr $00 $00 $00 N N N N N N N $00 $00 N $00 N $01 $01 $03 ACK Polling CMD Required, any CMD Required, any CMD No, Send Checksum No, Send Checksum Not Required Required, any CMD Required, any CMD Not Required Required, any CMD Not Required Not Required Not Required Required; B2 or B6 only Required; B2 or B6 only Delay 5ms 20ms 0 0 0 5ms 5ms 0 20ms 0 0 0 10ms 10ms
Write User Zone
Normal Normal with Anti-Tearing Encrypted Encrypted with Anti-Tearing
Read User Zone System Write
System Read
Read Config Zone Read Fuse Byte
Verify Password
Write Password Read Password
Note:
Delays are based on operation at 25° C. See Table 10-3 on page 51
7.5
Device Addressing
The first nibble of the command byte corresponds to the device address. All CryptoMemory devices will respond to the device address $B. A specific device may be set to respond to another value ($0 to $F) in addition to $B by setting this value in the second nibble of the Device Configuration Register (DCR) in the configuration memory. The DCR is set to $FF at the Atmel factory and thus will respond to device address $B and $F unless the DCR is modified. For a device to respond only to $B the DCR should be set to $B also.
7.6
Command Descriptions
In the following section operations are described in two parts: the instruction is described first from a functional point of view (parameters and data exchanged), after which they are detailed for the synchronous two-wire protocol. In these diagrams, values are shown in binary format with bits to the left transmitted first, i.e. bytes are transmitted most significant bit first.
27
5210B–SMIC–11/08
7.6.1 7.6.1.1
Write User Zone: $B0 Functional
Host Command Address 1 Address 2 Number of Bytes N N data bytes Data ... Data
Figure 7-3. Write User Zone Command Functional Description
Device
The Write User Zone command $B0 allows writing of data in the device's currently selected user zone (the procedure for selecting a user zone is described below, see Section 7.6.3 on page 30).
The data byte address to be written is defined by Address 1 and Address 2 in the command. The value N defines how many bytes are to be written. The maximum number of bytes that may be written is as follows; • $10 for AT88SC0104C through AT88SC1616C (EEPROM page size of 16 bytes) • $40 for AT88SC3216C and AT88SC6416C (EEPROM page size of 64 bytes) • $80 for AT88SC12816C and AT88SC25616C (EEPROM page size of 128 bytes) In anti-tearing mode the maximum value for N is $08 for all devices. A write in anti-tearing mode is activated with the Set User Zone with Anti-Tearing command, all subsequent writes to the user zone will be in anti-tearing mode. A write may be started in the middle of an EEPROM page but should not extend past the end of the page.
If the host is not allowed to write in the zone, the device will not acknowledge the N byte. After this command the host must perform ACK polling.
S T A R T Command
1011 0000
Address 1
xxxx xxxx
Address 2
xxxx xxxx
N
xxxx xxxx
Data
d7--- ---d0
Data x N
d7--- ---d0
S T O P A C K
A C K
A C K
A C K
A C K
A C K
28
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Figure 7-4. 7.6.2 7.6.2.1 Read User Zone: $B2 Functional Write User Zone
Host Read Command Address 1 Address 2 Number of Bytes N
Device
Data ... Data
Figure 7-5. Read User Zone Command Functional Description
N data bytes
The Read User Zone command $B2 allows reading of data from the device's currently selected user zone (the procedure for selecting a user zone is described below under Section 7.6.3.4 on page 31).
The data byte address to be read is defined by Address 1 and Address 2 in the command and is internally incremented following the transmission of each data byte. The value N defines how many bytes CryptoMemory will read, a value of zero will result in 256 bytes read. The host however may cease clocking the device and end the transmission with a NACK and STOP at anytime prior to receiving all N bytes. During a read operation the address will "roll over" from the last byte of the current zone, to the first byte of the same zone.
If the host is not allowed to read the zone, the device will not acknowledge the N byte.
S T A R T Command
1011 0010
Address 1
xxxx xxxx
Address 2
xxxx xxxx
N
xxxx xxxx d7--- ---d0
A C K
d7--- ---d0
NS AT CO KP Data x N
A C K
A C K
A C K
A C K
Data
Figure 7-6.
Read User Zone
29
5210B–SMIC–11/08
7.6.3 7.6.3.1
System Write : $B4 Functional
Host Command Address 1 Address 2 Number of Bytes N N data bytes Data ... Data
Figure 7-7. System Write Command Functional Description
Device
The System Write command allows to writing of configuration data to the device. Depending on the value of the Address 1 parameter, the host may write data in the configuration memory, program the fuses, or set the user zone. Table 7-3. System Write Command Detail
Command $B4 $B4 $B4 $B4 $B4 Addr 1 $00 $00 $00 $01 $03 Addr 2 addr addr addr fuse ID zone N N ≤$10 N ≤$40 N ≤$80 $00 $00 Data (N) N bytes N bytes N bytes Command Description Write Config Zone AT88SC0104C-AT88SC1616C Write Config Zone AT88SC3216C-AT88SC6416C Write Config Zone AT88SC12816C-AT88SC25616C Write Fuses Set User Zone
7.6.3.2
Write Config Zone The maximum number of bytes that may be written is as follows; • $10 for AT88SC0104C through AT88SC1616C (EEPROM page size of 16 bytes) • $40 for AT88SC3216C and AT88SC6416C (EEPROM page size of 64 bytes) • $80 for AT88SC12816C and AT88SC25616C (EEPROM page size of 128 bytes) In anti-tearing mode the maximum value for N is $08 for all devices. A write may be started in the middle of an EEPROM page but should not extend past the end of the page. If the address provided is an unauthorized address, the device will not write the requested data. Since access rights vary throughout the configuration memory, the host may provide an authorized starting address, but a number of bytes that causes the device to reach unauthorized address. In this case, the device will prevent the internal write cycle and no bytes will be written in the EEPROM. After this command the host must perform ACK polling.
30
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
7.6.3.3 Write Fuses The fuses may only be "programmed", that is written from '1' to '0'. The write fuses operation is allowed only after successfully presenting the secure code (write 7 password). The fuses must be blown sequentially: FAB must be blown first, CMA may be blown only if FAB is ‘0’, and PER only if CMA is ‘0’. After this command the host must perform ACK polling. Table 7-4.
Fuse FAB CMA PER
Fuse Writing
Fuse ID $06 $04 $00
7.6.3.4
Set User Zone Before reading and writing data in the user zones, the host must select a zone with this command. At this time the host chooses whether anti-tearing should be active for this zone. Table 7-5. Anti-Tearing
Command $B4 $B4 Addr 1 $08 $0B Addr 2 addr zone N N ≤$08 $00 Data (N) N bytes Command Description Write Config Zone with Anti-Tearing Set User Zone with Anti-Tearing
Data written to the configuration memory may be done with anti-tearing enabled by setting address 1 to $08 of the Write Config Zone command.
To enable anti-tearing for writes to a user zone a Set User Zone command is executed with address 1 set to $0B. All subsequent Write User Zone commands will be executed with antitearing enabled until the next Set User Zone command. Anti-tearing should be turned off if not required, as it would otherwise cause more write cycles than necessary.
S T A R T Command
1011 0100
Address 1
0000 xxxx
Address 2
xxxx xxxx
N
xxxx xxxx
Data
d7--- ---d0
Data x N
d7--- ---d0
S T O P A C K
A C K
A C K
A C K
A C K
A C K
Figure 7-8.
System Write
31
5210B–SMIC–11/08
7.6.4 7.6.4.1
System Read : $B6 Functional
Host Read Command Address 1 Address 2 Number of Bytes N
Device
Data ... Data
Figure 7-9.
N data bytes
System Read Command Functional Description
The System Read command allows reading of system data from the device. Depending on the value of address 1, the host may read the data in the configuration memory, or the fuses. Table 7-6. System Read Command Description
Command $B6 $B6 Addr 1 $00 $01 Addr 2 addr $00 N N $01 Command Description Read Config Zone Read Fuse Byte
7.6.4.2
Read Config Zone The data byte address to be read is defined by address 2 in the command and is internally incremented following the transmission of each data byte. The value N defines how many bytes CryptoMemory will read, a value of zero will result in 256 bytes read. If the address provided is an unauthorized address, the device will not ACK the N byte and will not return any data. Since access rights vary throughout the configuration zone, the host may provide an authorized starting address and a number of bytes N that causes the device to reach unauthorized address. In this case the device will transmit the fuse byte (see below) in place of unauthorized bytes.
7.6.4.3
Read Fuse Byte Fuse data is returned in the form of a single byte. Bits 0 to 3 represent the fuse states, a value of ‘0’ indicates the fuse has been blown. Bits 4 to 7 are not used as security fuses and are reserved by Atmel. Table 7-7.
F7 resv
Read Fuse Bytes
F6 resv F5 resv F4 resv F3 SEC F2 PER F1 CMA F0 FAB
32
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
7.6.5 7.6.5.1 Verify Password : $BA Functional
Host Command Password Index PW1 3 password bytes PW2 PW3
Figure 7-10. Verify Password Command Functional Description Read password indices : $10 to $17 for passwords 0 to 7. Write password indices : $00 to $07 for passwords 0 to 7. Secure code index : $07 (equivalent to Write 7 password).
Device
Four password index bits "r" and "ppp" indicate the password to compare : r = 0: Write password, r = 1: Read password, p2p1p0: Password set number.
S T A R T Command
1011 1010
PW Index
000r 0p2p1p0
Parameter 2
xxxx xxxx
N=3
0000 0011
Data x 3
d7--- ---d0
S T O P A C K
A C K
A C K
A C K
A C K
Figure 7-11. Verify Password Once the sequence has been carried out, the device requires the host to perform an ACK polling sequence with the system read command $B6. In order to know whether the inserted password was correct, the host can read the corresponding attempts counter and verify the value is $FF.
7.7
Initialization Example
The first step in initializing CryptoMemory is to determine what data is to be stored in the device and what the security settings need to be to protect this data. Once defined, determine the proper settings for CryptoMemory registers and select values for passwords. To initialize the CryptoMemory device, the following sequence is recommended to take place in a secure location to protect sensitive data and passwords that may be loaded into the device.
33
5210B–SMIC–11/08
8. Asynchronous T=0 Protocol
8.1 Character format
CryptoMemory complies with the asynchronous T=0 protocol defined in ISO 7816-3. The character format is shown in the following figure: note that the byte is transmitted with the least significant bit first.
8 data bits Z I/O A 0 t1 (n ± 0,2) etu
Even parity is used: the parity bit is such that the overall sum of bits in the data byte and the parity bit is an even number. If a transmission error is detected, the receiving device indicates this by applying a low level on the I/O channel during the guard time. This tells the transmitting device to retransmit the byte.
Start bit d0 d1 d2 d3 d4 d5 d6 d7
Parity bit p
Next Start bit
Guard Time
tn
t 10
8.2
Command format
The command sequence is as follows:
1. In compliance with ISO 7816-3, the host must send the header consisting of 5 characters: CLA, INS, P1, P2, P3. a. CLA refers to a class of instructions. This byte isn't tested by the device. b. c. INS is the instruction byte. P1 and P2 are reference bytes, such as a data byte address or password index.
d. P3 is the number of data bytes transferred during the command. For outgoing transfers (e.g. read commands), P3 = 0 means that 256 data bytes will be emitted by the card. For incoming commands, P3 = 0 means that no data bytes will be transferred. 2. The device replies with a "procedure byte", normally equal to the INS code received. If a problem occurred, then the device will respond with a status word pair SW1-SW2, indicating the end of the command. 3. Data transfer (P3 bytes). 4. A final SW1-SW2 sequence gives the status of the device after completion of the command. A normal completion is indicated by SW1-SW2 = $90-$00. Note: for all bytes transmitted by the device or by the host, including header, procedure, status and data bytes, if a parity error is detected, the receiver requests that byte to be sent again (see character format).
34
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
8.3 PPS Support
All CryptoMemory devices with user memory sizes 32Kbits and larger support the Protocol and Parameter Selection (PPS) protocol, section 7 of ISO 7816-3. This section only applies to these larger devices; PPS is not supported by CryptoMemory with memory sizes 16K bit or smaller. At the end of an ATR sequence, subsequent to either a cold or a warm reset initiated by the reader, the device will be expecting either a ‘Class’ byte as part of a command header, or the initial character, PPSS, of a PPS request. If the device receives a byte = $FF, it will process subsequent incoming bytes as a PPS request. In all other cases, it will proceed with command processing. There are 4 bytes that comprise a PPS request or response; • Initial Character PPSS. Always equal to $FF. • Format Character PPS0. CryptoMemory supports two response values for PPS0, $00 and $01. See ISO 7816 for further definition of PPS0. • Parameter Character PPS1. Encodes Fn and Dn in the same manner as TA(1) in the ATR • Checksum PCK.
The following table shows the PPS1 values supported by CryptoMemory devices with memory sizes 32K bits and above. Table 8-1. PPS1 Values CryptoMemory Supports
f Max Fl Dl Di Fi PPS1 0001b 1 F/D baud rate PPS1 0010b 2 F/D baud rate PPS1 0011b 4 F/D baud rate PPS1 0100b 8 F/D baud rate PPS1 0101b 16 F/D baud rate PPS1 1000b 12 F/D baud rate 4 MHz 0000b 372 01 372 9600 02 186 19200 03 93 38400 04 46.5 76800 05 23.25 153600 08 31 115200 5 MHz 0001b 372 11 372 9600 12 186 19200 13 93 38400 14 46.5 76800 15 23.25 153600 18 31 115200 94 64 55800 95 32 111600 5 MHz 1001b 512
35
5210B–SMIC–11/08
After the ATR, the reader will have the choice of proceeding with commands using default values of F=372 and D=1 (9600 baud at 3.5712 MHz), or negotiating values Fn and Dn through a PPS exchange. Following are four examples of PPS requests and responses:
8.3.1
Example 1 We assume the CryptoMemory ATR contains the byte TA(1) = 15h, indicating that it is capable of using F=372 and D=16, leading to a baud rate of 153,600 baud at 3.5712 MHz. Assuming that this is the maximum speed supported by the device, the reader immediately attempts to set the F and D parameters leading to these values. • PPS_request =$FF $10 $15 $FA • PPS_response = $FF $10 $15 $FA The newly negotiated values are effective immediately following this exchange, so that the ETU, or duration of one bit on I/O, will now be 23 clock cycles instead of 372.
8.3.2
Example 2 The reader insists on negotiating Fn and Dn equal to the default values, even though these would be used by default without the use of a PPS exchange. The two ways of doing this are by sending PPS1_request = $11 or not sending PPS1_request at all.
• PPS_request = $FF $10 $11 $FE • PPS_response= $FF $10 $11 $FE
or
• PPS_request= $FF $00 $FF • PPS_response = $FF $00 $FF 8.3.3 Example 3 The reader attempts to negotiate values that are not supported by the CryptoMemory device. In its response, the CryptoMemory proposes to continue with F and D, by not sending PPS1_response. Even though new Fn and Dn values aren’t negotiated, this scenario is still considered a “successful” exchange according to ISO 7816.
• PPS_request= $FF $10 $45 $AA • PPS_response= $FF $00 $FF 8.3.4 Example 4 If the reader attempts to change the protocol to any protocol other than T = 0, such as T = 1, the CryptoMemory will indicate that it only supports T = 0.
• PPS_request= $FF $01 $FE • PPS_response= $FF $00 $FF
36
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
CryptoMemory will only operate at baud rates above the default 9600 baud through a successful PPS exchange. CryptoMemory cannot be set to higher baud rates through use of a TA(2) byte in the ATR.
8.4
Command Set
CryptoMemory Asynchronous Command Set
CLA $00 $00 $00 $00 $00 Write Config Zone (Devices 0104C-1616C) Write Config Zone (Devices 3216C, 6416C) Write Config Zone (Devices 12816C, 25616C) Write Fuses Set User Zone Write Config Zone w/a-t Set User Zone w/a-t System Read Read Config Zone Read Fuse Byte Verify Password Write Password Read Password $00 $00 INS $B0 $B0 $B0 $B0 $B2 $B4 $B4 P1 addr addr addr addr addr $00 $00 P2 addr addr addr addr addr addr addr P3 N ≤$10 N ≤$40 N ≤$80 N ≤$08 N N ≤$10 N ≤$40 N ≤$80 $00 $00 N ≤$08 $00 N $01 $03 $03 3 byte password X=password set (0-7) 3 byte password X=password set (0-7) N bytes N bytes N bytes Data (N) N bytes N bytes N bytes N bytes
Table 8-2.
Command Description Write User Zone B0 Normal (0104C-1616C) Normal (3216C, 6416C) Normal (12816C, 25616C) with Anti-Tearing (all dvcs) B2 Read User Zone
System Write
$00 $00 $00 $00 $00 $00 $00 $00 $00
$B4 $B4 $B4 $B4 $B4 $B6 $B6 $BA $BA
$00 $01 $03 $08 $0B $00 $01 $0X $1X
addr fuse ID zone addr zone addr $00 $00 $00
N bytes
B4
B6 BA
37
5210B–SMIC–11/08
8.4.1
Status Words Table 8-3.
SW1 SW2 $67 $00 $69 $00 $6B $00 $6D $00 $90 $00
Asychronous Mode Return Status Definitions
Meaning The length is incorrect The command is unauthorized Address is Incorrect The instruction code is invalid The command was successfully executed
These status words indicate the state of the device at the end of the command. In normal conditions, the device sends the INS byte as the procedure byte, and $90 $00 as the final status word. In certain conditions described below, the device may interrupt the command by returning a status word in place of INS as the procedure byte.
$67 $00 is returned as procedure bytes when the number of data bytes to be transferred is incorrect.
$69 $00 is returned after read/write commands as procedure bytes if the host is not allowed to read/write at the address provided. It is also returned after Password commands if the maximum number of attempts has been exceeded. The device will return $69 $00 as a final status word in place of $90 $00, if the password presentation failed.
$6B $00 is returned as procedure bytes if the address is incorrect.
$6D $00 is returned as procedure bytes if the INS code received is not supported.
38
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
8.4.2 Example : Write EEPROM command The following illustrates the data exchanges that occur during a write operation of 4 bytes : $04, $09, $19, $97 to addresses $02, $03, $04, $05 in the current user zone.
Table 8-4.
Host Start CLA INS P1 P2 P3 INS Data Data Data Data Write Cycle SW1 Finish SW2 $90 $00 Device Val ** $B0 ** $02 $04 $B0 $04 $09 $19 $97 Note Class (ignored by CryptoMemory) Write instruction Address Byte A1 (ignored by 0104C-1616C) Address Byte A2=$02 4 data bytes Device responds with INS code Byte to be written at start address $02 Byte to be written at address $03 Byte to be written at address $04 Byte to be written at address $05 ~5ms Write operation successful
39
5210B–SMIC–11/08
8.5
8.5.1 8.5.1.1
Command Descriptions
Write User Zone: $B0 Functional
Host Command Address A1 Address A2 Number of Bytes N N data bytes Data ... Data
Figure 8-1. Write User Zone Command Functional Description
Device
The Write User Zone command $B0 allows writing of data into the device's currently selected user zone (the procedure for selecting a user zone is described below, (see Section 7.6.3 on page 30).
The maximum number of bytes that may be written is as follows; • $10 for AT88SC0104C through AT88SC1616C (EEPROM page size of 16 bytes) • $40 for AT88SC3216C and AT88SC6416C (EEPROM page size of 64 bytes) • $80 for AT88SC12816C and AT88SC25616C (EEPROM page size of 128 bytes)
Each data byte within a page must only be loaded once. In anti-tearing mode the maximum value for N is $08 for all devices. A write in anti-tearing mode is activated with the Set User Zone with anti-tearing command (00 B4 0B zz 00), all subsequent writes to the user zone will be in anti-tearing mode.
If the host is not allowed to write in the zone, the device will return the "Command Unauthorized" code ($69 $00) after it has received the P3 byte.
Table 8-5.
Write User Zone
User Write Data Sent P2: Address 2 0a6-- ---a0 P3 : N 000n4 --- n0 Data(1) d7--- ---d0 ... ... Data(N) d7--- ---d0
CLA **
INS : Command $B0
P1 : Address 1 0000 0000
40
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
8.5.2 8.5.2.1 Read User Zone: $B2 Functional
Host Read Command Address A1 Address A2 Number of Bytes N
Device
Data ... Data
Figure 8-2. Read User Zone Command Functional Description The Read User Zone command $B2 allows reading of data from the device's currently selected user zone (the procedure for selecting a user zone is described below under Section 8.5.3.4 on page 43). The byte address is internally incremented following the transmission of each data byte. During a read operation the address will "roll over" from the last byte of the current zone, to the first byte of the same zone. If the host is not allowed to read the zone, the device will return the "Command Unauthorized" code ($69 $00) after it has received the header.
N data bytes
Table 8-6.
Read User Zone
User Read Data Returned P2: Address 2 0a6-- ---a0 P3 : N n7 --- n0 Data(1) d7--- ---d0 ... ... Data(N) d7--- ---d0
CLA **
INS : Command $B2
P1 : Address 1 0000 0000
41
5210B–SMIC–11/08
8.5.3 8.5.3.1
System WRITE: $B4 Functional
Host Command Parameter P1 Parameter P2 Number of Bytes N N data bytes Data ... Data
Figure 8-3. System WRITE Command Functional Description
Device
The System Write command allows writing of system data to the device. Depending on the value of the P1 parameter, the host may write data in the configuration memory, program the fuses or set the user zone. Table 8-7.
Command Write Config Zone (Devices 0104C-1616C) Write Config Zone (Devices 3216C-6416C) Write Config Zone (Devices 12816C-25616C) Write Fuses Set User Zone
System WRITE Command Detail
CLA $00 $00 $00 $00 $00 INS $B4 $B4 $B4 $B4 $B4 P1 $00 $00 $00 $01 $03 P2 addr addr addr fuse ID zone P3 N ≤$10 N ≤$40 N ≤$80 $00 $00 Data(N) N bytes N bytes N bytes
The anti-tearing function is controlled by P1: the host may choose to write in the configuration memory with anti-tearing enabled by setting P1 = $08 instead of $00. Similarly, the host may choose to activate anti-tearing for a user zone by carrying out the Set User Zone command with P1 = $0B instead of $03. All subsequent Write User Zone commands are then carried out with anti-tearing enabled until the next Set User Zone command. Anti-tearing should be turned off if not required, as it would otherwise cause more write cycles than necessary. Table 8-8.
Command Write Config Zone w/a-t Set User Zone w/a-t
Anti-Tearing
CLA $00 $00 INS $B4 $B4 P1 $08 $0B P2 addr zone P3 N ≤$08 $00 Data(N) N bytes
42
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
8.5.3.2 Write Config Zone The maximum number of bytes that may be written is as follows:
• $10 for AT88SC0104C through AT88SC1616C (EEPROM page size of 16 bytes) • $40 for AT88SC3216C and AT88SC6416C (EEPROM page size of 64 bytes) • $80 for AT88SC12816C and AT88SC25616C (EEPROM page size of 128 bytes)
Each data byte within a page must only be loaded once. In anti-tearing mode the maximum value for N is $08 for all devices.
If the address provided at P2 is an unauthorized address, the device will return the "Command Unauthorized" code ($69 $00) after it has received the header. Since access rights vary throughout the configuration memory, the host may provide an authorized starting address, but a number of bytes that causes the device to reach unauthorized address. In this case, the device will prevent the internal write cycle and no bytes will be written in the EEPROM. At the end of the command the "Command Unauthorized" code ($69 $00) will be returned instead of $90 $00 to indicate that no write cycle occurred. 8.5.3.3 Write Fuses The fuses may only be "programmed", that is written from '1' to '0'. The write fuses operation is only allowed after successfully presenting the secure code (Write 7 password). The fuses must be blown sequentially: FAB must be blown first, CMA may be blown only if FAB is ‘0’, and PER only if CMA is ‘0’. Table 8-9.
Fuse FAB CMA PER
Fuse Writing
Fuse ID $06 $04 $00
8.5.3.4
Set User Zone Before reading and writing data in the user zones, the host should select a zone with this command. At this time the host may choose whether anti-tearing should be active for this zone.
Table 8-10.
CLA **
System WRITE
INS : Command $B4 P1 p7--- ---p0 P2 p7--- ---p0 P3 n7 --- n0 Data(1) Data Sent ... Data(N)
43
5210B–SMIC–11/08
8.5.4 8.5.4.1
System READ: $B6 Functional
Host Command Parameter P1 Parameter P2 Number of Bytes N
Device
Data ... Data
Figure 8-4. System READ Command Functional Description The System Read command allows reading of the system data from the device. Depending on the value of the P1 parameter, the host may read the data in the configuration memory, or the fuses. Table 8-11.
Command Read Config Zone Read Fuse Byte
N data bytes
System READ Command Detail
CLA $00 $00 INS $B6 $B6 P1 $00 $01 P2 addr $00 P3 N $01
8.5.4.2
Read Config Zone To read 256 bytes, the host should set N = $00. This is true for any outgoing command, and is defined by ISO 7816-3. If the address provided at P2 is an unauthorized address, the device will return the "Command Unauthorized" code ($69 $00) after it has received the header. Since access rights vary throughout the configuration memory, the host may provide an authorized starting address, but a number of bytes N that causes the device to reach unauthorized address. In this case, the device will transmit the authorized bytes, but unauthorized bytes will be replaced by the "fuse byte" (see below). At the end of this command the "Command Unauthorized" code ($69 $00) will be returned instead of $90 $00 to indicate that some of the bytes returned were not valid. Table 8-12. System READ
System READ CLA ** INS : Command $B6 P1 p7--- ---p0 P2 p7--- ---p0 P3 n7 --- n0 Data Returned Data(1) d7--- ---d0 ... ... Data(N) d7--- ---d0
44
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
8.5.4.3 Read Fuse Byte Fuse data is returned in the form of a single byte. Bits 0 to 3 represent the fuse states; a value of ‘0’ indicates the fuse has been blown. Bits 4 to 7 are not used as Security Fuses and are reserved by Atmel. Table 8-13.
F7 resv F6 resv
Fuse Byte Description
F5 resv F4 resv F3 SEC F2 PER F1 CMA F0 FAB
8.5.5 8.5.5.1
Verify Password: $BA Functional
Host Command Password Index 3 password bytes PW1 PW2 PW3
Device
Figure 8-5.
Verify Password Command Functional Description Read password indices : $10 to $17 for passwords 0 to 7. Write password indices : $00 to $07 for passwords 0 to 7. Secure code index : $07 (equivalent to Write 7 Password). Four password index bits "r" and "ppp" indicate the password to compare : r = 0: Write password, r = 1: Read password, p2p1p0: Password set number.
Table 8-14.
Verify Password
Verify Password Data Sent P2 ** P3 $03 PW1 d7--- ---d0 PW2 d15--- ---d8 PW3 d23--- ---d16 INS : Command $BA
CLA **
P1 000r 0p2p1p0
If the maximum number of trials has been exceeded, the device will return $69 $00 instead of the INS code, after receiving the header, to indicate the command is unauthorized. The device decrements the associated attempts counter before verifying the password, to prevent attacks. If the password is correct, the device memorizes this success, clears the pasword attempts counter and returns $90 $00. If the password is wrong, the device simply returns $69 $00 after decrementing the attempts count. The Write 7 password is also known as the Secure Code and must be properly presented before access to the configuration memory is granted when personalizing the device 45
5210B–SMIC–11/08
9. Initialization Example
9.1 Write Data to User Zones
In the default configuration from Atmel, all user zones have free access rights. Writing initial data into the user zones should be done before setting security configurations. Use the Set User Zone command and Write User Zone command to write initial data into the user zones. The Read User Zone command may be used to verify the data written.
9.2
Unlock Configuration Memory
Before any data can be written to the configuration memory, it must be unlocked by presenting the correct security code (Write 7 Password). Use the Verify Password command with the proper secure code supplied by Atmel to unlock the configuration memory. Use the Read Config Zone command to read back the security code at address $E9 for verification that the configuration memory has been unlocked.
9.3
Write Data to Configuration Memory
Writing this data is accomplished by performing the Write Config Zone command at the appropriate address location. The Read Config Zone command may be used to verify the data written. As soon as values are written to the registers, keys, and passwords, they become effective in determining the security of the user zones.
9.4
Set Security Fuses
Once all data is written and verified into user zones and the configuration memory the security fuses should be set before the device is released from the secure location used for device initialization. There are three fuses, FAB, CMA and PER that must be set. These three fuses must be set in the order listed (FAB, then CMA, then PER). The Write Fuse command is used to set each of the three fuses individually. The Read Fuse command may be used to check the status of all three fuses. Once all fuses have been set the Read Fuse command should return a value of zero for the second nibble of the fuse byte.
The AT88SC0104C is used for this example. A small pattern is written into the first two user zones. Security for each of these two user zones and the associated register values are shown in the table below. Simple values for passwords are used.
Table 9-1.
User Zone 0 1
Zone Configuration Example
Data Zone 0 Data Zone 1 Data Security Requirements None Read/Write Password (Set 1) Access Register $FF $7F Password/Key Register $FF $F9
46
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
The following shows the TPDU commands sent to the CryptoMemory device for the purpose of initializing the device. The flow is consistent with the steps described above; comments have been added as indicated with an asterisk (*).
*AT88SC0104C Initialization Example *WRITE DATA TO USER ZONES *Set User Zone 0 00 B4 03 00 00 *Write data = Zone 0 Data 00 B0 00 00 0B 5A 6F 6E 65 20 30 20 44 61 74 61 *Set User Zone 1 00 B4 03 01 00 *Write data = Zone 1 Data 00 B0 00 00 0B 5A 6F 6E 65 20 31 20 44 61 74 61 *UNLOCK CONFIGURATION MEMORY 00 BA 07 00 03 DD 42 97 *WRITE CODES IN CONFIGURATION MEMORY *Write Card Mfg Code = P001 00 B4 00 0B 04 50 30 30 31 *Write Identification Number = 00000000012345 00 B4 00 19 07 00 00 00 00 01 23 45 *Write Issuer Code = STATION 035 00 B4 00 40 10 53 54 41 54 49 4F 4E 20 30 33 35 00 00 00 00 00 *WRITE REGISTERS IN CONFIGURATION MEMORY *Write Registers AR1/PR1 = 7F F9 00 B4 00 22 02 7F F9 DF BF 57 B9 *WRITE PASSWORDS IN CONFIGURATION MEMORY *Write Passwords, read 7 = 10 00 01, write 7 = 11 00 11 00 B4 00 B9 07 11 00 11 FF 10 00 01 *READ ENTIRE CONFIGURATION MEMORY TO VERIFY 00 B6 00 00 F0 *Device Response: 3B B2 11 00 10 80 00 01 10 10 FF 50 30 30 31 FF 8C AD A8 10 0A AB FF FF FB 00 00 00 00 01 23 45
47
5210B–SMIC–11/08
FF FF 7F F9 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 53 54 41 54 49 4F 4E 20 30 33 35 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 11 00 11 FF 10 00 01 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF *SET SECURITY FUSES *Set FAB Fuse 00 B4 01 06 00 *Set CMA Fuse 00 B4 01 04 00 *Set PER Fuse 00 B4 01 00 00 *Read Fuse Byte = X0 00 B6 01 00 01 *Device Response: 00 90 00 Power_off
48
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
10. Absolute Maximum Ratings
Stresses beyond those listed under ‘Absolute Maximum Ratings’ may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions beyond those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods of time may affect device reliability.
Absolute Maximum Ratings Operating Temperature Storage Temperature Voltage on Any Pin with Respect to Ground Maximum Operating Voltage DC Output Current -40⋅ C to +85⋅ C -65⋅ C to +150⋅ C -0.7 to Vcc+0.7V 6.0V 5.0mA
49
5210B–SMIC–11/08
10.1
DC and AC Characteristics
DC Characteristics Applicable over recommended operating range fromVCC = +2.7 to 5.5V TAC = -40⋅ to +85⋅ C (unless otherwise noted) Symbol VCC ICC ICC ICC ICC ISB (LD)(1) ISB (HD)(2) VIL VIL VIL VIH VIH VIH IIL IIL IIL IIH IIH IIH VOH VOL IOH Notes: Parameter Supply Voltage Supply Current (VCC = 5.5V) Supply Current (VCC = 5.5V) Supply Current (VCC = 5.5V) Supply Current (VCC = 5.5V) Standby Current (VCC= 5.5V) Standby Current (VCC= 5.5V) SDA/IO Input Low Voltage Clock Input Low Voltage
(3) (3)
Test Condition
Min 2.7
Typ
Max 5.5 5 5 5 5 100 1
Units V mA mA mA mA µA mA V V V V V V µA µA µA µA µA µA V V µA
Async READ at 3.57MHz Async WRITE at 3.57MHz Synch READ at 1MHz Synch WRITE at 1MHz VIN = VCC or GND VIN = VCC or GND 0 0 0
VCC x 0.2 VCC x 0.2 VCC x 0.2 VCC VCC VCC 15 15 50 20 100 150
RST Input Low Voltage(3) SDA/IO Input High Voltage
(3) (3)
VCC x 0.7 VCC x 0.7 VCC x 0.7 0 < VIL < VCC x 0.15 0 < VIL < VCC x 0.15 0 < VIL < VCC x 0.15 VCC x 0.7 < VIH < VCC VCC x 0.7 < VIH < VCC VCC x 0.7 < VIH < VCC 20K ohm external pull-up IOL = 1mA VOH VCC x 0.7 0
SCL/CLK Input High Voltage RST Input High Voltage
(3)
SDA/IO Input Low Current SCL/CLK Input Low Current RST Input Low Current SDA/IO Input High Current SCL/CLK Input High Current RST Input High Current SDA/IO Output High Voltage SDA/IO Output Low Voltage SDA/IO Output High Current
VCC VCC x 0.15 20
1. AT88SC0104C, AT88SC0204C, AT88SC0404C, AT88SC0808C, AT88SC1616C 2. AT88SC3264C, AT88SC6416C, AT88SC12816C, AT88SC25616C 3. VIL min and VIH max are reference only and are not tested
50
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
AC Characteristics Applicable over recommended operating range fromVCC = +2.7 to 5.5V TAC = -40⋅ to +85⋅ C (unless otherwise noted) Symbol fCLK fCLK fCLK Parameter Async Clock Frequency (VCC Range: +4.5 - 5.5V) Async Clock Frequency (VCC Range: +2.7 - 3.3V) Synchronous Clock Frequency Clock Duty Cycle tR tF tR tF tAA tHD.STA tSU.STA tHU.DAT tSU.DAT tSU.STO tDH tWR tWR Rise Time - SDA/IO, RST Fall Time - SDA/IO, RST Rise Time - SCL/CLK Fall Time - SCL/CLK Clock Low to Data Out Valid Start Hold Time Start Set-up Time Data In Hold Time Data In Set-up Time Stop Set-up Time Data Out Hold Time Write Cycle Time (at 25⋅ C) Write Cycle Time (-40⋅ to +85⋅ C) 200 200 10 100 200 20 5 7 Min 1 1 0 40 Max 5 4 1 60 1 1 9% x period 9% x period 35 Units MHz MHz MHz % µS µS µS µS ns ns ns ns ns ns ns ms ms
51
5210B–SMIC–11/08
10.2
Timing Diagrams for Synchronous Communications
Figure 10-1. Bus Timing: SCL: Serial Clock, SDA: Serial Data I/O
Figure 10-2. Write Cycle Timing: SCL: Serial Clock, SDA: Serial Data I/O
SCL
SDA
8th BIT WORDn
ACK
tWR STOP CONDITION
Note:
(1)
START CONDITION
The write cycle time tWR is the time from a valid stop condition of a write sequence to the end of the internal clear/write cycle.
52
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
Figure 10-3. Data Validity
DATA CHANGE ALLOWED
Figure 10-4. Start and Stop Definition
53
5210B–SMIC–11/08
Figure 10-5. Output Acknowledge
11. Tamper Detection
CryptoMemory contains tamper detection sensors to detect operation outside of specified limits. These sensors monitor the internal supply voltage and clock frequency. An additional sensor detects high intensity light attacks. The die is disabled and will not function when tampering is detected.
54
AT88SC0104/0204/0404/0808/1616/3216/6416/12816/25616C
5210B–SMIC–11/08
Headquarters
Atmel Corporation 2325 Orchard Parkway San Jose, CA 95131 USA Tel: 1(408) 441-0311 Fax: 1(408) 487-2600
International
Atmel Asia Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimshatsui East Kowloon Hong Kong Tel: (852) 2721-9778 Fax: (852) 2722-1369 Atmel Europe Le Krebs 8, Rue Jean-Pierre Timbaud BP 309 78054 Saint-Quentin-enYvelines Cedex France Tel: (33) 1-30-60-70-00 Fax: (33) 1-30-60-71-11 Atmel Japan 9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan Tel: (81) 3-3523-3551 Fax: (81) 3-3523-7581
Product Contact
Web Site www.atmel.com Technical Support securemem@atmel.com Sales Contact www.atmel.com/contacts
Literature Requests www.atmel.com/literature
Disclaimer: T he information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND CONDITIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel’s products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.
© 2008 Atmel Corporation. A ll rights reserved. Atmel®, Atmel logo and combinations thereof, CryptoMemory® and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others.
5210B–SMIC–11/08