As far as I can remember...
Widgets get an own internal identifier to get them referenced from the database to the location where they are used on the page. This identifier is not intended to be used externally and therefor it is not accessible out of the box. You can see more details if you look into the SQL table where the content of your page is stored including all widgets dropped on that page.
If you need an own identifier I would use an own ID property in the widget properties. It could also be a GUID, auto-set when creating an instance, and excluded from the properties editing dialog to avoid confusion for content editors.
Doing this, you can use it as identifier for your purposes without touching the internal identifier for the rendering logic from Kentico.
You should be able to access it from the Model.Properties.<YOUR-ID-FIELD>.
If you have ViewComponents without Widget context, I use to take properties from the page or template properties and map them to the view component view model in the page or template view, where the component is invoked and initialized.