While searching for an easy way to create a per-board unique locally administered MAC address I've found out that each MCU has a unique ID (which can be quite handy if you need to tell your boards apart).
For the whole STM32F10xxx family, this unique 96-bit ID is located in the system memory area in the flash memory at 0x1FFFF7E8.
For byte-wise access I use the following code
// byte-wise access from UID_BASE[0] - UID_BASE[11]
#define UID_BASE ((const uint8_t *)0x1FFFF7E8)
// create a MAC address based on the lower 48 bits
uint8_t uid_mac [6] = {
(UID_BASE[5] | 0x02) & 0xfe, // locally administered unicast: 0bxxxxxx10
UID_BASE[4],
UID_BASE[3],
UID_BASE[2],
UID_BASE[1],
UID_BASE[0]
};