how to hide a record of table to a profile users

I have a table with check box field, if i check that field that record should not be visible to a profile users. Only administrators can see that record, end user profile users cant see that record. 
How can we do that?


A few options come to mind. 

1. Criteria based sharing rules in standard salesforce record level security.  (This will be the most bullet proof security as the user will be prevented from all access to the record.  Any other option will simply hide the record,  but if the user could hack the ID - they could still see the record)

2. Make two tables on your list page.  Each goes to a different model.  One excludes Checked records,  the other doesnt.  The first table is shown to all profiles but Admins,  The second table is shown to Admins.  This hides the table,  but the data is still provded to the client and they could explore it in the console. 

3. Make two pages - with the tables from option 2.  Use Page assignments to give one to Admins, and the other to Everyone else. 

Hope this helps.