Why not just give the join table its own (meaningless) ID, make the Hardware/Entry ids foreign keys and call it a day?

Bear in mind that the Key attribute is only required on fields used to identify records in that specific table (the primary key for the table). Using the attribute on multiple fields creates a composite key (and this is where your unique constraint is coming from).